php:
- hhvm-nightly
+ - 5.3
services:
- mysql
irc:
channels:
- "chat.freenode.net#mediawiki-core"
+ - "chat.freenode.net#mediawiki-feed"
on_success: change
on_failure: change
skip_join: true
* The UserCryptPassword and UserComparePassword hooks are no longer called. Any extensions
using them must be updated to use the Password Hashing API.
* $wgCompiledFiles has been removed.
+* $wgSortSpecialPages was removed, the listing on Special:SpecialPages is
+ now always sorted.
+* Users must be able to edit a page to be able to delete it.
+* $wgHTCPMulticastAddress, $wgHTCPMulticastRouting and $wgHTCPPort were removed.
+* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort
+ and $wgRC2UDPPrefix have been removed.
+* The default password type for MediaWiki has been changed from MD5 to PBKDF2.
+ Password hashes will automatically be updated as users log in. If necessary, the
+ old MD5 hashing can be restored by changing $wgPasswordDefault to 'B'. In addition,
+ there is a maintenance script wrapOldPassword.php that can wrap all passwords in
+ PBKDF2 (or the hashing algorithm of your choice) if you don't want to wait for your
+ users to log in.
=== New features in 1.24 ===
* Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
Special:PageLanguage. All pages are set to wiki language by default.
The feature needs to be enabled with $wgPageLanguageUseDB=true and
permission needs to be set for 'pagelang'.
-* Upgrade Moment.js to v2.7.0.
+* Upgrade Moment.js to v2.8.1.
* (bug 67042) Added support for the HTML5 <rtc> tag for East Asian typography.
* Upgrade Sinon.JS to 1.10.3.
* Added the es5-shim polyfill for older or non-compliant javascript engines.
* (bug 66440) The MediaWiki web installer will now allow you to choose the skins
to enable (from the ones included in download tarball) and decide which one
should be the default.
-* (bug 68085) Links of the form [[localInterwikiPrefix:languageCode:pageTitle]],
+* (bug 68085, 68802) Links like [[localInterwikiPrefix:languageCode:pageTitle]],
where localInterwikiPrefix is a member of the $wgLocalInterwikis array, will
- no longer be displayed in the sidebar when $wgInterwikiMagic is true.
+ no longer be displayed in the sidebar when $wgInterwikiMagic is true. In a
+ similar way, links like [[localInterwikiPrefix:File:Image.png]] and
+ [[localInterwikiPrefix:Category:Hello]] will now render as regular links, and
+ will not include the file or add the page to the category.
* New special page, MyLanguages, to redirect users to subpages with localised
versions of a page. (Integrated from Extension:Translate)
* MediaWiki now supports multiple password types, including bcrypt and PBKDF2.
the $wgResourceModuleSkinStyles global. See the Vector skin for examples.
* (bug 4488) There is now a preference to watch pages where the user has
rollbacked an edit by default.
+* (bug 15484) Users will now be redirected to the login page when they need to
+ log in, rather than being shown a page asking them to log in and having to click
+ another link to actually get to the login page.
+* A JSONContent and JSONContentHandler were added for extensions to extend.
=== Bug fixes in 1.24 ===
+* (bug 50572) MediaWiki:Blockip should support gender
* (bug 49116) Footer copyright notice is now always displayed in user language
rather than content language (same as copyright notice for editing interface).
* (bug 62258) A bug was fixed in File::getUnscaledThumb when a height
* (bug 60734) Actions that use ApiPageSet (e.g. purge, watch,
setnotificationtimestamp) will now include continuation information when
using a generator.
+* $wgAPIModules (and the related $wgAPIFormatModules, $wgAPIMetaModules,
+ $wgAPIPropModules, and $wgAPIListModules settings) now allow API modules
+ to be specified using a "module spec" array instead of a plain class name.
+ A "module spec" is an associative array containing at least the 'class' key
+ for the module's class, and optionally a 'factory' key for the factory function
+ to use for the module. This is intended for extensions that want control over
+ the instantiation of their API modules, to allow for proper dependency
+ injection.
+* Removed 'props' and 'errors' from action=paraminfo, as they have extremely
+ limited use and are generally inaccurate, unmaintained, and impossible to
+ properly maintain. Also removed the corresponding methods from ApiBase and
+ the 'APIGetPossibleErrors' and 'APIGetResultProperties' hooks.
+* Formats dbg, dump, txt, wddx, and yaml are now deprecated.
=== Languages updated in 1.24 ===
* Added pp_sortkey column to page_props table, so pages can be efficiently
queried and sorted by property value (bug 58032).
See $wgPagePropsHaveSortkey if you want to postpone the schema change.
-* BREAKING CHANGE: The Modern and Cologne Blue skins were moved out of MediaWiki
- core to their own respective repositories. See also
- https://www.mediawiki.org/wiki/Skin:Modern and
- https://www.mediawiki.org/wiki/Skin:CologneBlue.
+* BREAKING CHANGE: All four built-in MediaWiki skins (Vector, MonoBook, Modern
+ and Cologne Blue) were moved out of MediaWiki core to their own respective
+ repositories. They will be installed with the release tarball, but you must
+ install them separately if installing MediaWiki from source code. A warning
+ message displayed until you do it should guide you through the process. See
+ also <https://www.mediawiki.org/wiki/Manual:Skin_configuration>.
* BREAKING CHANGE: Skins built for MediaWiki 1.15 and earlier that do not use
the "headelement" template key are no longer supported. Setting
$useHeadElement = false; is no longer supported and will not cause old keys
setPreloadedText() from EditPage.php. (deprecated since 1.21)
* Removed global functions wfArrayLookup(), wfArrayMerge(), wfDebugDieBacktrace()
and wfTime(). (deprecated since 1.22)
+* Microsoft Internet Explorer 6 is now a "grade C" browser, meaning that
+ JavaScript is no longer executed in this browser. The IEFixes script, which
+ existed purely to provide support for MSIE versions below 7 and which was
+ conditionally loaded for those browsers, was also removed.
+* Action::checkCanExecute() no longer has a return value.
+* Removed cleanupForIRC(), loadFromCurRow(), newFromCurRow(), notifyRC2UDP()
+ and sendToUDP() from RecentChange.php. (deprecated since 1.22)
+* Removed EnhancedChangesList::arrow(), sideArrow(), downArrow(), spacerArrow().
==== Renamed classes ====
* CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
&$module: ApiBase Module object
&$desc: Array of parameter descriptions
-'APIGetResultProperties': Use this hook to modify the properties in a module's
-result.
-&$module: ApiBase Module object
-&$properties: Array of properties
-
-'APIGetPossibleErrors': Use this hook to modify the module's list of possible
-errors.
-$module: ApiBase Module object
-&$possibleErrors: Array of possible errors
-
'APIQueryAfterExecute': After calling the execute() method of an
action=query submodule. Use this to extend core API modules.
&$module: Module object
$newSessionID: new session id
'ResourceLoaderGetConfigVars': Called at the end of
-ResourceLoaderStartUpModule::getConfig(). Use this to export static
+ResourceLoaderStartUpModule::getConfigSettings(). Use this to export static
configuration variables to JavaScript. Things that depend on the current page
or request state must be added through MakeGlobalVariablesScript instead.
&$vars: array( variable name => value )
dummy parameter with "$dummy=false" in their code and return without echoing
any HTML to avoid creating duplicate toolbox items.
-'SkinVectorStyleModules': Called when defining the list of module styles to be
-loaded by the Vector skin.
-$skin: SkinVector object
-&$styles: Array of module names whose style will be loaded for the skin
-
'SoftwareInfo': Called by Special:Version for returning information about the
software.
$software: The array of software in format 'name' => 'version'. See
&$fields: Current HTMLForm fields
'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
-$id: User id number, only provided for backwards-compatability
+$id: User id number, only provided for backwards-compatibility
$user: User object representing user contributions are being fetched for
$sp: SpecialPage instance, providing context
returning false. May also be an array, where the first element is the message
key and the remaining elements are used as parameters to the message.
-'UploadVerifyFile': extra file verification, based on mime type, etc. Preferred
+'UploadVerifyFile': extra file verification, based on MIME type, etc. Preferred
in most cases over UploadVerification.
object $upload: an instance of UploadBase, with all info about the upload
-string $mime: The uploaded file's mime type, as detected by MediaWiki. Handlers
- will typically only apply for specific mime types.
+string $mime: The uploaded file's MIME type, as detected by MediaWiki. Handlers
+ will typically only apply for specific MIME types.
object &$error: output: true if the file is valid. Otherwise, an indexed array
representing the problem with the file, where the first element is the message
key and the remaining elements are used as parameters to the message.
MEDIAWIKI_LOAD_URL ?= http://localhost/w/load.php
-kss: nodecheck
-# FIXME: Use more up-to-date Ruby version
-
+kss: kssnodecheck
# 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))
@command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/static/index.html; exit 0; }
@xdg-open ${PWD}/static/index.html
-nodecheck:
- @scripts/nodecheck.sh
+kssnodecheck:
+ @scripts/kss-node-check.sh
--- /dev/null
+#!/usr/bin/env bash
+
+if command -v npm > /dev/null ; then
+ npm install
+else
+ # If npm isn't installed, but kss-node is, exit normally.
+ # This allows setting it up on one machine, and running it on
+ # another (e.g. Tools Labs execution nodes) that doesn't have npm
+ # installed. However, "npm install" still needs to be run
+ # occasionally to keep kss updated.
+
+ KSS_NODE="${BASH_SOURCE%/*}/../node_modules/.bin/kss-node"
+ if ! [ -x "$KSS_NODE" ] ; then
+ echo "Neither kss-node nor npm are installed."
+ echo "To install npm, see http://nodejs.org/"
+ echo "When npm is installed, the Makefile can automatically"
+ echo "install kss-node."
+ exit 1
+ fi
+fi
+++ /dev/null
-#!/usr/bin/env bash
-if command -v npm > /dev/null ; then
- npm install
-else
- echo "You need to install Node.JS!"
- echo "See http://nodejs.org/"
- exit 1
-fi
+
+.container {
+ width: 100%;
+}
+
+nav {
+ display: none;
+}
+
+article {
+ .example {
+ blockquote {
+ margin-top: 20px;
+ }
+ }
+}
+
body {
margin: 0;
padding: 0;
}
.container {
- width: 960px;
margin: 0 auto;
display: -webkit-flex;
display: flex;
article {
-webkit-flex: 1;
flex: 1;
- margin-left: 30px;
h1, h2, h3, h4, h5, h6, p {
margin-left: 20px;
background: #f8f8f8;
padding: 20px;
color: #999;
- width: 338px;
word-wrap: break-word;
// word-wrap in pre not affecting Firefox, so add white-space.
white-space: pre-wrap;
display: block;
margin: 0;
margin-left: 20px;
- min-width: 360px;
}
}
}
-@media (max-width: 960px) {
- .container {
- width: 100%;
+@media (min-width: 768px) {
+ nav {
+ display: block;
+ width: 100px;
}
+ @columnWidth: (768px - 100px ) / 2;
+ .example {
+ pre,
+ blockquote {
+ width: @columnWidth;
+ }
+ }
+}
+
+@media (min-width: 980px) {
nav {
- display: none;
+ width: auto;
}
article {
- .example {
- blockquote {
- margin-top: 20px;
- }
+ margin-left: 30px;
+ }
+
+ .container {
+ width: 980px;
+ }
+
+ .example {
+ pre {
+ width: 338px;
+ }
+ blockquote {
+ width: auto;
}
}
}
--- /dev/null
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+ <meta charset="utf-8">
+ <!--
+ The jquery.confirmable module uses some additional modules and files
+ for internationalization support. These are omitted here for simplicity.
+ -->
+ <script type="text/javascript" src="../../resources/lib/jquery/jquery.js"></script>
+ <link rel="stylesheet" href="../../resources/src/jquery/jquery.confirmable.css">
+ <script type="text/javascript" src="../../resources/src/jquery/jquery.confirmable.js"></script>
+ <style>
+ body {
+ font: small sans-serif;
+ }
+ .mw-rollback-link a,
+ .mw-unwatch-link a,
+ .mw-thanks-thank-link a {
+ background: #ccf;
+ }
+ </style>
+</head>
+<body>
+ <h2>Introduction</h2>
+
+ <p>The jquery.confirmable module provides a simple inline confirmation script for potentially destructive or uncancellable actions.</p>
+
+ <p>Possible uses include confirmable "rollback" links in histories, confirmable "unwatch" links on watchlists, or confirmable "thanks" links (provided by the Echo extension).</p>
+
+ <p>Shown below is a demo of how each of those could work on history and watchlist entries, in an LTR and RTL language. The enhanced links are highlighted in blue.</p>
+
+ <h2>Examples</h2>
+
+ <h3>LTR (English)</h3>
+
+ <p>Watchlist:</p>
+
+ <ul lang="en" dir="ltr">
+ <li class="mw-line-even mw-changeslist-line-not-watched">
+ (<a href="#">diff</a> | <a href="#">hist</a>)
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="mw-title"><a href="#" class="mw-changeslist-title">Example page</a></span>; <span class="mw-changeslist-date">13:38</span>
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="mw-plusminus-neg">(-130)</span>
+ <span class="mw-changeslist-separator">. .</span>
+ <a href="#" class="mw-userlink">Example user</a>
+ <span class="mw-usertoollinks">(<a href="#">Talk</a> | <a href="#">contribs</a> | <a href="#">block</a>)</span>
+ <span class="comment">(example edit)</span>
+ <span class="mw-rollback-link">[<a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">rollback</a>]</span>
+ (<span class="mw-unwatch-link"><a href="#">unwatch</a></span>)
+ </li>
+ </ul>
+
+ <p>History:</p>
+
+ <ul lang="en" dir="ltr">
+ <li>
+ <span class="mw-history-histlinks">(cur | <a href="#">prev</a>)</span>
+ <input type="radio" style="visibility: hidden;" /><input type="radio" checked />
+ <a href="#" class="mw-changeslist-date">13:38, 28 October 2013</a>
+ <span class='history-user'>
+ <a href="#" class="mw-userlink">Example user</a>
+ <span class="mw-usertoollinks">(<a href="#">Talk</a> | <a href="#">contribs</a> | <a href="#">block</a>)</span>
+ </span>
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="history-size">(1,654 bytes)</span>
+ <span class="mw-plusminus-neg">(-130)</span>
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="comment">(example edit)</span>
+ (<span class="mw-rollback-link"><a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">rollback 1 edit</a></span> | <span class="mw-history-undo"><a href="#">undo</a></span> | <span class="mw-thanks-thank-link"><a href="#">thank</a></span>)
+ </li>
+ </ul>
+
+ <script type="text/javascript">
+ $( 'ul[lang="en"] .mw-rollback-link a' )
+ .confirmable({ i18n: { confirm: 'Are you sure you want to rollback?' } });
+ $( 'ul[lang="en"] .mw-unwatch-link a' )
+ .confirmable({ handler: function(){ alert('Unwatched!') } });
+ $( 'ul[lang="en"] .mw-thanks-thank-link a' )
+ .confirmable({ handler: function(){ alert('Thanked!') } });
+ </script>
+
+ <h3>RTL (Hebrew)</h3>
+ <!-- All of the Hebrew text below has been basically pulled out of my hat. -->
+
+ <p>Watchlist:</p>
+
+ <ul lang="he" dir="rtl">
+ <li class="mw-line-even mw-changeslist-line-not-watched">
+ (<a href="#">הבדל</a> | <a href="#">היסטוריה</a>)
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="mw-title"><a href="#" class="mw-changeslist-title">דף דוגמה</a></span>; <span class="mw-changeslist-date">13:38</span>
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="mw-plusminus-neg">(-57)</span>
+ <span class="mw-changeslist-separator">. .</span>
+ <a href="#" class="mw-userlink">דוגמא אדם</a>
+ <span class="mw-usertoollinks">(<a href="#">שיחה</a> | <a href="#">תרומות</a> | <a href="#">חסימה</a>)</span>
+ <span class="comment">(עריכה לדוגמה)</span>
+ <span class="mw-rollback-link">[<a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">שחזור</a>]</span>
+ (<span class="mw-unwatch-link"><a href="#">הפסקת מעקב</a></span>)
+ </li>
+ </ul>
+
+ <p>History:</p>
+
+ <ul lang="he" dir="rtl">
+ <li>
+ <span class="mw-history-histlinks">(נוכחית | <a href="#">קודמת</a>)</span>
+ <input type="radio" style="visibility: hidden;" /><input type="radio" checked />
+ <a href="#" class="mw-changeslist-date">23:41, 12 במאי 2012</a>
+ <span class='history-user'>
+ <a href="#" class="mw-userlink">דוגמא אדם</a>
+ <span class="mw-usertoollinks">(<a href="#">שיחה</a> | <a href="#">תרומות</a> | <a href="#">חסימה</a>)</span>
+ </span>
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="history-size">(1,762 בתים)</span>
+ <span class="mw-plusminus-neg">(-57)</span>
+ <span class="mw-changeslist-separator">. .</span>
+ <span class="comment">(עריכה לדוגמה)</span>
+ (<span class="mw-rollback-link"><a href="https://www.mediawiki.org/wiki/Random_ideas_for_rollback_to_be_shelved_and_forgotten_about">שחזור עריכה אחת</a></span> | <span class="mw-history-undo"><a href="#">ביטול</a></span> | <span class="mw-thanks-thank-link"><a href="#">תודה</a></span>)
+ </li>
+ </ul>
+
+ <script type="text/javascript">
+ var hebrewI18n = {
+ confirm: 'האם ברצונך להמשיך?',
+ yes: 'כן',
+ no: 'לא',
+ }
+
+ $( 'ul[lang="he"] .mw-rollback-link a' )
+ .confirmable({ i18n: $.extend( {}, hebrewI18n, { confirm: 'האם ברצונך לשחזר?' } ) });
+ $( 'ul[lang="he"] .mw-unwatch-link a' )
+ .confirmable({ i18n: hebrewI18n, handler: function(){ alert('Unwatched!') } });
+ $( 'ul[lang="he"] .mw-thanks-thank-link a' )
+ .confirmable({ i18n: hebrewI18n, handler: function(){ alert('Thanked!') } });
+ </script>
+ <style type="text/css">
+ /* This is normally handled by CSSJanus. */
+ ul[dir=rtl] .jquery-confirmable-button {
+ margin-left: 0;
+ margin-right: 1ex;
+ }
+ </style>
+</body>
+</html>
+
-Extensions (such as the hieroglyphic module WikiHiero) are distributed
-separately. Drop them into this extensions directory and enable as
-per the extension's directions.
+Extensions are distributed separately. Drop them into this directory and enable
+as per the extension's installation instructions.
-You can find a list of extensions and documentation on the MediaWiki website:
- https://www.mediawiki.org/wiki/Category:Extensions
+You can find a list of extensions and documentation at
+<https://www.mediawiki.org/wiki/Category:Extensions>.
-If you are a developer, you want to fetch the extension tree in another
+If you are a developer, you might want to fetch the extension tree in another
directory and make a symbolic link:
- mediawiki/extensions$ ln -s ../../extensions-trunk/FooBarExt
+ mediawiki/extensions$ ln -s ../../extensions-trunk/FooBar
Most extensions are available through Git:
- https://gerrit.wikimedia.org/r/#/admin/projects/
+ https://gerrit.wikimedia.org/r/#/admin/projects/?filter=mediawiki%252Fextensions%252F
https://git.wikimedia.org/project/mediawiki
-Old extensions are on Subversion:
- https://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/
-
Please note that under POSIX systems (Linux...), parent of a symbolic path
refers to the link source, NOT to the target! You should check the env
If uploads are enabled in the wiki, files will be put in subdirectories
under here.
-
-Note to upgraders: as of MediaWiki 1.5, the images used in the user
-interface have been moved to skins/common/images.
'AuthPlugin' => 'includes/AuthPlugin.php',
'AuthPluginUser' => 'includes/AuthPlugin.php',
'Autopromote' => 'includes/Autopromote.php',
- 'BaseTemplate' => 'includes/SkinTemplate.php',
'Block' => 'includes/Block.php',
'Category' => 'includes/Category.php',
'Categoryfinder' => 'includes/Categoryfinder.php',
'HTMLRadioField' => 'includes/htmlform/HTMLRadioField.php',
'HTMLSelectAndOtherField' => 'includes/htmlform/HTMLSelectAndOtherField.php',
'HTMLSelectField' => 'includes/htmlform/HTMLSelectField.php',
+ 'HTMLSelectLimitField' => 'includes/htmlform/HTMLSelectLimitField.php',
'HTMLSelectOrOtherField' => 'includes/htmlform/HTMLSelectOrOtherField.php',
'HTMLSubmitField' => 'includes/htmlform/HTMLSubmitField.php',
'HTMLTextAreaField' => 'includes/htmlform/HTMLTextAreaField.php',
'MagicWordArray' => 'includes/MagicWord.php',
'MailAddress' => 'includes/UserMailer.php',
'MediaWiki' => 'includes/MediaWiki.php',
- 'MediaWikiI18N' => 'includes/SkinTemplate.php',
'MediaWikiVersionFetcher' => 'includes/MediaWikiVersionFetcher.php',
'Message' => 'includes/Message.php',
'MessageBlobStore' => 'includes/MessageBlobStore.php',
'PoolCounter_Stub' => 'includes/poolcounter/PoolCounter.php',
'PoolCounterRedis' => 'includes/poolcounter/PoolCounterRedis.php',
'PoolCounterWork' => 'includes/poolcounter/PoolCounterWork.php',
- 'PoolCounterWorkViaCallback' => 'includes/poolcounter/PoolCounterWork.php',
+ 'PoolCounterWorkViaCallback' => 'includes/poolcounter/PoolCounterWorkViaCallback.php',
'PoolWorkArticleView' => 'includes/poolcounter/PoolWorkArticleView.php',
'Preferences' => 'includes/Preferences.php',
'PreferencesForm' => 'includes/Preferences.php',
'PrefixSearch' => 'includes/PrefixSearch.php',
'ProtectionForm' => 'includes/ProtectionForm.php',
- 'QuickTemplate' => 'includes/SkinTemplate.php',
'RawMessage' => 'includes/Message.php',
'ReverseChronologicalPager' => 'includes/Pager.php',
'RevisionItem' => 'includes/RevisionList.php',
'SiteConfiguration' => 'includes/SiteConfiguration.php',
'SiteStats' => 'includes/SiteStats.php',
'SiteStatsInit' => 'includes/SiteStats.php',
- 'Skin' => 'includes/Skin.php',
- 'SkinTemplate' => 'includes/SkinTemplate.php',
'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
'StatCounter' => 'includes/StatCounter.php',
'RevertAction' => 'includes/actions/RevertAction.php',
'RevisiondeleteAction' => 'includes/actions/RevisiondeleteAction.php',
'RollbackAction' => 'includes/actions/RollbackAction.php',
- 'SubmitAction' => 'includes/actions/EditAction.php',
- 'UnprotectAction' => 'includes/actions/ProtectAction.php',
- 'UnwatchAction' => 'includes/actions/WatchAction.php',
+ 'SubmitAction' => 'includes/actions/SubmitAction.php',
+ 'UnprotectAction' => 'includes/actions/UnprotectAction.php',
+ 'UnwatchAction' => 'includes/actions/UnwatchAction.php',
'ViewAction' => 'includes/actions/ViewAction.php',
'WatchAction' => 'includes/actions/WatchAction.php',
'CssContent' => 'includes/content/CssContent.php',
'JavaScriptContentHandler' => 'includes/content/JavaScriptContentHandler.php',
'JavaScriptContent' => 'includes/content/JavaScriptContent.php',
+ 'JSONContentHandler' => 'includes/content/JSONContentHandler.php',
+ 'JSONContent' => 'includes/content/JSONContent.php',
'MessageContent' => 'includes/content/MessageContent.php',
'MWContentSerializationException' => 'includes/content/ContentHandler.php',
'TextContentHandler' => 'includes/content/TextContentHandler.php',
'ResourceLoaderWikiModule' => 'includes/resourceloader/ResourceLoaderWikiModule.php',
# includes/revisiondelete
- 'RevDelArchivedFileItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelArchivedFileList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelArchivedRevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelArchiveItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelArchiveList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelFileItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelFileList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDelArchivedFileItem' => 'includes/revisiondelete/RevDelArchivedFileItem.php',
+ 'RevDelArchivedFileList' => 'includes/revisiondelete/RevDelArchivedFileList.php',
+ 'RevDelArchivedRevisionItem' => 'includes/revisiondelete/RevDelArchivedRevisionItem.php',
+ 'RevDelArchiveItem' => 'includes/revisiondelete/RevDelArchiveItem.php',
+ 'RevDelArchiveList' => 'includes/revisiondelete/RevDelArchiveList.php',
+ 'RevDelFileItem' => 'includes/revisiondelete/RevDelFileItem.php',
+ 'RevDelFileList' => 'includes/revisiondelete/RevDelFileList.php',
'RevDelItem' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
'RevDelList' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
- 'RevDelLogItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelLogList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelRevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDelRevisionList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDelLogItem' => 'includes/revisiondelete/RevDelLogItem.php',
+ 'RevDelLogList' => 'includes/revisiondelete/RevDelLogList.php',
+ 'RevDelRevisionItem' => 'includes/revisiondelete/RevDelRevisionItem.php',
+ 'RevDelRevisionList' => 'includes/revisiondelete/RevDelRevisionList.php',
'RevisionDeleter' => 'includes/revisiondelete/RevisionDeleter.php',
'RevisionDeleteUser' => 'includes/revisiondelete/RevisionDeleteUser.php',
# includes/search
- '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',
'Sites' => 'includes/site/SiteSQLStore.php',
'SiteStore' => 'includes/site/SiteStore.php',
+ # includes/skins
+ 'BaseTemplate' => 'includes/skins/SkinTemplate.php',
+ 'MediaWikiI18N' => 'includes/skins/SkinTemplate.php',
+ 'QuickTemplate' => 'includes/skins/SkinTemplate.php',
+ 'Skin' => 'includes/skins/Skin.php',
+ 'SkinException' => 'includes/skins/SkinException.php',
+ 'SkinFactory' => 'includes/skins/SkinFactory.php',
+ 'SkinFallback' => 'includes/skins/SkinFallback.php',
+ 'SkinFallbackTemplate' => 'includes/skins/SkinFallbackTemplate.php',
+ 'SkinTemplate' => 'includes/skins/SkinTemplate.php',
+
# includes/specialpage
'ChangesListSpecialPage' => 'includes/specialpage/ChangesListSpecialPage.php',
'FormSpecialPage' => 'includes/specialpage/FormSpecialPage.php',
'EmailInvalidation' => 'includes/specials/SpecialConfirmemail.php',
'FewestrevisionsPage' => 'includes/specials/SpecialFewestrevisions.php',
'FileDuplicateSearchPage' => 'includes/specials/SpecialFileDuplicateSearch.php',
- 'HTMLBlockedUsersItemSelect' => 'includes/specials/SpecialBlockList.php',
'ImageListPager' => 'includes/specials/SpecialListfiles.php',
'ImportReporter' => 'includes/specials/SpecialImport.php',
'LinkSearchPage' => 'includes/specials/SpecialLinkSearch.php',
* - If there are multiple exact or range blocks at the same level, the one chosen
* is random
*
+ * @param array $blocks Array of blocks
* @param array $ipChain List of IPs (strings). This is used to determine how "close"
* a block is to the server, and if a block matches exactly, or is in a range.
* The order is furthest from the server to nearest e.g., (Browser, proxy1, proxy2,
* local-squid, ...)
- * @param array $block Array of blocks
* @return Block|null The "best" block from the list
*/
public static function chooseBlock( array $blocks, array $ipChain ) {
/**
* Generic accessor
+ * @param string $key
* @return bool
*/
private function getX( $key ) {
'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' );
/**
- * Files with these mime types will never be allowed as uploads
+ * Files with these MIME types will never be allowed as uploads
* if $wgVerifyMimeType is enabled.
*/
$wgMimeTypeBlacklist = array(
$wgUploadSizeWarning = false;
/**
- * list of trusted media-types and mime types.
+ * list of trusted media-types and MIME types.
* Use the MEDIATYPE_xxx constants to represent media types.
* This list is used by File::isSafeFile
*
CONTENT_MODEL_WIKITEXT => 'WikitextContentHandler',
// dumb version, no syntax highlighting
CONTENT_MODEL_JAVASCRIPT => 'JavaScriptContentHandler',
+ // simple implementation, for use by extensions, etc.
+ CONTENT_MODEL_JSON => 'JSONContentHandler',
// dumb version, no syntax highlighting
CONTENT_MODEL_CSS => 'CssContentHandler',
- // plain text, for use by extensions etc
+ // plain text, for use by extensions, etc.
CONTENT_MODEL_TEXT => 'TextContentHandler',
);
$wgAntivirusRequired = true;
/**
- * Determines if the mime type of uploaded files should be checked
+ * Determines if the MIME type of uploaded files should be checked
*/
$wgVerifyMimeType = true;
/**
- * Sets the mime type definition file to use by MimeMagic.php.
+ * Sets the MIME type definition file to use by MimeMagic.php.
* Set to null, to use built-in defaults only.
* example: $wgMimeTypeFile = '/etc/mime.types';
*/
$wgMimeTypeFile = 'includes/mime.types';
/**
- * Sets the mime type info file to use by MimeMagic.php.
+ * Sets the MIME type info file to use by MimeMagic.php.
* Set to null, to use built-in defaults only.
*/
$wgMimeInfoFile = 'includes/mime.info';
/**
- * Sets an external mime detector program. The command must print only
- * the mime type to standard output.
+ * Sets an external MIME detector program. The command must print only
+ * the MIME type to standard output.
* The name of the file to process will be appended to the command given here.
* If not set or NULL, mime_content_type will be used if available.
*
* @par Example:
* @code
- * #$wgMimeDetectorCommand = "file -bi"; # use external mime detector (Linux)
+ * #$wgMimeDetectorCommand = "file -bi"; # use external MIME detector (Linux)
* @endcode
*/
$wgMimeDetectorCommand = null;
/**
- * Switch for trivial mime detection. Used by thumb.php to disable all fancy
+ * Switch for trivial MIME detection. Used by thumb.php to disable all fancy
* things, because only a few types of images are needed and file extensions
* can be trusted.
*/
$wgTrivialMimeDetection = false;
/**
- * Additional XML types we can allow via mime-detection.
+ * Additional XML types we can allow via MIME-detection.
* array = ( 'rootElement' => 'associatedMimeType' )
*/
$wgXMLMimeTypes = array(
*/
$wgHTCPRouting = array();
-/**
- * @deprecated since 1.22, please use $wgHTCPRouting instead.
- *
- * Whenever this is set and $wgHTCPRouting evaluates to false, $wgHTCPRouting
- * will be set to this value.
- * This is merely for back compatibility.
- *
- * @since 1.20
- */
-$wgHTCPMulticastRouting = null;
-
-/**
- * HTCP multicast address. Set this to a multicast IP address to enable HTCP.
- *
- * Note that MediaWiki uses the old non-RFC compliant HTCP format, which was
- * present in the earliest Squid implementations of the protocol.
- *
- * This setting is DEPRECATED in favor of $wgHTCPRouting , and kept for
- * backwards compatibility only. If $wgHTCPRouting is set, this setting is
- * ignored. If $wgHTCPRouting is not set and this setting is, it is used to
- * populate $wgHTCPRouting.
- *
- * @deprecated since 1.20 in favor of $wgHTCPMulticastRouting and since 1.22 in
- * favor of $wgHTCPRouting.
- */
-$wgHTCPMulticastAddress = false;
-
-/**
- * HTCP multicast port.
- * @deprecated since 1.20 in favor of $wgHTCPMulticastRouting and since 1.22 in
- * favor of $wgHTCPRouting.
- *
- * @see $wgHTCPMulticastAddress
- */
-$wgHTCPPort = 4827;
-
/**
* HTCP multicast TTL.
* @see $wgHTCPRouting
*/
$wgHtml5Version = null;
+/**
+ * Temporary variable that allows HTMLForms to be rendered as tables.
+ * Table based layouts cause various issues when designing for mobile.
+ * This global allows skins or extensions a means to force non-table based rendering.
+ * Setting to false forces form components to always render as div elements.
+ * @since 1.24
+ */
+$wgHTMLFormAllowTableFormat = true;
+
+/**
+ * Temporary variable that applies MediaWiki UI wherever it can be supported.
+ * Temporary variable that should be removed when mediawiki ui is more
+ * stable and change has been communicated.
+ * @since 1.24
+ */
+$wgUseMediaWikiUIEverywhere = false;
+
/**
* Enabled RDFa attributes for use in wikitext.
* NOTE: Interaction with HTML5 is somewhat underspecified.
* Normally we wouldn't have to define this in the root "<html>"
* element, but IE needs it there in some circumstances.
*
- * This is ignored if $wgMimeType is set to a non-XML mimetype.
+ * This is ignored if $wgMimeType is set to a non-XML MIME type.
*/
$wgXhtmlNamespaces = array();
*
* @since 1.24
*/
-$wgFallbackSkin = 'vector';
+$wgFallbackSkin = 'fallback';
/**
* Specify the names of skins that should not be presented in the list of
*/
$wgUseCombinedLoginLink = false;
-/**
- * Search form look for Vector skin only.
- * - true = use an icon search button
- * - false = use Go & Search buttons
- */
-$wgVectorUseSimpleSearch = true;
-
-/**
- * Watch and unwatch as an icon rather than a link for Vector skin only.
- * - true = use an icon watch/unwatch button
- * - false = use watch/unwatch text link
- */
-$wgVectorUseIconWatch = true;
-
/**
* Display user edit counts in various prominent places.
*/
*
* @since 1.24
*/
-$wgPasswordDefault = 'B';
+$wgPasswordDefault = 'pbkdf2';
/**
* Configuration for built-in password types. Maps the password type
/**
* Format string for the UDP profiler. The UDP profiler invokes sprintf() with
- * (profile id, count, cpu, cpu_sq, real, real_sq, entry name) as arguments.
- * You can use sprintf's argument numbering/swapping capability to repeat,
- * re-order or omit fields.
+ * (profile id, count, cpu, cpu_sq, real, real_sq, entry name, memory) as
+ * arguments. You can use sprintf's argument numbering/swapping capability to
+ * repeat, re-order or omit fields.
*
* @see $wgStatsFormatString
* @since 1.22
*/
$wgGitRepositoryViewers = array(
'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
- 'https://git.wikimedia.org/commit/%r/%H',
+ 'https://git.wikimedia.org/tree/%r/%H',
'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
- 'https://git.wikimedia.org/commit/%r/%H',
+ 'https://git.wikimedia.org/tree/%r/%H',
);
/** @} */ # End of maintenance }
*/
$wgRCLinkDays = array( 1, 3, 7, 14, 30 );
-/**
- * Send recent changes updates via UDP. The updates will be formatted for IRC.
- * Set this to the IP address of the receiver.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPAddress = false;
-
-/**
- * Port number for RC updates
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPPort = false;
-
-/**
- * Prefix to prepend to each UDP packet.
- * This can be used to identify the wiki. A script is available called
- * mxircecho.py which listens on a UDP port, and uses a prefix ending in a
- * tab to identify the IRC channel to send the log line to.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPPrefix = '';
-
-/**
- * If this is set to true, the first entry in the $wgLocalInterwikis array (or
- * the value of $wgLocalInterwiki, if set) will be prepended to links in the IRC
- * feed. If this is set to a string, that string will be used as the prefix.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPInterwikiPrefix = false;
-
-/**
- * Set to true to omit "bot" edits (by users with the bot permission) from the
- * UDP feed.
- *
- * @deprecated since 1.22, use $wgRCFeeds
- */
-$wgRC2UDPOmitBots = false;
-
/**
* Destinations to which notifications about recent changes
* should be sent.
* The JSON-specific options are:
* * 'channel' -- if set, the 'channel' parameter is also set in JSON values.
*
- * To ensure backwards-compatibility, whenever $wgRC2UDPAddress is set, a
- * 'default' feed will be created reusing the deprecated $wgRC2UDP* variables.
- *
* @example $wgRCFeeds['example'] = array(
* 'formatter' => 'JSONRCFeedFormatter',
* 'uri' => "udp://localhost:1336",
'protect/modify' => 'modifiedarticleprotection',
'protect/unprotect' => 'unprotectedarticle',
'protect/move_prot' => 'movedarticleprotection',
- 'upload/upload' => 'uploadedimage',
- 'upload/overwrite' => 'overwroteimage',
- 'upload/revert' => 'uploadedimage',
'import/upload' => 'import-logentry-upload',
'import/interwiki' => 'import-logentry-interwiki',
'merge/merge' => 'pagemerge-logentry',
'patrol/patrol' => 'PatrolLogFormatter',
'rights/rights' => 'RightsLogFormatter',
'rights/autopromote' => 'RightsLogFormatter',
+ 'upload/upload' => 'LogFormatter',
+ 'upload/overwrite' => 'LogFormatter',
+ 'upload/revert' => 'LogFormatter',
);
/**
*/
$wgSpecialPageGroups = array();
-/**
- * Whether or not to sort special pages in Special:Specialpages
- */
-$wgSortSpecialPages = true;
-
/**
* On Special:Unusedimages, consider images "used", if they are put
* into a category. Default (false) is not to count those as used.
/**
* API module extensions.
- * Associative array mapping module name to class name.
- * Extension modules may override the core modules.
*
+ * Associative array mapping module name to modules specs;
+ * Each module spec is an associative array containing at least
+ * the 'class' key for the module's class, and optionally a
+ * 'factory' key for the factory function to use for the module.
+ *
+ * That factory function will be called with two parameters,
+ * the parent module (an instance of ApiBase, usually ApiMain)
+ * and the name the module was registered under. The return
+ * value must be an instance of the class given in the 'class'
+ * field.
+ *
+ * For backward compatibility, the module spec may also be a
+ * simple string containing the module's class name. In that
+ * case, the class' constructor will be called with the parent
+ * module and module name as parameters, as described above.
+ *
+ * Examples for registering API modules:
+ *
+ * @code
+ * $wgAPIModules['foo'] = 'ApiFoo';
+ * $wgAPIModules['bar'] = array(
+ * 'class' => 'ApiBar',
+ * 'factory' => function( $main, $name ) { ... }
+ * );
+ * $wgAPIModules['xyzzy'] = array(
+ * 'class' => 'ApiXyzzy',
+ * 'factory' => array( 'XyzzyFactory', 'newApiModule' )
+ * );
+ * @endcode
+ *
+ * Extension modules may override the core modules.
* 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.
+ * Associative array mapping format module name to module specs (see $wgAPIModules).
* Extension modules may override the core modules.
*
* See ApiMain::$Formats for a list of the core format modules.
/**
* API Query meta module extensions.
- * Associative array mapping meta module name to class name.
+ * Associative array mapping meta module name to module specs (see $wgAPIModules).
* Extension modules may override the core modules.
*
* See ApiQuery::$QueryMetaModules for a list of the core meta modules.
/**
* API Query prop module extensions.
- * Associative array mapping properties module name to class name.
+ * Associative array mapping prop module name to module specs (see $wgAPIModules).
* Extension modules may override the core modules.
*
* See ApiQuery::$QueryPropModules for a list of the core prop modules.
/**
* API Query list module extensions.
- * Associative array mapping list module name to class name.
+ * Associative array mapping list module name to module specs (see $wgAPIModules).
* Extension modules may override the core modules.
*
* See ApiQuery::$QueryListModules for a list of the core list modules.
* @var bool
* @since 1.24
*/
-$wgUseLinkNamespaceDBFields = false;
+$wgUseLinkNamespaceDBFields = true;
/**
* For really cool vim folding this needs to be at the end:
define( 'CONTENT_MODEL_JAVASCRIPT', 'javascript' );
define( 'CONTENT_MODEL_CSS', 'css' );
define( 'CONTENT_MODEL_TEXT', 'text' );
+define( 'CONTENT_MODEL_JSON', 'json' );
/**@}*/
/**@{
$cleanSummary = $wgParser->stripSectionName( $this->summary );
return wfMessage( 'newsectionsummary' )
->rawParams( $cleanSummary )->inContentLanguage()->text();
- } else {
- return $this->summary;
}
+ return $this->summary;
}
/**
}
protected function showStandardInputs( &$tabindex = 2 ) {
- global $wgOut;
+ global $wgOut, $wgUseMediaWikiUIEverywhere;
$wgOut->addHTML( "<div class='editOptions'>\n" );
if ( $this->section != 'new' ) {
$message = wfMessage( 'edithelppage' )->inContentLanguage()->text();
$edithelpurl = Skin::makeInternalOrExternalUrl( $message );
- $edithelp = '<a target="helpwindow" href="' . $edithelpurl . '">' .
- wfMessage( 'edithelp' )->escaped() . '</a> ' .
+ $attrs = array(
+ 'target' => 'helpwindow',
+ 'href' => $edithelpurl,
+ );
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $attrs['class'] = 'mw-ui-button mw-ui-quiet';
+ }
+ $edithelp = Html::element( 'a', $attrs, wfMessage( 'edithelp' )->text() ) .
wfMessage( 'newwindow' )->parse();
$wgOut->addHTML( " <span class='cancelLink'>{$cancel}</span>\n" );
* @return string
*/
public function getCancelLink() {
+ global $wgUseMediaWikiUIEverywhere;
$cancelParams = array();
if ( !$this->isConflict && $this->oldid > 0 ) {
$cancelParams['oldid'] = $this->oldid;
}
+ $attrs = array( 'id' => 'mw-editform-cancel' );
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $attrs['class'] = 'mw-ui-button mw-ui-quiet';
+ }
return Linker::linkKnown(
$this->getContextTitle(),
wfMessage( 'cancel' )->parse(),
- array( 'id' => 'mw-editform-cancel' ),
+ $attrs,
$cancelParams
);
}
/**
* Shows a bulletin board style toolbar for common editing functions.
* It can be disabled in the user preferences.
- * The necessary JavaScript code can be found in skins/common/edit.js.
*
* @return string
*/
* @return array
*/
public function getCheckboxes( &$tabindex, $checked ) {
- global $wgUser;
+ global $wgUser, $wgUseMediaWikiUIEverywhere;
$checkboxes = array();
'accesskey' => wfMessage( 'accesskey-minoredit' )->text(),
'id' => 'wpMinoredit',
);
- $checkboxes['minor'] =
+ $minorEditHtml =
Xml::check( 'wpMinoredit', $checked['minor'], $attribs ) .
" <label for='wpMinoredit' id='mw-editpage-minoredit'" .
Xml::expandAttributes( array( 'title' => Linker::titleAttrib( 'minoredit', 'withaccess' ) ) ) .
">{$minorLabel}</label>";
+
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $checkboxes['minor'] = Html::openElement( 'div', array( 'class' => 'mw-ui-checkbox' ) ) .
+ $minorEditHtml .
+ Html::closeElement( 'div' );
+ } else {
+ $checkboxes['minor'] = $minorEditHtml;
+ }
}
}
'accesskey' => wfMessage( 'accesskey-watch' )->text(),
'id' => 'wpWatchthis',
);
- $checkboxes['watch'] =
+ $watchThisHtml =
Xml::check( 'wpWatchthis', $checked['watch'], $attribs ) .
" <label for='wpWatchthis' id='mw-editpage-watch'" .
Xml::expandAttributes( array( 'title' => Linker::titleAttrib( 'watch', 'withaccess' ) ) ) .
">{$watchLabel}</label>";
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $checkboxes['watch'] = Html::openElement( 'div', array( 'class' => 'mw-ui-checkbox' ) ) .
+ $watchThisHtml .
+ Html::closeElement( 'div' );
+ } else {
+ $checkboxes['watch'] = $watchThisHtml;
+ }
}
wfRunHooks( 'EditPageBeforeEditChecks', array( &$this, &$checkboxes, &$tabindex ) );
return $checkboxes;
* @return array
*/
public function getEditButtons( &$tabindex ) {
+ global $wgUseMediaWikiUIEverywhere;
+
$buttons = array();
$attribs = array(
'tabindex' => ++$tabindex,
'value' => wfMessage( 'savearticle' )->text(),
) + Linker::tooltipAndAccesskeyAttribs( 'save' );
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $attribs['class'] = 'mw-ui-button mw-ui-constructive';
+ }
$buttons['save'] = Xml::element( 'input', $attribs, '' );
++$tabindex; // use the same for preview and live preview
'tabindex' => $tabindex,
'value' => wfMessage( 'showpreview' )->text(),
) + Linker::tooltipAndAccesskeyAttribs( 'preview' );
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $attribs['class'] = 'mw-ui-button mw-ui-progressive';
+ }
$buttons['preview'] = Xml::element( 'input', $attribs, '' );
$buttons['live'] = '';
'tabindex' => ++$tabindex,
'value' => wfMessage( 'showdiff' )->text(),
) + Linker::tooltipAndAccesskeyAttribs( 'diff' );
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $attribs['class'] = 'mw-ui-button mw-ui-progressive';
+ }
$buttons['diff'] = Xml::element( 'input', $attribs, '' );
wfRunHooks( 'EditPageBeforeEditButtons', array( &$this, &$buttons, &$tabindex ) );
class AtomFeed extends ChannelFeed {
/**
* @todo document
+ * @param string|int $ts
* @return string
*/
function formatTime( $ts ) {
/**
* Fork a number of worker processes.
*
+ * @param int $numProcs
* @return string
*/
protected function forkWorkers( $numProcs ) {
/* @{ */
/**
* Whether the option exists.
+ * @param string $name
* @return bool
*/
public function offsetExists( $name ) {
/**
* Retrieve an option value.
+ * @param string $name
* @return mixed
*/
public function offsetGet( $name ) {
/**
* Set an option to given value.
+ * @param string $name
+ * @param mixed $value
*/
public function offsetSet( $name, $value ) {
$this->setValue( $name, $value );
/**
* Delete the option.
+ * @param string $name
*/
public function offsetUnset( $name ) {
$this->delete( $name );
*
* There are two important configuration options this class uses:
*
- * $wgMimeType: If this is set to an xml mimetype then output should be
+ * $wgMimeType: If this is set to an xml MIME type then output should be
* valid XHTML5.
* $wgWellFormedXml: If this is set to true, then all output should be
* well-formed XML (quotes on attributes, self-closing tags, etc.).
'itemscope',
);
+ /**
+ * Modifies a set of attributes meant for text input elements
+ * and apply a set of default attributes.
+ * Removes size attribute when $wgUseMediaWikiUIEverywhere enabled.
+ * @param array $attrs An attribute array.
+ * @return array $attrs A modified attribute array
+ */
+ public static function getTextInputAttributes( $attrs ) {
+ global $wgUseMediaWikiUIEverywhere;
+ if ( !$attrs ) {
+ $attrs = array();
+ }
+ if ( isset( $attrs['class'] ) ) {
+ if ( is_array( $attrs['class'] ) ) {
+ $attrs['class'][] = 'mw-ui-input';
+ } else {
+ $attrs['class'] .= ' mw-ui-input';
+ }
+ } else {
+ $attrs['class'] = 'mw-ui-input';
+ }
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ // Note that size can effect the desired width rendering of mw-ui-input elements
+ // so it is removed. Left intact when mediawiki ui not enabled.
+ unset( $attrs['size'] );
+ }
+ return $attrs;
+ }
+
/**
* Returns an HTML element in a string. The major advantage here over
* manually typing out the HTML is that it will escape all attribute
}
/**
- * Returns "</$element>", except if $wgWellFormedXml is off, in which case
- * it returns the empty string when that's guaranteed to be safe.
+ * Returns "</$element>"
*
* @since 1.17
* @param string $element Name of the element, e.g., 'a'
- * @return string A closing tag, if required
+ * @return string A closing tag
*/
public static function closeElement( $element ) {
- global $wgWellFormedXml;
-
$element = strtolower( $element );
- // Reference:
- // http://www.whatwg.org/html/syntax.html#optional-tags
- if ( !$wgWellFormedXml && in_array( $element, array(
- 'html',
- 'head',
- 'body',
- 'li',
- 'dt',
- 'dd',
- 'tr',
- 'td',
- 'th',
- ) ) ) {
- return '';
- }
return "</$element>";
}
$attribs['type'] = $type;
$attribs['value'] = $value;
$attribs['name'] = $name;
-
+ if ( in_array( $type, array( 'text', 'search', 'email', 'password', 'number' ) ) ) {
+ $attribs = Html::getTextInputAttributes( $attribs );
+ }
return self::element( 'input', $attribs );
}
} else {
$spacedValue = $value;
}
- return self::element( 'textarea', $attribs, $spacedValue );
+ return self::element( 'textarea', Html::getTextInputAttributes( $attribs ), $spacedValue );
}
/**
$isXHTML = self::isXmlMimeType( $wgMimeType );
if ( $isXHTML ) { // XHTML5
- // XML mimetyped markup should have an xml header.
+ // XML MIME-typed markup should have an xml header.
// However a DOCTYPE is not needed.
$ret .= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?" . ">\n";
}
/**
- * Determines if the given mime type is xml.
+ * Determines if the given MIME type is xml.
*
- * @param string $mimetype MimeType
+ * @param string $mimetype MIME type
* @return bool
*/
public static function isXmlMimeType( $mimetype ) {
# http://www.whatwg.org/html/infrastructure.html#xml-mime-type
# * text/xml
# * application/xml
- # * Any mimetype with a subtype ending in +xml (this implicitly includes application/xhtml+xml)
+ # * Any MIME type with a subtype ending in +xml (this implicitly includes application/xhtml+xml)
return (bool)preg_match( '!^(text|application)/xml$|^.+/.+\+xml$!', $mimetype );
}
* frame parameters supplied by the Parser.
* @param array $frameParams The frame parameters
* @param string $query An optional query string to add to description page links
+ * @param Parser|null $parser
* @return array
*/
private static function getImageLinkMTOParams( $frameParams, $query = '', $parser = null ) {
* @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 ) {
*/
private $context;
+ /**
+ * @var Config
+ */
+ private $config;
+
/**
* @param null|WebRequest $x
* @return WebRequest
}
$this->context = $context;
+ $this->config = $context->getConfig();
}
/**
* @return void
*/
private function performRequest() {
- global $wgServer, $wgUsePathInfo, $wgTitle;
+ global $wgTitle;
wfProfileIn( __METHOD__ );
$url = $title->getFullURL( $query );
}
// Check for a redirect loop
- if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url )
+ if ( !preg_match( '/^' . preg_quote( $this->config->get( 'Server' ), '/' ) . '/', $url )
&& $title->isLocal()
) {
// 301 so google et al report the target as the actual url.
"requested; this sometimes happens when moving a wiki " .
"to a new server or changing the server configuration.\n\n";
- if ( $wgUsePathInfo ) {
+ if ( $this->config->get( 'UsePathInfo' ) ) {
$message .= "The wiki is trying to interpret the page " .
"title from the URL path portion (PATH_INFO), which " .
"sometimes fails depending on the web server. Try " .
* @return mixed An Article, or a string to redirect to another URL
*/
private function initializeArticle() {
- global $wgDisableHardRedirects;
-
wfProfileIn( __METHOD__ );
$title = $this->context->getTitle();
// Is the target already set by an extension?
$target = $target ? $target : $article->followRedirect();
if ( is_string( $target ) ) {
- if ( !$wgDisableHardRedirects ) {
+ if ( !$this->config->get( 'DisableHardRedirects' ) ) {
// we'll need to redirect
wfProfileOut( __METHOD__ );
return $target;
* @param Title $requestTitle The original title, before any redirects were applied
*/
private function performAction( Page $page, Title $requestTitle ) {
- global $wgUseSquid, $wgSquidMaxage;
-
wfProfileIn( __METHOD__ );
$request = $this->context->getRequest();
if ( $action instanceof Action ) {
# Let Squid cache things if we can purge them.
- if ( $wgUseSquid &&
+ if ( $this->config->get( 'UseSquid' ) &&
in_array( $request->getFullRequestURL(), $requestTitle->getSquidURLs() )
) {
- $output->setSquidMaxage( $wgSquidMaxage );
+ $output->setSquidMaxage( $this->config->get( 'SquidMaxage' ) );
}
$action->show();
* @return bool
*/
private function checkMaxLag() {
- global $wgShowHostnames;
-
wfProfileIn( __METHOD__ );
$maxLag = $this->context->getRequest()->getVal( 'maxlag' );
if ( !is_null( $maxLag ) ) {
$resp->header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
$resp->header( 'X-Database-Lag: ' . intval( $lag ) );
$resp->header( 'Content-Type: text/plain' );
- if ( $wgShowHostnames ) {
+ if ( $this->config->get( 'ShowHostnames' ) ) {
echo "Waiting for $host: $lag seconds lagged\n";
} else {
echo "Waiting for a database server: $lag seconds lagged\n";
}
private function main() {
- global $wgUseFileCache, $wgTitle, $wgUseAjax;
+ global $wgTitle;
wfProfileIn( __METHOD__ );
$request = $this->context->getRequest();
// Send Ajax requests to the Ajax dispatcher.
- if ( $wgUseAjax && $request->getVal( 'action', 'view' ) == 'ajax' ) {
+ if ( $this->config->get( 'UseAjax' ) && $request->getVal( 'action', 'view' ) == 'ajax' ) {
// Set a dummy title, because $wgTitle == null might break things
$title = Title::makeTitle( NS_MAIN, 'AJAX' );
}
}
- if ( $wgUseFileCache && $title->getNamespace() >= 0 ) {
+ if ( $this->config->get( 'UseFileCache' ) && $title->getNamespace() >= 0 ) {
wfProfileIn( 'main-try-filecache' );
if ( HTMLFileCache::useFileCache( $this->context ) ) {
// Try low-level file cache hit
* the socket once it's done.
*/
protected function triggerJobs() {
- global $wgJobRunRate, $wgServer, $wgRunJobsAsync;
-
- if ( $wgJobRunRate <= 0 || wfReadOnly() ) {
+ $jobRunRate = $this->config->get( 'JobRunRate' );
+ if ( $jobRunRate <= 0 || wfReadOnly() ) {
return;
} elseif ( $this->getTitle()->isSpecial( 'RunJobs' ) ) {
return; // recursion guard
$section = new ProfileSection( __METHOD__ );
- if ( $wgJobRunRate < 1 ) {
+ if ( $jobRunRate < 1 ) {
$max = mt_getrandmax();
- if ( mt_rand( 0, $max ) > $max * $wgJobRunRate ) {
- return; // the higher $wgJobRunRate, the less likely we return here
+ if ( mt_rand( 0, $max ) > $max * $jobRunRate ) {
+ return; // the higher the job run rate, the less likely we return here
}
$n = 1;
} else {
- $n = intval( $wgJobRunRate );
+ $n = intval( $jobRunRate );
}
- if ( !$wgRunJobsAsync ) {
+ if ( !$this->config->get( 'RunJobsAsync' ) ) {
// Fall back to running the job here while the user waits
$runner = new JobRunner();
$runner->run( array( 'maxJobs' => $n ) );
$query['signature'] = SpecialRunJobs::getQuerySignature( $query );
$errno = $errstr = null;
- $info = wfParseUrl( $wgServer );
+ $info = wfParseUrl( $this->config->get( 'Server' ) );
wfSuppressWarnings();
$sock = fsockopen(
$info['host'],
protected $language = null;
/**
- * @var string|string[] The message key or array of keys.
+ * @var string The message key. If $keysToTry has more than one element,
+ * this may change to one of the keys to try when fetching the message text.
*/
protected $key;
+ /**
+ * @var string[] List of keys to try when fetching the message.
+ */
+ protected $keysToTry;
+
/**
* @var array List of parameters which will be substituted into the message.
*/
* non-empty message for.
* @param array $params Message parameters.
* @param Language $language Optional language of the message, defaults to $wgLang.
+ *
+ * @throws InvalidArgumentException
*/
public function __construct( $key, $params = array(), Language $language = null ) {
global $wgLang;
- $this->key = $key;
+ if ( !is_string( $key ) && !is_array( $key ) ) {
+ throw new InvalidArgumentException( '$key must be a string or an array' );
+ }
+
+ $this->keysToTry = (array)$key;
+
+ if ( empty( $this->keysToTry ) ) {
+ throw new InvalidArgumentException( '$key must not be an empty list' );
+ }
+
+ $this->key = reset( $this->keysToTry );
+
$this->parameters = array_values( $params );
$this->language = $language ? $language : $wgLang;
}
/**
- * Returns the message key or the first from an array of message keys.
+ * @since 1.24
+ *
+ * @return bool True if this is a multi-key message, that is, if the key provided to the
+ * constructor was a fallback list of keys to try.
+ */
+ public function isMultiKey() {
+ return count( $this->keysToTry ) > 1;
+ }
+
+ /**
+ * @since 1.24
+ *
+ * @return string[] The list of keys to try when fetching the message text,
+ * in order of preference.
+ */
+ public function getKeysToTry() {
+ return $this->keysToTry;
+ }
+
+ /**
+ * Returns the message key.
+ *
+ * If a list of multiple possible keys was supplied to the constructor, this method may
+ * return any of these keys. After the message ahs been fetched, this method will return
+ * the key that was actually used to fetch the message.
*
* @since 1.21
*
* @return string
*/
public function getKey() {
- if ( is_array( $this->key ) ) {
- // May happen if some kind of fallback is applied.
- // For now, just use the first key. We really need a better solution.
- return $this->key[0];
- } else {
- return $this->key;
- }
+ return $this->key;
}
/**
$string = $this->fetchMessage();
if ( $string === false ) {
- $key = htmlspecialchars( is_array( $this->key ) ? $this->key[0] : $this->key );
+ $key = htmlspecialchars( $this->key );
if ( $this->format === 'plain' ) {
return '<' . $key . '>';
}
protected function fetchMessage() {
if ( $this->message === null ) {
$cache = MessageCache::singleton();
- if ( is_array( $this->key ) ) {
- if ( !count( $this->key ) ) {
- throw new MWException( "Given empty message key array." );
- }
- foreach ( $this->key as $key ) {
- $message = $cache->get( $key, $this->useDatabase, $this->language );
- if ( $message !== false && $message !== '' ) {
- break;
- }
+
+ foreach ( $this->keysToTry as $key ) {
+ $message = $cache->get( $key, $this->useDatabase, $this->language );
+ if ( $message !== false && $message !== '' ) {
+ break;
}
- $this->message = $message;
- } else {
- $this->message = $cache->get( $this->key, $this->useDatabase, $this->language );
}
+
+ // NOTE: The constructor makes sure keysToTry isn't empty,
+ // so we know that $key and $message are initialized.
+ $this->key = $key;
+ $this->message = $message;
}
return $this->message;
}
*
* @see Message::__construct
*
- * @param string|string[] $key Message to use.
+ * @param string $text Message to use.
* @param array $params Parameters for the message.
+ *
+ * @throws InvalidArgumentException
*/
- public function __construct( $key, $params = array() ) {
- parent::__construct( $key, $params );
+ public function __construct( $text, $params = array() ) {
+ if ( !is_string( $text ) ) {
+ throw new InvalidArgumentException( '$text must be a string' );
+ }
+
+ parent::__construct( $text, $params );
+
// The key is the message.
- $this->message = $key;
+ $this->message = $text;
}
/**
if ( $this->message === null ) {
$this->message = $this->key;
}
+
return $this->message;
}
<?php
/**
- * Module defining helper functions for detecting and dealing with mime types.
+ * Module defining helper functions for detecting and dealing with MIME types.
*
* 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
*/
/**
- * Defines a set of well known mime types
+ * Defines a set of well known MIME types
* This is used as a fallback to mime.types files.
- * An extensive list of well known mime types is provided by
+ * An extensive list of well known MIME types is provided by
* the file mime.types in the includes directory.
*
- * This list concatenated with mime.types is used to create a mime <-> ext
- * map. Each line contains a mime type followed by a space separated list of
- * extensions. If multiple extensions for a single mime type exist or if
- * multiple mime types exist for a single extension then in most cases
- * MediaWiki assumes that the first extension following the mime type is the
- * canonical extension, and the first time a mime type appears for a certain
- * extension is considered the canonical mime type.
+ * This list concatenated with mime.types is used to create a MIME <-> ext
+ * map. Each line contains a MIME type followed by a space separated list of
+ * extensions. If multiple extensions for a single MIME type exist or if
+ * multiple MIME types exist for a single extension then in most cases
+ * MediaWiki assumes that the first extension following the MIME type is the
+ * canonical extension, and the first time a MIME type appears for a certain
+ * extension is considered the canonical MIME type.
*
* (Note that appending $wgMimeTypeFile to the end of MM_WELL_KNOWN_MIME_TYPES
* sucks because you can't redefine canonical types. This could be fixed by
);
/**
- * Defines a set of well known mime info entries
+ * Defines a set of well known MIME info entries
* This is used as a fallback to mime.info files.
- * An extensive list of well known mime types is provided by
+ * An extensive list of well known MIME types is provided by
* the file mime.info in the includes directory.
*/
define( 'MM_WELL_KNOWN_MIME_INFO', <<<END_STRING
);
/**
- * Implements functions related to mime types such as detection and mapping to
+ * Implements functions related to MIME types such as detection and mapping to
* file extension.
*
* Instances of this class are stateless, there only needs to be one global instance
*/
class MimeMagic {
/**
- * @var array Mapping of media types to arrays of mime types.
+ * @var array Mapping of media types to arrays of MIME types.
* This is used by findMediaType and getMediaType, respectively
*/
protected $mMediaTypes = null;
- /** @var array Map of mime type aliases
+ /** @var array Map of MIME type aliases
*/
protected $mMimeTypeAliases = null;
- /** @var array Map of mime types to file extensions (as a space separated list)
+ /** @var array Map of MIME types to file extensions (as a space separated list)
*/
protected $mMimeToExt = null;
- /** @var array Map of file extensions types to mime types (as a space separated list)
+ /** @var array Map of file extensions types to MIME types (as a space separated list)
*/
public $mExtToMime = null;
}
/**
- * Returns a list of file extensions for a given mime type as a space
- * separated string or null if the mime type was unrecognized. Resolves
- * mime type aliases.
+ * Returns a list of file extensions for a given MIME type as a space
+ * separated string or null if the MIME type was unrecognized. Resolves
+ * MIME type aliases.
*
* @param string $mime
* @return string|null
return $this->mMimeToExt[$mime];
}
- // Resolve the mime type to the canonical type
+ // Resolve the MIME type to the canonical type
if ( isset( $this->mMimeTypeAliases[$mime] ) ) {
$mime = $this->mMimeTypeAliases[$mime];
if ( isset( $this->mMimeToExt[$mime] ) ) {
}
/**
- * Returns a list of mime types for a given file extension as a space
+ * Returns a list of MIME types for a given file extension as a space
* separated string or null if the extension was unrecognized.
*
* @param string $ext
}
/**
- * Returns a single mime type for a given file extension or null if unknown.
+ * Returns a single MIME type for a given file extension or null if unknown.
* This is always the first type from the list returned by getTypesForExtension($ext).
*
* @param string $ext
}
/**
- * Tests if the extension matches the given mime type. Returns true if a
- * match was found, null if the mime type is unknown, and false if the
- * mime type is known but no matches where found.
+ * Tests if the extension matches the given MIME type. Returns true if a
+ * match was found, null if the MIME type is unknown, and false if the
+ * MIME type is known but no matches where found.
*
* @param string $extension
* @param string $mime
$ext = $this->getExtensionsForType( $mime );
if ( !$ext ) {
- return null; // Unknown mime type
+ return null; // Unknown MIME type
}
$ext = explode( ' ', $ext );
}
/**
- * Returns true if the mime type is known to represent an image format
+ * Returns true if the MIME type is known to represent an image format
* supported by the PHP GD library.
*
* @param string $mime
* invalid uploads; if we can't identify the type we won't
* be able to say if it's invalid.
*
- * @todo Be more accurate when using fancy mime detector plugins;
+ * @todo Be more accurate when using fancy MIME detector plugins;
* right now this is the bare minimum getimagesize() list.
* @param string $extension
* @return bool
}
/**
- * Improves a mime type using the file extension. Some file formats are very generic,
- * so their mime type is not very meaningful. A more useful mime type can be derived
+ * Improves a MIME type using the file extension. Some file formats are very generic,
+ * so their MIME type is not very meaningful. A more useful MIME type can be derived
* by looking at the file extension. Typically, this method would be called on the
* result of guessMimeType().
*
- * @param string $mime The mime type, typically guessed from a file's content.
+ * @param string $mime The MIME type, typically guessed from a file's content.
* @param string $ext The file extension, as taken from the file name
*
- * @return string The mime type
+ * @return string The MIME type
*/
public function improveTypeFromExtension( $mime, $ext ) {
if ( $mime === 'unknown/unknown' ) {
} elseif ( $mime === 'application/x-opc+zip' ) {
if ( $this->isMatchingExtension( $ext, $mime ) ) {
// A known file extension for an OPC file,
- // find the proper mime type for that file extension
+ // find the proper MIME type for that file extension
$mime = $this->guessTypesForExtension( $ext );
} else {
wfDebug( __METHOD__ . ": refusing to guess better type for $mime file, " .
}
/**
- * Mime type detection. This uses detectMimeType to detect the mime type
+ * MIME type detection. This uses detectMimeType to detect the MIME type
* of the file, but applies additional checks to determine some well known
- * file formats that may be missed or misinterpreted by the default mime
+ * file formats that may be missed or misinterpreted by the default MIME
* detection (namely XML based formats like XHTML or SVG, as well as ZIP
* based formats like OPC/ODF files).
*
* @param string $file The file to check
* @param string|bool $ext The file extension, or true (default) to extract it from the filename.
* Set it to false to ignore the extension. DEPRECATED! Set to false, use
- * improveTypeFromExtension($mime, $ext) later to improve mime type.
+ * improveTypeFromExtension($mime, $ext) later to improve MIME type.
*
- * @return string The mime type of $file
+ * @return string The MIME type of $file
*/
public function guessMimeType( $file, $ext = true ) {
if ( $ext ) { // TODO: make $ext default to false. Or better, remove it.
}
/**
- * Guess the mime type from the file contents.
+ * Guess the MIME type from the file contents.
*
* @param string $file
* @param mixed $ext
* @param string|null $tail The tail of the file
* @param string|bool $ext The file extension, or true to extract it from the filename.
* Set it to false (default) to ignore the extension. DEPRECATED! Set to false,
- * use improveTypeFromExtension($mime, $ext) later to improve mime type.
+ * use improveTypeFromExtension($mime, $ext) later to improve MIME type.
*
* @return string
*/
# TODO: remove the block below, as soon as improveTypeFromExtension is used everywhere
if ( $ext !== true && $ext !== false ) {
/** This is the mode used by getPropsFromPath
- * These mime's are stored in the database, where we don't really want
+ * These MIME's are stored in the database, where we don't really want
* x-opc+zip, because we use it only for internal purposes
*/
if ( $this->isMatchingExtension( $ext, $mime ) ) {
}
/**
- * Internal mime type detection. Detection is done using an external
+ * Internal MIME type detection. Detection is done using an external
* program, if $wgMimeDetectorCommand is set. Otherwise, the fileinfo
* extension and mime_content_type are tried (in this order), if they
- * are available. If the detections fails and $ext is not false, the mime
+ * are available. If the detections fails and $ext is not false, the MIME
* type is guessed from the file extension, using guessTypesForExtension.
*
- * If the mime type is still unknown, getimagesize is used to detect the
- * mime type if the file is an image. If no mime type can be determined,
+ * If the MIME type is still unknown, getimagesize is used to detect the
+ * MIME type if the file is an image. If no MIME type can be determined,
* this function returns 'unknown/unknown'.
*
* @param string $file The file to check
* @param string|bool $ext The file extension, or true (default) to extract it from the filename.
* Set it to false to ignore the extension. DEPRECATED! Set to false, use
- * improveTypeFromExtension($mime, $ext) later to improve mime type.
+ * improveTypeFromExtension($mime, $ext) later to improve MIME type.
*
- * @return string The mime type of $file
+ * @return string The MIME type of $file
*/
private function detectMimeType( $file, $ext = true ) {
global $wgMimeDetectorCommand;
# If you may need to load the fileinfo extension at runtime, set
# $wgLoadFileinfoExtension in LocalSettings.php
- $mime_magic_resource = finfo_open( FILEINFO_MIME ); /* return mime type ala mimetype extension */
+ $mime_magic_resource = finfo_open( FILEINFO_MIME ); /* return MIME type ala mimetype extension */
if ( $mime_magic_resource ) {
$m = finfo_file( $mime_magic_resource, $file );
}
/**
- * Determine the media type code for a file, using its mime type, name and
+ * Determine the media type code for a file, using its MIME type, name and
* possibly its contents.
*
- * This function relies on the findMediaType(), mapping extensions and mime
+ * This function relies on the findMediaType(), mapping extensions and MIME
* types to media types.
*
* @todo analyse file if need be
* @todo look at multiple extension, separately and together.
*
* @param string $path Full path to the image file, in case we have to look at the contents
- * (if null, only the mime type is used to determine the media type code).
- * @param string $mime Mime type. If null it will be guessed using guessMimeType.
+ * (if null, only the MIME type is used to determine the media type code).
+ * @param string $mime MIME type. If null it will be guessed using guessMimeType.
*
* @return string A value to be used with the MEDIATYPE_xxx constants.
*/
return MEDIATYPE_UNKNOWN;
}
- // If mime type is unknown, guess it
+ // If MIME type is unknown, guess it
if ( !$mime ) {
$mime = $this->guessMimeType( $path, false );
}
}
}
- // Check for entry for full mime type
+ // Check for entry for full MIME type
if ( $mime ) {
$type = $this->findMediaType( $mime );
if ( $type !== MEDIATYPE_UNKNOWN ) {
}
}
- // Check major mime type
+ // Check major MIME type
if ( $mime ) {
$i = strpos( $mime, '/' );
if ( $i !== false ) {
}
/**
- * Returns a media code matching the given mime type or file extension.
+ * Returns a media code matching the given MIME type or file extension.
* File extensions are represented by a string starting with a dot (.) to
- * distinguish them from mime types.
+ * distinguish them from MIME types.
*
* This function relies on the mapping defined by $this->mMediaTypes
* @access private
*/
function findMediaType( $extMime ) {
if ( strpos( $extMime, '.' ) === 0 ) {
- // If it's an extension, look up the mime types
+ // If it's an extension, look up the MIME types
$m = $this->getTypesForExtension( substr( $extMime, 1 ) );
if ( !$m ) {
return MEDIATYPE_UNKNOWN;
$m = explode( ' ', $m );
} else {
- // Normalize mime type
+ // Normalize MIME type
if ( isset( $this->mMimeTypeAliases[$extMime] ) ) {
$extMime = $this->mMimeTypeAliases[$extMime];
}
* Constructor for OutputPage. This should not be called directly.
* Instead a new RequestContext should be created and it will implicitly create
* a OutputPage tied to that context.
+ * @param IContextSource|null $context
*/
function __construct( IContextSource $context = null ) {
if ( $context === null ) {
/**
* Set the URL to be used for the <link rel=canonical>. This should be used
* in preference to addLink(), to avoid duplicate link tags.
+ * @param string $url
*/
function setCanonicalUrl( $url ) {
$this->mCanonicalUrl = $url;
* Add a subtitle containing a backlink to a page
*
* @param Title $title Title to link to
+ * @param array $query Array of additional parameters to include in the link
*/
- public function addBacklinkSubtitle( Title $title ) {
- $query = array();
+ public function addBacklinkSubtitle( Title $title, $query = array() ) {
if ( $title->isRedirect() ) {
$query['redirect'] = 'no';
}
);
} else {
$links['html'] .= Html::inlineScript(
- ResourceLoader::makeLoaderConditionalScript(
- $resourceLoader->makeModuleResponse( $context, $grpModules )
- )
+ $resourceLoader->makeModuleResponse( $context, $grpModules )
);
}
$links['html'] .= "\n";
## Skin #####################################
global $wgAllowUserCss, $wgAllowUserJs;
- $defaultPreferences['skin'] = array(
- 'type' => 'radio',
- 'options' => self::generateSkinOptions( $user, $context ),
- 'label' => ' ',
- 'section' => 'rendering/skin',
- );
+ // Skin selector, if there is at least one valid skin
+ $skinOptions = self::generateSkinOptions( $user, $context );
+ if ( $skinOptions ) {
+ $defaultPreferences['skin'] = array(
+ 'type' => 'radio',
+ 'options' => $skinOptions,
+ 'label' => ' ',
+ 'section' => 'rendering/skin',
+ );
+ }
# Create links to user CSS/JS pages for all skins
# This code is basically copied from generateSkinOptions(). It'd
}
asort( $validSkinNames );
+ $foundDefault = false;
foreach ( $validSkinNames as $skinkey => $sn ) {
$linkTools = array();
# Mark the default skin
if ( $skinkey == $wgDefaultSkin ) {
$linkTools[] = $context->msg( 'default' )->escaped();
+ $foundDefault = true;
}
# Create preview link
$ret[$display] = $skinkey;
}
+ if ( !$foundDefault ) {
+ // If the default skin is not available, things are going to break horribly because the
+ // default value for skin selector will not be a valid value. Let's just not show it then.
+ return array();
+ }
+
return $ret;
}
$wgExtensionAssetsPath = "$wgScriptPath/extensions";
}
-// Enable default skins. Temporary, to be removed before 1.24 release.
-// This is hacky and bad, the require_once calls should eventually be generated by the installer
-// and placed in LocalSettings.php.
-// While this is in Setup.php, it needs to be done as soon as possible, as some of the setup code
-// depends on all extensions and skins being already required (bug 67318).
-require_once "$wgStyleDirectory/MonoBook/MonoBook.php";
-require_once "$wgStyleDirectory/Vector/Vector.php";
-
if ( $wgLogo === false ) {
$wgLogo = "$wgStylePath/common/images/wiki.png";
}
$wgSkipSkins[] = $wgSkipSkin;
}
+// Register skins
+// Use a closure to avoid leaking into global state
+call_user_func( function() use ( $wgValidSkinNames ) {
+ $factory = SkinFactory::getDefaultInstance();
+ foreach ( $wgValidSkinNames as $name => $skin ) {
+ $factory->register( $name, $skin, function() use ( $name, $skin ) {
+ $class = "Skin$skin";
+ return new $class( $name );
+ } );
+ }
+ // Register a hidden "fallback" skin
+ $factory->register( 'fallback', 'Fallback', function() {
+ return new SkinFallback;
+ } );
+} );
+$wgSkipSkins[] = 'fallback';
+
if ( $wgLocalInterwiki ) {
array_unshift( $wgLocalInterwikis, $wgLocalInterwiki );
}
$wgCookieSecure = ( WebRequest::detectProtocol() === 'https' );
}
-if ( $wgRC2UDPAddress ) {
- $wgRCFeeds['default'] = array(
- 'formatter' => 'IRCColourfulRCFeedFormatter',
- 'uri' => "udp://$wgRC2UDPAddress:$wgRC2UDPPort/$wgRC2UDPPrefix",
- 'add_interwiki_prefix' => &$wgRC2UDPInterwikiPrefix,
- 'omit_bots' => &$wgRC2UDPOmitBots,
- );
+// Back compatibility for $wgRateLimitLog deprecated with 1.23
+if ( $wgRateLimitLog && !array_key_exists( 'ratelimit', $wgDebugLogGroups ) ) {
+ $wgDebugLogGroups['ratelimit'] = $wgRateLimitLog;
+}
+
+if ( $wgProfileOnly ) {
+ $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
+ $wgDebugLogFile = '';
}
wfProfileOut( $fname . '-defaults' );
wfProfileOut( $fname . '-tempDir' );
}
-// $wgHTCPMulticastRouting got renamed to $wgHTCPRouting in MediaWiki 1.22
-// ensure back compatibility.
-if ( !$wgHTCPRouting && $wgHTCPMulticastRouting ) {
- $wgHTCPRouting = $wgHTCPMulticastRouting;
-}
-
-// Initialize $wgHTCPRouting from backwards-compatible settings that
-// comes from pre 1.20 version.
-if ( !$wgHTCPRouting && $wgHTCPMulticastAddress ) {
- $wgHTCPRouting = array(
- '' => array(
- 'host' => $wgHTCPMulticastAddress,
- 'port' => $wgHTCPPort,
- )
- );
-}
-
-// Back compatibility for $wgRateLimitLog deprecated with 1.23
-if ( $wgRateLimitLog && !array_key_exists( 'ratelimit', $wgDebugLogGroups ) ) {
- $wgDebugLogGroups['ratelimit'] = $wgRateLimitLog;
-}
-
-if ( $wgProfileOnly ) {
- $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
- $wgDebugLogFile = '';
-}
-
wfProfileOut( $fname . '-defaults2' );
wfProfileIn( $fname . '-misc1' );
wfProfileIn( $fname . '-session' );
-// If session.auto_start is there, we can't touch session name
-if ( !wfIniGetBool( 'session.auto_start' ) ) {
- session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
-}
+if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
+ // If session.auto_start is there, we can't touch session name
+ if ( !wfIniGetBool( 'session.auto_start' ) ) {
+ session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
+ }
-if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode &&
- ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) )
-) {
- wfSetupSession();
+ if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) {
+ wfSetupSession();
+ }
}
wfProfileOut( $fname . '-session' );
+++ /dev/null
-<?php
-/**
- * Base class for all skins.
- *
- * 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
- */
-
-/**
- * @defgroup Skins Skins
- */
-
-/**
- * The main skin class which provides methods and properties for all other skins.
- *
- * See docs/skin.txt for more information.
- *
- * @ingroup Skins
- */
-abstract class Skin extends ContextSource {
- protected $skinname = null;
- protected $mRelevantTitle = null;
- protected $mRelevantUser = null;
-
- /**
- * @var string Stylesheets set to use. Subdirectory in skins/ where various stylesheets are
- * located. Only needs to be set if you intend to use the getSkinStylePath() method.
- */
- public $stylename = null;
-
- /**
- * Fetch the set of available skins.
- * @return array Associative array of strings
- */
- static function getSkinNames() {
- global $wgValidSkinNames;
- static $skinsInitialised = false;
-
- if ( !$skinsInitialised || !count( $wgValidSkinNames ) ) {
- # Get a list of available skins
- # Build using the regular expression '^(.*).php$'
- # Array keys are all lower case, array value keep the case used by filename
- #
- wfProfileIn( __METHOD__ . '-init' );
-
- global $wgStyleDirectory;
-
- $skinDir = dir( $wgStyleDirectory );
-
- if ( $skinDir !== false && $skinDir !== null ) {
- # while code from www.php.net
- while ( false !== ( $file = $skinDir->read() ) ) {
- // Skip non-PHP files, hidden files, and '.dep' includes
- $matches = array();
-
- if ( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
- $aSkin = $matches[1];
-
- // Explicitly disallow loading core skins via the autodiscovery mechanism.
- //
- // They should be loaded already (in a non-autodicovery way), but old files might still
- // exist on the server because our MW version upgrade process is widely documented as
- // requiring just copying over all files, without removing old ones.
- //
- // This is one of the reasons we should have never used autodiscovery in the first
- // place. This hack can be safely removed when autodiscovery is gone.
- if ( in_array( $aSkin, array( 'CologneBlue', 'Modern', 'MonoBook', 'Vector' ) ) ) {
- wfLogWarning(
- "An old copy of the $aSkin skin was found in your skins/ directory. " .
- "You should remove it to avoid problems in the future." .
- "See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for details."
- );
- continue;
- }
-
- wfLogWarning(
- "A skin using autodiscovery mechanism, $aSkin, was found in your skins/ directory. " .
- "The mechanism will be removed in MediaWiki 1.25 and the skin will no longer be recognized. " .
- "See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for information how to fix this."
- );
- $wgValidSkinNames[strtolower( $aSkin )] = $aSkin;
- }
- }
- $skinDir->close();
- }
- $skinsInitialised = true;
- wfProfileOut( __METHOD__ . '-init' );
- }
- return $wgValidSkinNames;
- }
-
- /**
- * Fetch the skinname messages for available skins.
- * @return string[]
- */
- static function getSkinNameMessages() {
- $messages = array();
- foreach ( self::getSkinNames() as $skinKey => $skinName ) {
- $messages[] = "skinname-$skinKey";
- }
- return $messages;
- }
-
- /**
- * Fetch the list of user-selectable skins in regards to $wgSkipSkins.
- * Useful for Special:Preferences and other places where you
- * only want to show skins users _can_ use.
- * @return string[]
- * @since 1.23
- */
- public static function getAllowedSkins() {
- global $wgSkipSkins;
-
- $allowedSkins = self::getSkinNames();
-
- foreach ( $wgSkipSkins as $skip ) {
- unset( $allowedSkins[$skip] );
- }
-
- return $allowedSkins;
- }
-
- /**
- * @deprecated since 1.23, use getAllowedSkins
- * @return string[]
- */
- public static function getUsableSkins() {
- wfDeprecated( __METHOD__, '1.23' );
- return self::getAllowedSkins();
- }
-
- /**
- * Normalize a skin preference value to a form that can be loaded.
- *
- * If a skin can't be found, it will fall back to the configured default ($wgDefaultSkin), or the
- * hardcoded default ($wgFallbackSkin) if the default skin is unavailable too.
- *
- * @param string $key 'monobook', 'vector', etc.
- * @return string
- */
- static function normalizeKey( $key ) {
- global $wgDefaultSkin, $wgFallbackSkin;
-
- $skinNames = Skin::getSkinNames();
-
- // Make keys lowercase for case-insensitive matching.
- $skinNames = array_change_key_case( $skinNames, CASE_LOWER );
- $key = strtolower( $key );
- $defaultSkin = strtolower( $wgDefaultSkin );
- $fallbackSkin = strtolower( $wgFallbackSkin );
-
- if ( $key == '' || $key == 'default' ) {
- // Don't return the default immediately;
- // in a misconfiguration we need to fall back.
- $key = $defaultSkin;
- }
-
- if ( isset( $skinNames[$key] ) ) {
- return $key;
- }
-
- // Older versions of the software used a numeric setting
- // in the user preferences.
- $fallback = array(
- 0 => $defaultSkin,
- 2 => 'cologneblue'
- );
-
- if ( isset( $fallback[$key] ) ) {
- $key = $fallback[$key];
- }
-
- if ( isset( $skinNames[$key] ) ) {
- return $key;
- } elseif ( isset( $skinNames[$defaultSkin] ) ) {
- return $defaultSkin;
- } else {
- return $fallbackSkin;
- }
- }
-
- /**
- * Factory method for loading a skin of a given type
- * @param string $key 'monobook', 'vector', etc.
- * @return Skin
- */
- static function &newFromKey( $key ) {
- global $wgStyleDirectory, $wgFallbackSkin;
-
- $key = Skin::normalizeKey( $key );
-
- $skinNames = Skin::getSkinNames();
- $skinName = $skinNames[$key];
- $className = "Skin{$skinName}";
-
- # Grab the skin class and initialise it.
- if ( !class_exists( $className ) ) {
-
- require_once "{$wgStyleDirectory}/{$skinName}.php";
-
- # Check if we got if not fallback to default skin
- if ( !class_exists( $className ) ) {
- # DO NOT die if the class isn't found. This breaks maintenance
- # scripts and can cause a user account to be unrecoverable
- # except by SQL manipulation if a previously valid skin name
- # is no longer valid.
- wfDebug( "Skin class does not exist: $className\n" );
-
- $fallback = $skinNames[Skin::normalizeKey( $wgFallbackSkin )];
- $className = "Skin{$fallback}";
- }
- }
- $skin = new $className( $key );
- return $skin;
- }
-
- /**
- * @return string Skin name
- */
- public function getSkinName() {
- return $this->skinname;
- }
-
- /**
- * @param OutputPage $out
- */
- function initPage( OutputPage $out ) {
- wfProfileIn( __METHOD__ );
-
- $this->preloadExistence();
-
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Defines the ResourceLoader modules that should be added to the skin
- * It is recommended that skins wishing to override call parent::getDefaultModules()
- * and substitute out any modules they wish to change by using a key to look them up
- * @return array Array of modules with helper keys for easy overriding
- */
- public function getDefaultModules() {
- global $wgIncludeLegacyJavaScript, $wgPreloadJavaScriptMwUtil, $wgUseAjax,
- $wgAjaxWatch, $wgEnableAPI, $wgEnableWriteAPI;
-
- $out = $this->getOutput();
- $user = $out->getUser();
- $modules = array(
- // modules that enhance the page content in some way
- 'content' => array(
- 'mediawiki.page.ready',
- ),
- // modules that exist for legacy reasons
- 'legacy' => array(),
- // modules relating to search functionality
- 'search' => array(),
- // modules relating to functionality relating to watching an article
- 'watch' => array(),
- // modules which relate to the current users preferences
- 'user' => array(),
- );
- if ( $wgIncludeLegacyJavaScript ) {
- $modules['legacy'][] = 'mediawiki.legacy.wikibits';
- }
-
- if ( $wgPreloadJavaScriptMwUtil ) {
- $modules['legacy'][] = 'mediawiki.util';
- }
-
- // Add various resources if required
- if ( $wgUseAjax ) {
- $modules['legacy'][] = 'mediawiki.legacy.ajax';
-
- if ( $wgEnableAPI ) {
- if ( $wgEnableWriteAPI && $wgAjaxWatch && $user->isLoggedIn()
- && $user->isAllowed( 'writeapi' )
- ) {
- $modules['watch'][] = 'mediawiki.page.watch.ajax';
- }
-
- $modules['search'][] = 'mediawiki.searchSuggest';
- }
- }
-
- if ( $user->getBoolOption( 'editsectiononrightclick' ) ) {
- $modules['user'][] = 'mediawiki.action.view.rightClickEdit';
- }
-
- // Crazy edit-on-double-click stuff
- if ( $out->isArticle() && $user->getOption( 'editondblclick' ) ) {
- $modules['user'][] = 'mediawiki.action.view.dblClickEdit';
- }
- return $modules;
- }
-
- /**
- * Preload the existence of three commonly-requested pages in a single query
- */
- function preloadExistence() {
- $user = $this->getUser();
-
- // User/talk link
- $titles = array( $user->getUserPage(), $user->getTalkPage() );
-
- // Other tab link
- if ( $this->getTitle()->isSpecialPage() ) {
- // nothing
- } elseif ( $this->getTitle()->isTalkPage() ) {
- $titles[] = $this->getTitle()->getSubjectPage();
- } else {
- $titles[] = $this->getTitle()->getTalkPage();
- }
-
- $lb = new LinkBatch( $titles );
- $lb->setCaller( __METHOD__ );
- $lb->execute();
- }
-
- /**
- * Get the current revision ID
- *
- * @return int
- */
- public function getRevisionId() {
- return $this->getOutput()->getRevisionId();
- }
-
- /**
- * Whether the revision displayed is the latest revision of the page
- *
- * @return bool
- */
- public function isRevisionCurrent() {
- $revID = $this->getRevisionId();
- return $revID == 0 || $revID == $this->getTitle()->getLatestRevID();
- }
-
- /**
- * Set the "relevant" title
- * @see self::getRelevantTitle()
- * @param Title $t
- */
- public function setRelevantTitle( $t ) {
- $this->mRelevantTitle = $t;
- }
-
- /**
- * Return the "relevant" title.
- * A "relevant" title is not necessarily the actual title of the page.
- * Special pages like Special:MovePage use set the page they are acting on
- * as their "relevant" title, this allows the skin system to display things
- * such as content tabs which belong to to that page instead of displaying
- * a basic special page tab which has almost no meaning.
- *
- * @return Title
- */
- public function getRelevantTitle() {
- if ( isset( $this->mRelevantTitle ) ) {
- return $this->mRelevantTitle;
- }
- return $this->getTitle();
- }
-
- /**
- * Set the "relevant" user
- * @see self::getRelevantUser()
- * @param User $u
- */
- public function setRelevantUser( $u ) {
- $this->mRelevantUser = $u;
- }
-
- /**
- * Return the "relevant" user.
- * A "relevant" user is similar to a relevant title. Special pages like
- * Special:Contributions mark the user which they are relevant to so that
- * things like the toolbox can display the information they usually are only
- * able to display on a user's userpage and talkpage.
- * @return User
- */
- public function getRelevantUser() {
- if ( isset( $this->mRelevantUser ) ) {
- return $this->mRelevantUser;
- }
- $title = $this->getRelevantTitle();
- if ( $title->hasSubjectNamespace( NS_USER ) ) {
- $rootUser = $title->getRootText();
- if ( User::isIP( $rootUser ) ) {
- $this->mRelevantUser = User::newFromName( $rootUser, false );
- } else {
- $user = User::newFromName( $rootUser, false );
- if ( $user && $user->isLoggedIn() ) {
- $this->mRelevantUser = $user;
- }
- }
- return $this->mRelevantUser;
- }
- return null;
- }
-
- /**
- * Outputs the HTML generated by other functions.
- * @param OutputPage $out
- */
- abstract function outputPage( OutputPage $out = null );
-
- /**
- * @param array $data
- * @return string
- */
- static function makeVariablesScript( $data ) {
- if ( $data ) {
- return Html::inlineScript(
- ResourceLoader::makeLoaderConditionalScript( ResourceLoader::makeConfigSetScript( $data ) )
- );
- } else {
- return '';
- }
- }
-
- /**
- * Get the query to generate a dynamic stylesheet
- *
- * @return array
- */
- public static function getDynamicStylesheetQuery() {
- global $wgSquidMaxage;
-
- return array(
- 'action' => 'raw',
- 'maxage' => $wgSquidMaxage,
- 'usemsgcache' => 'yes',
- 'ctype' => 'text/css',
- 'smaxage' => $wgSquidMaxage,
- );
- }
-
- /**
- * Add skin specific stylesheets
- * Calling this method with an $out of anything but the same OutputPage
- * inside ->getOutput() is deprecated. The $out arg is kept
- * for compatibility purposes with skins.
- * @param OutputPage $out
- * @todo delete
- */
- abstract function setupSkinUserCss( OutputPage $out );
-
- /**
- * TODO: document
- * @param Title $title
- * @return string
- */
- function getPageClasses( $title ) {
- $numeric = 'ns-' . $title->getNamespace();
-
- if ( $title->isSpecialPage() ) {
- $type = 'ns-special';
- // bug 23315: provide a class based on the canonical special page name without subpages
- list( $canonicalName ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
- if ( $canonicalName ) {
- $type .= ' ' . Sanitizer::escapeClass( "mw-special-$canonicalName" );
- } else {
- $type .= ' mw-invalidspecialpage';
- }
- } elseif ( $title->isTalkPage() ) {
- $type = 'ns-talk';
- } else {
- $type = 'ns-subject';
- }
-
- $name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() );
-
- return "$numeric $type $name";
- }
-
- /*
- * Return values for <html> element
- * @return array of associative name-to-value elements for <html> element
- */
- public function getHtmlElementAttributes() {
- $lang = $this->getLanguage();
- return array(
- 'lang' => $lang->getHtmlCode(),
- 'dir' => $lang->getDir(),
- 'class' => 'client-nojs',
- );
- }
-
- /**
- * This will be called by OutputPage::headElement when it is creating the
- * "<body>" tag, skins can override it if they have a need to add in any
- * body attributes or classes of their own.
- * @param OutputPage $out
- * @param array $bodyAttrs
- */
- function addToBodyAttributes( $out, &$bodyAttrs ) {
- // does nothing by default
- }
-
- /**
- * URL to the logo
- * @return string
- */
- function getLogo() {
- global $wgLogo;
- return $wgLogo;
- }
-
- /**
- * @return string
- */
- function getCategoryLinks() {
- global $wgUseCategoryBrowser;
-
- $out = $this->getOutput();
- $allCats = $out->getCategoryLinks();
-
- if ( !count( $allCats ) ) {
- return '';
- }
-
- $embed = "<li>";
- $pop = "</li>";
-
- $s = '';
- $colon = $this->msg( 'colon-separator' )->escaped();
-
- if ( !empty( $allCats['normal'] ) ) {
- $t = $embed . implode( "{$pop}{$embed}", $allCats['normal'] ) . $pop;
-
- $msg = $this->msg( 'pagecategories' )->numParams( count( $allCats['normal'] ) )->escaped();
- $linkPage = wfMessage( 'pagecategorieslink' )->inContentLanguage()->text();
- $s .= '<div id="mw-normal-catlinks" class="mw-normal-catlinks">' .
- Linker::link( Title::newFromText( $linkPage ), $msg )
- . $colon . '<ul>' . $t . '</ul>' . '</div>';
- }
-
- # Hidden categories
- if ( isset( $allCats['hidden'] ) ) {
- if ( $this->getUser()->getBoolOption( 'showhiddencats' ) ) {
- $class = ' mw-hidden-cats-user-shown';
- } elseif ( $this->getTitle()->getNamespace() == NS_CATEGORY ) {
- $class = ' mw-hidden-cats-ns-shown';
- } else {
- $class = ' mw-hidden-cats-hidden';
- }
-
- $s .= "<div id=\"mw-hidden-catlinks\" class=\"mw-hidden-catlinks$class\">" .
- $this->msg( 'hidden-categories' )->numParams( count( $allCats['hidden'] ) )->escaped() .
- $colon . '<ul>' . $embed . implode( "{$pop}{$embed}", $allCats['hidden'] ) . $pop . '</ul>' .
- '</div>';
- }
-
- # optional 'dmoz-like' category browser. Will be shown under the list
- # of categories an article belong to
- if ( $wgUseCategoryBrowser ) {
- $s .= '<br /><hr />';
-
- # get a big array of the parents tree
- $parenttree = $this->getTitle()->getParentCategoryTree();
- # Skin object passed by reference cause it can not be
- # accessed under the method subfunction drawCategoryBrowser
- $tempout = explode( "\n", $this->drawCategoryBrowser( $parenttree ) );
- # Clean out bogus first entry and sort them
- unset( $tempout[0] );
- asort( $tempout );
- # Output one per line
- $s .= implode( "<br />\n", $tempout );
- }
-
- return $s;
- }
-
- /**
- * Render the array as a series of links.
- * @param array $tree Categories tree returned by Title::getParentCategoryTree
- * @return string Separated by >, terminate with "\n"
- */
- function drawCategoryBrowser( $tree ) {
- $return = '';
-
- foreach ( $tree as $element => $parent ) {
- if ( empty( $parent ) ) {
- # element start a new list
- $return .= "\n";
- } else {
- # grab the others elements
- $return .= $this->drawCategoryBrowser( $parent ) . ' > ';
- }
-
- # add our current element to the list
- $eltitle = Title::newFromText( $element );
- $return .= Linker::link( $eltitle, htmlspecialchars( $eltitle->getText() ) );
- }
-
- return $return;
- }
-
- /**
- * @return string
- */
- function getCategories() {
- $out = $this->getOutput();
-
- $catlinks = $this->getCategoryLinks();
-
- $classes = 'catlinks';
-
- // Check what we're showing
- $allCats = $out->getCategoryLinks();
- $showHidden = $this->getUser()->getBoolOption( 'showhiddencats' ) ||
- $this->getTitle()->getNamespace() == NS_CATEGORY;
-
- if ( empty( $allCats['normal'] ) && !( !empty( $allCats['hidden'] ) && $showHidden ) ) {
- $classes .= ' catlinks-allhidden';
- }
-
- return "<div id='catlinks' class='$classes'>{$catlinks}</div>";
- }
-
- /**
- * This runs a hook to allow extensions placing their stuff after content
- * and article metadata (e.g. categories).
- * Note: This function has nothing to do with afterContent().
- *
- * This hook is placed here in order to allow using the same hook for all
- * skins, both the SkinTemplate based ones and the older ones, which directly
- * use this class to get their data.
- *
- * The output of this function gets processed in SkinTemplate::outputPage() for
- * the SkinTemplate based skins, all other skins should directly echo it.
- *
- * @return string Empty by default, if not changed by any hook function.
- */
- protected function afterContentHook() {
- $data = '';
-
- if ( wfRunHooks( 'SkinAfterContent', array( &$data, $this ) ) ) {
- // adding just some spaces shouldn't toggle the output
- // of the whole <div/>, so we use trim() here
- if ( trim( $data ) != '' ) {
- // Doing this here instead of in the skins to
- // ensure that the div has the same ID in all
- // skins
- $data = "<div id='mw-data-after-content'>\n" .
- "\t$data\n" .
- "</div>\n";
- }
- } else {
- wfDebug( "Hook SkinAfterContent changed output processing.\n" );
- }
-
- return $data;
- }
-
- /**
- * Generate debug data HTML for displaying at the bottom of the main content
- * area.
- * @return string HTML containing debug data, if enabled (otherwise empty).
- */
- protected function generateDebugHTML() {
- return MWDebug::getHTMLDebugLog();
- }
-
- /**
- * This gets called shortly before the "</body>" tag.
- *
- * @return string HTML-wrapped JS code to be put before "</body>"
- */
- function bottomScripts() {
- // TODO and the suckage continues. This function is really just a wrapper around
- // OutputPage::getBottomScripts() which takes a Skin param. This should be cleaned
- // up at some point
- $bottomScriptText = $this->getOutput()->getBottomScripts();
- wfRunHooks( 'SkinAfterBottomScripts', array( $this, &$bottomScriptText ) );
-
- return $bottomScriptText;
- }
-
- /**
- * Text with the permalink to the source page,
- * usually shown on the footer of a printed page
- *
- * @return string HTML text with an URL
- */
- function printSource() {
- $oldid = $this->getRevisionId();
- if ( $oldid ) {
- $canonicalUrl = $this->getTitle()->getCanonicalURL( 'oldid=' . $oldid );
- $url = htmlspecialchars( wfExpandIRI( $canonicalUrl ) );
- } else {
- // oldid not available for non existing pages
- $url = htmlspecialchars( wfExpandIRI( $this->getTitle()->getCanonicalURL() ) );
- }
-
- return $this->msg( 'retrievedfrom', '<a dir="ltr" href="' . $url
- . '">' . $url . '</a>' )->text();
- }
-
- /**
- * @return string
- */
- function getUndeleteLink() {
- $action = $this->getRequest()->getVal( 'action', 'view' );
-
- if ( $this->getUser()->isAllowed( 'deletedhistory' ) &&
- ( $this->getTitle()->getArticleID() == 0 || $action == 'history' ) ) {
- $n = $this->getTitle()->isDeleted();
-
- if ( $n ) {
- if ( $this->getUser()->isAllowed( 'undelete' ) ) {
- $msg = 'thisisdeleted';
- } else {
- $msg = 'viewdeleted';
- }
-
- return $this->msg( $msg )->rawParams(
- Linker::linkKnown(
- SpecialPage::getTitleFor( 'Undelete', $this->getTitle()->getPrefixedDBkey() ),
- $this->msg( 'restorelink' )->numParams( $n )->escaped() )
- )->text();
- }
- }
-
- return '';
- }
-
- /**
- * @return string
- */
- function subPageSubtitle() {
- $out = $this->getOutput();
- $subpages = '';
-
- if ( !wfRunHooks( 'SkinSubPageSubtitle', array( &$subpages, $this, $out ) ) ) {
- return $subpages;
- }
-
- if ( $out->isArticle() && MWNamespace::hasSubpages( $out->getTitle()->getNamespace() ) ) {
- $ptext = $this->getTitle()->getPrefixedText();
- if ( preg_match( '/\//', $ptext ) ) {
- $links = explode( '/', $ptext );
- array_pop( $links );
- $c = 0;
- $growinglink = '';
- $display = '';
- $lang = $this->getLanguage();
-
- foreach ( $links as $link ) {
- $growinglink .= $link;
- $display .= $link;
- $linkObj = Title::newFromText( $growinglink );
-
- if ( is_object( $linkObj ) && $linkObj->isKnown() ) {
- $getlink = Linker::linkKnown(
- $linkObj,
- htmlspecialchars( $display )
- );
-
- $c++;
-
- if ( $c > 1 ) {
- $subpages .= $lang->getDirMarkEntity() . $this->msg( 'pipe-separator' )->escaped();
- } else {
- $subpages .= '< ';
- }
-
- $subpages .= $getlink;
- $display = '';
- } else {
- $display .= '/';
- }
- $growinglink .= '/';
- }
- }
- }
-
- return $subpages;
- }
-
- /**
- * Returns true if the IP should be shown in the header
- * @return bool
- */
- function showIPinHeader() {
- global $wgShowIPinHeader;
- return $wgShowIPinHeader && session_id() != '';
- }
-
- /**
- * @return string
- */
- function getSearchLink() {
- $searchPage = SpecialPage::getTitleFor( 'Search' );
- return $searchPage->getLocalURL();
- }
-
- /**
- * @return string
- */
- function escapeSearchLink() {
- return htmlspecialchars( $this->getSearchLink() );
- }
-
- /**
- * @param string $type
- * @return string
- */
- function getCopyright( $type = 'detect' ) {
- global $wgRightsPage, $wgRightsUrl, $wgRightsText;
-
- if ( $type == 'detect' ) {
- if ( !$this->isRevisionCurrent()
- && !$this->msg( 'history_copyright' )->inContentLanguage()->isDisabled()
- ) {
- $type = 'history';
- } else {
- $type = 'normal';
- }
- }
-
- if ( $type == 'history' ) {
- $msg = 'history_copyright';
- } else {
- $msg = 'copyright';
- }
-
- if ( $wgRightsPage ) {
- $title = Title::newFromText( $wgRightsPage );
- $link = Linker::linkKnown( $title, $wgRightsText );
- } elseif ( $wgRightsUrl ) {
- $link = Linker::makeExternalLink( $wgRightsUrl, $wgRightsText );
- } elseif ( $wgRightsText ) {
- $link = $wgRightsText;
- } else {
- # Give up now
- return '';
- }
-
- // Allow for site and per-namespace customization of copyright notice.
- // @todo Remove deprecated $forContent param from hook handlers and then remove here.
- $forContent = true;
-
- wfRunHooks(
- 'SkinCopyrightFooter',
- array( $this->getTitle(), $type, &$msg, &$link, &$forContent )
- );
-
- return $this->msg( $msg )->rawParams( $link )->text();
- }
-
- /**
- * @return null|string
- */
- function getCopyrightIcon() {
- global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgCopyrightIcon;
-
- $out = '';
-
- if ( $wgCopyrightIcon ) {
- $out = $wgCopyrightIcon;
- } elseif ( $wgRightsIcon ) {
- $icon = htmlspecialchars( $wgRightsIcon );
-
- if ( $wgRightsUrl ) {
- $url = htmlspecialchars( $wgRightsUrl );
- $out .= '<a href="' . $url . '">';
- }
-
- $text = htmlspecialchars( $wgRightsText );
- $out .= "<img src=\"$icon\" alt=\"$text\" width=\"88\" height=\"31\" />";
-
- if ( $wgRightsUrl ) {
- $out .= '</a>';
- }
- }
-
- return $out;
- }
-
- /**
- * Gets the powered by MediaWiki icon.
- * @return string
- */
- function getPoweredBy() {
- global $wgStylePath;
-
- $url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
- $text = '<a href="//www.mediawiki.org/"><img src="' . $url
- . '" height="31" width="88" alt="Powered by MediaWiki" /></a>';
- wfRunHooks( 'SkinGetPoweredBy', array( &$text, $this ) );
- return $text;
- }
-
- /**
- * Get the timestamp of the latest revision, formatted in user language
- *
- * @return string
- */
- protected function lastModified() {
- $timestamp = $this->getOutput()->getRevisionTimestamp();
-
- # No cached timestamp, load it from the database
- if ( $timestamp === null ) {
- $timestamp = Revision::getTimestampFromId( $this->getTitle(), $this->getRevisionId() );
- }
-
- if ( $timestamp ) {
- $d = $this->getLanguage()->userDate( $timestamp, $this->getUser() );
- $t = $this->getLanguage()->userTime( $timestamp, $this->getUser() );
- $s = ' ' . $this->msg( 'lastmodifiedat', $d, $t )->text();
- } else {
- $s = '';
- }
-
- if ( wfGetLB()->getLaggedSlaveMode() ) {
- $s .= ' <strong>' . $this->msg( 'laggedslavemode' )->text() . '</strong>';
- }
-
- return $s;
- }
-
- /**
- * @param string $align
- * @return string
- */
- function logoText( $align = '' ) {
- if ( $align != '' ) {
- $a = " style='float: {$align};'";
- } else {
- $a = '';
- }
-
- $mp = $this->msg( 'mainpage' )->escaped();
- $mptitle = Title::newMainPage();
- $url = ( is_object( $mptitle ) ? htmlspecialchars( $mptitle->getLocalURL() ) : '' );
-
- $logourl = $this->getLogo();
- $s = "<a href='{$url}'><img{$a} src='{$logourl}' alt='[{$mp}]' /></a>";
-
- return $s;
- }
-
- /**
- * Renders a $wgFooterIcons icon according to the method's arguments
- * @param array $icon The icon to build the html for, see $wgFooterIcons
- * for the format of this array.
- * @param bool|string $withImage Whether to use the icon's image or output
- * a text-only footericon.
- * @return string HTML
- */
- function makeFooterIcon( $icon, $withImage = 'withImage' ) {
- if ( is_string( $icon ) ) {
- $html = $icon;
- } else { // Assuming array
- $url = isset( $icon["url"] ) ? $icon["url"] : null;
- unset( $icon["url"] );
- if ( isset( $icon["src"] ) && $withImage === 'withImage' ) {
- // do this the lazy way, just pass icon data as an attribute array
- $html = Html::element( 'img', $icon );
- } else {
- $html = htmlspecialchars( $icon["alt"] );
- }
- if ( $url ) {
- $html = Html::rawElement( 'a', array( "href" => $url ), $html );
- }
- }
- return $html;
- }
-
- /**
- * Gets the link to the wiki's main page.
- * @return string
- */
- function mainPageLink() {
- $s = Linker::linkKnown(
- Title::newMainPage(),
- $this->msg( 'mainpage' )->escaped()
- );
-
- return $s;
- }
-
- /**
- * Returns an HTML link for use in the footer
- * @param string $desc The i18n message key for the link text
- * @param string $page The i18n message key for the page to link to
- * @return string HTML anchor
- */
- public function footerLink( $desc, $page ) {
- // if the link description has been set to "-" in the default language,
- if ( $this->msg( $desc )->inContentLanguage()->isDisabled() ) {
- // then it is disabled, for all languages.
- return '';
- } else {
- // Otherwise, we display the link for the user, described in their
- // language (which may or may not be the same as the default language),
- // but we make the link target be the one site-wide page.
- $title = Title::newFromText( $this->msg( $page )->inContentLanguage()->text() );
-
- return Linker::linkKnown(
- $title,
- $this->msg( $desc )->escaped()
- );
- }
- }
-
- /**
- * Gets the link to the wiki's privacy policy page.
- * @return string HTML
- */
- function privacyLink() {
- return $this->footerLink( 'privacy', 'privacypage' );
- }
-
- /**
- * Gets the link to the wiki's about page.
- * @return string HTML
- */
- function aboutLink() {
- return $this->footerLink( 'aboutsite', 'aboutpage' );
- }
-
- /**
- * Gets the link to the wiki's general disclaimers page.
- * @return string HTML
- */
- function disclaimerLink() {
- return $this->footerLink( 'disclaimers', 'disclaimerpage' );
- }
-
- /**
- * Return URL options for the 'edit page' link.
- * This may include an 'oldid' specifier, if the current page view is such.
- *
- * @return array
- * @private
- */
- function editUrlOptions() {
- $options = array( 'action' => 'edit' );
-
- if ( !$this->isRevisionCurrent() ) {
- $options['oldid'] = intval( $this->getRevisionId() );
- }
-
- return $options;
- }
-
- /**
- * @param User|int $id
- * @return bool
- */
- function showEmailUser( $id ) {
- if ( $id instanceof User ) {
- $targetUser = $id;
- } else {
- $targetUser = User::newFromId( $id );
- }
-
- # The sending user must have a confirmed email address and the target
- # user must have a confirmed email address and allow emails from users.
- return $this->getUser()->canSendEmail() &&
- $targetUser->canReceiveEmail();
- }
-
- /**
- * Return a fully resolved style path url to images or styles stored in the common folder.
- * This method returns a url resolved using the configured skin style path
- * and includes the style version inside of the url.
- * @param string $name The name or path of a skin resource file
- * @return string The fully resolved style path url including styleversion
- */
- function getCommonStylePath( $name ) {
- global $wgStylePath, $wgStyleVersion;
- return "$wgStylePath/common/$name?$wgStyleVersion";
- }
-
- /**
- * Return a fully resolved style path url to images or styles stored in the current skins's folder.
- * This method returns a url resolved using the configured skin style path
- * and includes the style version inside of the url.
- *
- * Requires $stylename to be set, otherwise throws MWException.
- *
- * @param string $name The name or path of a skin resource file
- * @return string The fully resolved style path url including styleversion
- */
- function getSkinStylePath( $name ) {
- global $wgStylePath, $wgStyleVersion;
-
- if ( $this->stylename === null ) {
- $class = get_class( $this );
- throw new MWException( "$class::\$stylename must be set to use getSkinStylePath()" );
- }
-
- return "$wgStylePath/{$this->stylename}/$name?$wgStyleVersion";
- }
-
- /* these are used extensively in SkinTemplate, but also some other places */
-
- /**
- * @param string $urlaction
- * @return string
- */
- static function makeMainPageUrl( $urlaction = '' ) {
- $title = Title::newMainPage();
- self::checkTitle( $title, '' );
-
- return $title->getLocalURL( $urlaction );
- }
-
- /**
- * Make a URL for a Special Page using the given query and protocol.
- *
- * If $proto is set to null, make a local URL. Otherwise, make a full
- * URL with the protocol specified.
- *
- * @param string $name Name of the Special page
- * @param string $urlaction Query to append
- * @param string|null $proto Protocol to use or null for a local URL
- * @return string
- */
- static function makeSpecialUrl( $name, $urlaction = '', $proto = null ) {
- $title = SpecialPage::getSafeTitleFor( $name );
- if ( is_null( $proto ) ) {
- return $title->getLocalURL( $urlaction );
- } else {
- return $title->getFullURL( $urlaction, false, $proto );
- }
- }
-
- /**
- * @param string $name
- * @param string $subpage
- * @param string $urlaction
- * @return string
- */
- static function makeSpecialUrlSubpage( $name, $subpage, $urlaction = '' ) {
- $title = SpecialPage::getSafeTitleFor( $name, $subpage );
- return $title->getLocalURL( $urlaction );
- }
-
- /**
- * @param string $name
- * @param string $urlaction
- * @return string
- */
- static function makeI18nUrl( $name, $urlaction = '' ) {
- $title = Title::newFromText( wfMessage( $name )->inContentLanguage()->text() );
- self::checkTitle( $title, $name );
- return $title->getLocalURL( $urlaction );
- }
-
- /**
- * @param string $name
- * @param string $urlaction
- * @return string
- */
- static function makeUrl( $name, $urlaction = '' ) {
- $title = Title::newFromText( $name );
- self::checkTitle( $title, $name );
-
- return $title->getLocalURL( $urlaction );
- }
-
- /**
- * If url string starts with http, consider as external URL, else
- * internal
- * @param string $name
- * @return string URL
- */
- static function makeInternalOrExternalUrl( $name ) {
- if ( preg_match( '/^(?i:' . wfUrlProtocols() . ')/', $name ) ) {
- return $name;
- } else {
- return self::makeUrl( $name );
- }
- }
-
- /**
- * this can be passed the NS number as defined in Language.php
- * @param string $name
- * @param string $urlaction
- * @param int $namespace
- * @return string
- */
- static function makeNSUrl( $name, $urlaction = '', $namespace = NS_MAIN ) {
- $title = Title::makeTitleSafe( $namespace, $name );
- self::checkTitle( $title, $name );
-
- return $title->getLocalURL( $urlaction );
- }
-
- /**
- * these return an array with the 'href' and boolean 'exists'
- * @param string $name
- * @param string $urlaction
- * @return array
- */
- static function makeUrlDetails( $name, $urlaction = '' ) {
- $title = Title::newFromText( $name );
- self::checkTitle( $title, $name );
-
- return array(
- 'href' => $title->getLocalURL( $urlaction ),
- 'exists' => $title->getArticleID() != 0,
- );
- }
-
- /**
- * Make URL details where the article exists (or at least it's convenient to think so)
- * @param string $name Article name
- * @param string $urlaction
- * @return array
- */
- static function makeKnownUrlDetails( $name, $urlaction = '' ) {
- $title = Title::newFromText( $name );
- self::checkTitle( $title, $name );
-
- return array(
- 'href' => $title->getLocalURL( $urlaction ),
- 'exists' => true
- );
- }
-
- /**
- * make sure we have some title to operate on
- *
- * @param Title $title
- * @param string $name
- */
- static function checkTitle( &$title, $name ) {
- if ( !is_object( $title ) ) {
- $title = Title::newFromText( $name );
- if ( !is_object( $title ) ) {
- $title = Title::newFromText( '--error: link target missing--' );
- }
- }
- }
-
- /**
- * Build an array that represents the sidebar(s), the navigation bar among them.
- *
- * BaseTemplate::getSidebar can be used to simplify the format and id generation in new skins.
- *
- * The format of the returned array is array( heading => content, ... ), where:
- * - heading is the heading of a navigation portlet. It is either:
- * - magic string to be handled by the skins ('SEARCH' / 'LANGUAGES' / 'TOOLBOX' / ...)
- * - a message name (e.g. 'navigation'), the message should be HTML-escaped by the skin
- * - plain text, which should be HTML-escaped by the skin
- * - content is the contents of the portlet. It is either:
- * - HTML text (<ul><li>...</li>...</ul>)
- * - array of link data in a format accepted by BaseTemplate::makeListItem()
- * - (for a magic string as a key, any value)
- *
- * Note that extensions can control the sidebar contents using the SkinBuildSidebar hook
- * and can technically insert anything in here; skin creators are expected to handle
- * values described above.
- *
- * @return array
- */
- function buildSidebar() {
- global $wgMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry;
- wfProfileIn( __METHOD__ );
-
- $key = wfMemcKey( 'sidebar', $this->getLanguage()->getCode() );
-
- if ( $wgEnableSidebarCache ) {
- $cachedsidebar = $wgMemc->get( $key );
- if ( $cachedsidebar ) {
- wfRunHooks( 'SidebarBeforeOutput', array( $this, &$cachedsidebar ) );
-
- wfProfileOut( __METHOD__ );
- return $cachedsidebar;
- }
- }
-
- $bar = array();
- $this->addToSidebar( $bar, 'sidebar' );
-
- wfRunHooks( 'SkinBuildSidebar', array( $this, &$bar ) );
- if ( $wgEnableSidebarCache ) {
- $wgMemc->set( $key, $bar, $wgSidebarCacheExpiry );
- }
-
- wfRunHooks( 'SidebarBeforeOutput', array( $this, &$bar ) );
-
- wfProfileOut( __METHOD__ );
- return $bar;
- }
-
- /**
- * Add content from a sidebar system message
- * Currently only used for MediaWiki:Sidebar (but may be used by Extensions)
- *
- * This is just a wrapper around addToSidebarPlain() for backwards compatibility
- *
- * @param array $bar
- * @param string $message
- */
- function addToSidebar( &$bar, $message ) {
- $this->addToSidebarPlain( $bar, wfMessage( $message )->inContentLanguage()->plain() );
- }
-
- /**
- * Add content from plain text
- * @since 1.17
- * @param array $bar
- * @param string $text
- * @return array
- */
- function addToSidebarPlain( &$bar, $text ) {
- $lines = explode( "\n", $text );
-
- $heading = '';
-
- foreach ( $lines as $line ) {
- if ( strpos( $line, '*' ) !== 0 ) {
- continue;
- }
- $line = rtrim( $line, "\r" ); // for Windows compat
-
- if ( strpos( $line, '**' ) !== 0 ) {
- $heading = trim( $line, '* ' );
- if ( !array_key_exists( $heading, $bar ) ) {
- $bar[$heading] = array();
- }
- } else {
- $line = trim( $line, '* ' );
-
- if ( strpos( $line, '|' ) !== false ) { // sanity check
- $line = MessageCache::singleton()->transform( $line, false, null, $this->getTitle() );
- $line = array_map( 'trim', explode( '|', $line, 2 ) );
- if ( count( $line ) !== 2 ) {
- // Second sanity check, could be hit by people doing
- // funky stuff with parserfuncs... (bug 33321)
- continue;
- }
-
- $extraAttribs = array();
-
- $msgLink = $this->msg( $line[0] )->inContentLanguage();
- if ( $msgLink->exists() ) {
- $link = $msgLink->text();
- if ( $link == '-' ) {
- continue;
- }
- } else {
- $link = $line[0];
- }
- $msgText = $this->msg( $line[1] );
- if ( $msgText->exists() ) {
- $text = $msgText->text();
- } else {
- $text = $line[1];
- }
-
- if ( preg_match( '/^(?i:' . wfUrlProtocols() . ')/', $link ) ) {
- $href = $link;
-
- // Parser::getExternalLinkAttribs won't work here because of the Namespace things
- global $wgNoFollowLinks, $wgNoFollowDomainExceptions;
- if ( $wgNoFollowLinks && !wfMatchesDomainList( $href, $wgNoFollowDomainExceptions ) ) {
- $extraAttribs['rel'] = 'nofollow';
- }
-
- global $wgExternalLinkTarget;
- if ( $wgExternalLinkTarget ) {
- $extraAttribs['target'] = $wgExternalLinkTarget;
- }
- } else {
- $title = Title::newFromText( $link );
-
- if ( $title ) {
- $title = $title->fixSpecialName();
- $href = $title->getLinkURL();
- } else {
- $href = 'INVALID-TITLE';
- }
- }
-
- $bar[$heading][] = array_merge( array(
- 'text' => $text,
- 'href' => $href,
- 'id' => 'n-' . Sanitizer::escapeId( strtr( $line[1], ' ', '-' ), 'noninitial' ),
- 'active' => false
- ), $extraAttribs );
- } else {
- continue;
- }
- }
- }
-
- return $bar;
- }
-
- /**
- * This function previously controlled whether the 'mediawiki.legacy.wikiprintable' module
- * should be loaded by OutputPage. That module no longer exists and the return value of this
- * method is ignored.
- *
- * If your skin doesn't provide its own print styles, the 'mediawiki.legacy.commonPrint' module
- * can be used instead (SkinTemplate-based skins do it automatically).
- *
- * @deprecated since 1.22
- * @return bool
- */
- public function commonPrintStylesheet() {
- wfDeprecated( __METHOD__, '1.22' );
- return false;
- }
-
- /**
- * Gets new talk page messages for the current user and returns an
- * appropriate alert message (or an empty string if there are no messages)
- * @return string
- */
- function getNewtalks() {
-
- $newMessagesAlert = '';
- $user = $this->getUser();
- $newtalks = $user->getNewMessageLinks();
- $out = $this->getOutput();
-
- // Allow extensions to disable or modify the new messages alert
- if ( !wfRunHooks( 'GetNewMessagesAlert', array( &$newMessagesAlert, $newtalks, $user, $out ) ) ) {
- return '';
- }
- if ( $newMessagesAlert ) {
- return $newMessagesAlert;
- }
-
- if ( count( $newtalks ) == 1 && $newtalks[0]['wiki'] === wfWikiID() ) {
- $uTalkTitle = $user->getTalkPage();
- $lastSeenRev = isset( $newtalks[0]['rev'] ) ? $newtalks[0]['rev'] : null;
- $nofAuthors = 0;
- if ( $lastSeenRev !== null ) {
- $plural = true; // Default if we have a last seen revision: if unknown, use plural
- $latestRev = Revision::newFromTitle( $uTalkTitle, false, Revision::READ_NORMAL );
- if ( $latestRev !== null ) {
- // Singular if only 1 unseen revision, plural if several unseen revisions.
- $plural = $latestRev->getParentId() !== $lastSeenRev->getId();
- $nofAuthors = $uTalkTitle->countAuthorsBetween(
- $lastSeenRev, $latestRev, 10, 'include_new' );
- }
- } else {
- // Singular if no revision -> diff link will show latest change only in any case
- $plural = false;
- }
- $plural = $plural ? 999 : 1;
- // 999 signifies "more than one revision". We don't know how many, and even if we did,
- // the number of revisions or authors is not necessarily the same as the number of
- // "messages".
- $newMessagesLink = Linker::linkKnown(
- $uTalkTitle,
- $this->msg( 'newmessageslinkplural' )->params( $plural )->escaped(),
- array(),
- array( 'redirect' => 'no' )
- );
-
- $newMessagesDiffLink = Linker::linkKnown(
- $uTalkTitle,
- $this->msg( 'newmessagesdifflinkplural' )->params( $plural )->escaped(),
- array(),
- $lastSeenRev !== null
- ? array( 'oldid' => $lastSeenRev->getId(), 'diff' => 'cur' )
- : array( 'diff' => 'cur' )
- );
-
- if ( $nofAuthors >= 1 && $nofAuthors <= 10 ) {
- $newMessagesAlert = $this->msg(
- 'youhavenewmessagesfromusers',
- $newMessagesLink,
- $newMessagesDiffLink
- )->numParams( $nofAuthors, $plural );
- } else {
- // $nofAuthors === 11 signifies "11 or more" ("more than 10")
- $newMessagesAlert = $this->msg(
- $nofAuthors > 10 ? 'youhavenewmessagesmanyusers' : 'youhavenewmessages',
- $newMessagesLink,
- $newMessagesDiffLink
- )->numParams( $plural );
- }
- $newMessagesAlert = $newMessagesAlert->text();
- # Disable Squid cache
- $out->setSquidMaxage( 0 );
- } elseif ( count( $newtalks ) ) {
- $sep = $this->msg( 'newtalkseparator' )->escaped();
- $msgs = array();
-
- foreach ( $newtalks as $newtalk ) {
- $msgs[] = Xml::element(
- 'a',
- array( 'href' => $newtalk['link'] ), $newtalk['wiki']
- );
- }
- $parts = implode( $sep, $msgs );
- $newMessagesAlert = $this->msg( 'youhavenewmessagesmulti' )->rawParams( $parts )->escaped();
- $out->setSquidMaxage( 0 );
- }
-
- return $newMessagesAlert;
- }
-
- /**
- * Get a cached notice
- *
- * @param string $name Message name, or 'default' for $wgSiteNotice
- * @return string HTML fragment
- */
- private function getCachedNotice( $name ) {
- global $wgRenderHashAppend, $parserMemc, $wgContLang;
-
- wfProfileIn( __METHOD__ );
-
- $needParse = false;
-
- if ( $name === 'default' ) {
- // special case
- global $wgSiteNotice;
- $notice = $wgSiteNotice;
- if ( empty( $notice ) ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- } else {
- $msg = $this->msg( $name )->inContentLanguage();
- if ( $msg->isDisabled() ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- $notice = $msg->plain();
- }
-
- // Use the extra hash appender to let eg SSL variants separately cache.
- $key = wfMemcKey( $name . $wgRenderHashAppend );
- $cachedNotice = $parserMemc->get( $key );
- if ( is_array( $cachedNotice ) ) {
- if ( md5( $notice ) == $cachedNotice['hash'] ) {
- $notice = $cachedNotice['html'];
- } else {
- $needParse = true;
- }
- } else {
- $needParse = true;
- }
-
- if ( $needParse ) {
- $parsed = $this->getOutput()->parse( $notice );
- $parserMemc->set( $key, array( 'html' => $parsed, 'hash' => md5( $notice ) ), 600 );
- $notice = $parsed;
- }
-
- $notice = Html::rawElement( 'div', array( 'id' => 'localNotice',
- 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ), $notice );
- wfProfileOut( __METHOD__ );
- return $notice;
- }
-
- /**
- * Get a notice based on page's namespace
- *
- * @return string HTML fragment
- */
- function getNamespaceNotice() {
- wfProfileIn( __METHOD__ );
-
- $key = 'namespacenotice-' . $this->getTitle()->getNsText();
- $namespaceNotice = $this->getCachedNotice( $key );
- if ( $namespaceNotice && substr( $namespaceNotice, 0, 7 ) != '<p><' ) {
- $namespaceNotice = '<div id="namespacebanner">' . $namespaceNotice . '</div>';
- } else {
- $namespaceNotice = '';
- }
-
- wfProfileOut( __METHOD__ );
- return $namespaceNotice;
- }
-
- /**
- * Get the site notice
- *
- * @return string HTML fragment
- */
- function getSiteNotice() {
- wfProfileIn( __METHOD__ );
- $siteNotice = '';
-
- if ( wfRunHooks( 'SiteNoticeBefore', array( &$siteNotice, $this ) ) ) {
- if ( is_object( $this->getUser() ) && $this->getUser()->isLoggedIn() ) {
- $siteNotice = $this->getCachedNotice( 'sitenotice' );
- } else {
- $anonNotice = $this->getCachedNotice( 'anonnotice' );
- if ( !$anonNotice ) {
- $siteNotice = $this->getCachedNotice( 'sitenotice' );
- } else {
- $siteNotice = $anonNotice;
- }
- }
- if ( !$siteNotice ) {
- $siteNotice = $this->getCachedNotice( 'default' );
- }
- }
-
- wfRunHooks( 'SiteNoticeAfter', array( &$siteNotice, $this ) );
- wfProfileOut( __METHOD__ );
- return $siteNotice;
- }
-
- /**
- * Create a section edit link. This supersedes editSectionLink() and
- * editSectionLinkForOther().
- *
- * @param Title $nt The title being linked to (may not be the same as
- * the current page, if the section is included from a template)
- * @param string $section The designation of the section being pointed to,
- * to be included in the link, like "§ion=$section"
- * @param string $tooltip The tooltip to use for the link: will be escaped
- * and wrapped in the 'editsectionhint' message
- * @param string $lang Language code
- * @return string HTML to use for edit link
- */
- public function doEditSectionLink( Title $nt, $section, $tooltip = null, $lang = false ) {
- // HTML generated here should probably have userlangattributes
- // added to it for LTR text on RTL pages
-
- $lang = wfGetLangObj( $lang );
-
- $attribs = array();
- if ( !is_null( $tooltip ) ) {
- # Bug 25462: undo double-escaping.
- $tooltip = Sanitizer::decodeCharReferences( $tooltip );
- $attribs['title'] = wfMessage( 'editsectionhint' )->rawParams( $tooltip )
- ->inLanguage( $lang )->text();
- }
- $link = Linker::link( $nt, wfMessage( 'editsection' )->inLanguage( $lang )->text(),
- $attribs,
- array( 'action' => 'edit', 'section' => $section ),
- array( 'noclasses', 'known' )
- );
-
- # Add the brackets and the span and run the hook.
- $result = '<span class="mw-editsection">'
- . '<span class="mw-editsection-bracket">[</span>'
- . $link
- . '<span class="mw-editsection-bracket">]</span>'
- . '</span>';
-
- wfRunHooks( 'DoEditSectionLink', array( $this, $nt, $section, $tooltip, &$result, $lang ) );
- return $result;
- }
-
- /**
- * Use PHP's magic __call handler to intercept legacy calls to the linker
- * for backwards compatibility.
- *
- * @param string $fname Name of called method
- * @param array $args Arguments to the method
- * @throws MWException
- * @return mixed
- */
- function __call( $fname, $args ) {
- $realFunction = array( 'Linker', $fname );
- if ( is_callable( $realFunction ) ) {
- wfDeprecated( get_class( $this ) . '::' . $fname, '1.21' );
- return call_user_func_array( $realFunction, $args );
- } else {
- $className = get_class( $this );
- throw new MWException( "Call to undefined method $className::$fname" );
- }
- }
-
-}
+++ /dev/null
-<?php
-/**
- * Base class for template-based skins.
- *
- * 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
- */
-
-/**
- * Wrapper object for MediaWiki's localization functions,
- * to be passed to the template engine.
- *
- * @private
- * @ingroup Skins
- */
-class MediaWikiI18N {
- private $context = array();
-
- function set( $varName, $value ) {
- $this->context[$varName] = $value;
- }
-
- function translate( $value ) {
- wfProfileIn( __METHOD__ );
-
- // Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
- $value = preg_replace( '/^string:/', '', $value );
-
- $value = wfMessage( $value )->text();
- // interpolate variables
- $m = array();
- while ( preg_match( '/\$([0-9]*?)/sm', $value, $m ) ) {
- list( $src, $var ) = $m;
- wfSuppressWarnings();
- $varValue = $this->context[$var];
- wfRestoreWarnings();
- $value = str_replace( $src, $varValue, $value );
- }
- wfProfileOut( __METHOD__ );
- return $value;
- }
-}
-
-/**
- * Template-filler skin base class
- * Formerly generic PHPTal (http://phptal.sourceforge.net/) skin
- * Based on Brion's smarty skin
- * @copyright Copyright © Gabriel Wicke -- http://www.aulinx.de/
- *
- * @todo Needs some serious refactoring into functions that correspond
- * to the computations individual esi snippets need. Most importantly no body
- * parsing for most of those of course.
- *
- * @ingroup Skins
- */
-class SkinTemplate extends Skin {
- /**
- * @var string Name of our skin, it probably needs to be all lower case.
- * Child classes should override the default.
- */
- public $skinname = 'monobook';
-
- /**
- * @var string For QuickTemplate, the name of the subclass which will
- * actually fill the template. Child classes should override the default.
- */
- public $template = 'QuickTemplate';
-
- /**
- * Add specific styles for this skin
- *
- * @param OutputPage $out
- */
- function setupSkinUserCss( OutputPage $out ) {
- $out->addModuleStyles( array(
- 'mediawiki.legacy.shared',
- 'mediawiki.legacy.commonPrint',
- 'mediawiki.ui.button'
- ) );
- }
-
- /**
- * Create the template engine object; we feed it a bunch of data
- * and eventually it spits out some HTML. Should have interface
- * roughly equivalent to PHPTAL 0.7.
- *
- * @param string $classname
- * @param bool|string $repository Subdirectory where we keep template files
- * @param bool|string $cache_dir
- * @return QuickTemplate
- * @private
- */
- function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
- return new $classname();
- }
-
- /**
- * Generates array of language links for the current page
- *
- * @return array
- */
- public function getLanguages() {
- global $wgHideInterlanguageLinks;
- if ( $wgHideInterlanguageLinks ) {
- return array();
- }
-
- $userLang = $this->getLanguage();
- $languageLinks = array();
-
- foreach ( $this->getOutput()->getLanguageLinks() as $languageLinkText ) {
- $languageLinkParts = explode( ':', $languageLinkText, 2 );
- $class = 'interlanguage-link interwiki-' . $languageLinkParts[0];
- unset( $languageLinkParts );
-
- $languageLinkTitle = Title::newFromText( $languageLinkText );
- if ( $languageLinkTitle ) {
- $ilInterwikiCode = $languageLinkTitle->getInterwiki();
- $ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
-
- if ( strval( $ilLangName ) === '' ) {
- $ilDisplayTextMsg = wfMessage( "interlanguage-link-$ilInterwikiCode" );
- if ( !$ilDisplayTextMsg->isDisabled() ) {
- // Use custom MW message for the display text
- $ilLangName = $ilDisplayTextMsg->text();
- } else {
- // Last resort: fallback to the language link target
- $ilLangName = $languageLinkText;
- }
- } else {
- // Use the language autonym as display text
- $ilLangName = $this->formatLanguageName( $ilLangName );
- }
-
- // CLDR extension or similar is required to localize the language name;
- // otherwise we'll end up with the autonym again.
- $ilLangLocalName = Language::fetchLanguageName(
- $ilInterwikiCode,
- $userLang->getCode()
- );
-
- $languageLinkTitleText = $languageLinkTitle->getText();
- if ( $ilLangLocalName === '' ) {
- $ilFriendlySiteName = wfMessage( "interlanguage-link-sitename-$ilInterwikiCode" );
- if ( !$ilFriendlySiteName->isDisabled() ) {
- if ( $languageLinkTitleText === '' ) {
- $ilTitle = wfMessage(
- 'interlanguage-link-title-nonlangonly',
- $ilFriendlySiteName->text()
- )->text();
- } else {
- $ilTitle = wfMessage(
- 'interlanguage-link-title-nonlang',
- $languageLinkTitleText,
- $ilFriendlySiteName->text()
- )->text();
- }
- } else {
- // we have nothing friendly to put in the title, so fall back to
- // displaying the interlanguage link itself in the title text
- // (similar to what is done in page content)
- $ilTitle = $languageLinkTitle->getInterwiki() .
- ":$languageLinkTitleText";
- }
- } elseif ( $languageLinkTitleText === '' ) {
- $ilTitle = wfMessage(
- 'interlanguage-link-title-langonly',
- $ilLangLocalName
- )->text();
- } else {
- $ilTitle = wfMessage(
- 'interlanguage-link-title',
- $languageLinkTitleText,
- $ilLangLocalName
- )->text();
- }
-
- $ilInterwikiCodeBCP47 = wfBCP47( $ilInterwikiCode );
- $languageLink = array(
- 'href' => $languageLinkTitle->getFullURL(),
- 'text' => $ilLangName,
- 'title' => $ilTitle,
- 'class' => $class,
- 'lang' => $ilInterwikiCodeBCP47,
- 'hreflang' => $ilInterwikiCodeBCP47,
- );
- wfRunHooks(
- 'SkinTemplateGetLanguageLink',
- array( &$languageLink, $languageLinkTitle, $this->getTitle() )
- );
- $languageLinks[] = $languageLink;
- }
- }
-
- return $languageLinks;
- }
-
- protected function setupTemplateForOutput() {
- wfProfileIn( __METHOD__ );
-
- $request = $this->getRequest();
- $user = $this->getUser();
- $title = $this->getTitle();
-
- wfProfileIn( __METHOD__ . '-init' );
- $tpl = $this->setupTemplate( $this->template, 'skins' );
- wfProfileOut( __METHOD__ . '-init' );
-
- wfProfileIn( __METHOD__ . '-stuff' );
- $this->thispage = $title->getPrefixedDBkey();
- $this->titletxt = $title->getPrefixedText();
- $this->userpage = $user->getUserPage()->getPrefixedText();
- $query = array();
- if ( !$request->wasPosted() ) {
- $query = $request->getValues();
- unset( $query['title'] );
- unset( $query['returnto'] );
- unset( $query['returntoquery'] );
- }
- $this->thisquery = wfArrayToCgi( $query );
- $this->loggedin = $user->isLoggedIn();
- $this->username = $user->getName();
-
- if ( $this->loggedin || $this->showIPinHeader() ) {
- $this->userpageUrlDetails = self::makeUrlDetails( $this->userpage );
- } else {
- # This won't be used in the standard skins, but we define it to preserve the interface
- # To save time, we check for existence
- $this->userpageUrlDetails = self::makeKnownUrlDetails( $this->userpage );
- }
-
- wfProfileOut( __METHOD__ . '-stuff' );
-
- wfProfileOut( __METHOD__ );
-
- return $tpl;
- }
-
- /**
- * initialize various variables and generate the template
- *
- * @param OutputPage $out
- */
- function outputPage( OutputPage $out = null ) {
- wfProfileIn( __METHOD__ );
- Profiler::instance()->setTemplated( true );
-
- $oldContext = null;
- if ( $out !== null ) {
- // @todo Add wfDeprecated in 1.20
- $oldContext = $this->getContext();
- $this->setContext( $out->getContext() );
- }
-
- $out = $this->getOutput();
-
- wfProfileIn( __METHOD__ . '-init' );
- $this->initPage( $out );
- wfProfileOut( __METHOD__ . '-init' );
- $tpl = $this->prepareQuickTemplate( $out );
- // execute template
- wfProfileIn( __METHOD__ . '-execute' );
- $res = $tpl->execute();
- wfProfileOut( __METHOD__ . '-execute' );
-
- // result may be an error
- $this->printOrError( $res );
-
- if ( $oldContext ) {
- $this->setContext( $oldContext );
- }
-
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * initialize various variables and generate the template
- *
- * @since 1.23
- * @return QuickTemplate The template to be executed by outputPage
- */
- protected function prepareQuickTemplate() {
- global $wgContLang, $wgScript, $wgStylePath, $wgMimeType, $wgJsMimeType,
- $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits,
- $wgShowCreditsIfMax, $wgPageShowWatchingUsers, $wgArticlePath,
- $wgScriptPath, $wgServer;
-
- wfProfileIn( __METHOD__ );
-
- $title = $this->getTitle();
- $request = $this->getRequest();
- $out = $this->getOutput();
- $tpl = $this->setupTemplateForOutput();
-
- wfProfileIn( __METHOD__ . '-stuff2' );
- $tpl->set( 'title', $out->getPageTitle() );
- $tpl->set( 'pagetitle', $out->getHTMLTitle() );
- $tpl->set( 'displaytitle', $out->mPageLinkTitle );
-
- $tpl->setRef( 'thispage', $this->thispage );
- $tpl->setRef( 'titleprefixeddbkey', $this->thispage );
- $tpl->set( 'titletext', $title->getText() );
- $tpl->set( 'articleid', $title->getArticleID() );
-
- $tpl->set( 'isarticle', $out->isArticle() );
-
- $subpagestr = $this->subPageSubtitle();
- if ( $subpagestr !== '' ) {
- $subpagestr = '<span class="subpages">' . $subpagestr . '</span>';
- }
- $tpl->set( 'subtitle', $subpagestr . $out->getSubtitle() );
-
- $undelete = $this->getUndeleteLink();
- if ( $undelete === '' ) {
- $tpl->set( 'undelete', '' );
- } else {
- $tpl->set( 'undelete', '<span class="subpages">' . $undelete . '</span>' );
- }
-
- $tpl->set( 'catlinks', $this->getCategories() );
- if ( $out->isSyndicated() ) {
- $feeds = array();
- foreach ( $out->getSyndicationLinks() as $format => $link ) {
- $feeds[$format] = array(
- // Messages: feed-atom, feed-rss
- 'text' => $this->msg( "feed-$format" )->text(),
- 'href' => $link
- );
- }
- $tpl->setRef( 'feeds', $feeds );
- } else {
- $tpl->set( 'feeds', false );
- }
-
- $tpl->setRef( 'mimetype', $wgMimeType );
- $tpl->setRef( 'jsmimetype', $wgJsMimeType );
- $tpl->set( 'charset', 'UTF-8' );
- $tpl->setRef( 'wgScript', $wgScript );
- $tpl->setRef( 'skinname', $this->skinname );
- $tpl->set( 'skinclass', get_class( $this ) );
- $tpl->setRef( 'skin', $this );
- $tpl->setRef( 'stylename', $this->stylename );
- $tpl->set( 'printable', $out->isPrintable() );
- $tpl->set( 'handheld', $request->getBool( 'handheld' ) );
- $tpl->setRef( 'loggedin', $this->loggedin );
- $tpl->set( 'notspecialpage', !$title->isSpecialPage() );
- $tpl->set( 'searchaction', $this->escapeSearchLink() );
- $tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBkey() );
- $tpl->set( 'search', trim( $request->getVal( 'search' ) ) );
- $tpl->setRef( 'stylepath', $wgStylePath );
- $tpl->setRef( 'articlepath', $wgArticlePath );
- $tpl->setRef( 'scriptpath', $wgScriptPath );
- $tpl->setRef( 'serverurl', $wgServer );
- $tpl->setRef( 'logopath', $wgLogo );
- $tpl->setRef( 'sitename', $wgSitename );
-
- $userLang = $this->getLanguage();
- $userLangCode = $userLang->getHtmlCode();
- $userLangDir = $userLang->getDir();
-
- $tpl->set( 'lang', $userLangCode );
- $tpl->set( 'dir', $userLangDir );
- $tpl->set( 'rtl', $userLang->isRTL() );
-
- $tpl->set( 'capitalizeallnouns', $userLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
- $tpl->set( 'showjumplinks', true ); // showjumplinks preference has been removed
- $tpl->set( 'username', $this->loggedin ? $this->username : null );
- $tpl->setRef( 'userpage', $this->userpage );
- $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
- $tpl->set( 'userlang', $userLangCode );
-
- // Users can have their language set differently than the
- // content of the wiki. For these users, tell the web browser
- // that interface elements are in a different language.
- $tpl->set( 'userlangattributes', '' );
- $tpl->set( 'specialpageattributes', '' ); # obsolete
- // Used by VectorBeta to insert HTML before content but after the
- // heading for the page title. Defaults to empty string.
- $tpl->set( 'prebodyhtml', '' );
-
- if ( $userLangCode !== $wgContLang->getHtmlCode() || $userLangDir !== $wgContLang->getDir() ) {
- $escUserlang = htmlspecialchars( $userLangCode );
- $escUserdir = htmlspecialchars( $userLangDir );
- // Attributes must be in double quotes because htmlspecialchars() doesn't
- // escape single quotes
- $attrs = " lang=\"$escUserlang\" dir=\"$escUserdir\"";
- $tpl->set( 'userlangattributes', $attrs );
- }
-
- wfProfileOut( __METHOD__ . '-stuff2' );
-
- wfProfileIn( __METHOD__ . '-stuff3' );
- $tpl->set( 'newtalk', $this->getNewtalks() );
- $tpl->set( 'logo', $this->logoText() );
-
- $tpl->set( 'copyright', false );
- $tpl->set( 'viewcount', false );
- $tpl->set( 'lastmod', false );
- $tpl->set( 'credits', false );
- $tpl->set( 'numberofwatchingusers', false );
- if ( $out->isArticle() && $title->exists() ) {
- if ( $this->isRevisionCurrent() ) {
- if ( !$wgDisableCounters ) {
- $viewcount = $this->getWikiPage()->getCount();
- if ( $viewcount ) {
- $tpl->set( 'viewcount', $this->msg( 'viewcount' )->numParams( $viewcount )->parse() );
- }
- }
-
- if ( $wgPageShowWatchingUsers ) {
- $dbr = wfGetDB( DB_SLAVE );
- $num = $dbr->selectField( 'watchlist', 'COUNT(*)',
- array( 'wl_title' => $title->getDBkey(), 'wl_namespace' => $title->getNamespace() ),
- __METHOD__
- );
- if ( $num > 0 ) {
- $tpl->set( 'numberofwatchingusers',
- $this->msg( 'number_of_watching_users_pageview' )->numParams( $num )->parse()
- );
- }
- }
-
- if ( $wgMaxCredits != 0 ) {
- $tpl->set( 'credits', Action::factory( 'credits', $this->getWikiPage(),
- $this->getContext() )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax ) );
- } else {
- $tpl->set( 'lastmod', $this->lastModified() );
- }
- }
- $tpl->set( 'copyright', $this->getCopyright() );
- }
- wfProfileOut( __METHOD__ . '-stuff3' );
-
- wfProfileIn( __METHOD__ . '-stuff4' );
- $tpl->set( 'copyrightico', $this->getCopyrightIcon() );
- $tpl->set( 'poweredbyico', $this->getPoweredBy() );
- $tpl->set( 'disclaimer', $this->disclaimerLink() );
- $tpl->set( 'privacy', $this->privacyLink() );
- $tpl->set( 'about', $this->aboutLink() );
-
- $tpl->set( 'footerlinks', array(
- 'info' => array(
- 'lastmod',
- 'viewcount',
- 'numberofwatchingusers',
- 'credits',
- 'copyright',
- ),
- 'places' => array(
- 'privacy',
- 'about',
- 'disclaimer',
- ),
- ) );
-
- global $wgFooterIcons;
- $tpl->set( 'footericons', $wgFooterIcons );
- foreach ( $tpl->data['footericons'] as $footerIconsKey => &$footerIconsBlock ) {
- if ( count( $footerIconsBlock ) > 0 ) {
- foreach ( $footerIconsBlock as &$footerIcon ) {
- if ( isset( $footerIcon['src'] ) ) {
- if ( !isset( $footerIcon['width'] ) ) {
- $footerIcon['width'] = 88;
- }
- if ( !isset( $footerIcon['height'] ) ) {
- $footerIcon['height'] = 31;
- }
- }
- }
- } else {
- unset( $tpl->data['footericons'][$footerIconsKey] );
- }
- }
-
- $tpl->set( 'sitenotice', $this->getSiteNotice() );
- $tpl->set( 'bottomscripts', $this->bottomScripts() );
- $tpl->set( 'printfooter', $this->printSource() );
-
- # An ID that includes the actual body text; without categories, contentSub, ...
- $realBodyAttribs = array( 'id' => 'mw-content-text' );
-
- # Add a mw-content-ltr/rtl class to be able to style based on text direction
- # when the content is different from the UI language, i.e.:
- # not for special pages or file pages AND only when viewing AND if the page exists
- # (or is in MW namespace, because that has default content)
- if ( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
- Action::getActionName( $this ) === 'view' &&
- ( $title->exists() || $title->getNamespace() == NS_MEDIAWIKI ) ) {
- $pageLang = $title->getPageViewLanguage();
- $realBodyAttribs['lang'] = $pageLang->getHtmlCode();
- $realBodyAttribs['dir'] = $pageLang->getDir();
- $realBodyAttribs['class'] = 'mw-content-' . $pageLang->getDir();
- }
-
- $out->mBodytext = Html::rawElement( 'div', $realBodyAttribs, $out->mBodytext );
- $tpl->setRef( 'bodytext', $out->mBodytext );
-
- $language_urls = $this->getLanguages();
- if ( count( $language_urls ) ) {
- $tpl->setRef( 'language_urls', $language_urls );
- } else {
- $tpl->set( 'language_urls', false );
- }
- wfProfileOut( __METHOD__ . '-stuff4' );
-
- wfProfileIn( __METHOD__ . '-stuff5' );
- # Personal toolbar
- $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
- $content_navigation = $this->buildContentNavigationUrls();
- $content_actions = $this->buildContentActionUrls( $content_navigation );
- $tpl->setRef( 'content_navigation', $content_navigation );
- $tpl->setRef( 'content_actions', $content_actions );
-
- $tpl->set( 'sidebar', $this->buildSidebar() );
- $tpl->set( 'nav_urls', $this->buildNavUrls() );
-
- // Set the head scripts near the end, in case the above actions resulted in added scripts
- $tpl->set( 'headelement', $out->headElement( $this ) );
-
- $tpl->set( 'debug', '' );
- $tpl->set( 'debughtml', $this->generateDebugHTML() );
- $tpl->set( 'reporttime', wfReportTime() );
-
- // original version by hansm
- if ( !wfRunHooks( 'SkinTemplateOutputPageBeforeExec', array( &$this, &$tpl ) ) ) {
- wfDebug( __METHOD__ . ": Hook SkinTemplateOutputPageBeforeExec broke outputPage execution!\n" );
- }
-
- // Set the bodytext to another key so that skins can just output it on it's own
- // and output printfooter and debughtml separately
- $tpl->set( 'bodycontent', $tpl->data['bodytext'] );
-
- // Append printfooter and debughtml onto bodytext so that skins that
- // were already using bodytext before they were split out don't suddenly
- // start not outputting information.
- $tpl->data['bodytext'] .= Html::rawElement(
- 'div',
- array( 'class' => 'printfooter' ),
- "\n{$tpl->data['printfooter']}"
- ) . "\n";
- $tpl->data['bodytext'] .= $tpl->data['debughtml'];
-
- // allow extensions adding stuff after the page content.
- // See Skin::afterContentHook() for further documentation.
- $tpl->set( 'dataAfterContent', $this->afterContentHook() );
- wfProfileOut( __METHOD__ . '-stuff5' );
-
- wfProfileOut( __METHOD__ );
- return $tpl;
- }
-
- /**
- * Get the HTML for the p-personal list
- * @return string
- */
- public function getPersonalToolsList() {
- $tpl = $this->setupTemplateForOutput();
- $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
- $html = '';
- foreach ( $tpl->getPersonalTools() as $key => $item ) {
- $html .= $tpl->makeListItem( $key, $item );
- }
- return $html;
- }
-
- /**
- * Format language name for use in sidebar interlanguage links list.
- * By default it is capitalized.
- *
- * @param string $name Language name, e.g. "English" or "español"
- * @return string
- * @private
- */
- function formatLanguageName( $name ) {
- return $this->getLanguage()->ucfirst( $name );
- }
-
- /**
- * Output the string, or print error message if it's
- * an error object of the appropriate type.
- * For the base class, assume strings all around.
- *
- * @param string $str
- * @private
- */
- function printOrError( $str ) {
- echo $str;
- }
-
- /**
- * Output a boolean indicating if buildPersonalUrls should output separate
- * login and create account links or output a combined link
- * By default we simply return a global config setting that affects most skins
- * This is setup as a method so that like with $wgLogo and getLogo() a skin
- * can override this setting and always output one or the other if it has
- * a reason it can't output one of the two modes.
- * @return bool
- */
- function useCombinedLoginLink() {
- global $wgUseCombinedLoginLink;
- return $wgUseCombinedLoginLink;
- }
-
- /**
- * build array of urls for personal toolbar
- * @return array
- */
- protected function buildPersonalUrls() {
- $title = $this->getTitle();
- $request = $this->getRequest();
- $pageurl = $title->getLocalURL();
- wfProfileIn( __METHOD__ );
-
- /* set up the default links for the personal toolbar */
- $personal_urls = array();
-
- # Due to bug 32276, if a user does not have read permissions,
- # $this->getTitle() will just give Special:Badtitle, which is
- # not especially useful as a returnto parameter. Use the title
- # from the request instead, if there was one.
- if ( $this->getUser()->isAllowed( 'read' ) ) {
- $page = $this->getTitle();
- } else {
- $page = Title::newFromText( $request->getVal( 'title', '' ) );
- }
- $page = $request->getVal( 'returnto', $page );
- $a = array();
- if ( strval( $page ) !== '' ) {
- $a['returnto'] = $page;
- $query = $request->getVal( 'returntoquery', $this->thisquery );
- if ( $query != '' ) {
- $a['returntoquery'] = $query;
- }
- }
-
- $returnto = wfArrayToCgi( $a );
- if ( $this->loggedin ) {
- $personal_urls['userpage'] = array(
- 'text' => $this->username,
- 'href' => &$this->userpageUrlDetails['href'],
- 'class' => $this->userpageUrlDetails['exists'] ? false : 'new',
- 'active' => ( $this->userpageUrlDetails['href'] == $pageurl ),
- 'dir' => 'auto'
- );
- $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
- $personal_urls['mytalk'] = array(
- 'text' => $this->msg( 'mytalk' )->text(),
- 'href' => &$usertalkUrlDetails['href'],
- 'class' => $usertalkUrlDetails['exists'] ? false : 'new',
- 'active' => ( $usertalkUrlDetails['href'] == $pageurl )
- );
- $href = self::makeSpecialUrl( 'Preferences' );
- $personal_urls['preferences'] = array(
- 'text' => $this->msg( 'mypreferences' )->text(),
- 'href' => $href,
- 'active' => ( $href == $pageurl )
- );
-
- if ( $this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
- $href = self::makeSpecialUrl( 'Watchlist' );
- $personal_urls['watchlist'] = array(
- 'text' => $this->msg( 'mywatchlist' )->text(),
- 'href' => $href,
- 'active' => ( $href == $pageurl )
- );
- }
-
- # We need to do an explicit check for Special:Contributions, as we
- # have to match both the title, and the target, which could come
- # from request values (Special:Contributions?target=Jimbo_Wales)
- # or be specified in "sub page" form
- # (Special:Contributions/Jimbo_Wales). The plot
- # thickens, because the Title object is altered for special pages,
- # so it doesn't contain the original alias-with-subpage.
- $origTitle = Title::newFromText( $request->getText( 'title' ) );
- if ( $origTitle instanceof Title && $origTitle->isSpecialPage() ) {
- list( $spName, $spPar ) = SpecialPageFactory::resolveAlias( $origTitle->getText() );
- $active = $spName == 'Contributions'
- && ( ( $spPar && $spPar == $this->username )
- || $request->getText( 'target' ) == $this->username );
- } else {
- $active = false;
- }
-
- $href = self::makeSpecialUrlSubpage( 'Contributions', $this->username );
- $personal_urls['mycontris'] = array(
- 'text' => $this->msg( 'mycontris' )->text(),
- 'href' => $href,
- 'active' => $active
- );
- $personal_urls['logout'] = array(
- 'text' => $this->msg( 'pt-userlogout' )->text(),
- 'href' => self::makeSpecialUrl( 'Userlogout',
- // userlogout link must always contain an & character, otherwise we might not be able
- // to detect a buggy precaching proxy (bug 17790)
- $title->isSpecial( 'Preferences' ) ? 'noreturnto' : $returnto
- ),
- 'active' => false
- );
- } else {
- $useCombinedLoginLink = $this->useCombinedLoginLink();
- $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
- ? 'nav-login-createaccount'
- : 'pt-login';
- $is_signup = $request->getText( 'type' ) == 'signup';
-
- $login_url = array(
- 'text' => $this->msg( $loginlink )->text(),
- 'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
- 'active' => $title->isSpecial( 'Userlogin' )
- && ( $loginlink == 'nav-login-createaccount' || !$is_signup ),
- );
- $createaccount_url = array(
- 'text' => $this->msg( 'pt-createaccount' )->text(),
- 'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
- 'active' => $title->isSpecial( 'Userlogin' ) && $is_signup,
- );
-
- if ( $this->showIPinHeader() ) {
- $href = &$this->userpageUrlDetails['href'];
- $personal_urls['anonuserpage'] = array(
- 'text' => $this->username,
- 'href' => $href,
- 'class' => $this->userpageUrlDetails['exists'] ? false : 'new',
- 'active' => ( $pageurl == $href )
- );
- $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
- $href = &$usertalkUrlDetails['href'];
- $personal_urls['anontalk'] = array(
- 'text' => $this->msg( 'anontalk' )->text(),
- 'href' => $href,
- 'class' => $usertalkUrlDetails['exists'] ? false : 'new',
- 'active' => ( $pageurl == $href )
- );
- }
-
- if ( $this->getUser()->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
- $personal_urls['createaccount'] = $createaccount_url;
- }
-
- $personal_urls['login'] = $login_url;
- }
-
- wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title, $this ) );
- wfProfileOut( __METHOD__ );
- return $personal_urls;
- }
-
- /**
- * Builds an array with tab definition
- *
- * @param Title $title Page Where the tab links to
- * @param string|array $message Message key or an array of message keys (will fall back)
- * @param bool $selected Display the tab as selected
- * @param string $query Query string attached to tab URL
- * @param bool $checkEdit Check if $title exists and mark with .new if one doesn't
- *
- * @return array
- */
- function tabAction( $title, $message, $selected, $query = '', $checkEdit = false ) {
- $classes = array();
- if ( $selected ) {
- $classes[] = 'selected';
- }
- if ( $checkEdit && !$title->isKnown() ) {
- $classes[] = 'new';
- if ( $query !== '' ) {
- $query = 'action=edit&redlink=1&' . $query;
- } else {
- $query = 'action=edit&redlink=1';
- }
- }
-
- // wfMessageFallback will nicely accept $message as an array of fallbacks
- // or just a single key
- $msg = wfMessageFallback( $message )->setContext( $this->getContext() );
- if ( is_array( $message ) ) {
- // for hook compatibility just keep the last message name
- $message = end( $message );
- }
- if ( $msg->exists() ) {
- $text = $msg->text();
- } else {
- global $wgContLang;
- $text = $wgContLang->getFormattedNsText(
- MWNamespace::getSubject( $title->getNamespace() ) );
- }
-
- $result = array();
- if ( !wfRunHooks( 'SkinTemplateTabAction', array( &$this,
- $title, $message, $selected, $checkEdit,
- &$classes, &$query, &$text, &$result ) ) ) {
- return $result;
- }
-
- return array(
- 'class' => implode( ' ', $classes ),
- 'text' => $text,
- 'href' => $title->getLocalURL( $query ),
- 'primary' => true );
- }
-
- function makeTalkUrlDetails( $name, $urlaction = '' ) {
- $title = Title::newFromText( $name );
- if ( !is_object( $title ) ) {
- throw new MWException( __METHOD__ . " given invalid pagename $name" );
- }
- $title = $title->getTalkPage();
- self::checkTitle( $title, $name );
- return array(
- 'href' => $title->getLocalURL( $urlaction ),
- 'exists' => $title->getArticleID() != 0,
- );
- }
-
- function makeArticleUrlDetails( $name, $urlaction = '' ) {
- $title = Title::newFromText( $name );
- $title = $title->getSubjectPage();
- self::checkTitle( $title, $name );
- return array(
- 'href' => $title->getLocalURL( $urlaction ),
- 'exists' => $title->getArticleID() != 0,
- );
- }
-
- /**
- * a structured array of links usually used for the tabs in a skin
- *
- * There are 4 standard sections
- * namespaces: Used for namespace tabs like special, page, and talk namespaces
- * views: Used for primary page views like read, edit, history
- * actions: Used for most extra page actions like deletion, protection, etc...
- * variants: Used to list the language variants for the page
- *
- * Each section's value is a key/value array of links for that section.
- * The links themselves have these common keys:
- * - class: The css classes to apply to the tab
- * - text: The text to display on the tab
- * - href: The href for the tab to point to
- * - rel: An optional rel= for the tab's link
- * - redundant: If true the tab will be dropped in skins using content_actions
- * this is useful for tabs like "Read" which only have meaning in skins that
- * take special meaning from the grouped structure of content_navigation
- *
- * Views also have an extra key which can be used:
- * - primary: If this is not true skins like vector may try to hide the tab
- * when the user has limited space in their browser window
- *
- * content_navigation using code also expects these ids to be present on the
- * links, however these are usually automatically generated by SkinTemplate
- * itself and are not necessary when using a hook. The only things these may
- * matter to are people modifying content_navigation after it's initial creation:
- * - id: A "preferred" id, most skins are best off outputting this preferred
- * id for best compatibility.
- * - tooltiponly: This is set to true for some tabs in cases where the system
- * believes that the accesskey should not be added to the tab.
- *
- * @return array
- */
- protected function buildContentNavigationUrls() {
- global $wgDisableLangConversion;
-
- wfProfileIn( __METHOD__ );
-
- // Display tabs for the relevant title rather than always the title itself
- $title = $this->getRelevantTitle();
- $onPage = $title->equals( $this->getTitle() );
-
- $out = $this->getOutput();
- $request = $this->getRequest();
- $user = $this->getUser();
-
- $content_navigation = array(
- 'namespaces' => array(),
- 'views' => array(),
- 'actions' => array(),
- 'variants' => array()
- );
-
- // parameters
- $action = $request->getVal( 'action', 'view' );
-
- $userCanRead = $title->quickUserCan( 'read', $user );
-
- $preventActiveTabs = false;
- wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this, &$preventActiveTabs ) );
-
- // Checks if page is some kind of content
- if ( $title->canExist() ) {
- // Gets page objects for the related namespaces
- $subjectPage = $title->getSubjectPage();
- $talkPage = $title->getTalkPage();
-
- // Determines if this is a talk page
- $isTalk = $title->isTalkPage();
-
- // Generates XML IDs from namespace names
- $subjectId = $title->getNamespaceKey( '' );
-
- if ( $subjectId == 'main' ) {
- $talkId = 'talk';
- } else {
- $talkId = "{$subjectId}_talk";
- }
-
- $skname = $this->skinname;
-
- // Adds namespace links
- $subjectMsg = array( "nstab-$subjectId" );
- if ( $subjectPage->isMainPage() ) {
- array_unshift( $subjectMsg, 'mainpage-nstab' );
- }
- $content_navigation['namespaces'][$subjectId] = $this->tabAction(
- $subjectPage, $subjectMsg, !$isTalk && !$preventActiveTabs, '', $userCanRead
- );
- $content_navigation['namespaces'][$subjectId]['context'] = 'subject';
- $content_navigation['namespaces'][$talkId] = $this->tabAction(
- $talkPage, array( "nstab-$talkId", 'talk' ), $isTalk && !$preventActiveTabs, '', $userCanRead
- );
- $content_navigation['namespaces'][$talkId]['context'] = 'talk';
-
- if ( $userCanRead ) {
- $isForeignFile = $title->inNamespace( NS_FILE ) && $this->canUseWikiPage() &&
- $this->getWikiPage() instanceof WikiFilePage && !$this->getWikiPage()->isLocal();
-
- // Adds view view link
- if ( $title->exists() || $isForeignFile ) {
- $content_navigation['views']['view'] = $this->tabAction(
- $isTalk ? $talkPage : $subjectPage,
- array( "$skname-view-view", 'view' ),
- ( $onPage && ( $action == 'view' || $action == 'purge' ) ), '', true
- );
- // signal to hide this from simple content_actions
- $content_navigation['views']['view']['redundant'] = true;
- }
-
- // If it is a non-local file, show a link to the file in its own repository
- if ( $isForeignFile ) {
- $file = $this->getWikiPage()->getFile();
- $content_navigation['views']['view-foreign'] = array(
- 'class' => '',
- 'text' => wfMessageFallback( "$skname-view-foreign", 'view-foreign' )->
- setContext( $this->getContext() )->
- params( $file->getRepo()->getDisplayName() )->text(),
- 'href' => $file->getDescriptionUrl(),
- 'primary' => false,
- );
- }
-
- wfProfileIn( __METHOD__ . '-edit' );
-
- // Checks if user can edit the current page if it exists or create it otherwise
- if ( $title->quickUserCan( 'edit', $user )
- && ( $title->exists() || $title->quickUserCan( 'create', $user ) )
- ) {
- // Builds CSS class for talk page links
- $isTalkClass = $isTalk ? ' istalk' : '';
- // Whether the user is editing the page
- $isEditing = $onPage && ( $action == 'edit' || $action == 'submit' );
- // Whether to show the "Add a new section" tab
- // Checks if this is a current rev of talk page and is not forced to be hidden
- $showNewSection = !$out->forceHideNewSectionLink()
- && ( ( $isTalk && $this->isRevisionCurrent() ) || $out->showNewSectionLink() );
- $section = $request->getVal( 'section' );
-
- if ( $title->exists()
- || ( $title->getNamespace() == NS_MEDIAWIKI
- && $title->getDefaultMessageText() !== false
- )
- ) {
- $msgKey = $isForeignFile ? 'edit-local' : 'edit';
- } else {
- $msgKey = $isForeignFile ? 'create-local' : 'create';
- }
- $content_navigation['views']['edit'] = array(
- 'class' => ( $isEditing && ( $section !== 'new' || !$showNewSection )
- ? 'selected'
- : ''
- ) . $isTalkClass,
- 'text' => wfMessageFallback( "$skname-view-$msgKey", $msgKey )
- ->setContext( $this->getContext() )->text(),
- 'href' => $title->getLocalURL( $this->editUrlOptions() ),
- 'primary' => !$isForeignFile, // don't collapse this in vector
- );
-
- // section link
- if ( $showNewSection ) {
- // Adds new section link
- //$content_navigation['actions']['addsection']
- $content_navigation['views']['addsection'] = array(
- 'class' => ( $isEditing && $section == 'new' ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-action-addsection", 'addsection' )
- ->setContext( $this->getContext() )->text(),
- 'href' => $title->getLocalURL( 'action=edit§ion=new' )
- );
- }
- // Checks if the page has some kind of viewable content
- } elseif ( $title->hasSourceText() ) {
- // Adds view source view link
- $content_navigation['views']['viewsource'] = array(
- 'class' => ( $onPage && $action == 'edit' ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-action-viewsource", 'viewsource' )
- ->setContext( $this->getContext() )->text(),
- 'href' => $title->getLocalURL( $this->editUrlOptions() ),
- 'primary' => true, // don't collapse this in vector
- );
- }
- wfProfileOut( __METHOD__ . '-edit' );
-
- wfProfileIn( __METHOD__ . '-live' );
- // Checks if the page exists
- if ( $title->exists() ) {
- // Adds history view link
- $content_navigation['views']['history'] = array(
- 'class' => ( $onPage && $action == 'history' ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-view-history", 'history_short' )
- ->setContext( $this->getContext() )->text(),
- 'href' => $title->getLocalURL( 'action=history' ),
- 'rel' => 'archives',
- );
-
- if ( $title->quickUserCan( 'delete', $user ) ) {
- $content_navigation['actions']['delete'] = array(
- 'class' => ( $onPage && $action == 'delete' ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-action-delete", 'delete' )
- ->setContext( $this->getContext() )->text(),
- 'href' => $title->getLocalURL( 'action=delete' )
- );
- }
-
- if ( $title->quickUserCan( 'move', $user ) ) {
- $moveTitle = SpecialPage::getTitleFor( 'Movepage', $title->getPrefixedDBkey() );
- $content_navigation['actions']['move'] = array(
- 'class' => $this->getTitle()->isSpecial( 'Movepage' ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-action-move", 'move' )
- ->setContext( $this->getContext() )->text(),
- 'href' => $moveTitle->getLocalURL()
- );
- }
- } else {
- // article doesn't exist or is deleted
- if ( $user->isAllowed( 'deletedhistory' ) ) {
- $n = $title->isDeleted();
- if ( $n ) {
- $undelTitle = SpecialPage::getTitleFor( 'Undelete' );
- // If the user can't undelete but can view deleted
- // history show them a "View .. deleted" tab instead.
- $msgKey = $user->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
- $content_navigation['actions']['undelete'] = array(
- 'class' => $this->getTitle()->isSpecial( 'Undelete' ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-action-$msgKey", "{$msgKey}_short" )
- ->setContext( $this->getContext() )->numParams( $n )->text(),
- 'href' => $undelTitle->getLocalURL( array( 'target' => $title->getPrefixedDBkey() ) )
- );
- }
- }
- }
-
- if ( $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() &&
- MWNamespace::getRestrictionLevels( $title->getNamespace(), $user ) !== array( '' )
- ) {
- $mode = $title->isProtected() ? 'unprotect' : 'protect';
- $content_navigation['actions'][$mode] = array(
- 'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
- 'text' => wfMessageFallback( "$skname-action-$mode", $mode )
- ->setContext( $this->getContext() )->text(),
- 'href' => $title->getLocalURL( "action=$mode" )
- );
- }
-
- wfProfileOut( __METHOD__ . '-live' );
-
- // Checks if the user is logged in
- if ( $this->loggedin && $user->isAllowedAll( 'viewmywatchlist', 'editmywatchlist' ) ) {
- /**
- * The following actions use messages which, if made particular to
- * the any specific skins, would break the Ajax code which makes this
- * action happen entirely inline. OutputPage::getJSVars
- * defines a set of messages in a javascript object - and these
- * messages are assumed to be global for all skins. Without making
- * a change to that procedure these messages will have to remain as
- * the global versions.
- */
- $mode = $user->isWatched( $title ) ? 'unwatch' : 'watch';
- $token = WatchAction::getWatchToken( $title, $user, $mode );
- $content_navigation['actions'][$mode] = array(
- 'class' => $onPage && ( $action == 'watch' || $action == 'unwatch' ) ? 'selected' : false,
- // uses 'watch' or 'unwatch' message
- 'text' => $this->msg( $mode )->text(),
- 'href' => $title->getLocalURL( array( 'action' => $mode, 'token' => $token ) )
- );
- }
- }
-
- wfRunHooks( 'SkinTemplateNavigation', array( &$this, &$content_navigation ) );
-
- if ( $userCanRead && !$wgDisableLangConversion ) {
- $pageLang = $title->getPageLanguage();
- // Gets list of language variants
- $variants = $pageLang->getVariants();
- // Checks that language conversion is enabled and variants exist
- // And if it is not in the special namespace
- if ( count( $variants ) > 1 ) {
- // Gets preferred variant (note that user preference is
- // only possible for wiki content language variant)
- $preferred = $pageLang->getPreferredVariant();
- if ( Action::getActionName( $this ) === 'view' ) {
- $params = $request->getQueryValues();
- unset( $params['title'] );
- } else {
- $params = array();
- }
- // Loops over each variant
- foreach ( $variants as $code ) {
- // Gets variant name from language code
- $varname = $pageLang->getVariantname( $code );
- // Appends variant link
- $content_navigation['variants'][] = array(
- 'class' => ( $code == $preferred ) ? 'selected' : false,
- 'text' => $varname,
- 'href' => $title->getLocalURL( array( 'variant' => $code ) + $params ),
- 'lang' => wfBCP47( $code ),
- 'hreflang' => wfBCP47( $code ),
- );
- }
- }
- }
- } else {
- // If it's not content, it's got to be a special page
- $content_navigation['namespaces']['special'] = array(
- 'class' => 'selected',
- 'text' => $this->msg( 'nstab-special' )->text(),
- 'href' => $request->getRequestURL(), // @see: bug 2457, bug 2510
- 'context' => 'subject'
- );
-
- wfRunHooks( 'SkinTemplateNavigation::SpecialPage',
- array( &$this, &$content_navigation ) );
- }
-
- // Equiv to SkinTemplateContentActions
- wfRunHooks( 'SkinTemplateNavigation::Universal', array( &$this, &$content_navigation ) );
-
- // Setup xml ids and tooltip info
- foreach ( $content_navigation as $section => &$links ) {
- foreach ( $links as $key => &$link ) {
- $xmlID = $key;
- if ( isset( $link['context'] ) && $link['context'] == 'subject' ) {
- $xmlID = 'ca-nstab-' . $xmlID;
- } elseif ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
- $xmlID = 'ca-talk';
- } elseif ( $section == 'variants' ) {
- $xmlID = 'ca-varlang-' . $xmlID;
- } else {
- $xmlID = 'ca-' . $xmlID;
- }
- $link['id'] = $xmlID;
- }
- }
-
- # We don't want to give the watch tab an accesskey if the
- # page is being edited, because that conflicts with the
- # accesskey on the watch checkbox. We also don't want to
- # give the edit tab an accesskey, because that's fairly
- # superfluous and conflicts with an accesskey (Ctrl-E) often
- # used for editing in Safari.
- if ( in_array( $action, array( 'edit', 'submit' ) ) ) {
- if ( isset( $content_navigation['views']['edit'] ) ) {
- $content_navigation['views']['edit']['tooltiponly'] = true;
- }
- if ( isset( $content_navigation['actions']['watch'] ) ) {
- $content_navigation['actions']['watch']['tooltiponly'] = true;
- }
- if ( isset( $content_navigation['actions']['unwatch'] ) ) {
- $content_navigation['actions']['unwatch']['tooltiponly'] = true;
- }
- }
-
- wfProfileOut( __METHOD__ );
-
- return $content_navigation;
- }
-
- /**
- * an array of edit links by default used for the tabs
- * @param array $content_navigation
- * @return array
- */
- private function buildContentActionUrls( $content_navigation ) {
-
- wfProfileIn( __METHOD__ );
-
- // content_actions has been replaced with content_navigation for backwards
- // compatibility and also for skins that just want simple tabs content_actions
- // is now built by flattening the content_navigation arrays into one
-
- $content_actions = array();
-
- foreach ( $content_navigation as $links ) {
- foreach ( $links as $key => $value ) {
- if ( isset( $value['redundant'] ) && $value['redundant'] ) {
- // Redundant tabs are dropped from content_actions
- continue;
- }
-
- // content_actions used to have ids built using the "ca-$key" pattern
- // so the xmlID based id is much closer to the actual $key that we want
- // for that reason we'll just strip out the ca- if present and use
- // the latter potion of the "id" as the $key
- if ( isset( $value['id'] ) && substr( $value['id'], 0, 3 ) == 'ca-' ) {
- $key = substr( $value['id'], 3 );
- }
-
- if ( isset( $content_actions[$key] ) ) {
- wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening " .
- "content_navigation into content_actions.\n" );
- continue;
- }
-
- $content_actions[$key] = $value;
- }
- }
-
- wfProfileOut( __METHOD__ );
-
- return $content_actions;
- }
-
- /**
- * build array of common navigation links
- * @return array
- */
- protected function buildNavUrls() {
- global $wgUploadNavigationUrl;
-
- wfProfileIn( __METHOD__ );
-
- $out = $this->getOutput();
- $request = $this->getRequest();
-
- $nav_urls = array();
- $nav_urls['mainpage'] = array( 'href' => self::makeMainPageUrl() );
- if ( $wgUploadNavigationUrl ) {
- $nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
- } elseif ( UploadBase::isEnabled() && UploadBase::isAllowed( $this->getUser() ) === true ) {
- $nav_urls['upload'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
- } else {
- $nav_urls['upload'] = false;
- }
- $nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Specialpages' ) );
-
- $nav_urls['print'] = false;
- $nav_urls['permalink'] = false;
- $nav_urls['info'] = false;
- $nav_urls['whatlinkshere'] = false;
- $nav_urls['recentchangeslinked'] = false;
- $nav_urls['contributions'] = false;
- $nav_urls['log'] = false;
- $nav_urls['blockip'] = false;
- $nav_urls['emailuser'] = false;
- $nav_urls['userrights'] = false;
-
- // A print stylesheet is attached to all pages, but nobody ever
- // figures that out. :) Add a link...
- if ( !$out->isPrintable() && ( $out->isArticle() || $this->getTitle()->isSpecialPage() ) ) {
- $nav_urls['print'] = array(
- 'text' => $this->msg( 'printableversion' )->text(),
- 'href' => $this->getTitle()->getLocalURL(
- $request->appendQueryValue( 'printable', 'yes', true ) )
- );
- }
-
- if ( $out->isArticle() ) {
- // Also add a "permalink" while we're at it
- $revid = $this->getRevisionId();
- if ( $revid ) {
- $nav_urls['permalink'] = array(
- 'text' => $this->msg( 'permalink' )->text(),
- 'href' => $this->getTitle()->getLocalURL( "oldid=$revid" )
- );
- }
-
- // Use the copy of revision ID in case this undocumented, shady hook tries to mess with internals
- wfRunHooks( 'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink',
- array( &$this, &$nav_urls, &$revid, &$revid ) );
- }
-
- if ( $out->isArticleRelated() ) {
- $nav_urls['whatlinkshere'] = array(
- 'href' => SpecialPage::getTitleFor( 'Whatlinkshere', $this->thispage )->getLocalURL()
- );
-
- $nav_urls['info'] = array(
- 'text' => $this->msg( 'pageinfo-toolboxlink' )->text(),
- 'href' => $this->getTitle()->getLocalURL( "action=info" )
- );
-
- if ( $this->getTitle()->getArticleID() ) {
- $nav_urls['recentchangeslinked'] = array(
- 'href' => SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage )->getLocalURL()
- );
- }
- }
-
- $user = $this->getRelevantUser();
- if ( $user ) {
- $rootUser = $user->getName();
-
- $nav_urls['contributions'] = array(
- 'text' => $this->msg( 'contributions', $rootUser )->text(),
- 'href' => self::makeSpecialUrlSubpage( 'Contributions', $rootUser )
- );
-
- $nav_urls['log'] = array(
- 'href' => self::makeSpecialUrlSubpage( 'Log', $rootUser )
- );
-
- if ( $this->getUser()->isAllowed( 'block' ) ) {
- $nav_urls['blockip'] = array(
- 'href' => self::makeSpecialUrlSubpage( 'Block', $rootUser )
- );
- }
-
- if ( $this->showEmailUser( $user ) ) {
- $nav_urls['emailuser'] = array(
- 'href' => self::makeSpecialUrlSubpage( 'Emailuser', $rootUser )
- );
- }
-
- if ( !$user->isAnon() ) {
- $sur = new UserrightsPage;
- $sur->setContext( $this->getContext() );
- if ( $sur->userCanExecute( $this->getUser() ) ) {
- $nav_urls['userrights'] = array(
- 'href' => self::makeSpecialUrlSubpage( 'Userrights', $rootUser )
- );
- }
- }
- }
-
- wfProfileOut( __METHOD__ );
- return $nav_urls;
- }
-
- /**
- * Generate strings used for xml 'id' names
- * @return string
- */
- protected function getNameSpaceKey() {
- return $this->getTitle()->getNamespaceKey();
- }
-}
-
-/**
- * Generic wrapper for template functions, with interface
- * compatible with what we use of PHPTAL 0.7.
- * @ingroup Skins
- */
-abstract class QuickTemplate {
- /**
- * Constructor
- */
- function __construct() {
- $this->data = array();
- $this->translator = new MediaWikiI18N();
- }
-
- /**
- * Sets the value $value to $name
- * @param string $name
- * @param mixed $value
- */
- public function set( $name, $value ) {
- $this->data[$name] = $value;
- }
-
- /**
- * Gets the template data requested
- * @since 1.22
- * @param string $name Key for the data
- * @param mixed $default Optional default (or null)
- * @return mixed The value of the data requested or the deafult
- */
- public function get( $name, $default = null ) {
- if ( isset( $this->data[$name] ) ) {
- return $this->data[$name];
- } else {
- return $default;
- }
- }
-
- /**
- * @param string $name
- * @param mixed $value
- */
- public function setRef( $name, &$value ) {
- $this->data[$name] =& $value;
- }
-
- /**
- * @param MediaWikiI18N $t
- */
- public function setTranslator( &$t ) {
- $this->translator = &$t;
- }
-
- /**
- * Main function, used by classes that subclass QuickTemplate
- * to show the actual HTML output
- */
- abstract public function execute();
-
- /**
- * @private
- * @param string $str
- * @return string
- */
- function text( $str ) {
- echo htmlspecialchars( $this->data[$str] );
- }
-
- /**
- * @private
- * @param string $str
- * @return string
- */
- function html( $str ) {
- echo $this->data[$str];
- }
-
- /**
- * @private
- * @param string $str
- * @return string
- */
- function msg( $str ) {
- echo htmlspecialchars( $this->translator->translate( $str ) );
- }
-
- /**
- * @private
- * @param string $str
- * @return string
- */
- function msgHtml( $str ) {
- echo $this->translator->translate( $str );
- }
-
- /**
- * An ugly, ugly hack.
- * @private
- * @param string $str
- * @return string
- */
- function msgWiki( $str ) {
- global $wgOut;
-
- $text = $this->translator->translate( $str );
- echo $wgOut->parse( $text );
- }
-
- /**
- * @private
- * @param string $str
- * @return bool
- */
- function haveData( $str ) {
- return isset( $this->data[$str] );
- }
-
- /**
- * @private
- *
- * @param string $str
- * @return bool
- */
- function haveMsg( $str ) {
- $msg = $this->translator->translate( $str );
- return ( $msg != '-' ) && ( $msg != '' ); # ????
- }
-
- /**
- * Get the Skin object related to this object
- *
- * @return Skin
- */
- public function getSkin() {
- return $this->data['skin'];
- }
-
- /**
- * Fetch the output of a QuickTemplate and return it
- *
- * @since 1.23
- * @return string
- */
- public function getHTML() {
- ob_start();
- $this->execute();
- $html = ob_get_contents();
- ob_end_clean();
- return $html;
- }
-}
-
-/**
- * New base template for a skin's template extended from QuickTemplate
- * this class features helper methods that provide common ways of interacting
- * with the data stored in the QuickTemplate
- */
-abstract class BaseTemplate extends QuickTemplate {
-
- /**
- * Get a Message object with its context set
- *
- * @param string $name Message name
- * @return Message
- */
- public function getMsg( $name ) {
- return $this->getSkin()->msg( $name );
- }
-
- function msg( $str ) {
- echo $this->getMsg( $str )->escaped();
- }
-
- function msgHtml( $str ) {
- echo $this->getMsg( $str )->text();
- }
-
- function msgWiki( $str ) {
- echo $this->getMsg( $str )->parseAsBlock();
- }
-
- /**
- * Create an array of common toolbox items from the data in the quicktemplate
- * stored by SkinTemplate.
- * The resulting array is built according to a format intended to be passed
- * through makeListItem to generate the html.
- * @return array
- */
- function getToolbox() {
- wfProfileIn( __METHOD__ );
-
- $toolbox = array();
- if ( isset( $this->data['nav_urls']['whatlinkshere'] )
- && $this->data['nav_urls']['whatlinkshere']
- ) {
- $toolbox['whatlinkshere'] = $this->data['nav_urls']['whatlinkshere'];
- $toolbox['whatlinkshere']['id'] = 't-whatlinkshere';
- }
- if ( isset( $this->data['nav_urls']['recentchangeslinked'] )
- && $this->data['nav_urls']['recentchangeslinked']
- ) {
- $toolbox['recentchangeslinked'] = $this->data['nav_urls']['recentchangeslinked'];
- $toolbox['recentchangeslinked']['msg'] = 'recentchangeslinked-toolbox';
- $toolbox['recentchangeslinked']['id'] = 't-recentchangeslinked';
- }
- if ( isset( $this->data['feeds'] ) && $this->data['feeds'] ) {
- $toolbox['feeds']['id'] = 'feedlinks';
- $toolbox['feeds']['links'] = array();
- foreach ( $this->data['feeds'] as $key => $feed ) {
- $toolbox['feeds']['links'][$key] = $feed;
- $toolbox['feeds']['links'][$key]['id'] = "feed-$key";
- $toolbox['feeds']['links'][$key]['rel'] = 'alternate';
- $toolbox['feeds']['links'][$key]['type'] = "application/{$key}+xml";
- $toolbox['feeds']['links'][$key]['class'] = 'feedlink';
- }
- }
- foreach ( array( 'contributions', 'log', 'blockip', 'emailuser',
- 'userrights', 'upload', 'specialpages' ) as $special
- ) {
- if ( isset( $this->data['nav_urls'][$special] ) && $this->data['nav_urls'][$special] ) {
- $toolbox[$special] = $this->data['nav_urls'][$special];
- $toolbox[$special]['id'] = "t-$special";
- }
- }
- if ( isset( $this->data['nav_urls']['print'] ) && $this->data['nav_urls']['print'] ) {
- $toolbox['print'] = $this->data['nav_urls']['print'];
- $toolbox['print']['id'] = 't-print';
- $toolbox['print']['rel'] = 'alternate';
- $toolbox['print']['msg'] = 'printableversion';
- }
- if ( isset( $this->data['nav_urls']['permalink'] ) && $this->data['nav_urls']['permalink'] ) {
- $toolbox['permalink'] = $this->data['nav_urls']['permalink'];
- if ( $toolbox['permalink']['href'] === '' ) {
- unset( $toolbox['permalink']['href'] );
- $toolbox['ispermalink']['tooltiponly'] = true;
- $toolbox['ispermalink']['id'] = 't-ispermalink';
- $toolbox['ispermalink']['msg'] = 'permalink';
- } else {
- $toolbox['permalink']['id'] = 't-permalink';
- }
- }
- if ( isset( $this->data['nav_urls']['info'] ) && $this->data['nav_urls']['info'] ) {
- $toolbox['info'] = $this->data['nav_urls']['info'];
- $toolbox['info']['id'] = 't-info';
- }
-
- wfRunHooks( 'BaseTemplateToolbox', array( &$this, &$toolbox ) );
- wfProfileOut( __METHOD__ );
- return $toolbox;
- }
-
- /**
- * Create an array of personal tools items from the data in the quicktemplate
- * stored by SkinTemplate.
- * The resulting array is built according to a format intended to be passed
- * through makeListItem to generate the html.
- * This is in reality the same list as already stored in personal_urls
- * however it is reformatted so that you can just pass the individual items
- * to makeListItem instead of hardcoding the element creation boilerplate.
- * @return array
- */
- function getPersonalTools() {
- $personal_tools = array();
- foreach ( $this->get( 'personal_urls' ) as $key => $plink ) {
- # The class on a personal_urls item is meant to go on the <a> instead
- # of the <li> so we have to use a single item "links" array instead
- # of using most of the personal_url's keys directly.
- $ptool = array(
- 'links' => array(
- array( 'single-id' => "pt-$key" ),
- ),
- 'id' => "pt-$key",
- );
- if ( isset( $plink['active'] ) ) {
- $ptool['active'] = $plink['active'];
- }
- foreach ( array( 'href', 'class', 'text', 'dir' ) as $k ) {
- if ( isset( $plink[$k] ) ) {
- $ptool['links'][0][$k] = $plink[$k];
- }
- }
- $personal_tools[$key] = $ptool;
- }
- return $personal_tools;
- }
-
- function getSidebar( $options = array() ) {
- // Force the rendering of the following portals
- $sidebar = $this->data['sidebar'];
- if ( !isset( $sidebar['SEARCH'] ) ) {
- $sidebar['SEARCH'] = true;
- }
- if ( !isset( $sidebar['TOOLBOX'] ) ) {
- $sidebar['TOOLBOX'] = true;
- }
- if ( !isset( $sidebar['LANGUAGES'] ) ) {
- $sidebar['LANGUAGES'] = true;
- }
-
- if ( !isset( $options['search'] ) || $options['search'] !== true ) {
- unset( $sidebar['SEARCH'] );
- }
- if ( isset( $options['toolbox'] ) && $options['toolbox'] === false ) {
- unset( $sidebar['TOOLBOX'] );
- }
- if ( isset( $options['languages'] ) && $options['languages'] === false ) {
- unset( $sidebar['LANGUAGES'] );
- }
-
- $boxes = array();
- foreach ( $sidebar as $boxName => $content ) {
- if ( $content === false ) {
- continue;
- }
- switch ( $boxName ) {
- case 'SEARCH':
- // Search is a special case, skins should custom implement this
- $boxes[$boxName] = array(
- 'id' => 'p-search',
- 'header' => $this->getMsg( 'search' )->text(),
- 'generated' => false,
- 'content' => true,
- );
- break;
- case 'TOOLBOX':
- $msgObj = $this->getMsg( 'toolbox' );
- $boxes[$boxName] = array(
- 'id' => 'p-tb',
- 'header' => $msgObj->exists() ? $msgObj->text() : 'toolbox',
- 'generated' => false,
- 'content' => $this->getToolbox(),
- );
- break;
- case 'LANGUAGES':
- if ( $this->data['language_urls'] ) {
- $msgObj = $this->getMsg( 'otherlanguages' );
- $boxes[$boxName] = array(
- 'id' => 'p-lang',
- 'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
- 'generated' => false,
- 'content' => $this->data['language_urls'],
- );
- }
- break;
- default:
- $msgObj = $this->getMsg( $boxName );
- $boxes[$boxName] = array(
- 'id' => "p-$boxName",
- 'header' => $msgObj->exists() ? $msgObj->text() : $boxName,
- 'generated' => true,
- 'content' => $content,
- );
- break;
- }
- }
-
- // HACK: Compatibility with extensions still using SkinTemplateToolboxEnd
- $hookContents = null;
- if ( isset( $boxes['TOOLBOX'] ) ) {
- ob_start();
- // We pass an extra 'true' at the end so extensions using BaseTemplateToolbox
- // can abort and avoid outputting double toolbox links
- wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
- $hookContents = ob_get_contents();
- ob_end_clean();
- if ( !trim( $hookContents ) ) {
- $hookContents = null;
- }
- }
- // END hack
-
- if ( isset( $options['htmlOnly'] ) && $options['htmlOnly'] === true ) {
- foreach ( $boxes as $boxName => $box ) {
- if ( is_array( $box['content'] ) ) {
- $content = '<ul>';
- foreach ( $box['content'] as $key => $val ) {
- $content .= "\n " . $this->makeListItem( $key, $val );
- }
- // HACK, shove the toolbox end onto the toolbox if we're rendering itself
- if ( $hookContents ) {
- $content .= "\n $hookContents";
- }
- // END hack
- $content .= "\n</ul>\n";
- $boxes[$boxName]['content'] = $content;
- }
- }
- } else {
- if ( $hookContents ) {
- $boxes['TOOLBOXEND'] = array(
- 'id' => 'p-toolboxend',
- 'header' => $boxes['TOOLBOX']['header'],
- 'generated' => false,
- 'content' => "<ul>{$hookContents}</ul>",
- );
- // HACK: Make sure that TOOLBOXEND is sorted next to TOOLBOX
- $boxes2 = array();
- foreach ( $boxes as $key => $box ) {
- if ( $key === 'TOOLBOXEND' ) {
- continue;
- }
- $boxes2[$key] = $box;
- if ( $key === 'TOOLBOX' ) {
- $boxes2['TOOLBOXEND'] = $boxes['TOOLBOXEND'];
- }
- }
- $boxes = $boxes2;
- // END hack
- }
- }
-
- return $boxes;
- }
-
- /**
- * @param string $name
- */
- protected function renderAfterPortlet( $name ) {
- $content = '';
- wfRunHooks( 'BaseTemplateAfterPortlet', array( $this, $name, &$content ) );
-
- if ( $content !== '' ) {
- echo "<div class='after-portlet after-portlet-$name'>$content</div>";
- }
-
- }
-
- /**
- * Makes a link, usually used by makeListItem to generate a link for an item
- * in a list used in navigation lists, portlets, portals, sidebars, etc...
- *
- * @param string $key Usually a key from the list you are generating this
- * link from.
- * @param array $item Contains some of a specific set of keys.
- *
- * The text of the link will be generated either from the contents of the
- * "text" key in the $item array, if a "msg" key is present a message by
- * that name will be used, and if neither of those are set the $key will be
- * used as a message name.
- *
- * If a "href" key is not present makeLink will just output htmlescaped text.
- * The "href", "id", "class", "rel", and "type" keys are used as attributes
- * for the link if present.
- *
- * If an "id" or "single-id" (if you don't want the actual id to be output
- * on the link) is present it will be used to generate a tooltip and
- * accesskey for the link.
- *
- * The keys "context" and "primary" are ignored; these keys are used
- * internally by skins and are not supposed to be included in the HTML
- * output.
- *
- * If you don't want an accesskey, set $item['tooltiponly'] = true;
- *
- * @param array $options Can be used to affect the output of a link.
- * Possible options are:
- * - 'text-wrapper' key to specify a list of elements to wrap the text of
- * a link in. This should be an array of arrays containing a 'tag' and
- * optionally an 'attributes' key. If you only have one element you don't
- * need to wrap it in another array. eg: To use <a><span>...</span></a>
- * in all links use array( 'text-wrapper' => array( 'tag' => 'span' ) )
- * for your options.
- * - 'link-class' key can be used to specify additional classes to apply
- * to all links.
- * - 'link-fallback' can be used to specify a tag to use instead of "<a>"
- * if there is no link. eg: If you specify 'link-fallback' => 'span' than
- * any non-link will output a "<span>" instead of just text.
- *
- * @return string
- */
- function makeLink( $key, $item, $options = array() ) {
- if ( isset( $item['text'] ) ) {
- $text = $item['text'];
- } else {
- $text = $this->translator->translate( isset( $item['msg'] ) ? $item['msg'] : $key );
- }
-
- $html = htmlspecialchars( $text );
-
- if ( isset( $options['text-wrapper'] ) ) {
- $wrapper = $options['text-wrapper'];
- if ( isset( $wrapper['tag'] ) ) {
- $wrapper = array( $wrapper );
- }
- while ( count( $wrapper ) > 0 ) {
- $element = array_pop( $wrapper );
- $html = Html::rawElement( $element['tag'], isset( $element['attributes'] )
- ? $element['attributes']
- : null, $html );
- }
- }
-
- if ( isset( $item['href'] ) || isset( $options['link-fallback'] ) ) {
- $attrs = $item;
- foreach ( array( 'single-id', 'text', 'msg', 'tooltiponly', 'context', 'primary' ) as $k ) {
- unset( $attrs[$k] );
- }
-
- if ( isset( $item['id'] ) && !isset( $item['single-id'] ) ) {
- $item['single-id'] = $item['id'];
- }
- if ( isset( $item['single-id'] ) ) {
- if ( isset( $item['tooltiponly'] ) && $item['tooltiponly'] ) {
- $title = Linker::titleAttrib( $item['single-id'] );
- if ( $title !== false ) {
- $attrs['title'] = $title;
- }
- } else {
- $tip = Linker::tooltipAndAccesskeyAttribs( $item['single-id'] );
- if ( isset( $tip['title'] ) && $tip['title'] !== false ) {
- $attrs['title'] = $tip['title'];
- }
- if ( isset( $tip['accesskey'] ) && $tip['accesskey'] !== false ) {
- $attrs['accesskey'] = $tip['accesskey'];
- }
- }
- }
- if ( isset( $options['link-class'] ) ) {
- if ( isset( $attrs['class'] ) ) {
- $attrs['class'] .= " {$options['link-class']}";
- } else {
- $attrs['class'] = $options['link-class'];
- }
- }
- $html = Html::rawElement( isset( $attrs['href'] )
- ? 'a'
- : $options['link-fallback'], $attrs, $html );
- }
-
- return $html;
- }
-
- /**
- * Generates a list item for a navigation, portlet, portal, sidebar... list
- *
- * @param string $key Usually a key from the list you are generating this link from.
- * @param array $item Array of list item data containing some of a specific set of keys.
- * The "id", "class" and "itemtitle" keys will be used as attributes for the list item,
- * if "active" contains a value of true a "active" class will also be appended to class.
- *
- * @param array $options
- *
- * If you want something other than a "<li>" you can pass a tag name such as
- * "tag" => "span" in the $options array to change the tag used.
- * link/content data for the list item may come in one of two forms
- * A "links" key may be used, in which case it should contain an array with
- * a list of links to include inside the list item, see makeLink for the
- * format of individual links array items.
- *
- * Otherwise the relevant keys from the list item $item array will be passed
- * to makeLink instead. Note however that "id" and "class" are used by the
- * list item directly so they will not be passed to makeLink
- * (however the link will still support a tooltip and accesskey from it)
- * If you need an id or class on a single link you should include a "links"
- * array with just one link item inside of it. If you want to add a title
- * to the list item itself, you can set "itemtitle" to the value.
- * $options is also passed on to makeLink calls
- *
- * @return string
- */
- function makeListItem( $key, $item, $options = array() ) {
- if ( isset( $item['links'] ) ) {
- $links = array();
- foreach ( $item['links'] as $linkKey => $link ) {
- $links[] = $this->makeLink( $linkKey, $link, $options );
- }
- $html = implode( ' ', $links );
- } else {
- $link = $item;
- // These keys are used by makeListItem and shouldn't be passed on to the link
- foreach ( array( 'id', 'class', 'active', 'tag', 'itemtitle' ) as $k ) {
- unset( $link[$k] );
- }
- if ( isset( $item['id'] ) && !isset( $item['single-id'] ) ) {
- // The id goes on the <li> not on the <a> for single links
- // but makeSidebarLink still needs to know what id to use when
- // generating tooltips and accesskeys.
- $link['single-id'] = $item['id'];
- }
- $html = $this->makeLink( $key, $link, $options );
- }
-
- $attrs = array();
- foreach ( array( 'id', 'class' ) as $attr ) {
- if ( isset( $item[$attr] ) ) {
- $attrs[$attr] = $item[$attr];
- }
- }
- if ( isset( $item['active'] ) && $item['active'] ) {
- if ( !isset( $attrs['class'] ) ) {
- $attrs['class'] = '';
- }
- $attrs['class'] .= ' active';
- $attrs['class'] = trim( $attrs['class'] );
- }
- if ( isset( $item['itemtitle'] ) ) {
- $attrs['title'] = $item['itemtitle'];
- }
- return Html::rawElement( isset( $options['tag'] ) ? $options['tag'] : 'li', $attrs, $html );
- }
-
- function makeSearchInput( $attrs = array() ) {
- $realAttrs = array(
- 'type' => 'search',
- 'name' => 'search',
- 'placeholder' => wfMessage( 'searchsuggest-search' )->text(),
- 'value' => $this->get( 'search', '' ),
- );
- $realAttrs = array_merge( $realAttrs, Linker::tooltipAndAccesskeyAttribs( 'search' ), $attrs );
- return Html::element( 'input', $realAttrs );
- }
-
- function makeSearchButton( $mode, $attrs = array() ) {
- switch ( $mode ) {
- case 'go':
- case 'fulltext':
- $realAttrs = array(
- 'type' => 'submit',
- 'name' => $mode,
- 'value' => $this->translator->translate(
- $mode == 'go' ? 'searcharticle' : 'searchbutton' ),
- );
- $realAttrs = array_merge(
- $realAttrs,
- Linker::tooltipAndAccesskeyAttribs( "search-$mode" ),
- $attrs
- );
- return Html::element( 'input', $realAttrs );
- case 'image':
- $buttonAttrs = array(
- 'type' => 'submit',
- 'name' => 'button',
- );
- $buttonAttrs = array_merge(
- $buttonAttrs,
- Linker::tooltipAndAccesskeyAttribs( 'search-fulltext' ),
- $attrs
- );
- unset( $buttonAttrs['src'] );
- unset( $buttonAttrs['alt'] );
- unset( $buttonAttrs['width'] );
- unset( $buttonAttrs['height'] );
- $imgAttrs = array(
- 'src' => $attrs['src'],
- 'alt' => isset( $attrs['alt'] )
- ? $attrs['alt']
- : $this->translator->translate( 'searchbutton' ),
- 'width' => isset( $attrs['width'] ) ? $attrs['width'] : null,
- 'height' => isset( $attrs['height'] ) ? $attrs['height'] : null,
- );
- return Html::rawElement( 'button', $buttonAttrs, Html::element( 'img', $imgAttrs ) );
- default:
- throw new MWException( 'Unknown mode passed to BaseTemplate::makeSearchButton' );
- }
- }
-
- /**
- * Returns an array of footerlinks trimmed down to only those footer links that
- * are valid.
- * If you pass "flat" as an option then the returned array will be a flat array
- * of footer icons instead of a key/value array of footerlinks arrays broken
- * up into categories.
- * @param string $option
- * @return array|mixed
- */
- function getFooterLinks( $option = null ) {
- $footerlinks = $this->get( 'footerlinks' );
-
- // Reduce footer links down to only those which are being used
- $validFooterLinks = array();
- foreach ( $footerlinks as $category => $links ) {
- $validFooterLinks[$category] = array();
- foreach ( $links as $link ) {
- if ( isset( $this->data[$link] ) && $this->data[$link] ) {
- $validFooterLinks[$category][] = $link;
- }
- }
- if ( count( $validFooterLinks[$category] ) <= 0 ) {
- unset( $validFooterLinks[$category] );
- }
- }
-
- if ( $option == 'flat' ) {
- // fold footerlinks into a single array using a bit of trickery
- $validFooterLinks = call_user_func_array(
- 'array_merge',
- array_values( $validFooterLinks )
- );
- }
-
- return $validFooterLinks;
- }
-
- /**
- * Returns an array of footer icons filtered down by options relevant to how
- * the skin wishes to display them.
- * If you pass "icononly" as the option all footer icons which do not have an
- * image icon set will be filtered out.
- * If you pass "nocopyright" then MediaWiki's copyright icon will not be included
- * in the list of footer icons. This is mostly useful for skins which only
- * display the text from footericons instead of the images and don't want a
- * duplicate copyright statement because footerlinks already rendered one.
- * @param string $option
- * @return string
- */
- function getFooterIcons( $option = null ) {
- // Generate additional footer icons
- $footericons = $this->get( 'footericons' );
-
- if ( $option == 'icononly' ) {
- // Unset any icons which don't have an image
- foreach ( $footericons as &$footerIconsBlock ) {
- foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
- if ( !is_string( $footerIcon ) && !isset( $footerIcon['src'] ) ) {
- unset( $footerIconsBlock[$footerIconKey] );
- }
- }
- }
- // Redo removal of any empty blocks
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- if ( count( $footerIconsBlock ) <= 0 ) {
- unset( $footericons[$footerIconsKey] );
- }
- }
- } elseif ( $option == 'nocopyright' ) {
- unset( $footericons['copyright']['copyright'] );
- if ( count( $footericons['copyright'] ) <= 0 ) {
- unset( $footericons['copyright'] );
- }
- }
-
- return $footericons;
- }
-
- /**
- * Output the basic end-page trail including bottomscripts, reporttime, and
- * debug stuff. This should be called right before outputting the closing
- * body and html tags.
- */
- function printTrail() { ?>
-<?php echo MWDebug::getDebugHTML( $this->getSkin()->getContext() ); ?>
-<?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html( 'reporttime' ) ?>
-<?php
- }
-}
* @param string $class Name of the class of the real object.
* @param array $params Parameters to pass to constructor of the real object.
*/
- function __construct( $global = null, $class = null, $params = array() ) {
+ public function __construct( $global = null, $class = null, $params = array() ) {
$this->global = $global;
$this->class = $class;
$this->params = $params;
* @param object $obj Object to check.
* @return bool True if $obj is not an instance of StubObject class.
*/
- static function isRealObject( $obj ) {
+ public static function isRealObject( $obj ) {
return is_object( $obj ) && !$obj instanceof StubObject;
}
* @param object $obj Object to check.
* @return void
*/
- static function unstub( &$obj ) {
+ public static function unstub( &$obj ) {
if ( $obj instanceof StubObject ) {
$obj = $obj->_unstub( 'unstub', 3 );
}
* @param array $args Arguments
* @return mixed
*/
- function _call( $name, $args ) {
+ public function _call( $name, $args ) {
$this->_unstub( $name, 5 );
return call_user_func_array( array( $GLOBALS[$this->global], $name ), $args );
}
* Create a new object to replace this stub object.
* @return object
*/
- function _newObject() {
+ public function _newObject() {
return MWFunction::newObj( $this->class, $this->params );
}
* @param array $args Arguments
* @return mixed
*/
- function __call( $name, $args ) {
+ public function __call( $name, $args ) {
return $this->_call( $name, $args );
}
* @return object The unstubbed version of itself
* @throws MWException
*/
- function _unstub( $name = '_unstub', $level = 2 ) {
+ public function _unstub( $name = '_unstub', $level = 2 ) {
static $recursionLevel = 0;
if ( !$GLOBALS[$this->global] instanceof StubObject ) {
*/
class StubUserLang extends StubObject {
- function __construct() {
+ public function __construct() {
parent::__construct( 'wgLang' );
}
- function __call( $name, $args ) {
+ public function __call( $name, $args ) {
return $this->_call( $name, $args );
}
/**
* @return Language
*/
- function _newObject() {
+ public function _newObject() {
return RequestContext::getMain()->getLanguage();
}
}
/** @var string Interwiki prefix */
public $mInterwiki = '';
+ /** @var bool Was this Title created from a string with a local interwiki prefix? */
+ private $mLocalInterwiki = false;
+
/** @var string Title fragment (i.e. the bit after the #) */
public $mFragment = '';
return $this->mInterwiki;
}
+ /**
+ * Was this a local interwiki link?
+ *
+ * @return bool
+ */
+ public function wasLocalInterwiki() {
+ return $this->mLocalInterwiki;
+ }
+
/**
* Determine whether the object refers to a page within
* this project and is transcludable.
$ns = $this->mNamespace == NS_MAIN ?
wfMessage( 'nstab-main' )->text() : $this->getNsText();
$errors[] = $this->mNamespace == NS_MEDIAWIKI ?
- array( 'protectedinterface' ) : array( 'namespaceprotected', $ns );
+ array( 'protectedinterface', $action ) : array( 'namespaceprotected', $ns, $action );
}
return $errors;
if ( $action != 'patrol' && !$user->isAllowed( 'editusercssjs' ) ) {
if ( preg_match( '/^' . preg_quote( $user->getName(), '/' ) . '\//', $this->mTextform ) ) {
if ( $this->isCssSubpage() && !$user->isAllowedAny( 'editmyusercss', 'editusercss' ) ) {
- $errors[] = array( 'mycustomcssprotected' );
+ $errors[] = array( 'mycustomcssprotected', $action );
} elseif ( $this->isJsSubpage() && !$user->isAllowedAny( 'editmyuserjs', 'edituserjs' ) ) {
- $errors[] = array( 'mycustomjsprotected' );
+ $errors[] = array( 'mycustomjsprotected', $action );
}
} else {
if ( $this->isCssSubpage() && !$user->isAllowed( 'editusercss' ) ) {
- $errors[] = array( 'customcssprotected' );
+ $errors[] = array( 'customcssprotected', $action );
} elseif ( $this->isJsSubpage() && !$user->isAllowed( 'edituserjs' ) ) {
- $errors[] = array( 'customjsprotected' );
+ $errors[] = array( 'customjsprotected', $action );
}
}
}
continue;
}
if ( !$user->isAllowed( $right ) ) {
- $errors[] = array( 'protectedpagetext', $right );
+ $errors[] = array( 'protectedpagetext', $right, $action );
} elseif ( $this->mCascadeRestriction && !$user->isAllowed( 'protect' ) ) {
- $errors[] = array( 'protectedpagetext', 'protect' );
+ $errors[] = array( 'protectedpagetext', 'protect', $action );
}
}
foreach ( $cascadingSources as $page ) {
$pages .= '* [[:' . $page->getPrefixedText() . "]]\n";
}
- $errors[] = array( 'cascadeprotected', count( $cascadingSources ), $pages );
+ $errors[] = array( 'cascadeprotected', count( $cascadingSources ), $pages, $action );
}
}
}
$errors[] = array( 'immobile-target-page' );
}
} elseif ( $action == 'delete' ) {
+ if ( count( $this->getUserPermissionsErrorsInternal( 'edit',
+ $user, $doExpensiveQueries, true ) )
+ ) {
+ // If they can't edit, they shouldn't delete.
+ $errors[] = array( 'delete-cantedit' );
+ }
if ( $doExpensiveQueries && $wgDeleteRevisionsLimit
&& !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion()
) {
'checkPermissionHooks',
'checkReadPermissions',
);
+ # Don't call checkSpecialsAndNSPermissions or checkCSSandJSPermissions
+ # here as it will lead to duplicate error messages. This is okay to do
+ # since anywhere that checks for create will also check for edit, and
+ # those checks are called for edit.
+ } elseif ( $action == 'create' ) {
+ $checks = array(
+ 'checkQuickPermissions',
+ 'checkPermissionHooks',
+ 'checkPageRestrictions',
+ 'checkCascadingSourcesRestrictions',
+ 'checkActionPermissions',
+ 'checkUserBlock'
+ );
} else {
$checks = array(
'checkQuickPermissions',
# Fill fields
$this->setFragment( '#' . $parts['fragment'] );
$this->mInterwiki = $parts['interwiki'];
+ $this->mLocalInterwiki = $parts['local_interwiki'];
$this->mNamespace = $parts['namespace'];
$this->mUserCaseDBKey = $parts['user_case_dbkey'];
public function setPassword( $str ) {
global $wgAuth;
+ $this->loadPasswords();
+
if ( $str !== null ) {
if ( !$wgAuth->allowPasswordChange() ) {
throw new PasswordError( wfMessage( 'password-change-forbidden' )->text() );
* @param bool $throttle If true, reset the throttle timestamp to the present
*/
public function setNewpassword( $str, $throttle = true ) {
- $this->load();
+ $this->loadPasswords();
if ( $str === null ) {
$this->mNewpassword = '';
foreach ( $columns as $column ) {
foreach ( $rows as $row ) {
- $checkmatrixOptions["$prefix-$column-$row"] = true;
+ $checkmatrixOptions["$prefix$column-$row"] = true;
}
}
* This method is doing Q encoding inside encoded-words as defined by RFC 2047
* This is for email headers.
* The built in quoted_printable_encode() is for email bodies
+ * @param string $string
+ * @param string $charset
* @return string
*/
public static function quotedPrintable( $string, $charset = '' ) {
* @return null|UserRightsProxy
*/
private static function newFromLookup( $database, $field, $value, $ignoreInvalidDB = false ) {
+ global $wgSharedDB, $wgSharedTables;
+ // If the user table is shared, perform the user query on it, but don't pass it to the UserRightsProxy,
+ // as user rights are normally not shared.
+ if ( $wgSharedDB && in_array( 'user', $wgSharedTables ) ) {
+ $userdb = self::getDB( $wgSharedDB, $ignoreInvalidDB );
+ } else {
+ $userdb = self::getDB( $database, $ignoreInvalidDB );
+ }
+
$db = self::getDB( $database, $ignoreInvalidDB );
- if ( $db ) {
- $row = $db->selectRow( 'user',
+
+ if ( $db && $userdb ) {
+ $row = $userdb->selectRow( 'user',
array( 'user_id', 'user_name' ),
array( $field => $value ),
__METHOD__ );
+
if ( $row !== false ) {
return new UserRightsProxy( $db, $database,
$row->user_name,
}
/**
- * Given a title and user (assumes the object is setup), add the watch to the database.
+ * @param WatchedItem[] $items
* @return bool
*/
- public function addWatch() {
- wfProfileIn( __METHOD__ );
+ static public function batchAddWatch( array $items ) {
+ $section = new ProfileSection( __METHOD__ );
- // Only loggedin user can have a watchlist
- if ( wfReadOnly() || $this->mUser->isAnon() || !$this->isAllowed( 'editmywatchlist' ) ) {
- wfProfileOut( __METHOD__ );
+ if ( wfReadOnly() ) {
return false;
}
- // Use INSERT IGNORE to avoid overwriting the notification timestamp
- // if there's already an entry for this page
- $dbw = wfGetDB( DB_MASTER );
- $dbw->insert( 'watchlist',
- array(
- 'wl_user' => $this->getUserId(),
- 'wl_namespace' => MWNamespace::getSubject( $this->getTitleNs() ),
- 'wl_title' => $this->getTitleDBkey(),
+ $rows = array();
+ foreach ( $items as $item ) {
+ // Only loggedin user can have a watchlist
+ if ( $item->mUser->isAnon() || !$item->isAllowed( 'editmywatchlist' ) ) {
+ continue;
+ }
+ $rows[] = array(
+ 'wl_user' => $item->getUserId(),
+ 'wl_namespace' => MWNamespace::getSubject( $item->getTitleNs() ),
+ 'wl_title' => $item->getTitleDBkey(),
+ 'wl_notificationtimestamp' => null,
+ );
+ // Every single watched page needs now to be listed in watchlist;
+ // namespace:page and namespace_talk:page need separate entries:
+ $rows[] = array(
+ 'wl_user' => $item->getUserId(),
+ 'wl_namespace' => MWNamespace::getTalk( $item->getTitleNs() ),
+ 'wl_title' => $item->getTitleDBkey(),
'wl_notificationtimestamp' => null
- ), __METHOD__, 'IGNORE' );
+ );
+ $item->watched = true;
+ }
- // Every single watched page needs now to be listed in watchlist;
- // namespace:page and namespace_talk:page need separate entries:
- $dbw->insert( 'watchlist',
- array(
- 'wl_user' => $this->getUserId(),
- 'wl_namespace' => MWNamespace::getTalk( $this->getTitleNs() ),
- 'wl_title' => $this->getTitleDBkey(),
- 'wl_notificationtimestamp' => null
- ), __METHOD__, 'IGNORE' );
+ if ( !$rows ) {
+ return false;
+ }
- $this->watched = true;
+ $dbw = wfGetDB( DB_MASTER );
+ foreach( array_chunk( $rows, 100 ) as $toInsert ) {
+ // Use INSERT IGNORE to avoid overwriting the notification timestamp
+ // if there's already an entry for this page
+ $dbw->insert( 'watchlist', $toInsert, __METHOD__, 'IGNORE' );
+ }
- wfProfileOut( __METHOD__ );
return true;
}
+ /**
+ * Given a title and user (assumes the object is setup), add the watch to the database.
+ * @return bool
+ */
+ public function addWatch() {
+ return self::batchAddWatch( array( $this ) );
+ }
+
/**
* Same as addWatch, only the opposite.
* @return bool
* secure: bool, secure attribute ($wgCookieSecure)
* httpOnly: bool, httpOnly attribute ($wgCookieHttpOnly)
* raw: bool, if true uses PHP's setrawcookie() instead of setcookie()
- * For backwards compatability, if $options is not an array then it and
+ * For backwards compatibility, if $options is not an array then it and
* the following two parameters will be interpreted as values for
* 'prefix', 'domain', and 'secure'
* @since 1.22 Replaced $prefix, $domain, and $forceSecure with $options
global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly;
if ( !is_array( $options ) ) {
- // Backwards compatability
+ // Backwards compatibility
$options = array( 'prefix' => $options );
if ( func_num_args() >= 5 ) {
$options['domain'] = func_get_arg( 4 );
$attributes['value'] = $value;
}
- return self::element( 'input', $attributes + $attribs );
+ return self::element( 'input',
+ Html::getTextInputAttributes( $attributes + $attribs ) );
}
/**
* @return string HTML
*/
public static function checkLabel( $label, $name, $id, $checked = false, $attribs = array() ) {
- return self::check( $name, $checked, array( 'id' => $id ) + $attribs ) .
+ global $wgUseMediaWikiUIEverywhere;
+ $chkLabel = self::check( $name, $checked, array( 'id' => $id ) + $attribs ) .
' ' .
self::label( $label, $id, $attribs );
+
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $chkLabel = self::openElement( 'div', array( 'class' => 'mw-ui-checkbox' ) ) .
+ $chkLabel . self::closeElement( 'div' );
+ }
+ return $chkLabel;
}
/**
/**
* Convenience function to build an HTML submit button
+ * When $wgUseMediaWikiUIEverywhere is true it will default to a constructive button
* @param string $value Label text for the button
* @param array $attribs Optional custom attributes
* @return string HTML
*/
public static function submitButton( $value, $attribs = array() ) {
- return Html::element( 'input', array( 'type' => 'submit', 'value' => $value ) + $attribs );
+ global $wgUseMediaWikiUIEverywhere;
+ $baseAttrs = array(
+ 'type' => 'submit',
+ 'value' => $value,
+ );
+ // Done conditionally for time being as it is possible
+ // some submit forms
+ // might need to be mw-ui-destructive (e.g. delete a page)
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $baseAttrs['class'] = 'mw-ui-button mw-ui-constructive';
+ }
+ // Any custom attributes will take precendence of anything in baseAttrs e.g. override the class
+ $attribs = $attribs + $baseAttrs;
+ return Html::element( 'input', $attribs );
}
/**
*/
public static function textarea( $name, $content, $cols = 40, $rows = 5, $attribs = array() ) {
return self::element( 'textarea',
- array(
- 'name' => $name,
- 'id' => $name,
- 'cols' => $cols,
- 'rows' => $rows
- ) + $attribs,
+ Html::getTextInputAttributes(
+ array(
+ 'name' => $name,
+ 'id' => $name,
+ 'cols' => $cols,
+ 'rows' => $rows
+ ) + $attribs
+ ),
$content, false );
}
*
* @param User $user The user to check, or null to use the context user
* @throws UserBlockedError|ReadOnlyError|PermissionsError
- * @return bool True on success
*/
protected function checkCanExecute( User $user ) {
$right = $this->getRestriction();
if ( $this->requiresWrite() && wfReadOnly() ) {
throw new ReadOnlyError();
}
- return true;
}
/**
$this->userLink( $user ) )->params( $user->getName() )->escaped();
}
+ /**
+ * Whether we can display the user's real name (not a hidden pref)
+ *
+ * @since 1.24
+ * @return bool
+ */
+ protected function canShowRealUserName() {
+ $hiddenPrefs = $this->context->getConfig()->get( 'HiddenPrefs' );
+ return !in_array( 'realname', $hiddenPrefs );
+ }
+
/**
* Get a list of contributors of $article
* @param int $cnt Maximum list of contributors to show
* @return string Html
*/
protected function getContributors( $cnt, $showIfMax ) {
- global $wgHiddenPrefs;
-
$contributors = $this->page->getContributors();
$others_link = false;
$cnt--;
if ( $user->isLoggedIn() ) {
$link = $this->link( $user );
- if ( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() ) {
+ if ( $this->canShowRealUserName() && $user->getRealName() ) {
$real_names[] = $link;
} else {
$user_names[] = $link;
* @return string Html
*/
protected function link( User $user ) {
- global $wgHiddenPrefs;
- if ( !in_array( 'realname', $wgHiddenPrefs ) && !$user->isAnon() ) {
+ if ( $this->canShowRealUserName() && !$user->isAnon() ) {
$real = $user->getRealName();
} else {
$real = false;
if ( $user->isAnon() ) {
return $this->msg( 'anonuser' )->rawParams( $link )->parse();
} else {
- global $wgHiddenPrefs;
- if ( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() ) {
+ if ( $this->canShowRealUserName() && $user->getRealName() ) {
return $link;
} else {
return $this->msg( 'siteuser' )->rawParams( $link )->params( $user->getName() )->escaped();
}
public function show() {
-
+ global $wgUseMediaWikiUIEverywhere;
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $out = $this->getOutput();
+ $out->addModuleStyles( array(
+ 'mediawiki.ui.input',
+ 'mediawiki.ui.checkbox',
+ ) );
+ }
$this->page->delete();
}
}
<?php
/**
- * action=edit / action=submit handler
+ * action=edit handler
*
* Copyright © 2012 Timo Tijhof
*
}
public function show() {
+ global $wgUseMediaWikiUIEverywhere;
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $out = $this->getOutput();
+ $out->addModuleStyles( array(
+ 'mediawiki.ui.input',
+ 'mediawiki.ui.checkbox',
+ ) );
+ }
$page = $this->page;
$user = $this->getUser();
}
}
}
-
-/**
- * Edit submission handler
- *
- * This is the same as EditAction; except that it sets the session cookie.
- *
- * @ingroup Actions
- */
-class SubmitAction extends EditAction {
-
- public function getName() {
- return 'submit';
- }
-
- public function show() {
- if ( session_id() == '' ) {
- // Send a cookie so anons get talk message notifications
- wfSetupSession();
- }
-
- parent::show();
- }
-}
* Print the history page for an article.
*/
function onView() {
- global $wgScript, $wgUseFileCache;
-
$out = $this->getOutput();
$request = $this->getRequest();
wfProfileIn( __METHOD__ );
$this->preCacheMessages();
+ $config = $this->context->getConfig();
# Fill in the file cache if not set already
- if ( $wgUseFileCache && HTMLFileCache::useFileCache( $this->getContext() ) ) {
+ $useFileCache = $config->get( 'UseFileCache' );
+ if ( $useFileCache && HTMLFileCache::useFileCache( $this->getContext() ) ) {
$cache = HTMLFileCache::newFromTitle( $this->getTitle(), 'history' );
if ( !$cache->isCacheGood( /* Assume up to date */ ) ) {
ob_start( array( &$cache, 'saveToFileCache' ) );
// Setup page variables.
$out->setFeedAppendQuery( 'action=history' );
$out->addModules( 'mediawiki.action.history' );
+ if ( $config->get( 'UseMediaWikiUIEverywhere' ) ) {
+ $out = $this->getOutput();
+ $out->addModuleStyles( array(
+ 'mediawiki.ui.input',
+ 'mediawiki.ui.checkbox',
+ ) );
+ }
// Handle atom/RSS feeds.
$feedType = $request->getVal( 'feed' );
}
// Add the general form
- $action = htmlspecialchars( $wgScript );
+ $action = htmlspecialchars( wfScript() );
$out->addHTML(
"<form action=\"$action\" method=\"get\" id=\"mw-history-searchform\">" .
Xml::fieldset(
* @param string $type Feed type
*/
function feed( $type ) {
- global $wgFeedClasses, $wgFeedLimit;
if ( !FeedUtils::checkFeedOutput( $type ) ) {
return;
}
$request = $this->getRequest();
+ $feedClasses = $this->context->getConfig()->get( 'FeedClasses' );
/** @var RSSFeed|AtomFeed $feed */
- $feed = new $wgFeedClasses[$type](
+ $feed = new $feedClasses[$type](
$this->getTitle()->getPrefixedText() . ' - ' .
$this->msg( 'history-feed-title' )->inContentLanguage()->text(),
$this->msg( 'history-feed-description' )->inContentLanguage()->text(),
// Get a limit on number of feed entries. Provide a sane default
// of 10 if none is defined (but limit to $wgFeedLimit max)
$limit = $request->getInt( 'limit', 10 );
- $limit = min( max( $limit, 1 ), $wgFeedLimit );
+ $limit = min(
+ max( $limit, 1 ),
+ $this->context->getConfig()->get( 'FeedLimit' )
+ );
$items = $this->fetchRevisions( $limit, 0, self::DIR_NEXT );
* @return string HTML output
*/
function getStartBody() {
- global $wgScript;
+ global $wgUseMediaWikiUIEverywhere;
$this->lastRow = false;
$this->counter = 1;
$this->oldIdChecked = 0;
$this->getOutput()->wrapWikiMsg( "<div class='mw-history-legend'>\n$1\n</div>", 'histlegend' );
- $s = Html::openElement( 'form', array( 'action' => $wgScript,
+ $s = Html::openElement( 'form', array( 'action' => wfScript(),
'id' => 'mw-history-compare' ) ) . "\n";
$s .= Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n";
$s .= Html::hidden( 'action', 'historysubmit' ) . "\n";
// Button container stored in $this->buttons for re-use in getEndBody()
$this->buttons = '<div>';
+ $className = 'historysubmit mw-history-compareselectedversions-button';
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $className .= ' mw-ui-button mw-ui-constructive';
+ }
$this->buttons .= $this->submitButton( $this->msg( 'compareselectedversions' )->text(),
- array( 'class' => 'historysubmit mw-history-compareselectedversions-button' )
+ array( 'class' => $className )
+ Linker::tooltipAndAccesskeyAttribs( 'compareselectedversions' )
) . "\n";
/**
* This is called if a write operation is possible from the generated HTML
+ * @param bool $enable
*/
function preventClickjacking( $enable = true ) {
$this->preventClickjacking = $enable;
* @return array
*/
protected function pageInfo() {
- global $wgContLang, $wgRCMaxAge, $wgMemc, $wgMiserMode,
- $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit, $wgPageLanguageUseDB;
+ global $wgContLang, $wgMemc;
$user = $this->getUser();
$lang = $this->getLanguage();
$title = $this->getTitle();
$id = $title->getArticleID();
+ $config = $this->context->getConfig();
$memcKey = wfMemcKey( 'infoaction',
sha1( $title->getPrefixedText() ), $this->page->getLatest() );
$version = isset( $pageCounts['cacheversion'] ) ? $pageCounts['cacheversion'] : false;
if ( $pageCounts === false || $version !== self::CACHE_VERSION ) {
// Get page information that would be too "expensive" to retrieve by normal means
- $pageCounts = self::pageCounts( $title );
+ $pageCounts = $this->pageCounts( $title );
$pageCounts['cacheversion'] = self::CACHE_VERSION;
$wgMemc->set( $memcKey, $pageCounts );
// Language in which the page content is (supposed to be) written
$pageLang = $title->getPageLanguage()->getCode();
- if ( $wgPageLanguageUseDB && $this->getTitle()->userCan( 'pagelang' ) ) {
+ if ( $config->get( 'PageLanguageUseDB' ) && $this->getTitle()->userCan( 'pagelang' ) ) {
// Link to Special:PageLanguage with pre-filled page title if user has permissions
$titleObj = SpecialPage::getTitleFor( 'PageLanguage', $title->getPrefixedText() );
$langDisp = Linker::link(
);
}
+ $unwatchedPageThreshold = $config->get( 'UnwatchedPageThreshold' );
if (
$user->isAllowed( 'unwatchedpages' ) ||
- ( $wgUnwatchedPageThreshold !== false &&
- $pageCounts['watchers'] >= $wgUnwatchedPageThreshold )
+ ( $unwatchedPageThreshold !== false &&
+ $pageCounts['watchers'] >= $unwatchedPageThreshold )
) {
// Number of page watchers
$pageInfo['header-basic'][] = array(
$this->msg( 'pageinfo-watchers' ), $lang->formatNum( $pageCounts['watchers'] )
);
- } elseif ( $wgUnwatchedPageThreshold !== false ) {
+ } elseif ( $unwatchedPageThreshold !== false ) {
$pageInfo['header-basic'][] = array(
$this->msg( 'pageinfo-watchers' ),
- $this->msg( 'pageinfo-few-watchers' )->numParams( $wgUnwatchedPageThreshold )
+ $this->msg( 'pageinfo-few-watchers' )->numParams( $unwatchedPageThreshold )
);
}
// Recent number of edits (within past 30 days)
$pageInfo['header-edits'][] = array(
- $this->msg( 'pageinfo-recent-edits', $lang->formatDuration( $wgRCMaxAge ) ),
+ $this->msg( 'pageinfo-recent-edits', $lang->formatDuration( $config->get( 'RCMaxAge' ) ) ),
$lang->formatNum( $pageCounts['recent_edits'] )
);
$pageCounts['transclusion']['from'] > 0 ||
$pageCounts['transclusion']['to'] > 0
) {
- $options = array( 'LIMIT' => $wgPageInfoTransclusionLimit );
+ $options = array( 'LIMIT' => $config->get( 'PageInfoTransclusionLimit' ) );
$transcludedTemplates = $title->getTemplateLinksFrom( $options );
- if ( $wgMiserMode ) {
+ if ( $config->get( 'MiserMode' ) ) {
$transcludedTargets = array();
} else {
$transcludedTargets = $title->getTemplateLinksTo( $options );
);
}
- if ( !$wgMiserMode && $pageCounts['transclusion']['to'] > 0 ) {
+ if ( !$config->get( 'MiserMode' ) && $pageCounts['transclusion']['to'] > 0 ) {
if ( $pageCounts['transclusion']['to'] > count( $transcludedTargets ) ) {
$more = Linker::link(
$whatLinksHere,
* @param Title $title Title to get counts for
* @return array
*/
- protected static function pageCounts( Title $title ) {
- global $wgRCMaxAge, $wgDisableCounters, $wgMiserMode;
-
+ protected function pageCounts( Title $title ) {
wfProfileIn( __METHOD__ );
$id = $title->getArticleID();
+ $config = $this->context->getConfig();
$dbr = wfGetDB( DB_SLAVE );
$result = array();
- if ( !$wgDisableCounters ) {
+ if ( !$config->get( 'DisableCounters' ) ) {
// Number of views
$views = (int)$dbr->selectField(
'page',
);
$result['authors'] = $authors;
- // "Recent" threshold defined by $wgRCMaxAge
- $threshold = $dbr->timestamp( time() - $wgRCMaxAge );
+ // "Recent" threshold defined by RCMaxAge setting
+ $threshold = $dbr->timestamp( time() - $config->get( 'RCMaxAge' ) );
// Recent number of edits
$edits = (int)$dbr->selectField(
}
// Counts for the number of transclusion links (to/from)
- if ( $wgMiserMode ) {
+ if ( $config->get( 'MiserMode' ) ) {
$result['transclusion']['to'] = 0;
} else {
$result['transclusion']['to'] = (int)$dbr->selectField(
* @return string Html
*/
protected function getContributors() {
- global $wgHiddenPrefs;
-
$contributors = $this->page->getContributors();
$real_names = array();
$user_names = array();
? SpecialPage::getTitleFor( 'Contributions', $user->getName() )
: $user->getUserPage();
+ $hiddenPrefs = $this->context->getConfig()->get( 'HiddenPrefs' );
if ( $user->getID() == 0 ) {
$anon_ips[] = Linker::link( $page, htmlspecialchars( $user->getName() ) );
- } elseif ( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() ) {
+ } elseif ( !in_array( 'realname', $hiddenPrefs ) && $user->getRealName() ) {
$real_names[] = Linker::link( $page, htmlspecialchars( $user->getRealName() ) );
} else {
$user_names[] = Linker::link( $page, htmlspecialchars( $user->getName() ) );
}
public function show() {
+ global $wgUseMediaWikiUIEverywhere;
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $out = $this->getOutput();
+ $out->addModuleStyles( array(
+ 'mediawiki.ui.input',
+ 'mediawiki.ui.checkbox',
+ ) );
+ }
$this->page->protect();
}
}
-/**
- * Handle page unprotection
- *
- * This is a wrapper that will call Article::unprotect().
- *
- * @ingroup Actions
- */
-class UnprotectAction extends ProtectAction {
-
- public function getName() {
- return 'unprotect';
- }
-
- public function show() {
-
- $this->page->unprotect();
- }
-}
}
function onView() {
- global $wgSquidMaxage, $wgForcedRawSMaxage;
-
$this->getOutput()->disable();
$request = $this->getRequest();
+ $config = $this->context->getConfig();
if ( !$request->checkUrlExtension() ) {
return;
if ( $gen == 'css' || $gen == 'js' ) {
$this->mGen = $gen;
if ( $smaxage === null ) {
- $smaxage = $wgSquidMaxage;
+ $smaxage = $config->get( 'SquidMaxage' );
}
} else {
$this->mGen = false;
# 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 );
+ $smaxage = intval( $config->get( 'ForcedRawSMaxage' ) );
} else {
$smaxage = 0;
}
}
- $maxage = $request->getInt( 'maxage', $wgSquidMaxage );
+ $maxage = $request->getInt( 'maxage', $config->get( 'SquidMaxage' ) );
$response = $request->response();
--- /dev/null
+<?php
+/**
+ * Wrapper for EditAction; sets the session cookie.
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+/**
+ * This is the same as EditAction; except that it sets the session cookie.
+ *
+ * @ingroup Actions
+ */
+class SubmitAction extends EditAction {
+
+ public function getName() {
+ return 'submit';
+ }
+
+ public function show() {
+ if ( session_id() === '' ) {
+ // Send a cookie so anons get talk message notifications
+ wfSetupSession();
+ }
+
+ parent::show();
+ }
+}
--- /dev/null
+<?php
+/**
+ * action=unprotect handler
+ *
+ * Copyright © 2012 Timo Tijhof
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ * @author Timo Tijhof
+ */
+
+/**
+ * Handle page unprotection
+ *
+ * This is a wrapper that will call Article::unprotect().
+ *
+ * @ingroup Actions
+ */
+class UnprotectAction extends ProtectAction {
+
+ public function getName() {
+ return 'unprotect';
+ }
+
+ public function show() {
+
+ $this->page->unprotect();
+ }
+}
--- /dev/null
+<?php
+/**
+ * Performs the unwatch actions on a page
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+/**
+ * Page removal from a user's watchlist
+ *
+ * @ingroup Actions
+ */
+class UnwatchAction extends WatchAction {
+
+ public function getName() {
+ return 'unwatch';
+ }
+
+ protected function getDescription() {
+ return $this->msg( 'removewatch' )->escaped();
+ }
+
+ public function onSubmit( $data ) {
+ wfProfileIn( __METHOD__ );
+ self::doUnwatch( $this->getTitle(), $this->getUser() );
+ wfProfileOut( __METHOD__ );
+
+ return true;
+ }
+
+ protected function alterForm( HTMLForm $form ) {
+ $form->setSubmitTextMsg( 'confirm-unwatch-button' );
+ }
+
+ protected function preText() {
+ return $this->msg( 'confirm-unwatch-top' )->parse();
+ }
+
+ public function onSuccess() {
+ $this->getOutput()->addWikiMsg( 'removedwatchtext', $this->getTitle()->getPrefixedText() );
+ }
+}
<?php
/**
- * Performs the watch and unwatch actions on a page
+ * Performs the watch actions on a page
*
* 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 function checkCanExecute( User $user ) {
// Must be logged in
if ( $user->isAnon() ) {
- $loginreqlink = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Userlogin' ),
- $this->msg( 'loginreqlink' )->escaped(),
- array(),
- array( 'returnto' => $this->getPageTitle(), 'returntoquery' => 'action=' . $this->getName() )
- );
- $reasonMsg = $this->msg( 'watchlistanontext' )->rawParams( $loginreqlink );
- throw new UserNotLoggedIn( $reasonMsg, 'watchnologin' );
+ throw new UserNotLoggedIn( 'watchlistanontext', 'watchnologin' );
}
- return parent::checkCanExecute( $user );
+ parent::checkCanExecute( $user );
}
/**
if ( $action != 'unwatch' ) {
$action = 'watch';
}
- $salt = array( $action, $title->getDBkey() );
+ $salt = array( $action, $title->getPrefixedDBkey() );
// This token stronger salted and not compatible with ApiWatch
// It's title/action specific because index.php is GET and API is POST
$this->getOutput()->addWikiMsg( 'addedwatchtext', $this->getTitle()->getPrefixedText() );
}
}
-
-/**
- * Page removal from a user's watchlist
- *
- * @ingroup Actions
- */
-class UnwatchAction extends WatchAction {
-
- public function getName() {
- return 'unwatch';
- }
-
- protected function getDescription() {
- return $this->msg( 'removewatch' )->escaped();
- }
-
- public function onSubmit( $data ) {
- wfProfileIn( __METHOD__ );
- self::doUnwatch( $this->getTitle(), $this->getUser() );
- wfProfileOut( __METHOD__ );
-
- return true;
- }
-
- protected function alterForm( HTMLForm $form ) {
- $form->setSubmitTextMsg( 'confirm-unwatch-button' );
- }
-
- protected function preText() {
- return $this->msg( 'confirm-unwatch-top' )->parse();
- }
-
- public function onSuccess() {
- $this->getOutput()->addWikiMsg( 'removedwatchtext', $this->getTitle()->getPrefixedText() );
- }
-}
}
/**
- * Returns possible properties in the result, grouped by the value of the prop parameter
- * that shows them.
+ * Formerly used to fetch a list of possible properites in the result,
+ * somehow organized with respect to the prop parameter that causes them to
+ * be returned. The specific semantics of the return value was never
+ * specified. Since this was never possible to be accurately updated, it
+ * has been removed.
*
- * Properties that are shown always are in a group with empty string as a key.
- * Properties that can be shown by several values of prop are included multiple times.
- * If some properties are part of a list and some are on the root object (see ApiQueryQueryPage),
- * those on the root object are under the key PROP_ROOT.
- * The array can also contain a boolean under the key PROP_LIST,
- * indicating whether the result is a list.
- *
- * Don't call this function directly: use getFinalResultProperties() to
- * allow hooks to modify descriptions as needed.
- *
- * @return array|bool False on no properties
+ * @deprecated since 1.24
+ * @return array|bool
*/
protected function getResultProperties() {
+ wfDeprecated( __METHOD__, '1.24' );
return false;
}
/**
- * Get final possible result properties, after hooks have had a chance to tweak it as
- * needed.
- *
- * @return array
+ * @see self::getResultProperties()
+ * @deprecated since 1.24
+ * @return array|bool
*/
public function getFinalResultProperties() {
- $properties = $this->getResultProperties();
- wfRunHooks( 'APIGetResultProperties', array( $this, &$properties ) );
-
- return $properties;
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
- * Add token properties to the array used by getResultProperties,
- * based on a token functions mapping.
- * @param array $props
- * @param array $tokenFunctions
+ * @see self::getResultProperties()
+ * @deprecated since 1.24
*/
protected static function addTokenProperties( &$props, $tokenFunctions ) {
- foreach ( array_keys( $tokenFunctions ) as $token ) {
- $props[''][$token . 'token'] = array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- );
- }
+ wfDeprecated( __METHOD__, '1.24' );
}
/**
/**
* Die if none or more than one of a certain set of parameters is set and not false.
*
- * Call getRequireOnlyOneParameterErrorMessages() to get a list of possible errors.
- *
* @param array $params User provided set of parameters, as from $this->extractRequestParams()
* @param string $required,... Names of parameters of which exactly one must be set
*/
}
/**
- * Generates the possible errors requireOnlyOneParameter() can die with
- *
- * @param array $params
+ * @see self::getPossibleErrors()
+ * @deprecated since 1.24
* @return array
*/
public function getRequireOnlyOneParameterErrorMessages( $params ) {
- $p = $this->getModulePrefix();
- $params = implode( ", {$p}", $params );
-
- return array(
- array(
- 'code' => "{$p}missingparam",
- 'info' => "One of the parameters {$p}{$params} is required"
- ),
- array(
- 'code' => "{$p}invalidparammix",
- 'info' => "The parameters {$p}{$params} can not be used together"
- )
- );
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
* Die if more than one of a certain set of parameters is set and not false.
*
- * Call getRequireMaxOneParameterErrorMessages() to get a list of possible errors.
- *
* @param array $params User provided set of parameters, as from $this->extractRequestParams()
* @param string $required,... Names of parameters of which at most one must be set
*/
}
/**
- * Generates the possible error requireMaxOneParameter() can die with
- *
- * @param array $params
+ * @see self::getPossibleErrors()
+ * @deprecated since 1.24
* @return array
*/
public function getRequireMaxOneParameterErrorMessages( $params ) {
- $p = $this->getModulePrefix();
- $params = implode( ", {$p}", $params );
-
- return array(
- array(
- 'code' => "{$p}invalidparammix",
- 'info' => "The parameters {$p}{$params} can not be used together"
- )
- );
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
* Die if none of a certain set of parameters is set and not false.
*
- * Call getRequireAtLeastOneParameterErrorMessages() to get a list of possible errors.
- *
* @since 1.23
* @param array $params User provided set of parameters, as from $this->extractRequestParams()
* @param string $required,... Names of parameters of which at least one must be set
}
/**
- * Generates the possible errors requireAtLeastOneParameter() can die with
- *
- * @since 1.23
- * @param array $params Array of parameter key names
+ * @see self::getPossibleErrors()
+ * @deprecated since 1.24
* @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",
- ),
- );
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
* Get a WikiPage object from a title or pageid param, if possible.
* Can die, if no param is set or if the title or page id is not valid.
*
- * Call getTitleOrPageIdErrorMessage() to get a list of possible errors.
- *
* @param array $params
* @param bool|string $load Whether load the object's state from the database:
* - false: don't load (if the pageid is given, it will still be loaded)
}
/**
- * Generates the possible error getTitleOrPageId() can die with
- *
+ * @see self::getPossibleErrors()
+ * @deprecated since 1.24
* @return array
*/
public function getTitleOrPageIdErrorMessage() {
- return array_merge(
- $this->getRequireOnlyOneParameterErrorMessages( array( 'title', 'pageid' ) ),
- array(
- array( 'invalidtitle', 'title' ),
- array( 'nosuchpageid', 'pageid' ),
- array( 'code' => 'pagecannotexist', 'info' => "Namespace doesn't allow actual pages" ),
- )
- );
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
$msg = wfMessage( $code, $errors[0] );
}
if ( isset( ApiBase::$messageMap[$code] ) ) {
- // Translate message to code, for backwards compatability
+ // Translate message to code, for backwards compatibility
$code = ApiBase::$messageMap[$code]['code'];
}
'code' => 'cantedit',
'info' => "You can't protect this page because you can't edit it"
),
+ 'delete-cantedit' => array(
+ 'code' => 'cantedit',
+ 'info' => "You can't delete this page because you can't edit it"
+ ),
'badaccess-group0' => array(
'code' => 'permissiondenied',
'info' => "Permission denied"
}
/**
- * Returns a list of all possible errors returned by the module
- *
- * Don't call this function directly: use getFinalPossibleErrors() to allow
- * hooks to modify parameters as needed.
+ * This formerly attempted to return a list of all possible errors returned
+ * by the module. However, this was impossible to maintain in many cases
+ * since errors could come from other areas of MediaWiki and in some cases
+ * from arbitrary extension hooks. Since a partial list claiming to be
+ * comprehensive is unlikely to be useful, it was removed.
*
- * @return array Array in the format of array( key, param1, param2, ... )
- * or array( 'code' => ..., 'info' => ... )
+ * @deprecated since 1.24
+ * @return array
*/
public function getPossibleErrors() {
- $ret = array();
-
- $params = $this->getFinalParams();
- if ( $params ) {
- foreach ( $params as $paramName => $paramSettings ) {
- if ( isset( $paramSettings[ApiBase::PARAM_REQUIRED] )
- && $paramSettings[ApiBase::PARAM_REQUIRED]
- ) {
- $ret[] = array( 'missingparam', $paramName );
- }
- }
- if ( array_key_exists( 'continue', $params ) ) {
- $ret[] = array(
- 'code' => 'badcontinue',
- 'info' => 'Invalid continue param. You should pass the ' .
- 'original value returned by the previous query'
- );
- }
- }
-
- if ( $this->mustBePosted() ) {
- $ret[] = array( 'mustbeposted', $this->getModuleName() );
- }
-
- if ( $this->isReadMode() ) {
- $ret[] = array( 'readrequired' );
- }
-
- if ( $this->isWriteMode() ) {
- $ret[] = array( 'writerequired' );
- $ret[] = array( 'writedisabled' );
- }
-
- if ( $this->needsToken() ) {
- if ( !isset( $params['token'][ApiBase::PARAM_REQUIRED] )
- || !$params['token'][ApiBase::PARAM_REQUIRED]
- ) {
- // Add token as possible missing parameter, if not already done
- $ret[] = array( 'missingparam', 'token' );
- }
- $ret[] = array( 'sessionfailure' );
- }
-
- return $ret;
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
- * Get final list of possible errors, after hooks have had a chance to
- * tweak it as needed.
- *
+ * @see self::getPossibleErrors()
+ * @deprecated since 1.24
* @return array
- * @since 1.22
*/
public function getFinalPossibleErrors() {
- $possibleErrors = $this->getPossibleErrors();
- wfRunHooks( 'APIGetPossibleErrors', array( $this, &$possibleErrors ) );
-
- return $possibleErrors;
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
- * Parses a list of errors into a standardised format
- * @param array $errors List of errors. Items can be in the for
- * array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
- * @return array Parsed list of errors with items in the form array( 'code' => ..., 'info' => ... )
+ * @see self::getPossibleErrors()
+ * @deprecated since 1.24
+ * @return array
*/
public function parseErrors( $errors ) {
- $ret = array();
-
- foreach ( $errors as $row ) {
- if ( isset( $row['code'] ) && isset( $row['info'] ) ) {
- $ret[] = $row;
- } else {
- $ret[] = $this->parseMsg( $row );
- }
- }
-
- return $ret;
+ wfDeprecated( __METHOD__, '1.24' );
+ return array();
}
/**
}
print "\n</pre>\n";
}
+
+ /**
+ * Write logging information for API features to a debug log, for usage
+ * analysis.
+ * @param string $feature Feature being used.
+ */
+ protected function logFeatureUsage( $feature ) {
+ $request = $this->getRequest();
+ $s = $feature .
+ ' ' . wfUrlencode( str_replace( ' ', '_', $this->getUser()->getName() ) ) .
+ ' ' . $request->getIP() .
+ ' "' . $request->getHeader( 'Referer' ) . '"' .
+ ' "' . $request->getHeader( 'User-agent' ) . '"';
+ wfDebugLog( 'api-feature-usage', $s, 'private' );
+ }
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'user' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'userID' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'expiry' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'id' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'reason' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'anononly' => 'boolean',
- 'nocreate' => 'boolean',
- 'autoblock' => 'boolean',
- 'noemail' => 'boolean',
- 'hidename' => 'boolean',
- 'allowusertalk' => 'boolean',
- 'watchuser' => 'boolean'
- )
- );
- }
-
public function getDescription() {
return 'Block a user.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'cantblock' ),
- array( 'canthide' ),
- array( 'cantblock-email' ),
- array( 'ipbblocked' ),
- array( 'ipbnounblockself' ),
- ) );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'fromtitle' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'fromrevid' => 'integer',
- 'totitle' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'torevid' => 'integer',
- '*' => 'string'
- )
- );
- }
-
public function getDescription() {
return array(
'Get the difference between 2 pages.',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'inputneeded', 'info' => 'A title or a revision is needed' ),
- array( 'invalidtitle', 'title' ),
- array( 'nosuchpageid', 'pageid' ),
- array(
- 'code' => 'baddiff',
- 'info' => 'The diff cannot be retrieved. Maybe one or both ' .
- 'revisions do not exist or you do not have permission to view them.'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=compare&fromrev=1&torev=2' => 'Create a diff between revision 1 and 2',
);
}
- public function getResultProperties() {
- return array(
- 'createaccount' => array(
- 'result' => array(
- ApiBase::PROP_TYPE => array(
- 'Success',
- 'Warning',
- 'NeedToken'
- )
- ),
- 'username' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'userid' => array(
- ApiBase::PROP_TYPE => 'int',
- ApiBase::PROP_NULLABLE => true
- ),
- 'token' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- )
- );
- }
-
- public function getPossibleErrors() {
- // Note the following errors aren't possible and don't need to be listed:
- // sessionfailure, nocookiesfornew, badretype
- $localErrors = array(
- 'wrongpassword', // Actually caused by wrong domain field. Riddle me that...
- 'sorbs_create_account_reason',
- 'noname',
- 'userexists',
- 'password-name-match', // from User::getPasswordValidity
- 'password-login-forbidden', // from User::getPasswordValidity
- 'noemailtitle',
- 'invalidemailaddress',
- 'externaldberror',
- 'acct_creation_throttle_hit',
- );
-
- $errors = parent::getPossibleErrors();
- // All local errors are from LoginForm, which means they're actually message keys.
- foreach ( $localErrors as $error ) {
- $errors[] = array(
- 'code' => $error,
- 'info' => wfMessage( $error )->inLanguage( 'en' )->useDatabase( false )->parse()
- );
- }
-
- $errors[] = array(
- 'code' => 'permdenied-createaccount',
- 'info' => 'You do not have the right to create a new account'
- );
- $errors[] = array(
- 'code' => 'blocked',
- 'info' => 'You cannot create a new account because you are blocked'
- );
- $errors[] = array(
- 'code' => 'aborted',
- 'info' => 'Account creation aborted by hook (info may vary)'
- );
- $errors[] = array(
- 'code' => 'langinvalid',
- 'info' => 'Invalid language parameter'
- );
-
- // 'passwordtooshort' has parameters. :(
- $errors[] = array(
- 'code' => 'passwordtooshort',
- 'info' => wfMessage( 'passwordtooshort', $this->getConfig()->get( 'MinimalPasswordLength' ) )
- ->inLanguage( 'en' )->useDatabase( false )->parse()
- );
-
- return $errors;
- }
-
public function getExamples() {
return array(
'api.php?action=createaccount&name=testuser&password=test123',
// Deprecated parameters
if ( $params['watch'] ) {
+ $this->logFeatureUsage( 'action=delete&watch' );
$watch = 'watch';
} elseif ( $params['unwatch'] ) {
+ $this->logFeatureUsage( 'action=delete&unwatch' );
$watch = 'unwatch';
} else {
$watch = $params['watchlist'];
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'title' => 'string',
- 'reason' => 'string',
- 'logid' => 'integer'
- )
- );
- }
-
public function getDescription() {
return 'Delete a page.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getTitleOrPageIdErrorMessage(),
- array(
- array( 'notanarticle' ),
- array( 'hookaborted', 'error' ),
- array( 'delete-toobig', 'limit' ),
- array( 'cannotdelete', 'title' ),
- array( 'invalidoldimage' ),
- array( 'nodeleteablefile' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
// Deprecated parameters
if ( $params['watch'] ) {
+ $this->logFeatureUsage( 'action=edit&watch' );
$watch = true;
} elseif ( $params['unwatch'] ) {
+ $this->logFeatureUsage( 'action=edit&unwatch' );
$watch = false;
}
return 'Create and edit pages.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getTitleOrPageIdErrorMessage(),
- array(
- array( 'missingtext' ),
- array( 'createonly-exists' ),
- array( 'nocreate-missing' ),
- array( 'nosuchrevid', 'undo' ),
- array( 'nosuchrevid', 'undoafter' ),
- array( 'revwrongpage', 'id', 'text' ),
- array( 'undo-failure' ),
- array( 'hashcheckfailed' ),
- array( 'hookaborted' ),
- array( 'code' => 'parseerror', 'info' => 'Failed to parse the given text.' ),
- array( 'noimageredirect-anon' ),
- array( 'noimageredirect-logged' ),
- array( 'spamdetected', 'spam' ),
- array( 'summaryrequired' ),
- array( 'blockedtext' ),
- array( 'contenttoobig', $this->getConfig()->get( 'MaxArticleSize' ) ),
- array( 'noedit-anon' ),
- array( 'noedit' ),
- array( 'actionthrottledtext' ),
- array( 'wasdeleted' ),
- array( 'nocreate-loggedin' ),
- array( 'blankpage' ),
- array( 'editconflict' ),
- array( 'emptynewsection' ),
- array( 'unknownerror', 'retval' ),
- array( 'code' => 'nosuchsection', 'info' => 'There is no such section.' ),
- array(
- 'code' => 'invalidsection',
- 'info' => 'The section parameter must be a valid section id or \'new\''
- ),
- array(
- 'code' => 'sectionsnotsupported',
- 'info' => 'Sections are not supported for this type of page.'
- ),
- array(
- 'code' => 'editnotsupported',
- 'info' => 'Editing of this type of page is not supported using the text based edit API.'
- ),
- array(
- 'code' => 'appendnotsupported',
- 'info' => 'This type of page can not be edited by appending or prepending text.' ),
- array(
- 'code' => 'redirect-appendonly',
- 'info' => 'You have attempted to edit using the "redirect"-following mode, which must be used in conjuction with section=new, prependtext, or appendtext.',
- ),
- array(
- 'code' => 'badformat',
- 'info' => 'The requested serialization format can not be applied to the page\'s content model'
- ),
- array( 'customcssprotected' ),
- array( 'customjsprotected' ),
- )
- );
- }
-
public function getAllowedParams() {
return array(
'title' => array(
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'new' => 'boolean',
- 'result' => array(
- ApiBase::PROP_TYPE => array(
- 'Success',
- 'Failure'
- ),
- ),
- 'pageid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'title' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'nochange' => 'boolean',
- 'oldrevid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'newrevid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'newtimestamp' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'result' => array(
- ApiBase::PROP_TYPE => array(
- 'Success',
- 'Failure'
- ),
- ),
- 'message' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Email a user.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'usermaildisabled' ),
- ) );
- }
-
public function needsToken() {
return true;
}
$this->requireMaxOneParameter( $params, 'prop', 'generatexml' );
if ( $params['prop'] === null ) {
+ $this->logFeatureUsage( 'action=expandtemplates&!prop' );
$this->setWarning( 'Because no values have been specified for the prop parameter, a ' .
'legacy format has been used for the output. This format is deprecated, and in ' .
'the future, a default value will be set for the prop parameter, causing the new' .
$retval = array();
if ( isset( $prop['parsetree'] ) || $params['generatexml'] ) {
+ if ( !isset( $prop['parsetree'] ) ) {
+ $this->logFeatureUsage( 'action=expandtemplates&generatexml' );
+ }
+
$wgParser->startExternalParse( $title_obj, $options, OT_PREPROCESS );
$dom = $wgParser->preprocessToDom( $params['text'] );
if ( is_callable( array( $dom, 'saveXML' ) ) ) {
);
}
- public function getResultProperties() {
- return array(
- 'wikitext' => array(
- 'wikitext' => 'string',
- ),
- 'categories' => array(
- 'categories' => array(
- ApiBase::PROP_TYPE => 'array',
- ApiBase::PROP_NULLABLE => true,
- ),
- ),
- 'volatile' => array(
- 'volatile' => array(
- ApiBase::PROP_TYPE => 'boolean',
- ApiBase::PROP_NULLABLE => true,
- ),
- ),
- 'ttl' => array(
- 'ttl' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true,
- ),
- ),
- 'parsetree' => array(
- 'parsetree' => 'string',
- ),
- );
- }
-
public function getDescription() {
return 'Expands all templates in wikitext.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'invalidtitle', 'title' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=expandtemplates&text={{Project:Sandbox}}'
return 'Returns a user contributions feed.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'feed-unavailable', 'info' => 'Syndication feeds are not available' ),
- array( 'code' => 'feed-invalid', 'info' => 'Invalid subscription feed type' ),
- array( 'code' => 'sizediffdisabled', 'info' => 'Size difference is disabled in Miser Mode' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=feedcontributions&user=Reedy',
return 'Returns a recent changes feed';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'feed-unavailable', 'info' => 'Syndication feeds are not available' ),
- array( 'code' => 'feed-invalid', 'info' => 'Invalid subscription feed type' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=feedrecentchanges',
return 'Returns a watchlist feed.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'feed-unavailable', 'info' => 'Syndication feeds are not available' ),
- array( 'code' => 'feed-invalid', 'info' => 'Invalid subscription feed type' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=feedwatchlist',
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'result' => array(
- ApiBase::PROP_TYPE => array(
- 'Success',
- 'Failure'
- )
- ),
- 'errors' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return array(
'Revert a file to an old version.'
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- array(
- array( 'mustbeloggedin', 'upload' ),
- array( 'badaccess-groups' ),
- array( 'invalidtitle', 'title' ),
- array( 'notanarticle' ),
- array( 'filerevert-badversion' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
}
/**
- * Overriding class returns the mime type that should be sent to the client.
+ * Overriding class returns the MIME type that should be sent to the client.
* This method is not called if getIsHtml() returns true.
* @return string
*/
public function getDescription() {
return $this->getIsHtml() ? ' (pretty-print in HTML)' : '';
}
+
+ /**
+ * To avoid code duplication with the deprecation of dbg, dump, txt, wddx,
+ * and yaml, this method is added to do the necessary work. It should be
+ * removed when those deprecated formats are removed.
+ */
+ protected function markDeprecated() {
+ $fm = $this->getIsHtml() ? 'fm' : '';
+ $name = $this->getModuleName();
+ $this->logFeatureUsage( "format=$name" );
+ $this->setWarning( "format=$name has been deprecated. Please use format=json$fm instead." );
+ }
}
/**
}
public function execute() {
+ $this->markDeprecated();
$this->printText( var_export( $this->getResultData(), true ) );
}
public function getDescription() {
- return 'Output data in PHP\'s var_export() format' . parent::getDescription();
+ return 'DEPRECATED! Output data in PHP\'s var_export() format' . parent::getDescription();
}
}
}
public function execute() {
+ $this->markDeprecated();
ob_start();
var_dump( $this->getResultData() );
$result = ob_get_contents();
}
public function getDescription() {
- return 'Output data in PHP\'s var_dump() format' . parent::getDescription();
+ return 'DEPRECATED! Output data in PHP\'s var_dump() format' . parent::getDescription();
}
}
}
public function execute() {
+ $this->markDeprecated();
$this->printText( print_r( $this->getResultData(), true ) );
}
public function getDescription() {
- return 'Output data in PHP\'s print_r() format' . parent::getDescription();
+ return 'DEPRECATED! Output data in PHP\'s print_r() format' . parent::getDescription();
}
}
}
public function execute() {
+ $this->markDeprecated();
+
// Some versions of PHP have a broken wddx_serialize_value, see
// PHP bug 45314. Test encoding an affected character (U+00A0)
// to avoid this.
}
public function getDescription() {
- return 'Output data in WDDX format' . parent::getDescription();
+ return 'DEPRECATED! Output data in WDDX format' . parent::getDescription();
}
}
return 'application/yaml';
}
+ public function execute() {
+ $this->markDeprecated();
+ parent::execute();
+ }
+
public function getDescription() {
- return 'Output data in YAML format' . ApiFormatBase::getDescription();
+ return 'DEPRECATED! Output data in YAML format' . ApiFormatBase::getDescription();
}
}
}
if ( is_array( $params['querymodules'] ) ) {
+ $this->logFeatureUsage( 'action=help&querymodules' );
$queryModules = $params['querymodules'];
foreach ( $queryModules as $m ) {
$modules[] = 'query+' . $m;
return '';
}
- public function getPossibleErrors() {
- $pageSet = $this->getPageSet();
-
- return array_merge(
- parent::getPossibleErrors(),
- $pageSet->getFinalPossibleErrors()
- );
- }
-
public function getExamples() {
return array(
'api.php?action=imagerotate&titles=Example.jpg&rotation=90&token=123ABC',
);
}
- public function getResultProperties() {
- return array(
- ApiBase::PROP_LIST => true,
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string',
- 'revisions' => 'integer'
- )
- );
- }
-
public function getDescription() {
return array(
'Import a page from another wiki, or an XML file.',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'cantimport' ),
- array( 'missingparam', 'interwikipage' ),
- array( 'cantimport-upload' ),
- array( 'import-unknownerror', 'source' ),
- array( 'import-unknownerror', 'result' ),
- array( 'import-rootpage-nosubpage', 'namespace' ),
- array( 'import-rootpage-invalid' ),
- ) );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'result' => array(
- ApiBase::PROP_TYPE => array(
- 'Success',
- 'NeedToken',
- 'WrongToken',
- 'NoName',
- 'Illegal',
- 'WrongPluginPass',
- 'NotExists',
- 'WrongPass',
- 'EmptyPass',
- 'CreateBlocked',
- 'Throttled',
- 'Blocked',
- 'Aborted'
- )
- ),
- 'lguserid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'lgusername' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'lgtoken' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'cookieprefix' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'sessionid' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'token' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'details' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'wait' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'reason' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return array(
'Log in and get the authentication tokens.',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'NeedToken', 'info' => 'You need to resubmit your ' .
- 'login with the specified token. See ' .
- 'https://bugzilla.wikimedia.org/show_bug.cgi?id=23076'
- ),
- array( 'code' => 'WrongToken', 'info' => 'You specified an invalid token' ),
- array( 'code' => 'NoName', 'info' => 'You didn\'t set the lgname parameter' ),
- array( 'code' => 'Illegal', 'info' => 'You provided an illegal username' ),
- array( 'code' => 'NotExists', 'info' => 'The username you provided doesn\'t exist' ),
- array(
- 'code' => 'EmptyPass',
- 'info' => 'You didn\'t set the lgpassword parameter or you left it empty'
- ),
- array( 'code' => 'WrongPass', 'info' => 'The password you provided is incorrect' ),
- array(
- 'code' => 'WrongPluginPass',
- 'info' => 'Same as "WrongPass", returned when an authentication ' .
- 'plugin rather than MediaWiki itself rejected the password'
- ),
- array(
- 'code' => 'CreateBlocked',
- 'info' => 'The wiki tried to automatically create a new account ' .
- 'for you, but your IP address has been blocked from account creation'
- ),
- array( 'code' => 'Throttled', 'info' => 'You\'ve logged in too many times in a short time' ),
- array( 'code' => 'Blocked', 'info' => 'User is blocked' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=login&lgname=user&lgpassword=password'
return array();
}
- public function getResultProperties() {
- return array();
- }
-
public function getParamDescription() {
return array();
}
);
}
- /**
- * @return array
- */
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'readonlytext' ),
- array( 'code' => 'unknown_format', 'info' => 'Unrecognized format: format' ),
- 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'
- ),
- ) );
- }
-
/**
* Returns an array of strings with credits for the API
* @return array
}
/**
- * Add a list of modules to the manager
- * @param array $modules A map of ModuleName => ModuleClass
+ * Add a list of modules to the manager. Each module is described
+ * by a module spec.
+ *
+ * Each module spec is an associative array containing at least
+ * the 'class' key for the module's class, and optionally a
+ * 'factory' key for the factory function to use for the module.
+ *
+ * That factory function will be called with two parameters,
+ * the parent module (an instance of ApiBase, usually ApiMain)
+ * and the name the module was registered under. The return
+ * value must be an instance of the class given in the 'class'
+ * field.
+ *
+ * For backward compatibility, the module spec may also be a
+ * simple string containing the module's class name. In that
+ * case, the class' constructor will be called with the parent
+ * module and module name as parameters, as described above.
+ *
+ * Examples for defining module specs:
+ *
+ * @code
+ * $modules['foo'] = 'ApiFoo';
+ * $modules['bar'] = array(
+ * 'class' => 'ApiBar',
+ * 'factory' => function( $main, $name ) { ... }
+ * );
+ * $modules['xyzzy'] = array(
+ * 'class' => 'ApiXyzzy',
+ * 'factory' => array( 'XyzzyFactory', 'newApiModule' )
+ * );
+ * @endcode
+ *
+ * @param array $modules A map of ModuleName => ModuleSpec; The ModuleSpec
+ * is either a string containing the module's class name, or an associative
+ * array (see above for details).
* @param string $group Which group modules belong to (action,format,...)
*/
public function addModules( array $modules, $group ) {
- foreach ( $modules as $name => $class ) {
- $this->addModule( $name, $group, $class );
+
+ foreach ( $modules as $name => $moduleSpec ) {
+ if ( is_array( $moduleSpec ) ) {
+ $class = $moduleSpec['class'];
+ $factory = ( isset( $moduleSpec['factory'] ) ? $moduleSpec['factory'] : null );
+ } else {
+ $class = $moduleSpec;
+ $factory = null;
+ }
+
+ $this->addModule( $name, $group, $class, $factory );
}
}
* classes who wish to add their own modules to their lexicon or override the
* behavior of inherent ones.
*
- * @param string $group Name of the module group
* @param string $name The identifier for this module.
+ * @param string $group Name of the module group
* @param string $class The class where this module is implemented.
+ * @param callable|null $factory Callback for instantiating the module.
+ *
+ * @throws InvalidArgumentException
*/
- public function addModule( $name, $group, $class ) {
+ public function addModule( $name, $group, $class, $factory = null ) {
+ if ( !is_string( $name ) ) {
+ throw new InvalidArgumentException( '$name must be a string' );
+ }
+
+ if ( !is_string( $group ) ) {
+ throw new InvalidArgumentException( '$group must be a string' );
+ }
+
+ if ( !is_string( $class ) ) {
+ throw new InvalidArgumentException( '$class must be a string' );
+ }
+
+ if ( $factory !== null && !is_callable( $factory ) ) {
+ throw new InvalidArgumentException( '$factory must be a callable (or null)' );
+ }
+
$this->mGroups[$group] = null;
- $this->mModules[$name] = array( $group, $class );
+ $this->mModules[$name] = array( $group, $class, $factory );
}
/**
* Get module instance by name, or instantiate it if it does not exist
+ *
* @param string $moduleName Module name
* @param string $group Optionally validate that the module is in a specific group
* @param bool $ignoreCache If true, force-creates a new instance and does not cache it
- * @return mixed The new module instance, or null if failed
+ *
+ * @return ApiBase|null The new module instance, or null if failed
*/
public function getModule( $moduleName, $group = null, $ignoreCache = false ) {
if ( !isset( $this->mModules[$moduleName] ) ) {
return null;
}
- $grpCls = $this->mModules[$moduleName];
- if ( $group !== null && $grpCls[0] !== $group ) {
+
+ list( $moduleGroup, $moduleClass, $moduleFactory ) = $this->mModules[$moduleName];
+
+ if ( $group !== null && $moduleGroup !== $group ) {
return null;
}
+
if ( !$ignoreCache && isset( $this->mInstances[$moduleName] ) ) {
// already exists
return $this->mInstances[$moduleName];
} else {
// new instance
- $class = $grpCls[1];
- $instance = new $class ( $this->mParent, $moduleName );
+ $instance = $this->instantiateModule( $moduleName, $moduleClass, $moduleFactory );
+
if ( !$ignoreCache ) {
// cache this instance in case it is needed later
$this->mInstances[$moduleName] = $instance;
}
}
+ /**
+ * Instantiate the module using the given class or factory function.
+ *
+ * @param string $name The identifier for this module.
+ * @param string $class The class where this module is implemented.
+ * @param callable|null $factory Callback for instantiating the module.
+ *
+ * @throws MWException
+ * @return ApiBase
+ */
+ private function instantiateModule( $name, $class, $factory = null ) {
+ if ( $factory !== null ) {
+ // create instance from factory
+ $instance = call_user_func( $factory, $this->mParent, $name );
+
+ if ( !$instance instanceof $class ) {
+ throw new MWException( "The factory function for module $name did not return an instance of $class!" );
+ }
+ } else {
+ // create instance from class name
+ $instance = new $class( $this->mParent, $name );
+ }
+
+ return $instance;
+ }
+
/**
* Get an array of modules in a specific group or all if no group is set.
* @param string $group Optional group filter
$watch = $params['watchlist'];
} elseif ( $params['watch'] ) {
$watch = 'watch';
+ $this->logFeatureUsage( 'action=move&watch' );
} elseif ( $params['unwatch'] ) {
$watch = 'unwatch';
+ $this->logFeatureUsage( 'action=move&unwatch' );
}
// Watch pages
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'from' => 'string',
- 'to' => 'string',
- 'reason' => 'string',
- 'redirectcreated' => 'boolean',
- 'moveoverredirect' => 'boolean',
- 'talkfrom' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'talkto' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'talkmoveoverredirect' => 'boolean',
- 'talkmove-error-code' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'talkmove-error-info' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Move a page.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getRequireOnlyOneParameterErrorMessages( array( 'from', 'fromid' ) ),
- array(
- array( 'invalidtitle', 'from' ),
- array( 'nosuchpageid', 'fromid' ),
- array( 'notanarticle' ),
- array( 'invalidtitle', 'to' ),
- array( 'sharedfile-exists' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- '*' => array(
- ApiBase::PROP_TYPE => array(
- 'success'
- )
- )
- )
- );
- }
-
public function getParamDescription() {
return array(
'token' => 'An options token previously obtained through the action=tokens',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'notloggedin', 'info' => 'Anonymous users cannot change preferences' ),
- array( 'code' => 'nochanges', 'info' => 'No changes were requested' ),
- ) );
- }
-
public function needsToken() {
return true;
}
private $mSpecialTitles = array();
private $mNormalizedTitles = array();
private $mInterwikiTitles = array();
+ /** @var Title[] */
private $mPendingRedirectIDs = array();
private $mConvertedTitles = array();
private $mGoodRevIDs = array();
private $mFakePageId = -1;
private $mCacheMode = 'public';
private $mRequestedPageFields = array();
- /**
- * @var int
- */
+ /** @var int */
private $mDefaultNamespace = NS_MAIN;
/**
/**
* Get a list of redirect resolutions - maps a title to its redirect
* target, as an array of output-ready arrays
- * @return array
+ * @return Title[]
*/
public function getRedirectTitles() {
return $this->mRedirectTitles;
/**
* Get the list of titles with negative namespace
- * @return array Title
+ * @return Title[]
*/
public function getSpecialTitles() {
return $this->mSpecialTitles;
),
);
}
-
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'multisource',
- 'info' => "Cannot use 'pageids' at the same time as 'dataSource'"
- ),
- array(
- 'code' => 'multisource',
- 'info' => "Cannot use 'revids' at the same time as 'dataSource'"
- ),
- array(
- 'code' => 'badgenerator',
- 'info' => 'Module $generatorName cannot be used as a generator'
- ),
- ) );
- }
}
}
$result->setIndexedTagName( $retval['parameters'], 'param' );
- $props = $obj->getFinalResultProperties();
- $listResult = null;
- if ( $props !== false ) {
- $retval['props'] = array();
-
- foreach ( $props as $prop => $properties ) {
- $propResult = array();
- if ( $prop == ApiBase::PROP_LIST ) {
- $listResult = $properties;
- continue;
- }
- if ( $prop != ApiBase::PROP_ROOT ) {
- $propResult['name'] = $prop;
- }
- $propResult['properties'] = array();
-
- foreach ( $properties as $name => $p ) {
- $propertyResult = array();
-
- $propertyResult['name'] = $name;
-
- if ( !is_array( $p ) ) {
- $p = array( ApiBase::PROP_TYPE => $p );
- }
-
- $propertyResult['type'] = $p[ApiBase::PROP_TYPE];
-
- if ( is_array( $propertyResult['type'] ) ) {
- $propertyResult['type'] = array_values( $propertyResult['type'] );
- $result->setIndexedTagName( $propertyResult['type'], 't' );
- }
-
- $nullable = null;
- if ( isset( $p[ApiBase::PROP_NULLABLE] ) ) {
- $nullable = $p[ApiBase::PROP_NULLABLE];
- }
-
- if ( $nullable === true ) {
- $propertyResult['nullable'] = '';
- }
-
- $propResult['properties'][] = $propertyResult;
- }
-
- $result->setIndexedTagName( $propResult['properties'], 'property' );
- $retval['props'][] = $propResult;
- }
-
- // default is true for query modules, false for other modules, overridden by ApiBase::PROP_LIST
- if ( $listResult === true || ( $listResult !== false && $obj instanceof ApiQueryBase ) ) {
- $retval['listresult'] = '';
- }
-
- $result->setIndexedTagName( $retval['props'], 'prop' );
- }
-
- // Errors
- $retval['errors'] = $this->parseErrors( $obj->getFinalPossibleErrors() );
- $result->setIndexedTagName( $retval['errors'], 'error' );
-
return $retval;
}
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'params',
- 'info' => 'The page parameter cannot be used together with the text and title parameters'
- ),
- array( 'code' => 'missingrev', 'info' => 'There is no revision ID oldid' ),
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You don\'t have permission to view deleted revisions'
- ),
- array( 'code' => 'missingtitle', 'info' => 'The page you specified doesn\'t exist' ),
- array( 'code' => 'nosuchsection', 'info' => 'There is no section sectionnumber in page' ),
- array( 'nosuchpageid' ),
- array( 'invalidtitle', 'title' ),
- array( 'code' => 'parseerror', 'info' => 'Failed to parse the given text.' ),
- array(
- 'code' => 'notwikitext',
- 'info' => 'The requested operation is only supported on wikitext content.'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=parse&page=Project:Sandbox' => 'Parse a page',
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'rcid' => 'integer',
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Patrol a page or revision.';
}
- public function getPossibleErrors() {
- return array_merge(
- parent::getPossibleErrors(),
- parent::getRequireOnlyOneParameterErrorMessages( array( 'rcid', 'revid' ) ),
- array(
- array( 'nosuchrcid', 'rcid' ),
- array( 'nosuchrevid', 'revid' ),
- array(
- 'code' => 'notpatrollable',
- 'info' => "The revision can't be patrolled as it's too old"
- )
- )
- );
- }
-
public function needsToken() {
return true;
}
$cascade = $params['cascade'];
+ if ( $params['watch'] ) {
+ $this->logFeatureUsage( 'action=protect&watch' );
+ }
$watch = $params['watch'] ? 'watch' : $params['watchlist'];
$this->setWatch( $watch, $titleObj, 'watchdefault' );
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'title' => 'string',
- 'reason' => 'string',
- 'cascade' => 'boolean'
- )
- );
- }
-
public function getDescription() {
return 'Change the protection level of a page.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getTitleOrPageIdErrorMessage(),
- array(
- array( 'toofewexpiries', 'noofexpiries', 'noofprotections' ),
- array( 'create-titleexists' ),
- array( 'missingtitle-createonly' ),
- array( 'protect-invalidaction', 'action' ),
- array( 'protect-invalidlevel', 'level' ),
- array( 'invalidexpiry', 'expiry' ),
- array( 'pastexpiry', 'expiry' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- ApiBase::PROP_LIST => true,
- '' => array(
- 'ns' => array(
- ApiBase::PROP_TYPE => 'namespace',
- ApiBase::PROP_NULLABLE => true
- ),
- 'title' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'pageid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'revid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'invalid' => 'boolean',
- 'special' => 'boolean',
- 'missing' => 'boolean',
- 'purged' => 'boolean',
- 'linkupdate' => 'boolean',
- 'iw' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- )
- );
- }
-
public function getDescription() {
return array( 'Purge the cache for the given titles.',
'Requires a POST request if the user is not logged in.'
);
}
- public function getPossibleErrors() {
- return array_merge(
- parent::getPossibleErrors(),
- $this->getPageSet()->getFinalPossibleErrors()
- );
- }
-
public function getExamples() {
return array(
'api.php?action=purge&titles=Main_Page|API' => 'Purge the "Main Page" and the "API" page',
);
}
- public function getPossibleErrors() {
- return array_merge(
- parent::getPossibleErrors(),
- $this->getPageSet()->getFinalPossibleErrors()
- );
- }
-
public function getExamples() {
return array(
'api.php?action=query&prop=revisions&meta=siteinfo&' .
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- '*' => 'string'
- ),
- 'size' => array(
- 'size' => 'integer',
- 'pages' => 'integer',
- 'files' => 'integer',
- 'subcats' => 'integer'
- ),
- 'hidden' => array(
- 'hidden' => 'boolean'
- )
- );
- }
-
public function getDescription() {
return 'Enumerate all categories.';
}
private $propertyFilter = array( 'archivename', 'thumbmime', 'uploadwarning' );
- public function getResultProperties() {
- return array_merge(
- array(
- '' => array(
- 'name' => 'string',
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- ),
- ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter )
- );
- }
-
public function getDescription() {
return 'Enumerate all images sequentially.';
}
- public function getPossibleErrors() {
- $p = $this->getModulePrefix();
-
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'params',
- 'info' => 'Use "gaifilterredir=nonredirects" option instead ' .
- 'of "redirects" when using allimages as a generator'
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}start' can only be used with {$p}sort=timestamp"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}end' can only be used with {$p}sort=timestamp"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}user' can only be used with {$p}sort=timestamp"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}filterbots' can only be used with {$p}sort=timestamp"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}from' can only be used with {$p}sort=name"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}to' can only be used with {$p}sort=name"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameter'{$p}prefix' can only be used with {$p}sort=name"
- ),
- array(
- 'code' => 'badparams',
- 'info' => "Parameters '{$p}user' and '{$p}filterbots' cannot be used together"
- ),
- array(
- 'code' => 'unsupportedrepo',
- 'info' => 'Local file repository does not support querying all images' ),
- array( 'code' => 'mimesearchdisabled', 'info' => 'MIME search disabled in Miser Mode' ),
- array( 'code' => 'invalidsha1hash', 'info' => 'The SHA1 hash provided is not valid' ),
- array(
- 'code' => 'invalidsha1base36hash',
- 'info' => 'The SHA1Base36 hash provided is not valid'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=allimages&aifrom=B' => array(
return $paramDescription;
}
- public function getResultProperties() {
- return array(
- 'ids' => array(
- 'fromid' => 'integer'
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return $this->description;
}
- public function getPossibleErrors() {
- $m = $this->getModuleName();
- $what = $this->descriptionWhat;
-
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'params',
- 'info' => "{$m} cannot return corresponding page ids in unique {$what}s mode"
- ),
- ) );
- }
-
public function getExamples() {
$p = $this->getModulePrefix();
$name = $this->getModuleName();
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'invalidlang', 'info' => 'Invalid language code for parameter lang' ),
- ) );
- }
-
- public function getResultProperties() {
- return array(
- '' => array(
- 'name' => 'string',
- 'customised' => 'boolean',
- 'missing' => 'boolean',
- '*' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'default' => array(
- 'defaultmissing' => 'boolean',
- 'default' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Return messages from this site.';
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'pageid' => 'integer',
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Enumerate all pages sequentially in a given namespace.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'params',
- 'info' => 'Use "gapfilterredir=nonredirects" option instead of ' .
- '"redirects" when using allpages as a generator'
- ),
- array( 'code' => 'params', 'info' => 'prlevel may not be used without prtype' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=allpages&apfrom=B' => array(
public function execute() {
$params = $this->extractRequestParams();
+ $activeUserDays = $this->getConfig()->get( 'ActiveUserDays' );
if ( $params['activeusers'] ) {
// Update active user cache
- SpecialActiveUsers::mergeActiveUsers( 600 );
+ SpecialActiveUsers::mergeActiveUsers( 600, $activeUserDays );
}
$db = $this->getDB();
}
if ( $params['activeusers'] ) {
- $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
+ $activeUserSeconds = $activeUserDays * 86400;
// Filter query to only include users in the active users cache
$this->addTables( 'querycachetwo' );
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'userid' => 'integer',
- 'name' => 'string',
- 'recentactions' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'blockinfo' => array(
- 'blockid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedby' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedbyid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedreason' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedexpiry' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'hidden' => 'boolean'
- ),
- 'editcount' => array(
- 'editcount' => 'integer'
- ),
- 'registration' => array(
- 'registration' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Enumerate all registered users.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'group-excludegroup',
- 'info' => 'group and excludegroup cannot be used together'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=allusers&aufrom=Y',
) );
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'pageid' => 'integer',
- 'ns' => 'namespace',
- 'title' => 'string',
- 'redirect' => 'boolean'
- )
- );
- }
-
public function getDescription() {
switch ( $this->getModuleName() ) {
case 'backlinks':
}
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getTitleOrPageIdErrorMessage(),
- array(
- array(
- 'code' => 'bad_image_title',
- 'info' => "The title for {$this->getModuleName()} query must be an image"
- ),
- )
- );
- }
-
public function getExamples() {
static $examples = array(
'backlinks' => array(
return preg_match( '/^[a-z0-9]{31}$/', $hash );
}
- /**
- * @return array
- */
- public function getPossibleErrors() {
- $errors = parent::getPossibleErrors();
- $errors = array_merge( $errors, array(
- array( 'invalidtitle', 'title' ),
- array( 'invalidtitle', 'key' ),
- ) );
-
- return $errors;
- }
-
/**
* Check whether the current user has permission to view revision-deleted
* fields.
);
}
- public function getResultProperties() {
- return array(
- 'id' => array(
- 'id' => 'integer'
- ),
- 'user' => array(
- 'user' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'userid' => array(
- 'userid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'by' => array(
- 'by' => 'string'
- ),
- 'byid' => array(
- 'byid' => 'integer'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'expiry' => array(
- 'expiry' => 'timestamp'
- ),
- 'reason' => array(
- 'reason' => 'string'
- ),
- 'range' => array(
- 'rangestart' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'rangeend' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'flags' => array(
- 'automatic' => 'boolean',
- 'anononly' => 'boolean',
- 'nocreate' => 'boolean',
- 'autoblock' => 'boolean',
- 'noemail' => 'boolean',
- 'hidden' => 'boolean',
- 'allowusertalk' => 'boolean'
- )
- );
- }
-
public function getDescription() {
return 'List all blocked users and IP addresses.';
}
- public function getPossibleErrors() {
- $blockCIDRLimit = $this->getConfig()->get( 'BlockCIDRLimit' );
-
- return array_merge( parent::getPossibleErrors(),
- $this->getRequireMaxOneParameterErrorMessages( array( 'users', 'ip' ) ),
- array(
- array(
- 'code' => 'cidrtoobroad',
- 'info' => "IPv4 CIDR ranges broader than /{$blockCIDRLimit['IPv4']} are not accepted"
- ),
- array(
- 'code' => 'cidrtoobroad',
- 'info' => "IPv6 CIDR ranges broader than /{$blockCIDRLimit['IPv6']} are not accepted"
- ),
- array( 'code' => 'param_ip', 'info' => 'IP parameter is not valid' ),
- array( 'code' => 'param_user', 'info' => 'User parameter may not be empty' ),
- array( 'code' => 'param_user', 'info' => 'User name user is not valid' ),
- array( 'show' ),
- )
- );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=blocks',
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'sortkey' => array(
- 'sortkey' => 'string',
- 'sortkeyprefix' => 'string'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'hidden' => array(
- 'hidden' => 'boolean'
- )
- );
- }
-
public function getDescription() {
return 'List all categories the page(s) belong to.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'show' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&prop=categories&titles=Albert%20Einstein'
);
}
- public function getResultProperties() {
- return array(
- ApiBase::PROP_LIST => false,
- '' => array(
- 'size' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => false
- ),
- 'pages' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => false
- ),
- 'files' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => false
- ),
- 'subcats' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => false
- ),
- 'hidden' => array(
- ApiBase::PROP_TYPE => 'boolean',
- ApiBase::PROP_NULLABLE => false
- )
- )
- );
- }
-
public function getDescription() {
return 'Returns information about the given categories.';
}
return $desc;
}
- public function getResultProperties() {
- return array(
- 'ids' => array(
- 'pageid' => 'integer'
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'sortkey' => array(
- 'sortkey' => 'string'
- ),
- 'sortkeyprefix' => array(
- 'sortkeyprefix' => 'string'
- ),
- 'type' => array(
- 'type' => array(
- ApiBase::PROP_TYPE => array(
- 'page',
- 'subcat',
- 'file'
- )
- )
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- )
- );
- }
-
public function getDescription() {
return 'List all pages in a given category.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getTitleOrPageIdErrorMessage(),
- array(
- array( 'code' => 'invalidcategory', 'info' => 'The category name you entered is not valid' ),
- )
- );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=categorymembers&cmtitle=Category:Physics'
);
}
- 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 getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'token' => array(
- 'token' => 'string'
- )
- );
- }
-
public function getDescription() {
$p = $this->getModulePrefix();
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You don\'t have permission to view deleted revision information'
- ),
- array( 'code' => 'badparams', 'info' => 'user and excludeuser cannot be used together'
- ),
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You don\'t have permission to view deleted revision content'
- ),
- array( 'code' => 'badparams', 'info' => "The 'from' parameter cannot be used in modes 1 or 2" ),
- array( 'code' => 'badparams', 'info' => "The 'to' parameter cannot be used in modes 1 or 2" ),
- array(
- 'code' => 'badparams',
- 'info' => "The 'prefix' parameter cannot be used in modes 1 or 2"
- ),
- array( 'code' => 'badparams', 'info' => "The 'start' parameter cannot be used in mode 3" ),
- array( 'code' => 'badparams', 'info' => "The 'end' parameter cannot be used in mode 3" ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=deletedrevs&titles=Main%20Page|Talk:Main%20Page&' .
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'name' => 'string',
- 'user' => 'string',
- 'timestamp' => 'timestamp',
- 'shared' => 'boolean',
- )
- );
- }
-
public function getDescription() {
return 'List all files that are duplicates of the given file(s) based on hash values.';
}
return $desc;
}
- public function getResultProperties() {
- return array(
- 'ids' => array(
- 'pageid' => 'integer'
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'url' => array(
- 'url' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Enumerate pages that contain a given URL.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'bad_query', 'info' => 'Invalid query' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=exturlusage&euquery=www.mediawiki.org'
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- '*' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Returns all external URLs (not interwikis) from the given page(s).';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'bad_query', 'info' => 'Invalid query' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&prop=extlinks&titles=Main%20Page'
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'name' => 'string',
- 'ns' => 'namespace',
- 'title' => 'string',
- 'filehidden' => 'boolean',
- 'commenthidden' => 'boolean',
- 'userhidden' => 'boolean',
- 'suppressed' => 'boolean'
- ),
- 'sha1' => array(
- 'sha1' => 'string'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'user' => array(
- 'userid' => 'integer',
- 'user' => 'string'
- ),
- 'size' => array(
- 'size' => 'integer',
- 'pagecount' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'height' => 'integer',
- 'width' => 'integer'
- ),
- 'dimensions' => array(
- 'size' => 'integer',
- 'pagecount' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'height' => 'integer',
- 'width' => 'integer'
- ),
- 'description' => array(
- 'description' => 'string'
- ),
- 'parseddescription' => array(
- 'description' => 'string',
- 'parseddescription' => 'string'
- ),
- 'metadata' => array(
- 'metadata' => 'string'
- ),
- 'bitdepth' => array(
- 'bitdepth' => 'integer'
- ),
- 'mime' => array(
- 'mime' => 'string'
- ),
- 'mediatype' => array(
- 'mediatype' => 'string'
- ),
- 'archivename' => array(
- 'archivename' => 'string'
- ),
- );
- }
-
public function getDescription() {
return 'Enumerate all deleted files sequentially.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You don\'t have permission to view deleted file information'
- ),
- array( 'code' => 'hashsearchdisabled', 'info' => 'Search by hash disabled in Miser Mode' ),
- array( 'code' => 'invalidsha1hash', 'info' => 'The SHA-1 hash provided is not valid' ),
- array(
- 'code' => 'invalidsha1base36hash',
- 'info' => 'The SHA1Base36 hash provided is not valid'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=filearchive' => array(
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'pageid' => 'integer',
- 'ns' => 'namespace',
- 'title' => 'string',
- 'redirect' => 'boolean'
- ),
- 'iwprefix' => array(
- 'iwprefix' => 'string'
- ),
- 'iwtitle' => array(
- 'iwtitle' => 'string'
- )
- );
- }
-
public function getDescription() {
return array( 'Find all pages that link to the given interwiki link.',
'Can be used to find all links with a prefix, or',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'missingparam', 'prefix' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=iwbacklinks&iwbltitle=Test&iwblprefix=wikibooks',
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'prefix' => 'string',
- 'url' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- '*' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Returns all interwiki links from the given page(s).';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'missingparam', 'prefix' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&prop=iwlinks&titles=Main%20Page'
);
}
- public static function getResultPropertiesFiltered( $filter = array() ) {
- $props = array(
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'user' => array(
- 'userhidden' => 'boolean',
- 'user' => 'string',
- 'anon' => 'boolean'
- ),
- 'userid' => array(
- 'userhidden' => 'boolean',
- 'userid' => 'integer',
- 'anon' => 'boolean'
- ),
- 'size' => array(
- 'size' => 'integer',
- 'width' => 'integer',
- 'height' => 'integer',
- 'pagecount' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'dimensions' => array(
- 'size' => 'integer',
- 'width' => 'integer',
- 'height' => 'integer',
- 'pagecount' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'comment' => array(
- 'commenthidden' => 'boolean',
- 'comment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'parsedcomment' => array(
- 'commenthidden' => 'boolean',
- 'parsedcomment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'canonicaltitle' => array(
- 'canonicaltitle' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'url' => array(
- 'filehidden' => 'boolean',
- 'thumburl' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'thumbwidth' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'thumbheight' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'thumberror' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'url' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'descriptionurl' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'sha1' => array(
- 'filehidden' => 'boolean',
- 'sha1' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'mime' => array(
- 'filehidden' => 'boolean',
- 'mime' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'thumbmime' => array(
- 'filehidden' => 'boolean',
- 'thumbmime' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'mediatype' => array(
- 'filehidden' => 'boolean',
- 'mediatype' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'archivename' => array(
- 'filehidden' => 'boolean',
- 'archivename' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'bitdepth' => array(
- 'filehidden' => 'boolean',
- 'bitdepth' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- );
-
- return array_diff_key( $props, array_flip( $filter ) );
- }
-
- public function getResultProperties() {
- return self::getResultPropertiesFiltered();
- }
-
public function getDescription() {
return 'Returns image information and upload history.';
}
- public function getPossibleErrors() {
- $p = $this->getModulePrefix();
-
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => "{$p}urlwidth", 'info' => "{$p}urlheight cannot be used without {$p}urlwidth" ),
- array( 'code' => 'urlparam', 'info' => "Invalid value for {$p}urlparam" ),
- array( 'code' => 'urlparam_no_width', 'info' => "{$p}urlparam requires {$p}urlwidth" ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&titles=File:Albert%20Einstein%20Head.jpg&prop=imageinfo',
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Returns all images contained on the given page(s).';
}
);
}
- public function getResultProperties() {
- $props = array(
- ApiBase::PROP_LIST => false,
- '' => array(
- 'touched' => 'timestamp',
- 'lastrevid' => 'integer',
- 'counter' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'length' => 'integer',
- 'redirect' => 'boolean',
- 'new' => 'boolean',
- 'starttimestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- ),
- 'contentmodel' => 'string',
- ),
- 'watched' => array(
- 'watched' => 'boolean'
- ),
- 'watchers' => array(
- 'watchers' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'notificationtimestamp' => array(
- 'notificationtimestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'talkid' => array(
- 'talkid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'subjectid' => array(
- 'subjectid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'url' => array(
- 'fullurl' => 'string',
- 'editurl' => 'string'
- ),
- 'readable' => array(
- 'readable' => 'boolean'
- ),
- 'preload' => array(
- 'preload' => 'string'
- ),
- 'displaytitle' => array(
- 'displaytitle' => 'string'
- )
- );
-
- self::addTokenProperties( $props, $this->getTokenFunctions() );
-
- return $props;
- }
-
public function getDescription() {
return 'Get basic page information such as namespace, title, last touched date, ...';
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'pageid' => 'integer',
- 'ns' => 'namespace',
- 'title' => 'string',
- 'redirect' => 'boolean'
- ),
- 'lllang' => array(
- 'lllang' => 'string'
- ),
- 'lltitle' => array(
- 'lltitle' => 'string'
- )
- );
- }
-
public function getDescription() {
return array( 'Find all pages that link to the given language link.',
'Can be used to find all links with a language code, or',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'missingparam', 'lang' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=langbacklinks&lbltitle=Test&lbllang=fr',
// Handle deprecated param
$this->requireMaxOneParameter( $params, 'url', 'prop' );
if ( $params['url'] ) {
+ $this->logFeatureUsage( 'prop=langlinks&llurl' );
$prop = array( 'url' => 1 );
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'lang' => 'string',
- 'url' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'langname' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'autonym' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- '*' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Returns all interlanguage links from the given page(s).';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getRequireMaxOneParameterErrorMessages(
- array( 'url', 'prop' )
- ),
- array(
- array( 'missingparam', 'lang' ),
- )
- );
- }
-
public function getExamples() {
return array(
'api.php?action=query&prop=langlinks&titles=Main%20Page&redirects='
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return "Returns all {$this->description}s from the given page(s).";
}
);
}
- public function getResultProperties() {
- return array(
- 'ids' => array(
- 'logid' => 'integer',
- 'pageid' => 'integer'
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'type' => array(
- 'type' => array(
- ApiBase::PROP_TYPE => $this->getConfig()->get( 'LogTypes' )
- ),
- 'action' => 'string'
- ),
- 'details' => array(
- 'actionhidden' => 'boolean'
- ),
- 'user' => array(
- 'userhidden' => 'boolean',
- 'user' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'anon' => 'boolean'
- ),
- 'userid' => array(
- 'userhidden' => 'boolean',
- 'userid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'anon' => 'boolean'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'comment' => array(
- 'commenthidden' => 'boolean',
- 'comment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'parsedcomment' => array(
- 'commenthidden' => 'boolean',
- 'parsedcomment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Get events from logs.';
}
- public function getPossibleErrors() {
- return array_merge(
- parent::getPossibleErrors(),
- $this->getRequireMaxOneParameterErrorMessages(
- array( 'title', 'prefix', 'namespace' ) ),
- array(
- array( 'code' => 'param_user', 'info' => 'User name $user not found' ),
- array( 'code' => 'param_title', 'info' => 'Bad title value \'title\'' ),
- array( 'code' => 'param_prefix', 'info' => 'Bad title value \'prefix\'' ),
- array( 'code' => 'prefixsearchdisabled',
- 'info' => 'Prefix search disabled in Miser Mode' ),
- )
- );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=logevents'
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'user' => array(
- 'user' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'userid' => 'integer'
- ),
- 'userid' => array(
- 'userid' => 'integer'
- ),
- 'comment' => array(
- 'comment' => 'string'
- ),
- 'parsedcomment' => array(
- 'parsedcomment' => 'string'
- ),
- 'expiry' => array(
- 'expiry' => 'timestamp'
- ),
- 'level' => array(
- 'level' => array(
- ApiBase::PROP_TYPE => array_diff( $this->getConfig()->get( 'RestrictionLevels' ), array( '' ) )
- )
- )
- );
- }
-
public function getDescription() {
return 'List all titles protected from creation.';
}
);
}
- public function getResultProperties() {
- return array(
- ApiBase::PROP_ROOT => array(
- 'name' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => false
- ),
- 'disabled' => array(
- ApiBase::PROP_TYPE => 'boolean',
- ApiBase::PROP_NULLABLE => false
- ),
- 'cached' => array(
- ApiBase::PROP_TYPE => 'boolean',
- ApiBase::PROP_NULLABLE => false
- ),
- 'cachedtimestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- '' => array(
- 'value' => 'string',
- 'timestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- ),
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Get a list provided by a QueryPage-based special page.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'specialpage-cantexecute' )
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=querypage&qppage=Ancientpages'
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'id' => 'integer',
- 'ns' => 'namespace',
- 'title' => 'string'
- )
- );
- }
-
public function getDescription() {
return array(
'Get a set of random pages.',
);
}
- public function getResultProperties() {
- $props = array(
- '' => array(
- 'type' => array(
- ApiBase::PROP_TYPE => array(
- 'edit',
- 'new',
- 'move',
- 'log',
- 'move over redirect'
- )
- )
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string',
- 'new_ns' => array(
- ApiBase::PROP_TYPE => 'namespace',
- ApiBase::PROP_NULLABLE => true
- ),
- 'new_title' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'ids' => array(
- 'rcid' => 'integer',
- 'pageid' => 'integer',
- 'revid' => 'integer',
- 'old_revid' => 'integer'
- ),
- 'user' => array(
- 'user' => 'string',
- 'anon' => 'boolean'
- ),
- 'userid' => array(
- 'userid' => 'integer',
- 'anon' => 'boolean'
- ),
- 'flags' => array(
- 'bot' => 'boolean',
- 'new' => 'boolean',
- 'minor' => 'boolean'
- ),
- 'sizes' => array(
- 'oldlen' => 'integer',
- 'newlen' => 'integer'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'comment' => array(
- 'comment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'parsedcomment' => array(
- 'parsedcomment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'redirect' => array(
- 'redirect' => 'boolean'
- ),
- 'patrolled' => array(
- 'patrolled' => 'boolean',
- 'unpatrolled' => 'boolean'
- ),
- 'loginfo' => array(
- 'logid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'logtype' => array(
- ApiBase::PROP_TYPE => $this->getConfig()->get( 'LogTypes' ),
- ApiBase::PROP_NULLABLE => true
- ),
- 'logaction' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'sha1' => array(
- 'sha1' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'sha1hidden' => array(
- ApiBase::PROP_TYPE => 'boolean',
- ApiBase::PROP_NULLABLE => true
- ),
- ),
- );
-
- self::addTokenProperties( $props, $this->getTokenFunctions() );
-
- return $props;
- }
-
public function getDescription() {
return 'Enumerate recent changes.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'show' ),
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You need the patrol right to request the patrolled flag'
- ),
- array( 'code' => 'user-excludeuser', 'info' => 'user and excludeuser cannot be used together' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=recentchanges'
);
}
- public function getResultProperties() {
- $props = array(
- '' => array(),
- 'ids' => array(
- 'revid' => 'integer',
- 'parentid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'flags' => array(
- 'minor' => 'boolean'
- ),
- 'user' => array(
- 'userhidden' => 'boolean',
- 'user' => 'string',
- 'anon' => 'boolean'
- ),
- 'userid' => array(
- 'userhidden' => 'boolean',
- 'userid' => 'integer',
- 'anon' => 'boolean'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'size' => array(
- 'size' => 'integer'
- ),
- 'sha1' => array(
- 'sha1' => 'string'
- ),
- 'comment' => array(
- 'commenthidden' => 'boolean',
- 'comment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'parsedcomment' => array(
- 'commenthidden' => 'boolean',
- 'parsedcomment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'content' => array(
- '*' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'texthidden' => 'boolean',
- 'textmissing' => 'boolean',
- ),
- 'contentmodel' => array(
- 'contentmodel' => 'string'
- ),
- );
-
- self::addTokenProperties( $props, $this->getTokenFunctions() );
-
- return $props;
- }
-
public function getDescription() {
return array(
'Get revision information.',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'nosuchrevid', 'diffto' ),
- array(
- 'code' => 'revids',
- 'info' => 'The revids= parameter may not be used with the list options '
- . '(limit, startid, endid, dirNewer, start, end).'
- ),
- array(
- 'code' => 'multpages',
- 'info' => 'titles, pageids or a generator was used to supply multiple pages, '
- . ' but the limit, startid, endid, dirNewer, user, excludeuser, '
- . 'start and end parameters may only be used on a single page.'
- ),
- array(
- 'code' => 'diffto',
- 'info' => 'rvdiffto must be set to a non-negative number, "prev", "next" or "cur"'
- ),
- array( 'code' => 'badparams', 'info' => 'start and startid cannot be used together' ),
- array( 'code' => 'badparams', 'info' => 'end and endid cannot be used together' ),
- array( 'code' => 'badparams', 'info' => 'user and excludeuser cannot be used together' ),
- array( 'code' => 'nosuchsection', 'info' => 'There is no section section in rID' ),
- array( 'code' => 'badformat', 'info' => 'The requested serialization format can not be applied '
- . ' to the page\'s content model' ),
- ) );
- }
-
public function getExamples() {
return array(
'Get data with content for the last revision of titles "API" and "Main Page"',
if ( isset( $prop['timestamp'] ) ) {
$vals['timestamp'] = wfTimestamp( TS_ISO_8601, $result->getTimestamp() );
}
- if ( !is_null( $result->getScore() ) && isset( $prop['score'] ) ) {
- $vals['score'] = $result->getScore();
- }
if ( isset( $prop['titlesnippet'] ) ) {
$vals['titlesnippet'] = $result->getTitleSnippet( $terms );
}
$hasInterwikiResults = false;
if ( $interwiki && $resultPageSet === null && $matches->hasInterwikiResults() ) {
$matches = $matches->getInterwikiResults();
- $iwprefixes = array();
$hasInterwikiResults = true;
// Include number of results if requested
return $descriptions;
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'snippet' => array(
- 'snippet' => 'string'
- ),
- 'size' => array(
- 'size' => 'integer'
- ),
- 'wordcount' => array(
- 'wordcount' => 'integer'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'score' => array(
- 'score' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'titlesnippet' => array(
- 'titlesnippet' => 'string'
- ),
- 'redirecttitle' => array(
- 'redirecttitle' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'redirectsnippet' => array(
- 'redirectsnippet' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'sectiontitle' => array(
- 'sectiontitle' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'sectionsnippet' => array(
- 'sectionsnippet' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'hasrelated' => array(
- 'hasrelated' => 'boolean'
- )
- );
- }
-
public function getDescription() {
return 'Perform a full text search.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'search-text-disabled', 'info' => 'text search is disabled' ),
- array( 'code' => 'search-title-disabled', 'info' => 'title search is disabled' ),
- array( 'code' => 'search-error', 'info' => 'search error has occurred' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=search&srsearch=meaning',
if ( $wgContLang->linkPrefixExtension() ) {
$linkPrefixCharset = $wgContLang->linkPrefixCharset();
$data['linkprefixcharset'] = $linkPrefixCharset;
- // For backwards compatability
+ // For backwards compatibility
$data['linkprefix'] = "/^((?>.*[^$linkPrefixCharset]|))(.+)$/sDu";
} else {
$data['linkprefixcharset'] = '';
return 'Return general information about the site.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array( array(
- 'code' => 'includeAllDenied',
- 'info' => 'Cannot view all servers info unless $wgShowHostnames is true'
- ), ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&meta=siteinfo&siprop=general|namespaces|namespacealiases|statistics',
// Alias sessionkey to filekey, but give an existing filekey precedence.
if ( !$params['filekey'] && $params['sessionkey'] ) {
+ $this->logFeatureUsage( 'prop=stashimageinfo&siisessionkey' );
$params['filekey'] = $params['sessionkey'];
}
);
}
- public function getResultProperties() {
- return ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter );
- }
-
public function getDescription() {
return 'Returns image information for stashed images.';
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'name' => 'string'
- ),
- 'displayname' => array(
- 'displayname' => 'string'
- ),
- 'description' => array(
- 'description' => 'string'
- ),
- 'hitcount' => array(
- 'hitcount' => 'integer'
- )
- );
- }
-
public function getDescription() {
return 'List change tags.';
}
$show = $this->params['show'];
if ( $this->params['toponly'] ) { // deprecated/old param
+ $this->logFeatureUsage( 'list=usercontribs&uctoponly' );
$show[] = 'top';
}
if ( !is_null( $show ) ) {
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'userid' => 'integer',
- 'user' => 'string',
- 'userhidden' => 'boolean'
- ),
- 'ids' => array(
- 'pageid' => 'integer',
- 'revid' => 'integer',
- 'parentid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'flags' => array(
- 'new' => 'boolean',
- 'minor' => 'boolean',
- 'top' => 'boolean'
- ),
- 'comment' => array(
- 'commenthidden' => 'boolean',
- 'comment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'parsedcomment' => array(
- 'commenthidden' => 'boolean',
- 'parsedcomment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'patrolled' => array(
- 'patrolled' => 'boolean'
- ),
- 'size' => array(
- 'size' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'sizediff' => array(
- 'sizediff' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Get all edits by a user.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'param_user', 'info' => 'User parameter may not be empty.' ),
- array( 'code' => 'param_user', 'info' => 'User name user is not valid' ),
- array( 'show' ),
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You need the patrol right to request the patrolled flag'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=usercontribs&ucuser=YurikBot',
);
}
- public function getResultProperties() {
- return array(
- ApiBase::PROP_LIST => false,
- '' => array(
- 'id' => 'integer',
- 'name' => 'string',
- 'anon' => 'boolean'
- ),
- 'blockinfo' => array(
- 'blockid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedby' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedbyid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedreason' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'hasmsg' => array(
- 'messages' => 'boolean'
- ),
- 'preferencestoken' => array(
- 'preferencestoken' => 'string'
- ),
- 'editcount' => array(
- 'editcount' => 'integer'
- ),
- 'realname' => array(
- 'realname' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'email' => array(
- 'email' => 'string',
- 'emailauthenticated' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'registrationdate' => array(
- 'registrationdate' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Get information about the current user.';
}
);
}
- public function getResultProperties() {
- $props = array(
- '' => array(
- 'userid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'name' => 'string',
- 'invalid' => 'boolean',
- 'hidden' => 'boolean',
- 'interwiki' => 'boolean',
- 'missing' => 'boolean'
- ),
- 'editcount' => array(
- 'editcount' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'registration' => array(
- 'registration' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'blockinfo' => array(
- 'blockid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedby' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedbyid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedreason' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'blockedexpiry' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'emailable' => array(
- 'emailable' => 'boolean'
- ),
- 'gender' => array(
- 'gender' => array(
- ApiBase::PROP_TYPE => array(
- 'male',
- 'female',
- 'unknown'
- ),
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
-
- self::addTokenProperties( $props, $this->getTokenFunctions() );
-
- return $props;
- }
-
public function getDescription() {
return 'Get information about a list of users.';
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'type' => array(
- ApiBase::PROP_TYPE => array(
- 'edit',
- 'new',
- 'move',
- 'log',
- 'move over redirect'
- )
- )
- ),
- 'ids' => array(
- 'pageid' => 'integer',
- 'revid' => 'integer',
- 'old_revid' => 'integer'
- ),
- 'title' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'user' => array(
- 'user' => 'string',
- 'anon' => 'boolean'
- ),
- 'userid' => array(
- 'userid' => 'integer',
- 'anon' => 'boolean'
- ),
- 'flags' => array(
- 'new' => 'boolean',
- 'minor' => 'boolean',
- 'bot' => 'boolean'
- ),
- 'patrol' => array(
- 'patrolled' => 'boolean'
- ),
- 'timestamp' => array(
- 'timestamp' => 'timestamp'
- ),
- 'sizes' => array(
- 'oldlen' => 'integer',
- 'newlen' => 'integer'
- ),
- 'notificationtimestamp' => array(
- 'notificationtimestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'comment' => array(
- 'comment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'parsedcomment' => array(
- 'parsedcomment' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- 'loginfo' => array(
- 'logid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'logtype' => array(
- ApiBase::PROP_TYPE => $this->getConfig()->get( 'LogTypes' ),
- ApiBase::PROP_NULLABLE => true
- ),
- 'logaction' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return "Get all recent changes to pages in the logged in user's watchlist.";
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'bad_wlowner', 'info' => 'Specified user does not exist' ),
- array(
- 'code' => 'bad_wltoken',
- 'info' => 'Incorrect watchlist token provided -- ' .
- 'please set a correct token in Special:Preferences'
- ),
- array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ),
- array( 'code' => 'patrol', 'info' => 'patrol property is not available' ),
- array( 'show' ),
- array(
- 'code' => 'permissiondenied',
- 'info' => 'You need the patrol right to request the patrolled flag'
- ),
- array( 'code' => 'user-excludeuser', 'info' => 'user and excludeuser cannot be used together' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=watchlist',
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'ns' => 'namespace',
- 'title' => 'string'
- ),
- 'changed' => array(
- 'changed' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return "Get all pages on the logged in user's watchlist.";
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ),
- array( 'show' ),
- array( 'code' => 'bad_wlowner', 'info' => 'Specified user does not exist' ),
- array(
- 'code' => 'bad_wltoken',
- 'info' => 'Incorrect watchlist token provided -- ' .
- 'please set a correct token in Special:Preferences'
- ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=query&list=watchlistraw',
*
* @since 1.24
* @param string|null $continue The "continue" parameter, if any
- * @param array $allModules Contains ApiBase instances that will be executed
+ * @param ApiBase[] $allModules Contains ApiBase instances that will be executed
* @param array $generatedModules Names of modules that depend on the generator
* @return array Two elements: a boolean indicating if the generator is done,
* and an array of modules to actually execute.
return 'Delete/undelete revisions.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- array(
- array( 'code' => 'needtarget',
- 'info' => 'A target title is required for this RevDel type' ),
- array( 'code' => 'badparams', 'info' => 'Bad value for some parameter' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'title' => 'string',
- 'pageid' => 'integer',
- 'summary' => 'string',
- 'revid' => 'integer',
- 'old_revid' => 'integer',
- 'last_revid' => 'integer'
- )
- );
- }
-
public function getDescription() {
return array(
'Undo the last edit to the page. If the last user who edited the page made',
);
}
- public function getPossibleErrors() {
- return array_merge(
- parent::getPossibleErrors(),
- $this->getRequireOnlyOneParameterErrorMessages( array( 'title', 'pageid' ) ),
- array(
- array( 'invalidtitle', 'title' ),
- array( 'notanarticle' ),
- array( 'nosuchpageid', 'pageid' ),
- array( 'invaliduser', 'user' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
);
}
- public function getResultProperties() {
- return array(
- ApiBase::PROP_LIST => true,
- ApiBase::PROP_ROOT => array(
- 'notificationtimestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- ),
- '' => array(
- 'ns' => array(
- ApiBase::PROP_TYPE => 'namespace',
- ApiBase::PROP_NULLABLE => true
- ),
- 'title' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'pageid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'revid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'invalid' => 'boolean',
- 'missing' => 'boolean',
- 'notwatched' => 'boolean',
- 'notificationtimestamp' => array(
- ApiBase::PROP_TYPE => 'timestamp',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return array( 'Update the notification timestamp for watched pages.',
'This affects the highlighting of changed pages in the watchlist and history,',
);
}
- public function getPossibleErrors() {
- $ps = $this->getPageSet();
-
- return array_merge(
- parent::getPossibleErrors(),
- $ps->getFinalPossibleErrors(),
- $this->getRequireMaxOneParameterErrorMessages(
- array( 'timestamp', 'torevid', 'newerthanrevid' ) ),
- $this->getRequireOnlyOneParameterErrorMessages(
- array_merge( array( 'entirewatchlist' ), array_keys( $ps->getFinalParams() ) ) ),
- array(
- array( 'code' => 'notloggedin', 'info'
- => 'Anonymous users cannot use watchlist change notifications' ),
- array( 'code' => 'multpages', 'info' => 'torevid may only be used with a single page' ),
- array( 'code' => 'multpages', 'info' => 'newerthanrevid may only be used with a single page' ),
- )
- );
- }
-
public function getExamples() {
return array(
'api.php?action=setnotificationtimestamp&entirewatchlist=&token=123ABC'
);
}
- public function getResultProperties() {
- $props = array(
- '' => array(),
- );
-
- self::addTokenProperties( $props, $this->getTokenTypes() );
-
- return $props;
- }
-
public function getParamDescription() {
return array(
'type' => 'Type of token(s) to request'
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'id' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'user' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'userid' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'reason' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return 'Unblock a user.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'unblock-notarget' ),
- array( 'unblock-idanduser' ),
- array( 'cantunblock' ),
- array( 'ipbblocked' ),
- array( 'ipbnounblockself' ),
- ) );
- }
-
public function needsToken() {
return true;
}
$params['timestamps'][$i] = wfTimestamp( TS_MW, $ts );
}
- $pa = new PageArchive( $titleObj );
+ $pa = new PageArchive( $titleObj, $this->getConfig() );
$retval = $pa->undelete(
( isset( $params['timestamps'] ) ? $params['timestamps'] : array() ),
$params['reason'],
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'title' => 'string',
- 'revisions' => 'integer',
- 'filerevisions' => 'integer',
- 'reason' => 'string'
- )
- );
- }
-
public function getDescription() {
return array(
'Restore certain revisions of a deleted page. A list of deleted revisions ',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'permdenied-undelete' ),
- array( 'blockedtext' ),
- array( 'invalidtitle', 'title' ),
- array( 'cannotundelete' ),
- ) );
- }
-
public function needsToken() {
return true;
}
* @ingroup API
*/
class ApiUpload extends ApiBase {
- /** @var UploadBase */
+ /** @var UploadBase|UploadFromChunks */
protected $mUpload = null;
protected $mParams;
// Copy the session key to the file key, for backward compatibility.
if ( !$this->mParams['filekey'] && $this->mParams['sessionkey'] ) {
+ $this->logFeatureUsage( 'action=upload&sessionkey' );
$this->mParams['filekey'] = $this->mParams['sessionkey'];
}
}
} else {
$filekey = $this->mParams['filekey'];
- /** @var $status Status */
$status = $this->mUpload->addChunk(
$chunkPath, $chunkSize, $this->mParams['offset'] );
if ( !$status->isGood() ) {
/**
* Performs file verification, dies on error.
+ * @param array $verification
*/
protected function checkVerification( array $verification ) {
// @todo Move them to ApiBase's message map
if ( isset( $warnings['duplicate'] ) ) {
$dupes = array();
+ /** @var File $dupe */
foreach ( $warnings['duplicate'] as $dupe ) {
$dupes[] = $dupe->getName();
}
if ( isset( $warnings['exists'] ) ) {
$warning = $warnings['exists'];
unset( $warnings['exists'] );
+ /** @var LocalFile $localFile */
$localFile = isset( $warning['normalizedFile'] )
? $warning['normalizedFile']
: $warning['file'];
// Deprecated parameters
if ( $this->mParams['watch'] ) {
+ $this->logFeatureUsage( 'action=upload&watch' );
$watch = true;
}
return $params;
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'result' => array(
- ApiBase::PROP_TYPE => array(
- 'Success',
- 'Warning',
- 'Continue',
- 'Queued'
- ),
- ),
- 'filekey' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'sessionkey' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'offset' => array(
- ApiBase::PROP_TYPE => 'integer',
- ApiBase::PROP_NULLABLE => true
- ),
- 'statuskey' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- ),
- 'filename' => array(
- ApiBase::PROP_TYPE => 'string',
- ApiBase::PROP_NULLABLE => true
- )
- )
- );
- }
-
public function getDescription() {
return array(
'Upload a file, or get the status of pending uploads. Several methods are available:',
);
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(),
- $this->getRequireOnlyOneParameterErrorMessages( array( 'filekey', 'file', 'url', 'statuskey' ) ),
- array(
- array( 'uploaddisabled' ),
- array( 'invalid-file-key' ),
- array( 'uploaddisabled' ),
- array( 'mustbeloggedin', 'upload' ),
- array( 'badaccess-groups' ),
- array( 'code' => 'fetchfileerror', 'info' => '' ),
- array( 'code' => 'nomodule', 'info' => 'No upload module set' ),
- array( 'code' => 'empty-file', 'info' => 'The file you submitted was empty' ),
- array( 'code' => 'filetype-missing', 'info' => 'The file is missing an extension' ),
- array( 'code' => 'filename-tooshort', 'info' => 'The filename is too short' ),
- array( 'code' => 'overwrite', 'info' => 'Overwriting an existing file is not allowed' ),
- array( 'code' => 'stashfailed', 'info' => 'Stashing temporary file failed' ),
- array( 'code' => 'publishfailed', 'info' => 'Publishing of stashed file failed' ),
- array( 'code' => 'internal-error', 'info' => 'An internal error occurred' ),
- array( 'code' => 'asynccopyuploaddisabled', 'info' => 'Asynchronous copy uploads disabled' ),
- array( 'code' => 'stasherror', 'info' => 'An upload stash error occurred' ),
- array( 'fileexists-forbidden' ),
- array( 'fileexists-shared-forbidden' ),
- )
- );
- }
-
public function needsToken() {
return true;
}
);
}
+ $this->logFeatureUsage( 'action=watch&title' );
$title = Title::newFromText( $params['title'] );
if ( !$title || !$title->isWatchable() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
);
}
- public function getResultProperties() {
- return array(
- '' => array(
- 'title' => 'string',
- 'unwatched' => 'boolean',
- 'watched' => 'boolean',
- 'message' => 'string'
- )
- );
- }
-
public function getDescription() {
return 'Add or remove pages from/to the current user\'s watchlist.';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'notloggedin', 'info' => 'You must be logged-in to have a watchlist' ),
- array( 'invalidtitle', 'title' ),
- array( 'hookaborted' ),
- ) );
- }
-
public function getExamples() {
return array(
'api.php?action=watch&titles=Main_Page' => 'Watch the page "Main Page"',
* @file
*/
-define( 'MW_LC_VERSION', 2 );
-
/**
* Class for caching the contents of localisation files, Messages*.php
* and *.i18n.php.
* as grammatical transformation, is done by the caller.
*/
class LocalisationCache {
+ const VERSION = 2;
+
/** Configuration associative array */
private $conf;
*
* Returns true if any data from the extension array was used, false
* otherwise.
- * @param string $codeSequence
+ * @param array $codeSequence
* @param string $key
* @param mixed $value
* @param mixed $fallbackValue
# Add cache dependencies for any referenced globals
$deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
$deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
- $deps['version'] = new ConstantDependency( 'MW_LC_VERSION' );
+ $deps['version'] = new ConstantDependency( 'LocalisationCache::VERSION' );
# Add dependencies to the cache entry
$allData['deps'] = $deps;
private $readOnly = false;
public function get( $code, $key ) {
- if ( $this->writesDone && $this->dbw ) {
- $db = $this->dbw;
+ if ( $this->writesDone ) {
+ $db = wfGetDB( DB_MASTER );
} else {
$db = wfGetDB( DB_SLAVE );
}
throw new MWException( __METHOD__ . ": Invalid language \"$code\"" );
}
- // We must keep a separate connection to MySQL in order to avoid breaking
- // main transactions. However, SQLite deadlocks when using two connections.
- // @todo get this trick to work on PostgreSQL too
- if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
- $lb = wfGetLBFactory()->newMainLB();
- $this->dbw = $lb->getConnection( DB_MASTER );
- $this->dbw->clearFlag( DBO_TRX ); // auto-commit mode
- } else {
- $this->dbw = wfGetDB( DB_MASTER );
- }
+ $this->dbw = wfGetDB( DB_MASTER );
$this->currentLang = $code;
$this->batch = array();
} else {
return Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() );
}
-
- return '';
}
/**
return $r;
}
- /**
- * Generate HTML for an arrow or placeholder graphic
- * @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;
- $encUrl = htmlspecialchars( $wgStylePath . '/common/images/Arr_' . $dir . '.png' );
- $encAlt = htmlspecialchars( $alt );
- $encTitle = htmlspecialchars( $title );
-
- return "<img src=\"$encUrl\" width=\"12\" height=\"12\" alt=\"$encAlt\" title=\"$encTitle\" />";
- }
-
- /**
- * Generate HTML for a right- or left-facing arrow,
- * depending on language direction.
- * @return string HTML "<img>" tag
- */
- protected function sideArrow() {
- $dir = $this->getLanguage()->isRTL() ? 'l' : 'r';
-
- return $this->arrow( $dir, '+', $this->msg( 'rc-enhanced-expand' )->text() );
- }
-
- /**
- * Generate HTML for a down-facing arrow
- * depending on language direction.
- * @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
- */
- protected function spacerArrow() {
- return $this->arrow( '', codepointToUtf8( 0xa0 ) ); // non-breaking space
- }
-
/**
* Enhanced RC ungrouped line.
*
/**
* Parsing RC_* constants to human-readable test
* @since 1.24
- * @param int $rc_type
+ * @param int $rcType
* @return string $type
*/
public static function parseFromRCType( $rcType ) {
return $type;
}
- /**
- * No uses left in Gerrit on 2013-11-19.
- * @deprecated since 1.22
- * @param mixed $row
- * @return RecentChange
- */
- public static function newFromCurRow( $row ) {
- wfDeprecated( __METHOD__, '1.22' );
- $rc = new RecentChange;
- $rc->loadFromCurRow( $row );
- $rc->notificationtimestamp = false;
- $rc->numberofWatchingusers = false;
-
- return $rc;
- }
-
/**
* Obtain the recent change with a given rc_id value
*
}
}
- /**
- * @deprecated since 1.22, use notifyRCFeeds instead.
- */
- public function notifyRC2UDP() {
- wfDeprecated( __METHOD__, '1.22' );
- $this->notifyRCFeeds();
- }
-
- /**
- * Send some text to UDP.
- * @deprecated since 1.22
- */
- public static function sendToUDP( $line, $address = '', $prefix = '', $port = '' ) {
- global $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPPort, $wgRC2UDPPrefix;
-
- wfDeprecated( __METHOD__, '1.22' );
-
- # Assume default for standard RC case
- $address = $address ? $address : $wgRC2UDPAddress;
- $prefix = $prefix ? $prefix : $wgRC2UDPPrefix;
- $port = $port ? $port : $wgRC2UDPPort;
-
- $engine = new UDPRCFeedEngine();
- $feed = array(
- 'uri' => "udp://$address:$port/$prefix",
- 'formatter' => 'IRCColourfulRCFeedFormatter',
- 'add_interwiki_prefix' => $wgRC2UDPInterwikiPrefix,
- );
-
- $engine->send( $feed, $line );
- }
-
/**
* Notify all the feeds about the change.
* @param array $feeds Optional feeds to send to, defaults to $wgRCFeeds
return new $wgRCEngines[$scheme];
}
- /**
- * @deprecated since 1.22, moved to IRCColourfulRCFeedFormatter
- */
- public static function cleanupForIRC( $text ) {
- wfDeprecated( __METHOD__, '1.22' );
-
- return IRCColourfulRCFeedFormatter::cleanupForIRC( $text );
- }
-
/**
* Mark a given change as patrolled
*
$this->mAttribs['rc_deleted'] = $row->rc_deleted; // MUST be set
}
- /**
- * Makes a pseudo-RC entry from a cur row
- *
- * @deprecated since 1.22
- * @param mixed $row
- */
- public function loadFromCurRow( $row ) {
- wfDeprecated( __METHOD__, '1.22' );
- $this->mAttribs = array(
- 'rc_timestamp' => wfTimestamp( TS_MW, $row->rev_timestamp ),
- 'rc_user' => $row->rev_user,
- 'rc_user_text' => $row->rev_user_text,
- 'rc_namespace' => $row->page_namespace,
- 'rc_title' => $row->page_title,
- 'rc_comment' => $row->rev_comment,
- 'rc_minor' => $row->rev_minor_edit ? 1 : 0,
- 'rc_type' => $row->page_is_new ? RC_NEW : RC_EDIT,
- 'rc_source' => $row->page_is_new ? self::SRC_NEW : self::SRC_EDIT,
- 'rc_cur_id' => $row->page_id,
- 'rc_this_oldid' => $row->rev_id,
- 'rc_last_oldid' => isset( $row->rc_last_oldid ) ? $row->rc_last_oldid : 0,
- 'rc_bot' => 0,
- 'rc_ip' => '',
- 'rc_id' => $row->rc_id,
- 'rc_patrolled' => $row->rc_patrolled,
- 'rc_new' => $row->page_is_new, # obsolete
- 'rc_old_len' => $row->rc_old_len,
- 'rc_new_len' => $row->rc_new_len,
- 'rc_params' => isset( $row->rc_params ) ? $row->rc_params : '',
- 'rc_log_type' => isset( $row->rc_log_type ) ? $row->rc_log_type : null,
- 'rc_log_action' => isset( $row->rc_log_action ) ? $row->rc_log_action : null,
- 'rc_logid' => isset( $row->rc_logid ) ? $row->rc_logid : 0,
- 'rc_deleted' => $row->rc_deleted // MUST be set
- );
- }
-
/**
* Get an attribute value
*
--- /dev/null
+<?php
+/**
+ * JSON Content Model
+ *
+ * @file
+ *
+ * @author Ori Livneh <ori@wikimedia.org>
+ * @author Kunal Mehta <legoktm@gmail.com>
+ */
+
+/**
+ * Represents the content of a JSON content.
+ * @since 1.24
+ */
+class JSONContent extends TextContent {
+
+ public function __construct( $text, $modelId = CONTENT_MODEL_JSON ) {
+ parent::__construct( $text, $modelId );
+ }
+
+ /**
+ * Decodes the JSON into a PHP associative array.
+ * @return array
+ */
+ public function getJsonData() {
+ return FormatJson::decode( $this->getNativeData(), true );
+ }
+
+ /**
+ * @return bool Whether content is valid JSON.
+ */
+ public function isValid() {
+ return $this->getJsonData() !== null;
+ }
+
+ /**
+ * Pretty-print JSON
+ *
+ * @return bool|null|string
+ */
+ public function beautifyJSON() {
+ $decoded = FormatJson::decode( $this->getNativeData(), true );
+ if ( !is_array( $decoded ) ) {
+ return null;
+ }
+ return FormatJson::encode( $decoded, true );
+
+ }
+
+ /**
+ * Beautifies JSON prior to save.
+ * @param Title $title Title
+ * @param User $user User
+ * @param ParserOptions $popts
+ * @return JSONContent
+ */
+ public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
+ return new static( $this->beautifyJSON() );
+ }
+
+ /**
+ * Set the HTML and add the appropriate styles
+ *
+ *
+ * @param Title $title
+ * @param int $revId
+ * @param ParserOptions $options
+ * @param bool $generateHtml
+ * @param ParserOutput $output
+ */
+ protected function fillParserOutput( Title $title, $revId,
+ ParserOptions $options, $generateHtml, ParserOutput &$output
+ ) {
+ if ( $generateHtml ) {
+ $output->setText( $this->objectTable( $this->getJsonData() ) );
+ $output->addModuleStyles( 'mediawiki.content.json' );
+ } else {
+ $output->setText( '' );
+ }
+ }
+ /**
+ * Constructs an HTML representation of a JSON object.
+ * @param array $mapping
+ * @return string HTML
+ */
+ protected function objectTable( $mapping ) {
+ $rows = array();
+
+ foreach ( $mapping as $key => $val ) {
+ $rows[] = $this->objectRow( $key, $val );
+ }
+ return Xml::tags( 'table', array( 'class' => 'mw-json' ),
+ Xml::tags( 'tbody', array(), join( "\n", $rows ) )
+ );
+ }
+
+ /**
+ * Constructs HTML representation of a single key-value pair.
+ * @param string $key
+ * @param mixed $val
+ * @return string HTML.
+ */
+ protected function objectRow( $key, $val ) {
+ $th = Xml::elementClean( 'th', array(), $key );
+ if ( is_array( $val ) ) {
+ $td = Xml::tags( 'td', array(), self::objectTable( $val ) );
+ } else {
+ if ( is_string( $val ) ) {
+ $val = '"' . $val . '"';
+ } else {
+ $val = FormatJson::encode( $val );
+ }
+
+ $td = Xml::elementClean( 'td', array( 'class' => 'value' ), $val );
+ }
+
+ return Xml::tags( 'tr', array(), $th . $td );
+ }
+
+}
--- /dev/null
+<?php
+/**
+ * JSON Schema Content Handler
+ *
+ * @file
+ *
+ * @author Ori Livneh <ori@wikimedia.org>
+ * @author Kunal Mehta <legoktm@gmail.com>
+ */
+
+/**
+ * @since 1.24
+ */
+class JSONContentHandler extends TextContentHandler {
+
+ /**
+ * The class name of objects that should be created
+ *
+ * @var string
+ */
+ protected $contentClass = 'JSONContent';
+
+ public function __construct( $modelId = CONTENT_MODEL_JSON ) {
+ parent::__construct( $modelId, array( CONTENT_FORMAT_JSON ) );
+ }
+
+ /**
+ * Unserializes a JSONContent object.
+ *
+ * @param string $text Serialized form of the content
+ * @param null|string $format The format used for serialization
+ *
+ * @return JSONContent
+ */
+ public function unserializeContent( $text, $format = null ) {
+ $this->checkFormat( $format );
+ return new $this->contentClass( $text );
+ }
+
+ /**
+ * Creates an empty JSONContent object.
+ *
+ * @return JSONContent
+ */
+ public function makeEmptyContent() {
+ return new $this->contentClass( '' );
+ }
+
+ /**
+ * Returns the english language, because JSON is english, and should be handled as such.
+ *
+ * @param Title $title
+ * @param Content|null $content
+ *
+ * @return Language Return of wfGetLangObj( 'en' )
+ *
+ * @see ContentHandler::getPageLanguage()
+ */
+ public function getPageLanguage( Title $title, Content $content = null ) {
+ return wfGetLangObj( 'en' );
+ }
+
+ /**
+ * Returns the english language, because JSON is english, and should be handled as such.
+ *
+ * @param Title $title
+ * @param Content|null $content
+ *
+ * @return Language Return of wfGetLangObj( 'en' )
+ *
+ * @see ContentHandler::getPageLanguage()
+ */
+ public function getPageViewLanguage( Title $title, Content $content = null ) {
+ return wfGetLangObj( 'en' );
+ }
+}
$e = new Exception;
wfDebugLog( 'recursion-guard', "Recursion detected:\n" . $e->getTraceAsString() );
- global $wgLanguageCode;
- $code = ( $wgLanguageCode ) ? $wgLanguageCode : 'en';
+ $code = $this->getConfig()->get( 'LanguageCode' ) ? : 'en';
$this->lang = Language::factory( $code );
} elseif ( $this->lang === null ) {
$this->recursion = true;
- global $wgLanguageCode, $wgContLang;
+ global $wgContLang;
try {
$request = $this->getRequest();
wfRunHooks( 'UserGetLanguageObject', array( $user, &$code, $this ) );
- if ( $code === $wgLanguageCode ) {
+ if ( $code === $this->getConfig()->get( 'LanguageCode' ) ) {
$this->lang = $wgContLang;
} else {
$obj = Language::factory( $code );
$skin = null;
wfRunHooks( 'RequestContextCreateSkin', array( $this, &$skin ) );
+ $factory = SkinFactory::getDefaultInstance();
// If the hook worked try to set a skin from it
if ( $skin instanceof Skin ) {
$this->skin = $skin;
} elseif ( is_string( $skin ) ) {
- $this->skin = Skin::newFromKey( $skin );
+ // Normalize the key, just in case the hook did something weird.
+ $normalized = Skin::normalizeKey( $skin );
+ $this->skin = $factory->makeSkin( $normalized );
}
// If this is still null (the hook didn't run or didn't work)
// then go through the normal processing to load a skin
if ( $this->skin === null ) {
- global $wgHiddenPrefs;
- if ( !in_array( 'skin', $wgHiddenPrefs ) ) {
+ if ( !in_array( 'skin', $this->getConfig()->get( 'HiddenPrefs' ) ) ) {
# get the user skin
$userSkin = $this->getUser()->getOption( 'skin' );
$userSkin = $this->getRequest()->getVal( 'useskin', $userSkin );
} else {
# if we're not allowing users to override, then use the default
- global $wgDefaultSkin;
- $userSkin = $wgDefaultSkin;
+ $userSkin = $this->getConfig()->get( 'DefaultSkin' );
}
- $this->skin = Skin::newFromKey( $userSkin );
+ // Normalize the key in case the user is passing gibberish
+ // or has old preferences (bug 69566).
+ $normalized = Skin::normalizeKey( $userSkin );
+
+ // Skin::normalizeKey will also validate it, so
+ // this won't throw an exception
+ $this->skin = $factory->makeSkin( $normalized );
}
// After all that set a context on whatever skin got created
}
/**
+ * @param array $err
* @return string
*/
private function formatError( $err ) {
/**
* Begin a transaction, committing any previously open transaction
+ * @param string $fname
*/
protected function doBegin( $fname = __METHOD__ ) {
sqlsrv_begin_transaction( $this->mConn );
/**
* End a transaction
+ * @param string $fname
*/
protected function doCommit( $fname = __METHOD__ ) {
sqlsrv_commit( $this->mConn );
/**
* Rollback a transaction.
* No-op on non-transactional databases.
+ * @param string $fname
*/
protected function doRollback( $fname = __METHOD__ ) {
sqlsrv_rollback( $this->mConn );
return wfTimestamp( TS_POSTGRES, $ts );
}
- /*
+ /**
* Posted by cc[plus]php[at]c2se[dot]com on 25-Mar-2009 09:12
* to http://www.php.net/manual/en/ref.pgsql.php
*
/**
* Return aggregated value function call
+ * @param array $valuedata
+ * @param string $valuename
+ * @return array
*/
public function aggregateValue( $valuedata, $valuename = 'value' ) {
return $valuedata;
* Fields can be retrieved with $row->fieldname, with fields acting like
* member variables.
*
- * @return object
+ * @return stdClass
* @throws DBUnexpectedError Thrown if the database returns an error
*/
function fetchObject() {
$this->db->dataSeek( $this, $row );
}
- /*********************
- * Iterator functions
+ /*
+ * ======= Iterator functions =======
* Note that using these in combination with the non-iterator functions
* above may cause rows to be skipped or repeated.
*/
}
/**
- * @return int
+ * @return stdClass|array|false
*/
function current() {
if ( is_null( $this->currentRow ) ) {
}
/**
- * @return int
+ * @return stdClass
*/
function next() {
$this->pos++;
return count( $this->result );
}
+ /**
+ * @return array|bool
+ */
function fetchRow() {
if ( $this->pos < count( $this->result ) ) {
$this->currentRow = $this->result[$this->pos];
function free() {
}
- // Callers want to be able to access fields with $this->fieldName
+ /**
+ * Callers want to be able to access fields with $this->fieldName
+ * @return false|stdClass
+ */
function fetchObject() {
$this->fetchRow();
if ( $this->currentRow ) {
$this->currentRow = null;
}
+ /**
+ * @return false|stdClass
+ */
function next() {
return $this->fetchObject();
}
* Clean text for indexing. Only really suitable for indexing in databases.
* If you're using a real search engine, you'll probably want to override
* this behavior and do something nicer with the original wikitext.
+ * @param string $text
*/
public static function updateText( $text ) {
global $wgContLang;
* Get a string representation of a title suitable for
* including in a search index
*
+ * @param SearchEngine $search
* @return string A stripped-down title string ready for the search index
*/
private function indexTitle( SearchEngine $search ) {
/**
* Use specified text instead of loading from the database
+ * @param Content $oldContent
+ * @param Content $newContent
* @since 1.21
*/
public function setContent( Content $oldContent, Content $newContent ) {
/**
* Set the language in which the diff text is written
* (Defaults to page content language).
+ * @param Language|string $lang
* @since 1.19
*/
public function setTextLanguage( $lang ) {
/**
* Send a header, if we haven't already sent them. We shouldn't,
* but sometimes we might in a weird case like Export
+ * @param string $header
*/
private static function header( $header ) {
if ( !headers_sent() ) {
*/
/**
- * Shows a generic "user is not logged in" error page.
+ * Redirect a user to the login page
*
* This is essentially an ErrorPageError exception which by default uses the
* 'exception-nologin' as a title and 'exception-nologin-text' for the message.
- * @see bug 37627
- * @since 1.20
+ *
+ * @note In order for this exception to redirect, the error message passed to the
+ * constructor has to be explicitly added to LoginForm::validErrorMessages. Otherwise,
+ * the user will just be shown the message rather than redirected.
*
* @par Example:
* @code
* }
* @endcode
*
+ * @see bug 37627
+ * @since 1.20
* @ingroup Exception
*/
class UserNotLoggedIn extends ErrorPageError {
/**
+ * @note The value of the $reasonMsg parameter must be put into LoginForm::validErrorMessages
+ * if you want the user to be automatically redirected to the login form.
+ *
* @param string $reasonMsg A message key containing the reason for the error.
* Optional, default: 'exception-nologin-text'
* @param string $titleMsg A message key to set the page title.
) {
parent::__construct( $titleMsg, $reasonMsg, $params );
}
+
+ /**
+ * Redirect to Special:Userlogin if the specified message is compatible. Otherwise,
+ * show an error page as usual.
+ */
+ public function report() {
+ // If an unsupported message is used, don't try redirecting to Special:Userlogin,
+ // since the message may not be compatible.
+ if ( !in_array( $this->msg, LoginForm::$validErrorMessages ) ) {
+ parent::report();
+ }
+
+ // Message is valid. Redirec to Special:Userlogin
+
+ $context = RequestContext::getMain();
+
+ $output = $context->getOutput();
+ $query = $context->getRequest()->getValues();
+ // Title will be overridden by returnto
+ unset( $query['title'] );
+ // Redirect to Special:Userlogin
+ $output->redirect( SpecialPage::getTitleFor( 'Userlogin' )->getFullURL( array(
+ // Return to this page when the user logs in
+ 'returnto' => $context->getTitle()->getFullText(),
+ 'returntoquery' => wfArrayToCgi( $query ),
+ 'warning' => $this->msg,
+ ) ) );
+
+ $output->output();
+ }
}
$ext = self::extensionFromPath( $this->path );
}
- # mime type according to file contents
+ # MIME type according to file contents
$info['file-mime'] = $this->getMimeType();
- # logical mime type
+ # logical MIME type
$info['mime'] = $magic->improveTypeFromExtension( $info['file-mime'], $ext );
list( $info['major_mime'], $info['minor_mime'] ) = File::splitMime( $info['mime'] );
/**
* Check if the backend medium supports a field of extra features
*
- * @return int Bitfield of FileBackend::ATTR_* flags
+ * @param int $bitfield Bitfield of FileBackend::ATTR_* flags
* @return bool
* @since 1.23
*/
* read a file into a string or several files into a map of path names to strings
* download a file or set of files to a temporary file (on a mounted file system)
* get the SHA1 hash of a file
-* get various properties of a file (stat information, content time, mime information, ...)
+* get various properties of a file (stat information, content time, MIME information, ...)
On directories:
* get a list of files directly under a directory
* Sanitize and filter the custom headers from a $params array.
* We only allow certain Content- and X-Content- headers.
*
- * @param array $headers
+ * @param array $params
* @return array Sanitized value of 'headers' field in $params
*/
protected function sanitizeHdrs( array $params ) {
*
* STUB
* @param string $hash SHA-1 hash
- * @return array
+ * @return File[]
*/
public function findBySha1( $hash ) {
return array();
} elseif ( is_array( $triple[2] ) && isset( $triple[2]['headers'] ) ) {
$headers = $triple[2]['headers'];
}
+ // @fixme: $headers might not be defined
$operations[] = array(
'op' => FileBackend::isStoragePath( $src ) ? 'copy' : 'store',
'src' => $src,
* Delete files in the deleted directory if they are not referenced in the filearchive table
*
* STUB
+ * @param array $storageKeys
*/
public function cleanupDeletedBatch( array $storageKeys ) {
$this->assertWritableRepo();
/**
* @throws MWException
- * @param array $row
+ * @param stdClass $row
* @return LocalFile
*/
function newFileFromRow( $row ) {
$hashPath = $this->getDeletedHashPath( $key );
$path = "$root/$hashPath$key";
$dbw->begin( __METHOD__ );
- // Check for usage in deleted/hidden files and pre-emptively
+ // Check for usage in deleted/hidden files and preemptively
// lock the key to avoid any future use until we are finished.
$deleted = $this->deletedFileHasKey( $key, 'lock' );
$hidden = $this->hiddenFileHasKey( $key, 'lock' );
* Checks if there is a redirect named as $title
*
* @param Title $title Title of file
- * @return bool
+ * @return bool|Title
*/
function checkRedirect( Title $title ) {
global $wgMemc;
* SHA-1 content hash.
*
* @param string $hash A sha1 hash to look for
- * @return array
+ * @return File[]
*/
function findBySha1( $hash ) {
$dbr = $this->getSlaveDB();
/**
* Search repositories for many files at once.
*
- * @param array $items An array of titles, or an array of findFile() options with
+ * @param array $inputItems An array of titles, or an array of findFile() options with
* the "title" option giving the title. Example:
*
* $findItem = array( 'title' => $title, 'private' => true );
* The search title uses the input titles; the other is the final post-redirect title.
* All titles are returned as string DB keys and the inner array is associative.
* @return array Map of (file name => File objects) for matches
- *
- * @param array $inputItems
- * @param int $flags
- * @return array
*/
function findFiles( array $inputItems, $flags = 0 ) {
if ( !$this->reposInitialised ) {
/**
* Interface for FileRepo::checkRedirect()
* @param Title $title
- * @return bool
+ * @return bool|Title
*/
function checkRedirect( Title $title ) {
if ( !$this->reposInitialised ) {
* Find all instances of files with this key
*
* @param string $hash Base 36 SHA-1 hash
- * @return array Array of File objects
+ * @return File[]
*/
function findBySha1( $hash ) {
if ( !$this->reposInitialised ) {
/**
* Create a repo class based on an info structure
+ * @param array $info
*/
protected function newRepo( $info ) {
$class = $info['class'];
}
/**
- * Returns the mime type of the file.
+ * Returns the MIME type of the file.
* @return string
*/
public function getMimeType() {
}
/**
- * Returns the mime type of the file.
+ * Returns the MIME type of the file.
* Overridden by LocalFile, UnregisteredLocalFile
* STUB
*
/**
* Creates a temp FS file with the same extension and the thumbnail
* @param string $thumbPath Thumbnail path
- * @returns TempFSFile
+ * @return TempFSFile
*/
protected function makeTransformTmpFile( $thumbPath ) {
$thumbExt = FileBackend::extensionFromPath( $thumbPath );
* Hook into transform() to allow migration of thumbnail files
* STUB
* Overridden by LocalFile
+ * @param string $thumbName
*/
function migrateThumbFile( $thumbName ) {
}
* @note Use getWidth()/getHeight() instead of this method unless you have a
* a good reason. This method skips all caches.
*
- * @param string $fileName The path to the file (e.g. From getLocalPathRef() )
+ * @param string $filePath The path to the file (e.g. From getLocalPathRef() )
* @return array The width, followed by height, with optionally more things after
*/
function getImageSize( $filePath ) {
/** @var int Result of the query for the file's history (nextHistoryLine) */
private $historyRes;
- /** @var string Major mime type */
+ /** @var string Major MIME type */
private $major_mime;
- /** @var string Minor mime type */
+ /** @var string Minor MIME type */
private $minor_mime;
/** @var string Upload timestamp */
/**
* Load file metadata from the DB
+ * @param int $flags
*/
function loadFromDB( $flags = 0 ) {
# Polymorphic function name to distinguish foreign and local fetches
}
/**
- * Returns the mime type of the file.
+ * Returns the MIME type of the file.
* @return string
*/
function getMimeType() {
/**
* Delete cached transformed files for the current version only.
+ * @param array $options
*/
function purgeThumbnails( $options = array() ) {
global $wgUseSquid;
/**
* Add a file by ID
+ * @param int $fa_id
*/
function addId( $fa_id ) {
$this->ids[] = $fa_id;
/**
* Add a whole lot of files by ID
+ * @param int[] $ids
*/
function addIds( $ids ) {
$this->ids = array_merge( $this->ids, $ids );
/**
* Cleanup a partially moved array of triplets by deleting the target
* files. Called if something went wrong half way.
+ * @param array $triplets
*/
function cleanupTarget( $triplets ) {
// Create dest pairs from the triplets
/**
* Cleanup a fully moved array of triplets by deleting the source files.
* Called at the end of the move process if everything else went ok.
+ * @param array $triplets
*/
function cleanupSource( $triplets ) {
// Create source file names from the triplets
*
* You should not call this directly, but instead use
* ImageGalleryBase::factory().
+ * @param string $mode
*/
function __construct( $mode = 'traditional' ) {
global $wgGalleryOptions;
/**
* Set bad image flag
+ * @param bool $flag
*/
function setHideBadImages( $flag = true ) {
$this->mHideBadImages = $flag;
/**
* Do not support per-row on packed. It really doesn't work
* since the images have varying widths.
+ * @param int $num
*/
public function setPerRow( $num ) {
return;
),
Xml::check( $this->mName, $value, $attr ) . $this->mLabel );
} else {
- return Xml::check( $this->mName, $value, $attr )
- . ' '
- . Html::rawElement( 'label', array( 'for' => $this->mID ), $this->mLabel );
+ return Xml::checkLabel( $this->mLabel, $this->mName, $this->mID, $value, $attr );
}
}
* @return string
*/
function getInputHTML( $value ) {
+ global $wgUseMediaWikiUIEverywhere;
+
$html = '';
$tableContents = '';
$rows = $this->mParams['rows'];
foreach ( $columns as $columnTag ) {
$thisTag = "$columnTag-$rowTag";
// Construct the checkbox
+ $thisId = "{$this->mID}-$thisTag";
$thisAttribs = array(
- 'id' => "{$this->mID}-$thisTag",
+ 'id' => $thisId,
'value' => $thisTag,
);
$checked = in_array( $thisTag, (array)$value, true );
$checked = true;
$thisAttribs['disabled'] = 1;
}
+ $chkBox = Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs );
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ $chkBox = Html::openElement( 'div', array( 'class' => 'mw-ui-checkbox' ) ) .
+ $chkBox .
+ Html::element( 'label', array( 'for' => $thisId ) ) .
+ Html::closeElement( 'div' );
+ }
$rowContents .= Html::rawElement(
'td',
array(),
- Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs )
+ $chkBox
);
}
$tableContents .= Html::rawElement( 'tr', array(), "\n$rowContents\n" );
}
/**
+ * @param string $value
+ * @return string
* @since 1.20
*/
public function getDiv( $value ) {
}
/**
+ * @param string $value
+ * @return string
* @since 1.20
*/
public function getRaw( $value ) {
'select' => 'HTMLSelectField',
'radio' => 'HTMLRadioField',
'multiselect' => 'HTMLMultiSelectField',
+ 'limitselect' => 'HTMLSelectLimitField',
'check' => 'HTMLCheckField',
'toggle' => 'HTMLCheckField',
'int' => 'HTMLIntField',
* @return string
*/
public function getDisplayFormat() {
- return $this->displayFormat;
+ global $wgHTMLFormAllowTableFormat;
+ $format = $this->displayFormat;
+ if ( !$wgHTMLFormAllowTableFormat && $format === 'table' ) {
+ $format = 'div';
+ }
+ return $format;
}
/**
* @return string HTML.
*/
function getButtons() {
+ global $wgUseMediaWikiUIEverywhere;
$buttons = '';
if ( $this->mShowSubmit ) {
$attribs['class'] = array( 'mw-htmlform-submit' );
+ if ( $this->isVForm() || $wgUseMediaWikiUIEverywhere ) {
+ array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-constructive' );
+ }
+
if ( $this->isVForm() ) {
// mw-ui-block is necessary because the buttons aren't necessarily in an
// immediate child div of the vform.
// @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'
);
}
$attrs['id'] = $button['id'];
}
+ if ( $wgUseMediaWikiUIEverywhere ) {
+ if ( isset( $attrs['class' ] ) ) {
+ $attrs['class'] .= ' mw-ui-button';
+ } else {
+ $attrs['class'] = 'mw-ui-button';
+ }
+ }
+
$buttons .= Html::element( 'input', $attrs ) . "\n";
}
// Close enough to a div.
$getFieldHtmlMethod = 'getDiv';
break;
+ case 'div':
+ $getFieldHtmlMethod = 'getDiv';
+ break;
default:
$getFieldHtmlMethod = 'get' . ucfirst( $displayFormat );
}
}
/**
+ * @param string $value
+ * @return string
* @since 1.20
*/
public function getDiv( $value ) {
}
/**
+ * @param string $value
+ * @return string
* @since 1.20
*/
public function getRaw( $value ) {
}
/**
+ * @param string $value
+ * @return string
* @since 1.20
*/
public function getDiv( $value ) {
}
/**
+ * @param string $value
+ * @return string
* @since 1.20
*/
public function getRaw( $value ) {
} else {
$thisAttribs = array( 'id' => "{$this->mID}-$info", 'value' => $info );
+ // @todo: Make this use checkLabel for consistency purposes
$checkbox = Xml::check(
$this->mName . '[]',
in_array( $info, $value, true ),
--- /dev/null
+<?php
+
+/**
+ * A limit dropdown, which accepts any valid number
+ */
+class HTMLSelectLimitField extends HTMLSelectField {
+ /**
+ * Basically don't do any validation. If it's a number that's fine. Also,
+ * add it to the list if it's not there already
+ *
+ * @param string $value
+ * @param array $alldata
+ * @return bool
+ */
+ function validate( $value, $alldata ) {
+ if ( $value == '' ) {
+ return true;
+ }
+
+ // Let folks pick an explicit limit not from our list, as long as it's a real numbr.
+ if ( !in_array( $value, $this->mParams['options'] )
+ && $value == intval( $value )
+ && $value > 0
+ ) {
+ // This adds the explicitly requested limit value to the drop-down,
+ // then makes sure it's sorted correctly so when we output the list
+ // later, the custom option doesn't just show up last.
+ $this->mParams['options'][$this->mParent->getLanguage()->formatNum( $value )] =
+ intval( $value );
+ asort( $this->mParams['options'] );
+ }
+
+ return true;
+ }
+}
function getInputHTML( $value ) {
$attribs = array(
'id' => $this->mID,
- 'name' => $this->mName,
'cols' => $this->getCols(),
'rows' => $this->getRows(),
) + $this->getTooltipAndAccessKey();
);
$attribs += $this->getAttributes( $allowedParams );
-
- return Html::element( 'textarea', $attribs, $value );
+ return Html::textarea( $this->mName, $value, $attribs );
}
}
# Implement tiny differences between some field variants
# here, rather than creating a new class for each one which
# is essentially just a clone of this one.
+ $type = 'text';
if ( isset( $this->mParams['type'] ) ) {
switch ( $this->mParams['type'] ) {
case 'int':
- $attribs['type'] = 'number';
+ $type = 'number';
break;
case 'float':
- $attribs['type'] = 'number';
+ $type = 'number';
$attribs['step'] = 'any';
break;
# Pass through
case 'password':
case 'file':
case 'url':
- $attribs['type'] = $this->mParams['type'];
+ $type = $this->mParams['type'];
break;
}
}
-
- return Html::element( 'input', $attribs );
+ return Html::input( $this->mName, $value, $type, $attribs );
}
}
* @param string $tableName The table name
* @param string $oldIndexName The old index name
* @param string $newIndexName The new index name
+ * @param string $sqlPath The path to the SQL change path
* @param bool $skipBothIndexExistWarning Whether to warn if both the old
* and the new indexes exist. [facultative; by default, false]
- * @param string $sqlPath The path to the SQL change path
*/
public function renameExtensionIndex( $tableName, $oldIndexName, $newIndexName,
$sqlPath, $skipBothIndexExistWarning = false
// registration out of the global scope and into a real format.
// @see https://bugzilla.wikimedia.org/67440
global $wgAutoloadClasses;
+ $wgAutoloadClasses = array();
wfSuppressWarnings();
$_lsExists = file_exists( "$IP/LocalSettings.php" );
/**
* Try to see if a given fulltext catalog exists
* We assume we already have the appropriate database selected
- * @param string $schemaName Catalog name to check
+ * @param string $catalogName Catalog name to check
* @return bool
*/
private function catalogExists( $catalogName ) {
protected function openConnectionWithParams( $user, $password, $dbName, $schema ) {
$status = Status::newGood();
try {
- $db = Database::factory( 'postgres', array(
+ $db = DatabaseBase::factory( 'postgres', array(
'host' => $this->getVar( 'wgDBserver' ),
'user' => $user,
'password' => $password,
public function getCSS() {
// Horrible, horrible hack: the installer is currently hardcoded to use the Vector skin, so load
// it here. Include instead of require, as this will work without it, it will just look bad.
+ // We need the 'global' statement for $wgResourceModules because the Vector skin adds the
+ // definitions for its RL modules there that we use implicitly below.
+ // @codingStandardsIgnoreStart
+ global $wgResourceModules; // This is NOT UNUSED!
+ // @codingStandardsIgnoreEnd
global $wgStyleDirectory;
include_once "$wgStyleDirectory/Vector/Vector.php";
--- /dev/null
+{
+ "@metadata": {
+ "authors": [
+ "Gazimagomedov"
+ ]
+ },
+ "config-page-options": "Рекъезаби"
+}
"config-extensions-help": "Пашырэньні пададзеныя вышэй, былі знойдзеныя ў Вашай дырэкторыі <code>./extensions</code>.\n\nЯны могуць патрабаваць дадатковых наладаў, але іх можна ўключыць зараз",
"config-skins": "Тэмы афармленьня",
"config-skins-help": "Пералічаныя вышэй тэмы афармленьня знойдзеныя ў вашай тэчцы <code>./skins</code>. Вы мусіце ўключыць як мінімум адну, а таксама абраць тэму па змоўчаньні.",
+ "config-skins-use-as-default": "Выкарыстоўваць па змоўчаньні гэтую тэму афармленьня",
"config-install-alreadydone": "'''Папярэджаньне:''' здаецца, што Вы ўжо ўсталёўвалі MediaWiki і спрабуеце зрабіць гэтай зноў.\nКалі ласка, перайдзіце на наступную старонку.",
"config-install-begin": "Пасьля націску кнопкі «{{int:config-continue}}» пачнецца ўсталяваньне MediaWiki.\nКалі Вы жадаеце што-небудзь зьмяніць, націсьніце кнопку «{{int:config-back}}».",
"config-install-step-done": "зроблена",
"Filipinayzd"
]
},
+ "config-title": "Pabutang ka MediaWiki $1",
"config-information": "Impormasyon",
"config-your-language": "A kanimong sarita:",
"config-wiki-language": "Sarita ka Wiki:",
"config-db-host-oracle": "Database ka TNS:",
"config-db-wiki-settings": "Mibdiron adin wiki",
"config-db-name": "Ngaran ka database:",
+ "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-db-port": "Port ka database:",
"config-db-schema": "Skema para sa MediaWiki:",
"config-sqlite-dir": "Direktoryo ka data sa SQLite:",
"config-oracle-def-ts": "Dating tablescape:",
"config-oracle-temp-ts": "Temporaryong tablescape:",
+ "config-type-mysql": "MySQL (o compatible)",
"config-type-mssql": "Microsoft SQL Server",
"config-header-mysql": "MySQL settings",
"config-header-postgres": "PostgreSQL settings",
"config-header-mssql": "Microsoft SQL Server settings",
"config-mysql-innodb": "InnoDB",
"config-mysql-myisam": "MyISAM",
+ "config-mysql-binary": "Binary",
"config-mysql-utf8": "UTF-8",
+ "config-site-name": "Ngaran ka wiki",
+ "config-site-name-blank": "Ibutang a ngaran ka site.",
+ "config-project-namespace": "Bibutangan ka proyekto:",
+ "config-ns-generic": "Proyekto",
"config-ns-other-default": "MyWiki",
"config-admin-password": "Password:",
"config-admin-password-confirm": "Password ulit:",
"config-admin-email": "Email address:",
"config-profile-wiki": "Bukas na wiki",
"config-profile-private": "Pribadong wiki",
+ "config-license-pd": "Pampublikong Domain",
+ "config-email-sender": "Pabalik na email adres:",
"config-logo": "URL ko logo:",
"config-cc-again": "Pumili dayday...",
"config-install-step-done": "tapus na",
+ "config-install-user-alreadyexists": "Agko na ka user na \"$1\"",
+ "config-install-user-create-failed": "Sala a ginigibong user na \"$1\": $2",
"config-help": "tabang"
}
"config-env-php": "El PHP $1 està instal·lat.",
"config-memory-raised": "El <code>memory_limit</code> del PHP és $1 i s'ha aixecat a $2.",
"config-memory-bad": "<strong>Avís:</strong> El <code>memory_limit</code> del PHP és $1.\nAixò és probablement massa baix.\nLa instal·lació pot fallar!",
+ "config-apc": "L’[http://www.php.net/apc APC] està instal·lat",
"config-diff3-bad": "No s'ha trobat el GNU diff3.",
"config-git": "S'ha trobat el programari de control de versions Git: <code>$1</code>.",
"config-git-bad": "No s'ha trobat el programari de control de versions Git.",
"config-mysql-engine": "Motor d'emmagatzemament:",
"config-mysql-innodb": "InnoDB",
"config-mysql-myisam": "MyISAM",
+ "config-mysql-charset": "Joc de caràcters de la base de dades:",
"config-mysql-binary": "Binari",
"config-mysql-utf8": "UTF-8",
"config-mssql-auth": "Tipus d'autenticació:",
+ "config-mssql-sqlauth": "Autenticació de l’SQL Server",
+ "config-mssql-windowsauth": "Autenticació del Windows",
"config-site-name": "Nom del wiki:",
"config-site-name-blank": "Introduïu un nom per al lloc.",
"config-project-namespace": "Espai de noms del projecte:",
"config-cache-none": "Sense encauament (no se suprimeix cap funcionalitat, però la velocitat pot veure's afectada en els llocs wiki més grans)",
"config-memcached-servers": "Servidors de Memcache:",
"config-extensions": "Extensions",
+ "config-skins": "Aparences",
"config-install-step-done": "fet",
"config-install-step-failed": "ha fallat",
"config-install-extensions": "S'estan incloent les extensions",
"authors": [
"Peter Alberti",
"Christian List",
- "Tjernobyl"
+ "Tjernobyl",
+ "Thomsen"
]
},
"config-page-language": "Sprog",
"config-page-name": "Navn",
"config-page-options": "Indstillinger",
"config-page-install": "Installer",
+ "config-page-complete": "Færdig!",
+ "config-page-restart": "Genstarte installation",
+ "config-page-readme": "Læs mig",
+ "config-page-copying": "Kopiering",
+ "config-page-upgradedoc": "Opgraderer",
+ "config-page-existingwiki": "Eksisterende wiki",
+ "config-help-restart": "Vil du rydde alle gemte data, du har indtastet og genstarte installationen?",
+ "config-restart": "Ja, genstart den",
+ "config-env-php": "PHP $1 er installeret.",
+ "config-db-type": "Databasetype:",
+ "config-db-host": "Databasevært:",
+ "config-db-name": "Databasenavn:",
+ "config-mysql-old": "MySQL $1 eller nyere kræves. Du har $2.",
"config-header-mysql": "MySQL-indstillinger",
"config-header-postgres": "PostgreSQL-indstillinger",
"config-header-sqlite": "SQLite-indstillinger",
"config-localsettings-key": "Pihi hoʻopuka hou:",
"config-localsettings-badkey": "Hewa ka pihi.",
"config-upgrade-key-missing": "Loaʻa he hoʻonohona mai mua o MīkiaWiki mai mua.\nNo ka hoʻopuka hou ʻana o kēia hoʻonohona, e ʻoluʻolu, e kau i kēia laina lalo ma lalo o kāu <code>LocalSettings.php</code>:\n\n$1",
+ "config-localsettings-incomplete": "ʻAʻole piha pono kēia <code>LocalSettings.php</code> nei.\nʻAʻole hoʻopaʻa ʻia ka hualau $1.\nE hoʻololi iā <code>LocalSettings.php</code> i hiki ke hoʻopaʻa i ka hualau, a laila e kaomi iā \"{{int:Config-continue}}\" ke ʻoluʻolu.",
+ "config-localsettings-connection-error": "Ua loaʻa i ke kuʻia i ka hoʻokuʻi ʻana i ke hōkeo ʻikepili ma muli o ka hana ʻana o ka makemake e kākau ʻia ma <code>LocalSettings.php</code>. E ʻoluʻolu e hoʻoponopono i kēia makemake a hana hou.\n\n$1",
+ "config-session-error": "Kuʻia ka wā hoʻohana hoʻomaka: $1",
+ "config-session-expired": "Ua pau kāu ʻikepili wā hoʻohana.\nOla ka wā hoʻohana no ka manawa o $1.\nHiki iā ʻoe ke hoʻonui i kēia wā ma o ka hoʻololi ʻana o <code>session.gc_maxlifetime</code> ma php.ini.\nE hana hou i ka hana hoʻoukana.",
+ "config-no-session": "Ua nalo kāu ʻikepili wā hoʻohana!\nE hōʻoia i kāu php.ini a me ka hoʻopaʻa ʻana o <code>session.save_path</code> i ke kumu kūpono.",
"config-your-language": "Kāu ʻōlelo:",
"config-your-language-help": "E koho i kekahi ʻōlelo no ka hoʻohana ʻana ma loko o ka hana hoʻonohona.",
"config-wiki-language": "ʻŌlelo Wiki:",
"config-page-copying": "Kope",
"config-page-upgradedoc": "Ka Hoʻopuka ʻana",
"config-page-existingwiki": "Ka wiki nei",
+ "config-help-restart": "He ʻoiaʻiʻo kāu makemake no ka holoi pono o nā ʻikepili mālamalia a pau āu i kikokiko a hoʻomaka hou i ka hana hoʻouka?",
"config-restart": "ʻAe, e hōʻano hou",
"config-db-type": "ʻAno hōkeo ʻikepili:",
"config-db-name": "Inoa hōkeo ʻikepili",
"Yanajin66",
"青子守歌",
"아라",
- "Shield-9"
+ "Shield-9",
+ "Takot"
]
},
"config-desc": "MediaWiki のインストーラー",
"config-no-db": "適切なデータベース ドライバーが見つかりませんでした! PHP にデータベース ドライバーをインストールする必要があります。\n以下の種類のデータベースに対応しています: $1\n\nPHP を自分でコンパイルした場合は、例えば <code>./configure --with-mysqli</code> を実行して、データベース クライアントを使用できるように再設定してください。\nDebian または Ubuntu のパッケージから PHP をインストールした場合は、モジュール (例: <code>php5-mysql</code>) もインストールする必要があります。",
"config-outdated-sqlite": "<strong>警告:</strong> あなたは SQLite $1 を使用していますが、最低限必要なバージョン $2 より古いバージョンです。SQLite は利用できません。",
"config-no-fts3": "<strong>警告:</strong> SQLite は [//sqlite.org/fts3.html FTS3] モジュールなしでコンパイルされており、このバックエンドでは検索機能は利用できなくなります。",
+ "config-register-globals-error": "<strong>エラー: PHPの <code>[http://php.net/register_globals register_globals]</code> オプションが有効になっています。\nインストールを進めるには無効にしなければなりません。</strong>\nやり方については[https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] をご覧ください。",
+ "config-magic-quotes-gpc": "<strong>致命的なエラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc] が有効になっています!</strong>\nこのオプションは予期せずしてデータ入力を破壊します。\nこのオプションを無効にするまで MediaWiki はインストールしたり使用したりはできません。",
"config-magic-quotes-runtime": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] が動作しています!</strong>\nこのオプションは、予期せずデータ入力を破壊します。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
"config-magic-quotes-sybase": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] が動作しています!</strong>\nこのオプションは、予期せずデータ入力を破壊します。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
"config-mbstring": "<strong>致命的エラー: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] が動作しています!</strong>\nこのオプションは、エラーを引き起こし、予期せずデータを破壊するおそれがあります。\nこのオプションを無効化しない限り、MediaWiki のインストールや使用はできません。",
"config-memory-raised": "PHPの<code>memory_limit</code>は$1で、$2に引き上げられました。",
"config-memory-bad": "<strong>警告:</strong> PHPの<code>memory_limit</code>に$1に設定されています。\nこの値はおそらく小さすぎます。\nインストールが失敗するおそれがあります!",
"config-ctype": "<strong>致命的エラー:</strong> PHP は [http://www.php.net/manual/en/ctype.installation.php Ctype 拡張モジュール]のサポート付きでコンパイルされている必要があります。",
+ "config-iconv": "<strong>致命的なエラー:</strong> PHPは[http://www.php.net/manual/en/iconv.installation.php iconv 拡張機能]のサポートを有効にしてコンパイルされている必要があります。",
"config-json": "<strong>致命的エラー:</strong> PHP は JSON サポートなしでコンパイルされています。\nPHP に JSON 拡張モジュールまたは [http://pecl.php.net/package/jsonc PECL jsonc] 拡張モジュールをインストールしてから、MediaWiki をインストールしてください。\n* Red Hat Enterprise Linux (CentOS) 5 および 6には PHP の拡張機能が含まれているため、<code>/etc/php.ini</code> または <code>/etc/php.d/json.ini</code> から有効にしてください。\n* 2013年5月以降にリリースされた一部の Linux ディストリビューションでは、PHP 拡張モジュールの代わりに、<code>php5-json</code> または <code>php-pecl-jsonc</code> として PECL が同梱されています。",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] がインストール済み",
"config-apc": "[http://www.php.net/apc APC] がインストール済み",
"config-using-server": "サーバー名「<nowiki>$1</nowiki>」を使用しています。",
"config-using-uri": "サーバー URL「<nowiki>$1$2</nowiki>」を使用しています。",
"config-uploads-not-safe": "<strong>警告:</strong> アップロードの既定ディレクトリ <code>$1</code> に、任意のスクリプト実行に関する脆弱性があります。\nMediaWiki はアップロードされたファイルのセキュリティ上の脅威を確認しますが、アップロードを有効化する前に、[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security このセキュリティ上の脆弱性を解決する]ことを強く推奨します。",
+ "config-no-cli-uploads-check": "<strong>警告:</strong> アップロード用のデフォルトディレクトリ (<code>$1</code>) が、CLIでのインストール中に任意のスクリプト実行の脆弱性チェックを受けていません。",
"config-brokenlibxml": "このシステムで使われているPHPとlibxml2のバージョンのこの組み合わせにはバグがあります。具体的には、MediaWikiやその他のウェブアプリケーションでhiddenデータが破損する可能性があります。\nlibxml2を2.7.3以降のバージョンにアップグレードしてください([//bugs.php.net/bug.php?id=45996 PHPでのバグ情報])。\nインストールを終了します。",
"config-suhosin-max-value-length": "Suhosin がインストールされており、GET パラメーターの <code>length</code> を $1 バイトに制限しています。\nMediaWiki の ResourceLoader コンポーネントはこの制限を回避しますが、パフォーマンスは低下します。\n可能な限り、<code>php.ini</code> で <code>suhosin.get.max_value_length</code> を 1024 以上に設定し、同じ値を <code>LocalSettings.php</code> 内で <code>$wgResourceLoaderMaxQueryLength</code> に設定してください。",
"config-db-type": "データベースの種類:",
"config-db-name": "データベース名:",
"config-db-name-help": "このウィキを識別する名前を入力してください。\n空白を含めることはできません。\n\n共有ウェブホストを利用している場合、ホスティングプロバイダーが特定の使用可能なデータベース名を提供するか、あるいは管理パネルからデータベースを作成できるようにしているでしょう。",
"config-db-name-oracle": "データベースのスキーマ:",
+ "config-db-account-oracle-warn": "バックエンドのデータベースとして Oracle をインストールする場合、3つのシナリオが考えられます。\n\nデータベース用のアカウントをインストールのプロセス途中で作成したい場合、インストールに使うデータベース用のアカウントしては SYSDBAロール付きのアカウントを指定し、ウェブアクセス用アカウントには必要なログイン情報を指定してください。あるいは、ウェブアクセス用のアカウントを手動で作成して、そのアカウント(スキーマオブジェクトの作成のパーミッションを要求する場合)だけを使うか、二つの異なるアカウントを用意して一つは特権を付与できるもの、もう一つをウェブアクセス用の制限アカウントとしてください。\n\n要求された特権でアカウントを作成するスクリプトは、このインストール環境では、\"maintenance/oracle/\" にあります。制限アカウントを使用することは、デフォルトアカウントでのすべてのメンテナンス特権を無効にすることにご注意ください。",
"config-db-install-account": "インストールで使用する利用者アカウント",
"config-db-username": "データベースのユーザー名:",
"config-db-password": "データベースのパスワード:",
"config-type-postgres": "PostgreSQL",
"config-type-sqlite": "SQLite",
"config-type-oracle": "Oracle",
+ "config-type-mssql": "マイクロソフト SQL Server",
"config-support-info": "MediaWiki は以下のデータベース システムに対応しています:\n\n$1\n\n使用しようとしているデータベース システムが下記の一覧にない場合は、上記リンク先の手順に従ってインストールしてください。",
"config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL]はMediaWikiの主要な対象であり、最もよくサポートされています。MediaWikiはMySQLと互換性のある[{{int:version-db-mariadb-url}} MariaDB]、[{{int:version-db-percona-url}} Percona Server]でも動きます。 ([http://www.php.net/manual/ja/mysqli.installation.php PHPをMySQLサポート付きでコンパイルする方法])",
"config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] は、MySQLの代替として人気があるオープンソースのデータベースシステムです。細部の未解消バグがある場合があるため、プロダクション環境での使用は推奨されません。 ([http://www.php.net/manual/en/pgsql.installation.php PHPをPostgreSQLサポート付きでコンパイルする方法])",
"config-invalid-db-prefix": "「$1」は無効なデータベース接頭辞です。\n半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_)、ハイフン (-) のみを使用してください。",
"config-connection-error": "$1。\n\n以下のホスト名、ユーザー名、パスワードを確認してから再度試してください。",
"config-invalid-schema": "「$1」は MediaWiki のスキーマとして無効です。\n半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_) のみを使用してください。",
+ "config-db-sys-create-oracle": "インストーラーは、新規アカウント作成にはSYSDBAアカウントの利用のみをサポートしています。",
"config-db-sys-user-exists-oracle": "利用者アカウント「$1」は既に存在します。SYSDBA は新しいアカウントの作成のみに使用できます!",
"config-postgres-old": "PostgreSQL $1 以降が必要です。ご使用中の PostgreSQL は $2 です。",
"config-mssql-old": "Microsoft SQL Server $1 以降が必要です。ご使用中の Microsoft SQL Server は $2 です。",
"config-mysql-engine": "ストレージ エンジン:",
"config-mysql-innodb": "InnoDB",
"config-mysql-myisam": "MyISAM",
+ "config-mysql-myisam-dep": "<strong>警告:</strong> MySQLのストレージエンジンとして MyISAM を選択していますが、これをMediaWikiで利用するのは推奨されていません。その理由は: \n* テーブルロックによる並列性をほとんどサポートしていない\n* 他のエンジンに比べて壊れやすい\n* MediaWiki のコードベースは必ずしも MyISAM を本来あるべきほどには扱っていない\n\nあなたがインストールした MySQL が InnoDB をサポートしている場合、代わりにそちらをお使いになることを強くお勧めします。\nあなたがインストールした MySQL が InnoDB をサポートしていない場合、アップグレードした方がいいでしょう。",
+ "config-mysql-only-myisam-dep": "<strong>警告:</strong> MyISAM がこのマシンの MySQL の唯一のストレージエンジンですが、これをMediaWikiで利用するのは推奨されていません。その理由は: \n* テーブルロックによる並列性をほとんどサポートしていない\n* 他のエンジンに比べて壊れやすい\n* MediaWiki のコードベースは必ずしも MyISAM を本来あるべきほどには扱っていない\n\nあなたがインストールした MySQL が InnoDB をサポートしていない場合、アップグレードした方がいいでしょう。",
"config-mysql-engine-help": "<strong>InnoDB</strong>は、並行処理のサポートに優れているので、ほとんどの場合において最良の選択肢です。\n\n<strong>MyISAM</strong>は、利用者が1人の場合、あるいは読み込み専用でインストールする場合に、より処理が早くなるでしょう。\nただし、MyISAMのデータベースは、InnoDBより高頻度で破損する傾向があります。",
"config-mysql-charset": "データベースの文字セット:",
"config-mysql-binary": "バイナリ",
"config-ns-other-default": "マイウィキ",
"config-project-namespace-help": "ウィキペディアの例に従い、多くのウィキは、コンテンツのページとは分離したポリシーページを「'''プロジェクトの名前空間'''」に持っています。\nこの名前空間内のページのページ名はすべて特定の接頭辞で始まります。それをここで指定できます。\n通常、この接頭辞はウィキ名に基づきますが、「#」や「:」のような区切り文字を含めることはできません。",
"config-ns-invalid": "指定した名前空間「<nowiki>$1</nowiki>」は無効です。\n別のプロジェクト名前空間を指定してください。",
+ "config-ns-conflict": "指定された名前空間「\"<nowiki>$1</nowiki>\" 」は、MediaWikiのデフォルト名前空間と衝突しています。\n他のプロジェクト名前空間を指定してください。",
"config-admin-box": "管理アカウント",
"config-admin-name": "利用者名:",
"config-admin-password": "パスワード:",
"config-admin-error-bademail": "無効なメールアドレスを入力しました。",
"config-subscribe": "[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce リリース告知のメーリングリスト]を購読する。",
"config-subscribe-help": "これは、リリースの告知 (重要なセキュリティに関する案内を含む) に使用される、流量が少ないメーリングリストです。\nこのメーリングリストを購読して、新しいバージョンが出た場合にMediaWikiを更新してください。",
+ "config-subscribe-noemail": "メールアドレスなしでリリースアナウンスのメーリングリストを購読しようとしています。\nメーリングリストを購読する場合にはメールアドレスを入力してください。",
"config-almost-done": "これでほぼ終わりました!\n残りの設定を飛ばして、ウィキを今すぐインストールできます。",
"config-optional-continue": "私にもっと質問してください。",
"config-optional-skip": "もう飽きてしまったので、とにかくウィキをインストールしてください。",
"config-cache-memcached": "memcached を使用 (追加の設定が必要)",
"config-memcached-servers": "memcached サーバー:",
"config-memcached-help": "Memcachedを使用するIPアドレスの一覧。\nカンマ区切りで、利用する特定のポートの指定が必要です。例:\n127.0.0.1:11211\n192.168.1.25:1234",
+ "config-memcache-needservers": "キャッシュタイプに Memcached を選択しましたが、サーバーを指定していません。",
+ "config-memcache-badip": "Memcached用に無効な IPアドレス ($1) を入力しています。",
"config-memcache-noport": "Memcached サーバー $1 で使用するポート番号を指定していません。\nポート番号が分からない場合、既定値は 11211 です。",
"config-memcache-badport": "Memcached のポート番号は $1 から $2 の範囲にしてください。",
"config-extensions": "拡張機能",
"config-extensions-help": "<code>./extensions</code> ディレクトリ内で、上に列挙した拡張機能を検出しました。\n\nこれらの拡張機能には追加の設定が必要な場合がありますが、今すぐ有効化できます。",
"config-skins": "外装",
+ "config-skins-help": "以上に挙げたスキンは<code>./skins</code>で検出されたものです。\n少なくともひとつを有効にして、デフォルトを選択してください。",
"config-skins-use-as-default": "この外装をデフォルトとして使う",
+ "config-skins-missing": "外装が見つかりませんでした。適切なものをいくつかインストールするまで、MediaWikiはフォールバック外装を使用します。",
"config-skins-must-enable-some": "少なくとも1つの有効化する外装を選択する必要があります。",
"config-skins-must-enable-default": "デフォルトとして選択された外装は有効である必要があります。",
"config-install-alreadydone": "<strong>警告:</strong> 既にMediaWikiがインストール済みで、再びインストールし直そうとしています。\n次のページへ進んでください。",
"config-install-pg-schema-not-exist": "PostgreSQL スキーマがありません。",
"config-install-pg-schema-failed": "テーブルの作成に失敗しました。\n利用者「$1」がスキーマ「$2」に書き込めるようにしてください。",
"config-install-pg-commit": "変更を送信",
+ "config-install-pg-plpgsql": "PL/pgSQLの言語をチェックしています",
"config-pg-no-plpgsql": "データベース $1 内に PL/pgSQL 言語をインストールする必要があります。",
+ "config-pg-no-create-privs": "インストール用に指定したアカウントには、アカウントを作成するのに十分な特権がありません。",
+ "config-pg-not-in-role": "ウェブユーザー用に指定したアカウントはすでに存在しています。\nインストール用に指定したアカウントはスーパーユーザーでなく、またウェブユーザーのロールを持ったものでもありません。そのためウェブユーザーが所有するオブジェクトを作成することができません。\n\nMediaWikiは現状では、ウェブユーザーが所有するテーブルを要求します。別のウェブアカウント名を指定するか、「戻る」をクリックして適切な権限を持つインストール用ユーザーを指定してください。",
"config-install-user": "データベースユーザーの作成",
"config-install-user-alreadyexists": "ユーザー「$1」は既に存在します",
"config-install-user-create-failed": "ユーザー「$1」の作成に失敗しました: $2",
"config-install-interwiki-exists": "<strong>警告:</strong> ウィキ間テーブルは既に登録されているようです。\n既定のテーブルを無視します。",
"config-install-stats": "統計情報の初期化",
"config-install-keys": "秘密鍵の生成",
+ "config-insecure-keys": "<strong>警告:</strong> インストール中に生成されたセキュアキー ($1) は完璧に安全ではありません。手動で変更することを検討してください。",
"config-install-sysop": "管理者のアカウントの作成",
+ "config-install-subscribe-fail": "mediawiki-announce を購読できませんでした: $1",
"config-install-subscribe-notpossible": "cURL がインストールされていないため、<code>allow_url_fopen</code> を利用できません。",
"config-install-mainpage": "メインページを既定の内容で作成",
+ "config-install-extension-tables": "有効にした拡張機能のためのテーブルを作成しています",
"config-install-mainpage-failed": "メインページを挿入できませんでした: $1",
"config-install-done": "<strong>おめでとうございます!</strong>\nMediaWikiのインストールに成功しました。\n\n<code>LocalSettings.php</code>ファイルが生成されました。\nこのファイルはすべての設定を含んでいます。\n\nこれをダウンロードして、ウィキをインストールした基準ディレクトリ (index.phpと同じディレクトリ) に設置する必要があります。ダウンロードは自動的に開始されるはずです。\n\nダウンロードが開始されていない場合、またはダウンロードをキャンセルした場合は、下記のリンクをクリックしてダウンロードを再開できます:\n\n$3\n\n<strong>注意:</strong> この生成された設定ファイルをダウンロードせずにインストールを終了すると、このファイルは利用できなくなります。\n\n上記の作業が完了すると、<strong>[$2 ウィキに入る]</strong>ことができます。",
"config-download-localsettings": "<code>LocalSettings.php</code> をダウンロード",
"config-help": "ヘルプ",
"config-help-tooltip": "クリックで展開",
"config-nofile": "ファイル「$1」が見つかりませんでした。削除された可能性があります。",
+ "config-extension-link": "あなたのウィキは[//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 拡張機能]をサポートしていることをご存知ですか?\n\n[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category カテゴリ別で拡張機能を見る]か[//www.mediawiki.org/wiki/Extension_Matrix 拡張機能のマトリックス]で拡張機能すべてのリストをご覧になれます。",
"mainpagetext": "<strong>MediaWiki のインストールに成功しました。</strong>",
"mainpagedocfooter": "ウィキソフトウェアの使い方に関する情報は[//meta.wikimedia.org/wiki/Help:Contents 利用者案内]を参照してください。\n\n== はじめましょう ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings/ja 設定の一覧]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/ja MediaWiki よくある質問と回答]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki リリース情報メーリングリスト]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation/ja MediaWiki のあなたの言語へのローカライズ]"
}
{
- "@metadata": [],
+ "@metadata": {
+ "authors": [
+ "Jason924tw"
+ ]
+ },
+ "config-information": "文訊",
"mainpagetext": "'''共筆臺已立'''",
"mainpagedocfooter": "欲識維基,見[//meta.wikimedia.org/wiki/Help:Contents User's Guide]\n\n== 始 ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]"
}
"config-restart": "Ya, mula semula",
"config-welcome": "=== Pemeriksaan persekitaran ===\nPemeriksaan asas kini boleh dilakukan untuk melihat jika persekitaran ini adalah sesuai untuk pemasangan MediaWiki.\nIngat untuk memasukkan maklumat ini jika anda mahukan sokongan tentang bagaimana untuk menyelesaikan pemasangan.",
"config-copyright": "=== Hakcipta dan Syarat-Syarat ===\n\n$1\n\nProgram ini merupakan perisian bebas; anda boleh mengedarkannya semula dan/atau mengubahsuainya di bawah syarat-syarat Lesen Awam GNU seperti yang diterbitkan oleh Yayasan Perisian Bebas; sama ada versi 2 Lesen ini atau (mengikut pilihan anda) mana-mana versi selepas ini.\n\nProgram ini diedarkan dengan harapan bahawa ia akan menjadi berguna, tetapi '''tanpa sebarang waranti'''; tanpa jaminan yang tersirat '''kebolehdagangan''' atau '''kesesuaian untuk tujuan tertentu'''.\nLihat Lesen Awam GNU untuk maklumat lanjut.\n\nAnda sepatutnya telah menerima <doclink href=Copying> satu salinan Lesen Awam GNU </doclink> bersama-sama dengan program ini, jika tidak, menulis surat kepada Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, atau [http://www.gnu.org/copyleft/gpl.html membacanya dalam talian].",
- "config-sidebar": "* [//www.mediawiki.org Laman utama MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Panduan Pengguna]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Panduan Pentadbir]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Soalan lazim]\n----\n* <doclink href=Readme>Baca saya</doclink>\n* <doclink href=ReleaseNotes>Nota keluaran</doclink>\n* <doclink href=Copying>Menyalin</doclink>\n* <doclink href=UpgradeDoc>Menaik taraf</doclink>",
+ "config-sidebar": "* [//www.mediawiki.org Laman utama MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Panduan Pengguna]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Panduan Penyelia]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Soalan lazim]\n----\n* <doclink href=Readme>Baca saya</doclink>\n* <doclink href=ReleaseNotes>Nota keluaran</doclink>\n* <doclink href=Copying>Menyalin</doclink>\n* <doclink href=UpgradeDoc>Menaik taraf</doclink>",
"config-env-good": "Persekitaran telah diperiksa.\nAnda boleh memasang MediaWiki.",
"config-env-bad": "Persekitaran telah diperiksa. \nAnda tidak boleh memasang MediaWiki.",
"config-env-php": "PHP $1 dipasang.",
+++ /dev/null
-{
- "@metadata": [],
- "mainpagetext": "'''MediaWiki-programvaren er nå installert.'''"
-}
{
- "@metadata": [],
+ "@metadata": {
+ "authors": [
+ "Aalam"
+ ]
+ },
+ "config-information": "ਜਾਣਕਾਰੀ",
+ "config-your-language": "ਤੁਹਾਡੀ ਭਾਸ਼ਾ:",
+ "config-back": "← ਪਿੱਛੇ",
+ "config-continue": "ਜਾਰੀ ਰੱਖੋ →",
+ "config-page-language": "ਭਾਸ਼ਾ",
"mainpagetext": "'''ਮੀਡਿਆਵਿਕਿ ਠੀਕ ਤਰ੍ਹਾਂ ਇੰਸਟਾਲ ਹੋ ਗਿਆ ਹੈ।'''"
}
"config-outdated-sqlite": "'''Ostrzeżenie''': masz SQLite $1, która jest niższa od minimalnej wymaganej wersji $2 . SQLite będzie niedostępne.",
"config-no-fts3": "'''Uwaga''' – SQLite został skompilowany bez [//sqlite.org/fts3.html modułu FTS3] – funkcje wyszukiwania nie będą dostępne.",
"config-register-globals-error": "<strong>Błąd: dyrektywa PHP <code>[http://php.net/register_globals register_globals]</code> jest włączona.\nAby kontynuować instalację musi zostać wyłączona.</strong>\nPrzeczytaj [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals], aby dowiedzieć się, jak to zrobić.",
+ "config-magic-quotes-gpc": "<strong>Błąd krytyczny – dyrektywa [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] jest włączona!</strong>\nTa opcja powoduje nieprzewidywalne uszkodzenia wprowadzanych danych.\nNie możesz instalować lub korzystać z MediaWiki, dopóki ta opcja nie zostanie wyłączona.",
"config-magic-quotes-runtime": "'''Błąd krytyczny – włączono [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]!'''\nTa opcja powoduje nieprzewidywalne uszkodzenia wprowadzanych danych.\nZainstalować lub korzystać z MediaWiki można pod warunkiem, że ta opcja jest wyłączona.",
"config-magic-quotes-sybase": "'''Błąd krytyczny – włączono [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]!'''\nTa opcja powoduje nieprzewidywalne uszkodzenia wprowadzanych danych.\nZainstalować lub korzystać z MediaWiki można pod warunkiem, że ta opcja jest wyłączona.",
"config-mbstring": "'''Błąd krytyczny – włączono [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''\nTa opcja powoduje błędy i może wywołać nieprzewidywalne uszkodzenia wprowadzanych danych.\nZainstalować lub korzystać z MediaWiki można pod warunkiem, że ta opcja jest wyłączona.",
"config-license-gfdl": "GNU licencja wolnej dokumentacji 1.3 lub nowsza",
"config-license-pd": "Domena publiczna",
"config-license-cc-choose": "Wybierz własną licencję Creative Commons",
- "config-license-help": "Wiele publicznych wiki umieszcza wszystkie dopisane treści na [http://freedomdefined.org/Definition wolnej licencji].\nTo pomaga tworzyć poczucie wspólnoty i zachęca do długoterminowego wkładu.\nNie jest to zazwyczaj konieczne w prywatnych lub firmowych wiki.\n\nJeśli chcesz móc użyć tekstu z Wikipedii i chcesz Wikipedia mogła zaakceptować tekst skopiowany z twojej wiki, należy wybrać '''Creative Commons Attribution Share Alike'''.\n\nWikipedia używała poprzednio GNU Free Documentation License.\nGFDL jest poprawną licencję, ale trudno ją zrozumieć.\nTrudno także ponowne użyć zawartości na licencji GFDL.",
+ "config-license-help": "Wiele publicznych wiki umieszcza wszystkie dopisane treści na [http://freedomdefined.org/Definition wolnej licencji].\nPomaga to tworzyć poczucie wspólnoty i zachęca do długoterminowego wkładu.\nNie jest to zazwyczaj konieczne w prywatnych lub firmowych wiki.\n\nJeśli chcesz móc użyć tekstu z Wikipedii i chcesz Wikipedia mogła zaakceptować tekst skopiowany z twojej wiki, należy wybrać <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia używała poprzednio GNU Free Documentation License.\nGFDL jest poprawną licencję, ale trudno ją zrozumieć.\nTrudno także ponowne użyć zawartości na licencji GFDL.",
"config-email-settings": "Ustawienia e-maili",
"config-enable-email": "Włącz wychodzące wiadomości e–mail",
"config-enable-email-help": "Jeśli chcesz, aby działał e-mail, [http://www.php.net/manual/en/mail.configuration.php Ustawienia poczty PHP] muszą być poprawnie wprowadzone.\nJeśli nie chcesz jakichś funkcji poczty e-mail, można je wyłączyć tutaj.",
"config-ns-site-name": "O mesmo que o nome da wiki: $1",
"config-ns-other": "Outro (especifique)",
"config-ns-other-default": "AMinhaWiki",
- "config-project-namespace-help": "Seguindo o exemplo da Wikipedia, muitas wikis mantêm as páginas das suas normas e políticas, separadas das páginas de conteúdo, num \"'''espaço nominal do projeto'''\".\nTodos os nomes das páginas neste espaço nominal começam com um determinado prefixo, que pode especificar aqui.\nTradicionalmente, este prefixo deriva do nome da wiki, mas não pode conter caracteres de pontuação, como \"#\" ou \":\".",
+ "config-project-namespace-help": "Seguindo o exemplo da Wikipédia, muitas wikis mantêm as páginas das suas normas e políticas, separadas das páginas de conteúdo, num \"'''domínio do projeto'''\".\nTodos os nomes das páginas neste domínio começam com um determinado prefixo, que pode especificar aqui.\nTradicionalmente, este prefixo deriva do nome da wiki, mas não pode conter caracteres de pontuação, como \"#\" ou \":\".",
"config-ns-invalid": "O espaço nominal especificado \"<nowiki>$1</nowiki>\" é inválido.\nIntroduza um espaço nominal de projeto diferente.",
"config-ns-conflict": "O espaço nominal que especificou, \"<nowiki>$1</nowiki>\", cria um conflito com um dos espaços nominais padrão do MediaWiki.\nEspecifique um espaço nominal do projeto diferente.",
"config-admin-box": "Conta de administrador",
"config-install-keys": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
"config-insecure-keys": "Parameters:\n* $1 - A list of names of the secret keys that were generated.\n* $2 - the number of items in the list $1, to be used with PLURAL.",
"config-install-sysop": "Message indicates that the administrator user account is being created\n\nSee also:\n*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
- "config-install-subscribe-fail": "{{doc-important|\"mediawiki-announce\" is the name of a mailing list and should not be translated.}}",
+ "config-install-subscribe-fail": "{{doc-important|\"[[m:mail:mediawiki-announce|mediawiki-announce]]\" is the name of a mailing list and should not be translated.}}\nA message displayed if the MediaWiki installer encounters an error making a request to lists.wikimedia.org which hosts the mailing list.\n* $1 - the HTTP error encountered, reproduced as is (English string)",
"config-install-subscribe-notpossible": "Error shown when automatically subscribing to the MediaWiki announcements mailing list fails.",
"config-install-mainpage": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}",
"config-install-extension-tables": "Notice shown to the user during the install about progress.",
"config-outdated-sqlite": "'''Varning:''' du har SQLite $1, vilket är lägre än minimikravet version $2. SQLite kommer inte att vara tillgänglig.",
"config-no-fts3": "'''Varning:''' SQLite kompileras utan [//sqlite.org/fts3.html FTS3-modulen], sökfunktioner kommer att vara otillgängliga på denna backend.",
"config-register-globals-error": "<strong>Fel: PHP-alternativet <code>[http://php.net/register_globals register_globals]</code> är aktiverad.\nDen måste vara inaktiverad för att fortsätta med installationen.</strong>\nSe [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] för hjälp om hur man gör så.",
+ "config-magic-quotes-gpc": "<strong>Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_gpc är aktiv!</strong>\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
"config-magic-quotes-runtime": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
"config-magic-quotes-sybase": "'''Kritiskt: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] är aktiv!'''\nDetta alternativ korrumperar inmatad data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
"config-mbstring": "'''Kritiskt: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] är aktiv!'''\nDetta alternativ orsakar fel och kan korrumpera data oförutsägbart.\nDu kan inte installera eller använda MediaWiki om detta alternativ är aktiverat.",
"config-memory-raised": "PHPs <code>memory_limit</code> är $1, ökad till $2.",
"config-memory-bad": "''' Varning:''' PHP:s <code>memory_limit</code> är $1.\nDetta är förmodligen för lågt.\nInstallationen kan misslyckas!",
"config-ctype": "'''Kritiskt:''' PHP måste kompileras med stöd för [http://www.php.net/manual/en/ctype.installation.php Ctype-tillägget].",
+ "config-iconv": "<strong>Kritiskt:</strong> PHP måste kompileras med stöd för [http://www.php.net/manual/en/iconv.installation.php iconv-tillägget].",
"config-json": "'''Varning:''' PHP kompilerades utan JSON-stöd.\nDu måste antingen installera PHP JSON-tillägget eller [http://pecl.php.net/package/jsonc PECL jsonc]-tillägget före installationen av MediaWiki.\n* PHP-tillägget är inkluderat i Red Hat Enterprise Linux (CentOS) 5 och 6, men måste aktiveras i <code>/etc/php.ini</code> eller <code>/etc/php.d/json.ini</code>.\n* Vissa Linux-distributioner släppta efter maj 2013 har utelämnat PHP-tillägget och har istället inkluderat PECL-tillägget som <code>php5-json</code> eller <code>php-pecl-jsonc</code>.",
"config-xcache": "[http://xcache.lighttpd.net/ XCache] är installerat",
"config-apc": "[http://www.php.net/apc APC] är installerat",
"config-license-gfdl": "GNU Free Documentation License 1.3 eller senare",
"config-license-pd": "Public Domain",
"config-license-cc-choose": "Välj en anpassad Creative Commons-licens",
- "config-license-help": "Många publika wikis släpper alla bidrag under en [http://freedomdefined.org/Definition fri licens].\nDetta bidrar till en känsla av gemensamt ägandeskap och uppmuntrar till långsiktiga bidrag.\nDet är i allmänhet inte nödvändigt för en privat eller företagswiki.\n\nOm du vill kunna använda text från Wikipedia, och du vill att Wikipedia ska kunna acceptera text kopierad ifrån din wiki bör du välja <strong>Creative Commons Erkännande-DelaLika</strong>.\n\nWikipedia använde tidigare GNU Free Documentation License.\nGFDL är en giltig licens, men svår att förstå.\nDet är även svårt att återanvända innehåll som licensierats under GFDL.",
+ "config-license-help": "Många publika wikis släpper alla bidrag under en [http://freedomdefined.org/Definition fri licens].\nDetta bidrar till en känsla av gemensamt ägandeskap och uppmuntrar till långsiktiga bidrag.\nDet är i allmänhet inte nödvändigt för en privat eller företagswiki.\n\nOm du vill kunna använda text från Wikipedia, och du vill att Wikipedia ska kunna acceptera text kopierad ifrån din wiki bör du välja <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia använde tidigare GNU Free Documentation License.\nGFDL är en giltig licens, men svår att förstå.\nDet är även svårt att återanvända innehåll som licensierats under GFDL.",
"config-email-settings": "E-postinställningar",
"config-enable-email": "Aktivera utgående e-post",
"config-enable-email-help": "Om du vill att e-post ska fungera behöver,[http://www.php.net/manual/en/mail.configuration.php PHPs e-postinställningar] vara konfigurerad på rätt sätt.\nOm du inte vill ha några e-postfunktioner, kan du inaktivera dem här.",
"config-db-username": "数据库用户名:",
"config-db-password": "数据库密码:",
"config-db-password-empty": "请为新数据库用户$1输入密码。尽管您可以创建不使用密码的用户,但这样做并不安全。",
- "config-db-username-empty": "您必须输入用于“{{int:config-db-username}}”的值",
+ "config-db-username-empty": "您必须输入用于“{{int:config-db-username}}”的值。",
"config-db-install-username": "请输入在安装过程中用于连接数据库的用户名。请勿输入MediaWiki帐号的用户名,请输入您数据库的用户名。",
"config-db-install-password": "请输入在安装过程中用于连接数据库的密码。请勿输入MediaWiki帐号的密码,请输入您数据库的密码。",
"config-db-install-help": "请输入在安装过程中用于连接数据库的用户名和密码。",
"Xiaomingyan",
"Cwlin0416",
"S8321414",
- "LNDDYL"
+ "LNDDYL",
+ "NigelSoft"
]
},
"config-desc": "MediaWiki 安裝程式",
"config-db-name-help": "請輸入一個可以辨識您的 Wiki 的名稱,\n請勿包含空格。\n\n如果您使用的是共用的網頁主機,您的主機提供商會給您一個指定的資料庫名稱,或者讓您透過管理介面建立資料庫。",
"config-db-name-oracle": "資料庫 Schema:",
"config-db-account-oracle-warn": "目前有三種支援 Oracle 做為後端資料庫的方案:\n\n如果您希望在安裝的過程中自動建立新的資料庫,請提供具有 SYSDBA 權限的帳號並且提供未來要給網頁存取使用的資料庫帳號及密碼。或者您可以手動建立給網頁存取使用的資料庫帳號 (請確保該帳號有建立 Schema Object 的權限),再不然您可以提供兩組不同的帳號,一組用來建立權限,而另一組用來做為網頁存取使用。\n\n本次安裝建立的帳號以及權限所需要的 Script,可以在 \"maintenance/oracle/\" 中找到。\n請注意,若您使用有限制的帳號將會預設關閉所有維護性功能。",
- "config-db-install-account": "å®\89è£\9dç¨\8båº\8f使ç\94¨ç\9a\84使ç\94¨è\80\85帳è\99\9f",
+ "config-db-install-account": "å®\89è£\9dç¨\8bå¼\8f使ç\94¨ç\9a\84使ç\94¨è\80\85帳è\99\9f",
"config-db-username": "資料庫使用者名稱:",
"config-db-password": "資料庫密碼:",
"config-db-password-empty": "請輸入新增資料庫使用者 $1 的密碼。\n雖然您可以不設定任何密碼,但這樣做並不安全。",
* This method outputs status information only if a debug handler was set.
* Any exceptions are caught and logged, but are not reported as output.
*
- * @param array $options
+ * @param array $options Map of parameters:
+ * - type : the job type (or false for the default types)
+ * - maxJobs : maximum number of jobs to run
+ * - maxTime : maximum time in seconds before stopping
+ * - throttle : whether to respect job backoff configuration
* @return array Summary response that can easily be JSON serialized
*/
public function run( array $options ) {
/**
* @param Title $title
* @param array|bool $params
- * @param int $id
*/
function __construct( $title, $params = false ) {
parent::__construct( 'fixDoubleRedirect', $title, $params );
/* Protected Static Members */
- /** @var array List of common image files extensions and mime-types */
+ /** @var array List of common image files extensions and MIME-types */
protected static $mimeTypes = array(
'gif' => 'image/gif',
'jpe' => 'image/jpeg',
*/
public static function getMimeType( $file ) {
$realpath = realpath( $file );
- // Try a couple of different ways to get the mime-type of a file, in order of
+ // Try a couple of different ways to get the MIME-type of a file, in order of
// preference
if (
$realpath
&& function_exists( 'finfo_open' )
&& defined( 'FILEINFO_MIME_TYPE' )
) {
- // As of PHP 5.3, this is how you get the mime-type of a file; it uses the Fileinfo
+ // As of PHP 5.3, this is how you get the MIME-type of a file; it uses the Fileinfo
// PECL extension
return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath );
} elseif ( function_exists( 'mime_content_type' ) ) {
- // Before this was deprecated in PHP 5.3, this was how you got the mime-type of a file
+ // Before this was deprecated in PHP 5.3, this was how you got the MIME-type of a file
return mime_content_type( $file );
} else {
- // Worst-case scenario has happened, use the file extension to infer the mime-type
+ // Worst-case scenario has happened, use the file extension to infer the MIME-type
$ext = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) );
if ( isset( self::$mimeTypes[$ext] ) ) {
return self::$mimeTypes[$ext];
* @param string $chunk the first 256 bytes of the file
* @param string $proposed the MIME type proposed by the server
*
- * @return Array: map of IE version to detected mime type
+ * @return Array: map of IE version to detected MIME type
*/
public function getRealMimesFromData( $fileName, $chunk, $proposed ) {
$types = $this->getMimesFromData( $fileName, $chunk, $proposed );
* @param string $chunk the first 256 bytes of the file
* @param string $proposed the MIME type proposed by the server
*
- * @return Array: map of IE version to detected mime type
+ * @return Array: map of IE version to detected MIME type
*/
public function getMimesFromData( $fileName, $chunk, $proposed ) {
$types = array();
* This is true for the request headers and the response headers. Integer-indexed
* method/URL entries will also be changed to use the corresponding string keys.
*
- * @param array $req Map of HTTP request arrays
+ * @param array $reqs Map of HTTP request arrays
* @param array $opts
* - connTimeout : connection timeout per request
* - reqTimeout : post-connection timeout per request
}
}
- if(!is_null($mime)) // fallback if the mime type is still unknown
+ if(!is_null($mime)) // fallback if the MIME type is still unknown
$url = sprintf('data:%s;base64,%s', $mime, base64_encode(file_get_contents($fullpath)));
}
}
/** Add misc metadata. Warning: atm if the metadata category
* doesn't have a priority, it will be silently discarded.
*
- * @param array $meta Array of metadata values
+ * @param array $metaArray Array of metadata values
* @param string $type Type. defaults to other. if two things have the same type they're merged
*/
function addMetadata( $metaArray, $type = 'other' ) {
return 2; // We don't need no bloddy constants!
}
- /**#@+
+ /**
* Validates if a tag value is of the type it should be according to the Exif spec
*
* @param mixed $in The input value to check
function getThumbType( $ext, $mime, $params = null ) {
$magic = MimeMagic::singleton();
if ( !$ext || $magic->isMatchingExtension( $ext, $mime ) === false ) {
- // The extension is not valid for this mime type and we do
- // recognize the mime type
+ // The extension is not valid for this MIME type and we do
+ // recognize the MIME type
$extensions = $magic->getExtensionsForType( $mime );
if ( $extensions ) {
return array( strtok( $extensions, ' ' ), $mime );
}
}
- // The extension is correct (true) or the mime type is unknown to
+ // The extension is correct (true) or the MIME type is unknown to
// MediaWiki (null)
return array( $ext, $mime );
}
// Do nothing
}
- /*
+ /**
* True if the handler can rotate the media
* @since 1.21
* @return bool
/**
* What language to render file in if none selected.
*
+ * @param File $file
* @return string Language code.
*/
public function getDefaultRenderLanguage( File $file ) {
/**
* We do not support making animated svg thumbnails
+ * @param File $file
+ * @return bool
*/
function canAnimateThumbnail( $file ) {
return false;
*
* @param File $file The image object, or false if there isn't one.
* Warning, FSFile::getPropsFromPath might pass an (object)array() instead (!)
- * @param string $path The filename
+ * @param string $filename The filename
* @return string
*/
public function getMetadata( $file, $filename ) {
*
* Image magick doesn't support indexed xcf files as of current
* writing (as of 6.8.9-3)
+ * @param File $file
+ * @return bool
*/
public function canRender( $file ) {
wfSuppressWarnings();
'mode' => XMPReader::MODE_SEQ,
'validate' => 'validateDate',
),
- /* Do not extract dc:format, as we've got better ways to determine mimetype */
+ /* Do not extract dc:format, as we've got better ways to determine MIME type */
'identifier' => array(
'map_group' => 'deprecated',
'map_name' => 'Identifier',
-# Mime type info file.
-# the first mime type in each line is the "main" mime type,
+# MIME type info file.
+# the first MIME type in each line is the "main" MIME type,
# the others are aliases for this type
# the media type is given in upper case and square brackets,
# like [BITMAP], and must indicate a media type as defined by
}
/**
- * @param string $key
* @param mixed $casToken
+ * @param string $key
* @param mixed $value
* @param int $exptime
* @return bool
* @var array
* @access public
*/
- var $stats;
+ public $stats;
// }}}
// {{{ private
* @var array
* @access private
*/
- var $_cache_sock;
+ public $_cache_sock;
/**
* Current debug status; 0 - none to 9 - profiling
* @var bool
* @access private
*/
- var $_debug;
+ public $_debug;
/**
* Dead hosts, assoc array, 'host'=>'unixtime when ok to check again'
* @var array
* @access private
*/
- var $_host_dead;
+ public $_host_dead;
/**
* Is compression available?
* @var bool
* @access private
*/
- var $_have_zlib;
+ public $_have_zlib;
/**
* Do we want to use compression?
* @var bool
* @access private
*/
- var $_compress_enable;
+ public $_compress_enable;
/**
* At how many bytes should we compress?
* @var int
* @access private
*/
- var $_compress_threshold;
+ public $_compress_threshold;
/**
* Are we using persistent links?
* @var bool
* @access private
*/
- var $_persistent;
+ public $_persistent;
/**
* If only using one server; contains ip:port to connect to
* @var string
* @access private
*/
- var $_single_sock;
+ public $_single_sock;
/**
* Array containing ip:port or array(ip:port, weight)
* @var array
* @access private
*/
- var $_servers;
+ public $_servers;
/**
* Our bit buckets
* @var array
* @access private
*/
- var $_buckets;
+ public $_buckets;
/**
* Total # of bit buckets we have
* @var int
* @access private
*/
- var $_bucketcount;
+ public $_bucketcount;
/**
* # of total servers we have
* @var int
* @access private
*/
- var $_active;
+ public $_active;
/**
* Stream timeout in seconds. Applies for example to fread()
* @var int
* @access private
*/
- var $_timeout_seconds;
+ public $_timeout_seconds;
/**
* Stream timeout in microseconds
* @var int
* @access private
*/
- var $_timeout_microseconds;
+ public $_timeout_microseconds;
/**
* Connect timeout in seconds
*/
- var $_connect_timeout;
+ public $_connect_timeout;
/**
* Number of connection attempts for each server
*/
- var $_connect_attempts;
+ public $_connect_attempts;
// }}}
// }}}
/**
* Get a Redis object with a connection suitable for fetching the specified key
+ * @param string $key
* @return array (server, RedisConnRef) or (false, false)
*/
protected function getConnection( $key ) {
* @ingroup Cache
*/
class SqlBagOStuff extends BagOStuff {
+ /** @var LoadBalancer */
+ protected $lb;
+
protected $serverInfos;
/** @var array */
$db = DatabaseBase::factory( $type, $info );
$db->clearFlag( DBO_TRX );
} else {
- // We must keep a separate connection to MySQL in order to avoid deadlocks
- // However, SQLite has an opposite behavior.
- // @todo get this trick to work on PostgreSQL too
+ /*
+ * We must keep a separate connection to MySQL in order to avoid deadlocks
+ * However, SQLite has an opposite behavior. And PostgreSQL needs to know
+ * if we are in transaction or no
+ */
if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
- $lb = wfGetLBFactory()->newMainLB();
- $db = $lb->getConnection( DB_MASTER );
+ $this->lb = wfGetLBFactory()->newMainLB();
+ $db = $this->lb->getConnection( DB_MASTER );
$db->clearFlag( DBO_TRX ); // auto-commit mode
} else {
$db = wfGetDB( DB_MASTER );
}
/**
+ * @param DatabaseBase $db
* @param string $exptime
* @return bool
*/
* Store a value in the WinCache object cache
*
* @param string $key Cache key
- * @param mixed $valueObject Value to store
+ * @param mixed $value Value to store
* @param int $expire Expiration time
* @return bool
*/
$user = $this->getContext()->getUser();
# Check permissions
- $permission_errors = $title->getUserPermissionsErrors( 'delete', $user );
- if ( count( $permission_errors ) ) {
- throw new PermissionsError( 'delete', $permission_errors );
+ $permissionErrors = $title->getUserPermissionsErrors( 'delete', $user );
+ if ( count( $permissionErrors ) ) {
+ throw new PermissionsError( 'delete', $permissionErrors );
}
# Read-only check...
Xml::closeElement( 'form' );
if ( $user->isAllowed( 'editinterface' ) ) {
- $title = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' );
+ $dropdownTitle = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' );
$link = Linker::link(
- $title,
+ $dropdownTitle,
wfMessage( 'delete-edit-reasonlist' )->escaped(),
array(),
array( 'action' => 'edit' )
* @param Content $content Content submitted
* @param User $user The relevant user
* @param string $comment Comment submitted
- * @param string $serialisation_format Format for storing the content in the database
* @param bool $minor Whereas it's a minor modification
+ * @param string $serialisation_format Format for storing the content in the database
*/
public function doQuickEditContent( Content $content, User $user, $comment = '', $minor = false,
$serialisation_format = null
*/
public $mUsedOptions;
- var $mVersion = Parser::VERSION, # Compatibility check
+ public $mVersion = Parser::VERSION, # Compatibility check
$mCacheTime = '', # Time when this object was generated, or -1 for uncacheable. Used in ParserCache.
$mCacheExpiry = null, # Seconds after which the object should expire, use 0 for uncachable. Used in ParserCache.
$mContainsOldMagic, # Boolean variable indicating if the input contained variables like {{CURRENTDAY}}
/**
* @return string TS_MW timestamp
*/
- function getCacheTime() {
+ public function getCacheTime() {
return wfTimestamp( TS_MW, $this->mCacheTime );
}
/**
* @return bool
*/
- function containsOldMagic() {
+ public function containsOldMagic() {
return $this->mContainsOldMagic;
}
* @param bool $com
* @return bool
*/
- function setContainsOldMagic( $com ) {
+ public function setContainsOldMagic( $com ) {
return wfSetVar( $this->mContainsOldMagic, $com );
}
* @param string $t
* @return string
*/
- function setCacheTime( $t ) {
+ public function setCacheTime( $t ) {
return wfSetVar( $this->mCacheTime, $t );
}
* @since 1.23
* @return int|null Revision id, if any was set
*/
- function getCacheRevisionId() {
+ public function getCacheRevisionId() {
return $this->mCacheRevisionId;
}
* @since 1.23
* @param int $id Revision id
*/
- function setCacheRevisionId( $id ) {
+ public function setCacheRevisionId( $id ) {
$this->mCacheRevisionId = $id;
}
*
* @param int $seconds
*/
- function updateCacheExpiry( $seconds ) {
+ public function updateCacheExpiry( $seconds ) {
$seconds = (int)$seconds;
if ( $this->mCacheExpiry === null || $this->mCacheExpiry > $seconds ) {
* value of $wgParserCacheExpireTime.
* @return int|mixed|null
*/
- function getCacheExpiry() {
+ public function getCacheExpiry() {
global $wgParserCacheExpireTime;
if ( $this->mCacheTime < 0 ) {
/**
* @return bool
*/
- function isCacheable() {
+ public function isCacheable() {
return $this->getCacheExpiry() > 0;
}
* @param Parser $parser
* @return void
*/
- static function register( $parser ) {
+ public static function register( $parser ) {
global $wgAllowDisplayTitle, $wgAllowSlowParserFunctions;
# Syntax for arguments (see Parser::setFunctionHook):
* @param string $part1
* @return array
*/
- static function intFunction( $parser, $part1 = '' /*, ... */ ) {
+ public static function intFunction( $parser, $part1 = '' /*, ... */ ) {
if ( strval( $part1 ) !== '' ) {
$args = array_slice( func_get_args(), 2 );
$message = wfMessage( $part1, $args )
*
* @return string
*/
- static function formatDate( $parser, $date, $defaultPref = null ) {
+ public static function formatDate( $parser, $date, $defaultPref = null ) {
$lang = $parser->getFunctionLang();
$df = DateFormatter::getInstance( $lang );
return $date;
}
- static function ns( $parser, $part1 = '' ) {
+ public static function ns( $parser, $part1 = '' ) {
global $wgContLang;
if ( intval( $part1 ) || $part1 == "0" ) {
$index = intval( $part1 );
}
}
- static function nse( $parser, $part1 = '' ) {
+ public static function nse( $parser, $part1 = '' ) {
$ret = self::ns( $parser, $part1 );
if ( is_string( $ret ) ) {
$ret = wfUrlencode( str_replace( ' ', '_', $ret ) );
* @param string $arg (optional): The type of encoding.
* @return string
*/
- static function urlencode( $parser, $s = '', $arg = null ) {
+ public static function urlencode( $parser, $s = '', $arg = null ) {
static $magicWords = null;
if ( is_null( $magicWords ) ) {
$magicWords = new MagicWordArray( array( 'url_path', 'url_query', 'url_wiki' ) );
return $parser->markerSkipCallback( $s, $func );
}
- static function lcfirst( $parser, $s = '' ) {
+ public static function lcfirst( $parser, $s = '' ) {
global $wgContLang;
return $wgContLang->lcfirst( $s );
}
- static function ucfirst( $parser, $s = '' ) {
+ public static function ucfirst( $parser, $s = '' ) {
global $wgContLang;
return $wgContLang->ucfirst( $s );
}
* @param string $s
* @return string
*/
- static function lc( $parser, $s = '' ) {
+ public static function lc( $parser, $s = '' ) {
global $wgContLang;
return $parser->markerSkipCallback( $s, array( $wgContLang, 'lc' ) );
}
* @param string $s
* @return string
*/
- static function uc( $parser, $s = '' ) {
+ public static function uc( $parser, $s = '' ) {
global $wgContLang;
return $parser->markerSkipCallback( $s, array( $wgContLang, 'uc' ) );
}
- static function localurl( $parser, $s = '', $arg = null ) {
+ public static function localurl( $parser, $s = '', $arg = null ) {
return self::urlFunction( 'getLocalURL', $s, $arg );
}
- static function localurle( $parser, $s = '', $arg = null ) {
+ public static function localurle( $parser, $s = '', $arg = null ) {
$temp = self::urlFunction( 'getLocalURL', $s, $arg );
if ( !is_string( $temp ) ) {
return $temp;
}
}
- static function fullurl( $parser, $s = '', $arg = null ) {
+ public static function fullurl( $parser, $s = '', $arg = null ) {
return self::urlFunction( 'getFullURL', $s, $arg );
}
- static function fullurle( $parser, $s = '', $arg = null ) {
+ public static function fullurle( $parser, $s = '', $arg = null ) {
$temp = self::urlFunction( 'getFullURL', $s, $arg );
if ( !is_string( $temp ) ) {
return $temp;
}
}
- static function canonicalurl( $parser, $s = '', $arg = null ) {
+ public static function canonicalurl( $parser, $s = '', $arg = null ) {
return self::urlFunction( 'getCanonicalURL', $s, $arg );
}
- static function canonicalurle( $parser, $s = '', $arg = null ) {
+ public static function canonicalurle( $parser, $s = '', $arg = null ) {
$temp = self::urlFunction( 'getCanonicalURL', $s, $arg );
if ( !is_string( $temp ) ) {
return $temp;
}
}
- static function urlFunction( $func, $s = '', $arg = null ) {
+ public static function urlFunction( $func, $s = '', $arg = null ) {
$title = Title::newFromText( $s );
# Due to order of execution of a lot of bits, the values might be encoded
# before arriving here; if that's true, then the title can't be created
* @param string $arg
* @return string
*/
- static function formatnum( $parser, $num = '', $arg = null ) {
+ public static function formatnum( $parser, $num = '', $arg = null ) {
if ( self::matchAgainstMagicword( 'rawsuffix', $arg ) ) {
$func = array( $parser->getFunctionLang(), 'parseFormattedNumber' );
} elseif ( self::matchAgainstMagicword( 'nocommafysuffix', $arg ) ) {
* @param string $word
* @return string
*/
- static function grammar( $parser, $case = '', $word = '' ) {
+ public static function grammar( $parser, $case = '', $word = '' ) {
$word = $parser->killMarkers( $word );
return $parser->getFunctionLang()->convertGrammar( $word, $case );
}
* @param string $username
* @return string
*/
- static function gender( $parser, $username ) {
+ public static function gender( $parser, $username ) {
wfProfileIn( __METHOD__ );
$forms = array_slice( func_get_args(), 2 );
* @param string $text
* @return string
*/
- static function plural( $parser, $text = '' ) {
+ public static function plural( $parser, $text = '' ) {
$forms = array_slice( func_get_args(), 2 );
$text = $parser->getFunctionLang()->parseFormattedNumber( $text );
settype( $text, ctype_digit( $text ) ? 'int' : 'float' );
*
* @param Parser $parser Parent parser
* @param string $text Desired title text
+ * @param string $uarg
* @return string
*/
- static function displaytitle( $parser, $text = '', $uarg = '' ) {
+ public static function displaytitle( $parser, $text = '', $uarg = '' ) {
global $wgRestrictDisplayTitle;
static $magicWords = null;
return $mwObject->matchStartToEnd( $value );
}
- static function formatRaw( $num, $raw ) {
+ public static function formatRaw( $num, $raw ) {
if ( self::matchAgainstMagicword( 'rawsuffix', $raw ) ) {
return $num;
} else {
return $wgContLang->formatNum( $num );
}
}
- static function numberofpages( $parser, $raw = null ) {
+ public static function numberofpages( $parser, $raw = null ) {
return self::formatRaw( SiteStats::pages(), $raw );
}
- static function numberofusers( $parser, $raw = null ) {
+ public static function numberofusers( $parser, $raw = null ) {
return self::formatRaw( SiteStats::users(), $raw );
}
- static function numberofactiveusers( $parser, $raw = null ) {
+ public static function numberofactiveusers( $parser, $raw = null ) {
return self::formatRaw( SiteStats::activeUsers(), $raw );
}
- static function numberofarticles( $parser, $raw = null ) {
+ public static function numberofarticles( $parser, $raw = null ) {
return self::formatRaw( SiteStats::articles(), $raw );
}
- static function numberoffiles( $parser, $raw = null ) {
+ public static function numberoffiles( $parser, $raw = null ) {
return self::formatRaw( SiteStats::images(), $raw );
}
- static function numberofadmins( $parser, $raw = null ) {
+ public static function numberofadmins( $parser, $raw = null ) {
return self::formatRaw( SiteStats::numberingroup( 'sysop' ), $raw );
}
- static function numberofedits( $parser, $raw = null ) {
+ public static function numberofedits( $parser, $raw = null ) {
return self::formatRaw( SiteStats::edits(), $raw );
}
- static function numberofviews( $parser, $raw = null ) {
+ public static function numberofviews( $parser, $raw = null ) {
global $wgDisableCounters;
return !$wgDisableCounters ? self::formatRaw( SiteStats::views(), $raw ) : '';
}
- static function pagesinnamespace( $parser, $namespace = 0, $raw = null ) {
+ public static function pagesinnamespace( $parser, $namespace = 0, $raw = null ) {
return self::formatRaw( SiteStats::pagesInNs( intval( $namespace ) ), $raw );
}
- static function numberingroup( $parser, $name = '', $raw = null ) {
+ public static function numberingroup( $parser, $name = '', $raw = null ) {
return self::formatRaw( SiteStats::numberingroup( strtolower( $name ) ), $raw );
}
* @param string $title
* @return mixed|string
*/
- static function mwnamespace( $parser, $title = null ) {
+ public static function mwnamespace( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return str_replace( '_', ' ', $t->getNsText() );
}
- static function namespacee( $parser, $title = null ) {
+ public static function namespacee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfUrlencode( $t->getNsText() );
}
- static function namespacenumber( $parser, $title = null ) {
+ public static function namespacenumber( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return $t->getNamespace();
}
- static function talkspace( $parser, $title = null ) {
+ public static function talkspace( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
return str_replace( '_', ' ', $t->getTalkNsText() );
}
- static function talkspacee( $parser, $title = null ) {
+ public static function talkspacee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
return wfUrlencode( $t->getTalkNsText() );
}
- static function subjectspace( $parser, $title = null ) {
+ public static function subjectspace( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return str_replace( '_', ' ', $t->getSubjectNsText() );
}
- static function subjectspacee( $parser, $title = null ) {
+ public static function subjectspacee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
* @param string $title
* @return string
*/
- static function pagename( $parser, $title = null ) {
+ public static function pagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getText() );
}
- static function pagenamee( $parser, $title = null ) {
+ public static function pagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getPartialURL() );
}
- static function fullpagename( $parser, $title = null ) {
+ public static function fullpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
return wfEscapeWikiText( $t->getPrefixedText() );
}
- static function fullpagenamee( $parser, $title = null ) {
+ public static function fullpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
return wfEscapeWikiText( $t->getPrefixedURL() );
}
- static function subpagename( $parser, $title = null ) {
+ public static function subpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getSubpageText() );
}
- static function subpagenamee( $parser, $title = null ) {
+ public static function subpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getSubpageUrlForm() );
}
- static function rootpagename( $parser, $title = null ) {
+ public static function rootpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getRootText() );
}
- static function rootpagenamee( $parser, $title = null ) {
+ public static function rootpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $t->getRootText() ) ) );
}
- static function basepagename( $parser, $title = null ) {
+ public static function basepagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getBaseText() );
}
- static function basepagenamee( $parser, $title = null ) {
+ public static function basepagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $t->getBaseText() ) ) );
}
- static function talkpagename( $parser, $title = null ) {
+ public static function talkpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
return wfEscapeWikiText( $t->getTalkPage()->getPrefixedText() );
}
- static function talkpagenamee( $parser, $title = null ) {
+ public static function talkpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() ) {
return '';
}
return wfEscapeWikiText( $t->getTalkPage()->getPrefixedURL() );
}
- static function subjectpagename( $parser, $title = null ) {
+ public static function subjectpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
}
return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedText() );
}
- static function subjectpagenamee( $parser, $title = null ) {
+ public static function subjectpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) ) {
return '';
* @param string $arg2
* @return string
*/
- static function pagesincategory( $parser, $name = '', $arg1 = null, $arg2 = null ) {
+ public static function pagesincategory( $parser, $name = '', $arg1 = null, $arg2 = null ) {
global $wgContLang;
static $magicWords = null;
if ( is_null( $magicWords ) ) {
* @param string $raw Should number be human readable with commas or just number
* @return string
*/
- static function pagesize( $parser, $page = '', $raw = null ) {
+ public static function pagesize( $parser, $page = '', $raw = null ) {
$title = Title::newFromText( $page );
if ( !is_object( $title ) ) {
*
* @return string
*/
- static function protectionlevel( $parser, $type = '', $title = '' ) {
+ public static function protectionlevel( $parser, $type = '', $title = '' ) {
$titleObject = Title::newFromText( $title );
if ( !( $titleObject instanceof Title ) ) {
$titleObject = $parser->mTitle;
* @param string $inLanguage Language code (in which to get name)
* @return string
*/
- static function language( $parser, $code = '', $inLanguage = '' ) {
+ public static function language( $parser, $code = '', $inLanguage = '' ) {
$code = strtolower( $code );
$inLanguage = strtolower( $inLanguage );
$lang = Language::fetchLanguageName( $code, $inLanguage );
* @param int $direction
* @return string
*/
- static function pad( $parser, $string, $length, $padding = '0', $direction = STR_PAD_RIGHT ) {
+ public static function pad( $parser, $string, $length, $padding = '0', $direction = STR_PAD_RIGHT ) {
$padding = $parser->killMarkers( $padding );
$lengthOfPadding = mb_strlen( $padding );
if ( $lengthOfPadding == 0 ) {
}
}
- static function padleft( $parser, $string = '', $length = 0, $padding = '0' ) {
+ public static function padleft( $parser, $string = '', $length = 0, $padding = '0' ) {
return self::pad( $parser, $string, $length, $padding, STR_PAD_LEFT );
}
- static function padright( $parser, $string = '', $length = 0, $padding = '0' ) {
+ public static function padright( $parser, $string = '', $length = 0, $padding = '0' ) {
return self::pad( $parser, $string, $length, $padding );
}
* @param string $text
* @return string
*/
- static function anchorencode( $parser, $text ) {
+ public static function anchorencode( $parser, $text ) {
$text = $parser->killMarkers( $text );
return (string)substr( $parser->guessSectionNameFromWikiText( $text ), 1 );
}
- static function special( $parser, $text ) {
+ public static function special( $parser, $text ) {
list( $page, $subpage ) = SpecialPageFactory::resolveAlias( $text );
if ( $page ) {
$title = SpecialPage::getTitleFor( $page, $subpage );
}
}
- static function speciale( $parser, $text ) {
+ public static function speciale( $parser, $text ) {
return wfUrlencode( str_replace( ' ', '_', self::special( $parser, $text ) ) );
}
* @param Parser $parser
* @return void
*/
- static function register( $parser ) {
+ public static function register( $parser ) {
global $wgRawHtml;
$parser->setHook( 'pre', array( __CLASS__, 'pre' ) );
$parser->setHook( 'nowiki', array( __CLASS__, 'nowiki' ) );
* @param Parser $parser
* @return string HTML
*/
- static function pre( $text, $attribs, $parser ) {
+ public static function pre( $text, $attribs, $parser ) {
// Backwards-compatibility hack
$content = StringUtils::delimiterReplace( '<nowiki>', '</nowiki>', '$1', $text, 'i' );
* @throws MWException
* @return array
*/
- static function html( $content, $attributes, $parser ) {
+ public static function html( $content, $attributes, $parser ) {
global $wgRawHtml;
if ( $wgRawHtml ) {
return array( $content, 'markerType' => 'nowiki' );
* @param Parser $parser
* @return array
*/
- static function nowiki( $content, $attributes, $parser ) {
+ public static function nowiki( $content, $attributes, $parser ) {
$content = strtr( $content, array( '-{' => '-{', '}-' => '}-' ) );
return array( Xml::escapeTagsOnly( $content ), 'markerType' => 'nowiki' );
}
* @param Parser $parser
* @return string HTML
*/
- static function gallery( $content, $attributes, $parser ) {
+ public static function gallery( $content, $attributes, $parser ) {
return $parser->renderImageGallery( $content, $attributes );
}
}
* @ingroup Parser
*/
class DateFormatter {
- var $mSource, $mTarget;
- var $monthNames = '', $rxDM, $rxMD, $rxDMY, $rxYDM, $rxMDY, $rxYMD;
+ public $mSource, $mTarget;
+ public $monthNames = '', $rxDM, $rxMD, $rxDMY, $rxYDM, $rxMDY, $rxYMD;
- var $regexes, $pDays, $pMonths, $pYears;
- var $rules, $xMonths, $preferences;
+ public $regexes, $pDays, $pMonths, $pYears;
+ public $rules, $xMonths, $preferences;
protected $lang;
/**
* @param Language $lang In which language to format the date
*/
- function __construct( Language $lang ) {
+ public function __construct( Language $lang ) {
$this->lang = $lang;
$this->monthNames = $this->getMonthRegex();
*
* @return string
*/
- function reformat( $preference, $text, $options = array( 'linked' ) ) {
+ public function reformat( $preference, $text, $options = array( 'linked' ) ) {
$linked = in_array( 'linked', $options );
$match_whole = in_array( 'match-whole', $options );
* @param array $matches
* @return string
*/
- function replace( $matches ) {
+ public function replace( $matches ) {
# Extract information from $matches
$linked = true;
if ( isset( $this->mLinked ) ) {
* @param bool $link
* @return string
*/
- function formatDate( $bits, $link = true ) {
+ public function formatDate( $bits, $link = true ) {
$format = $this->targets[$this->mTarget];
if ( !$link ) {
* @todo document
* @return string
*/
- function getMonthRegex() {
+ public function getMonthRegex() {
$names = array();
for ( $i = 1; $i <= 12; $i++ ) {
$names[] = $this->lang->getMonthName( $i );
* @param string $monthName Month name
* @return string ISO month name
*/
- function makeIsoMonth( $monthName ) {
+ public function makeIsoMonth( $monthName ) {
$n = $this->xMonths[$this->lang->lc( $monthName )];
return sprintf( '%02d', $n );
}
* @param string $year Year name
* @return string ISO year name
*/
- function makeIsoYear( $year ) {
+ public function makeIsoYear( $year ) {
# Assumes the year is in a nice format, as enforced by the regex
if ( substr( $year, -2 ) == 'BC' ) {
$num = intval( substr( $year, 0, -3 ) ) - 1;
* @param string $iso
* @return int|string
*/
- function makeNormalYear( $iso ) {
+ public function makeNormalYear( $iso ) {
if ( $iso[0] == '-' ) {
$text = ( intval( substr( $iso, 1 ) ) + 1 ) . ' BC';
} else {
* @ingroup Parser
*/
class LinkHolderArray {
- var $internals = array(), $interwikis = array();
- var $size = 0;
+ public $internals = array();
+ public $interwikis = array();
+ public $size = 0;
/**
* @var Parser
*/
- var $parent;
+ public $parent;
protected $tempIdOffset;
/**
* @param Parser $parent
*/
- function __construct( $parent ) {
+ public function __construct( $parent ) {
$this->parent = $parent;
}
/**
* Reduce memory usage to reduce the impact of circular references
*/
- function __destruct() {
+ public function __destruct() {
foreach ( $this as $name => $value ) {
unset( $this->$name );
}
* Compact the titles, only serialize the text form.
* @return array
*/
- function __sleep() {
+ public function __sleep() {
foreach ( $this->internals as &$nsLinks ) {
foreach ( $nsLinks as &$entry ) {
unset( $entry['title'] );
/**
* Recreate the Title objects
*/
- function __wakeup() {
+ public function __wakeup() {
foreach ( $this->internals as &$nsLinks ) {
foreach ( $nsLinks as &$entry ) {
$entry['title'] = Title::newFromText( $entry['pdbk'] );
* Merge another LinkHolderArray into this one
* @param LinkHolderArray $other
*/
- function merge( $other ) {
+ public function merge( $other ) {
foreach ( $other->internals as $ns => $entries ) {
$this->size += count( $entries );
if ( !isset( $this->internals[$ns] ) ) {
* @param array $texts Array of strings
* @return array
*/
- function mergeForeign( $other, $texts ) {
+ public function mergeForeign( $other, $texts ) {
$this->tempIdOffset = $idOffset = $this->parent->nextLinkID();
$maxId = 0;
* @param string $text
* @return LinkHolderArray
*/
- function getSubArray( $text ) {
+ public function getSubArray( $text ) {
$sub = new LinkHolderArray( $this->parent );
# Internal links
* Returns true if the memory requirements of this object are getting large
* @return bool
*/
- function isBig() {
+ public function isBig() {
global $wgLinkHolderBatchSize;
return $this->size > $wgLinkHolderBatchSize;
}
* Clear all stored link holders.
* Make sure you don't have any text left using these link holders, before you call this
*/
- function clear() {
+ public function clear() {
$this->internals = array();
$this->interwikis = array();
$this->size = 0;
* @param string $prefix [optional]
* @return string
*/
- function makeHolder( $nt, $text = '', $query = array(), $trail = '', $prefix = '' ) {
+ public function makeHolder( $nt, $text = '', $query = array(), $trail = '', $prefix = '' ) {
wfProfileIn( __METHOD__ );
if ( !is_object( $nt ) ) {
# Fail gracefully
* @param string $text
* @return array Array of link CSS classes, indexed by PDBK.
*/
- function replace( &$text ) {
+ public function replace( &$text ) {
wfProfileIn( __METHOD__ );
/** @todo FIXME: replaceInternal doesn't return a value */
* @param string $text
* @return string
*/
- function replaceText( $text ) {
+ public function replaceText( $text ) {
wfProfileIn( __METHOD__ );
$text = preg_replace_callback(
* @return string
* @private
*/
- function replaceTextCallback( $matches ) {
+ public function replaceTextCallback( $matches ) {
$type = $matches[1];
$key = $matches[2];
if ( $type == 'LINK' ) {
*
* @return string
*/
- function replaceCallback( $m ) {
+ public function replaceCallback( $m ) {
$marker = "{$this->mUniqPrefix}-item-{$this->mMarkerIndex}" . Parser::MARKER_SUFFIX;
$this->mMarkerIndex++;
$this->mTokens->setPair( $marker, $m[0] );
const TOC_END = '</mw:toc>';
# Persistent:
- var $mTagHooks = array();
- var $mTransparentTagHooks = array();
- var $mFunctionHooks = array();
- var $mFunctionSynonyms = array( 0 => array(), 1 => array() );
- var $mFunctionTagHooks = array();
- var $mStripList = array();
- var $mDefaultStripList = array();
- var $mVarCache = array();
- var $mImageParams = array();
- var $mImageParamsMagicArray = array();
- var $mMarkerIndex = 0;
- var $mFirstCall = true;
+ public $mTagHooks = array();
+ public $mTransparentTagHooks = array();
+ public $mFunctionHooks = array();
+ public $mFunctionSynonyms = array( 0 => array(), 1 => array() );
+ public $mFunctionTagHooks = array();
+ public $mStripList = array();
+ public $mDefaultStripList = array();
+ public $mVarCache = array();
+ public $mImageParams = array();
+ public $mImageParamsMagicArray = array();
+ public $mMarkerIndex = 0;
+ public $mFirstCall = true;
# Initialised by initialiseVariables()
/**
* @var MagicWordArray
*/
- var $mVariables;
+ public $mVariables;
/**
* @var MagicWordArray
*/
- var $mSubstWords;
- var $mConf, $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols; # Initialised in constructor
+ public $mSubstWords;
+ public $mConf, $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols; # Initialised in constructor
# Cleared with clearState():
/**
* @var ParserOutput
*/
- var $mOutput;
- var $mAutonumber, $mDTopen;
+ public $mOutput;
+ public $mAutonumber, $mDTopen;
/**
* @var StripState
*/
- var $mStripState;
+ public $mStripState;
- var $mIncludeCount, $mArgStack, $mLastSection, $mInPre;
+ public $mIncludeCount, $mArgStack, $mLastSection, $mInPre;
/**
* @var LinkHolderArray
*/
- var $mLinkHolders;
+ public $mLinkHolders;
- var $mLinkID;
- var $mIncludeSizes, $mPPNodeCount, $mGeneratedPPNodeCount, $mHighestExpansionDepth;
- var $mDefaultSort;
- var $mTplRedirCache, $mTplDomCache, $mHeadings, $mDoubleUnderscores;
- var $mExpensiveFunctionCount; # number of expensive parser function calls
- var $mShowToc, $mForceTocPosition;
+ public $mLinkID;
+ public $mIncludeSizes, $mPPNodeCount, $mGeneratedPPNodeCount, $mHighestExpansionDepth;
+ public $mDefaultSort;
+ public $mTplRedirCache, $mTplDomCache, $mHeadings, $mDoubleUnderscores;
+ public $mExpensiveFunctionCount; # number of expensive parser function calls
+ public $mShowToc, $mForceTocPosition;
/**
* @var User
*/
- var $mUser; # User object; only used when doing pre-save transform
+ public $mUser; # User object; only used when doing pre-save transform
# Temporary
# These are variables reset at least once per parse regardless of $clearState
/**
* @var ParserOptions
*/
- var $mOptions;
+ public $mOptions;
/**
* @var Title
*/
- var $mTitle; # Title context, used for self-link rendering and similar things
- var $mOutputType; # Output type, one of the OT_xxx constants
- var $ot; # Shortcut alias, see setOutputType()
- var $mRevisionObject; # The revision object of the specified revision ID
- var $mRevisionId; # ID to display in {{REVISIONID}} tags
- var $mRevisionTimestamp; # The timestamp of the specified revision ID
- var $mRevisionUser; # User to display in {{REVISIONUSER}} tag
- var $mRevisionSize; # Size to display in {{REVISIONSIZE}} variable
- var $mRevIdForTs; # The revision ID which was used to fetch the timestamp
- var $mInputSize = false; # For {{PAGESIZE}} on current page.
+ public $mTitle; # Title context, used for self-link rendering and similar things
+ public $mOutputType; # Output type, one of the OT_xxx constants
+ public $ot; # Shortcut alias, see setOutputType()
+ public $mRevisionObject; # The revision object of the specified revision ID
+ public $mRevisionId; # ID to display in {{REVISIONID}} tags
+ public $mRevisionTimestamp; # The timestamp of the specified revision ID
+ public $mRevisionUser; # User to display in {{REVISIONUSER}} tag
+ public $mRevisionSize; # Size to display in {{REVISIONSIZE}} variable
+ public $mRevIdForTs; # The revision ID which was used to fetch the timestamp
+ public $mInputSize = false; # For {{PAGESIZE}} on current page.
/**
* @var string
*/
- var $mUniqPrefix;
+ public $mUniqPrefix;
/**
* @var array Array with the language name of each language link (i.e. the
* interwiki prefix) in the key, value arbitrary. Used to avoid sending
* duplicate language links to the ParserOutput.
*/
- var $mLangLinkLanguages;
+ public $mLangLinkLanguages;
/**
* @var bool Recursive call protection.
/**
* Reduce memory usage to reduce the impact of circular references
*/
- function __destruct() {
+ public function __destruct() {
if ( isset( $this->mLinkHolders ) ) {
unset( $this->mLinkHolders );
}
/**
* Allow extensions to clean up when the parser is cloned
*/
- function __clone() {
+ public function __clone() {
$this->mInParse = false;
wfRunHooks( 'ParserCloned', array( $this ) );
}
/**
* Do various kinds of initialisation on the first call of the parser
*/
- function firstCallInit() {
+ public function firstCallInit() {
if ( !$this->mFirstCall ) {
return;
}
*
* @private
*/
- function clearState() {
+ public function clearState() {
wfProfileIn( __METHOD__ );
if ( $this->mFirstCall ) {
$this->firstCallInit();
*
* @return string
*/
- function recursiveTagParse( $text, $frame = false ) {
+ public function recursiveTagParse( $text, $frame = false ) {
wfProfileIn( __METHOD__ );
wfRunHooks( 'ParserBeforeStrip', array( &$this, &$text, &$this->mStripState ) );
wfRunHooks( 'ParserAfterStrip', array( &$this, &$text, &$this->mStripState ) );
* @param bool|PPFrame $frame
* @return mixed|string
*/
- function preprocess( $text, Title $title = null, ParserOptions $options, $revid = null, $frame = false ) {
+ public function preprocess( $text, Title $title = null, ParserOptions $options, $revid = null, $frame = false ) {
wfProfileIn( __METHOD__ );
$magicScopeVariable = $this->lock();
$this->startParse( $title, $options, self::OT_PREPROCESS, true );
*
* @param User|null $user User object or null (to reset)
*/
- function setUser( $user ) {
+ public function setUser( $user ) {
$this->mUser = $user;
}
*
* @param Title $t
*/
- function setTitle( $t ) {
+ public function setTitle( $t ) {
if ( !$t ) {
$t = Title::newFromText( 'NO TITLE' );
}
*
* @return Title
*/
- function getTitle() {
+ public function getTitle() {
return $this->mTitle;
}
* @param Title $x Title object or null to just get the current one
* @return Title
*/
- function Title( $x = null ) {
+ public function Title( $x = null ) {
return wfSetVar( $this->mTitle, $x );
}
*
* @param int $ot New value
*/
- function setOutputType( $ot ) {
+ public function setOutputType( $ot ) {
$this->mOutputType = $ot;
# Shortcut alias
$this->ot = array(
* @param int|null $x New value or null to just get the current one
* @return int
*/
- function OutputType( $x = null ) {
+ public function OutputType( $x = null ) {
return wfSetVar( $this->mOutputType, $x );
}
*
* @return ParserOutput
*/
- function getOutput() {
+ public function getOutput() {
return $this->mOutput;
}
*
* @return ParserOptions
*/
- function getOptions() {
+ public function getOptions() {
return $this->mOptions;
}
* @param ParserOptions $x New value or null to just get the current one
* @return ParserOptions Current ParserOptions object
*/
- function Options( $x = null ) {
+ public function Options( $x = null ) {
return wfSetVar( $this->mOptions, $x );
}
/**
* @return int
*/
- function nextLinkID() {
+ public function nextLinkID() {
return $this->mLinkID++;
}
/**
* @param int $id
*/
- function setLinkID( $id ) {
+ public function setLinkID( $id ) {
$this->mLinkID = $id;
}
* Get a language object for use in parser functions such as {{FORMATNUM:}}
* @return Language
*/
- function getFunctionLang() {
+ public function getFunctionLang() {
return $this->getTargetLanguage();
}
* @since 1.19
*
* @throws MWException
- * @return Language|null
+ * @return Language
*/
public function getTargetLanguage() {
$target = $this->mOptions->getTargetLanguage();
* Get the language object for language conversion
* @return Language|null
*/
- function getConverterLanguage() {
+ public function getConverterLanguage() {
return $this->getTargetLanguage();
}
*
* @return User
*/
- function getUser() {
+ public function getUser() {
if ( !is_null( $this->mUser ) ) {
return $this->mUser;
}
*
* @return Preprocessor
*/
- function getPreprocessor() {
+ public function getPreprocessor() {
if ( !isset( $this->mPreprocessor ) ) {
$class = $this->mPreprocessorClass;
$this->mPreprocessor = new $class( $this );
*
* @return array
*/
- function getStripList() {
+ public function getStripList() {
return $this->mStripList;
}
*
* @return string
*/
- function insertStripItem( $text ) {
+ public function insertStripItem( $text ) {
$rnd = "{$this->mUniqPrefix}-item-{$this->mMarkerIndex}-" . self::MARKER_SUFFIX;
$this->mMarkerIndex++;
$this->mStripState->addGeneral( $rnd, $text );
* @param string $text
* @return string
*/
- function doTableStuff( $text ) {
+ public function doTableStuff( $text ) {
wfProfileIn( __METHOD__ );
$lines = StringUtils::explode( "\n", $text );
*
* @return string
*/
- function internalParse( $text, $isMain = true, $frame = false ) {
+ public function internalParse( $text, $isMain = true, $frame = false ) {
wfProfileIn( __METHOD__ );
$origText = $text;
*
* @return string
*/
- function doMagicLinks( $text ) {
+ public function doMagicLinks( $text ) {
wfProfileIn( __METHOD__ );
$prots = wfUrlProtocolsWithoutProtRel();
$urlChar = self::EXT_LINK_URL_CLASS;
* @param array $m
* @return HTML|string
*/
- function magicLinkCallback( $m ) {
+ public function magicLinkCallback( $m ) {
if ( isset( $m[1] ) && $m[1] !== '' ) {
# Skip anchor
return $m[0];
* @return string HTML
* @private
*/
- function makeFreeExternalLink( $url ) {
+ public function makeFreeExternalLink( $url ) {
wfProfileIn( __METHOD__ );
$trail = '';
*
* @return string
*/
- function doHeadings( $text ) {
+ public function doHeadings( $text ) {
wfProfileIn( __METHOD__ );
for ( $i = 6; $i >= 1; --$i ) {
$h = str_repeat( '=', $i );
*
* @return string The altered text
*/
- function doAllQuotes( $text ) {
+ public function doAllQuotes( $text ) {
wfProfileIn( __METHOD__ );
$outtext = '';
$lines = StringUtils::explode( "\n", $text );
* @throws MWException
* @return string
*/
- function replaceExternalLinks( $text ) {
+ public function replaceExternalLinks( $text ) {
wfProfileIn( __METHOD__ );
$bits = preg_split( $this->mExtLinkBracketedRegex, $text, -1, PREG_SPLIT_DELIM_CAPTURE );
* nofollow if appropriate
* @return array Associative array of HTML attributes
*/
- function getExternalLinkAttribs( $url = false ) {
+ public function getExternalLinkAttribs( $url = false ) {
$attribs = array();
$attribs['rel'] = self::getExternalLinkRel( $url, $this->mTitle );
* the URL differently; as a workaround, just use the output for
* statistical records, not for actual linking/output.
*/
- static function replaceUnusualEscapes( $url ) {
+ public static function replaceUnusualEscapes( $url ) {
return preg_replace_callback( '/%[0-9A-Fa-f]{2}/',
array( __CLASS__, 'replaceUnusualEscapesCallback' ), $url );
}
*
* @private
*/
- function replaceInternalLinks( $s ) {
+ public function replaceInternalLinks( $s ) {
$this->mLinkHolders->merge( $this->replaceInternalLinks2( $s ) );
return $s;
}
*
* @private
*/
- function replaceInternalLinks2( &$s ) {
+ public function replaceInternalLinks2( &$s ) {
global $wgExtraInterlanguageLinkPrefixes;
wfProfileIn( __METHOD__ );
}
# Link not escaped by : , create the various objects
- if ( $noforce ) {
+ if ( $noforce && !$nt->wasLocalInterwiki() ) {
# Interwikis
wfProfileIn( __METHOD__ . "-interwiki" );
- # The final condition here is due to bug 68085
if (
$iw && $this->mOptions->getInterwikiMagic() && $nottalk && (
Language::fetchLanguageName( $iw, null, 'mw' ) ||
in_array( $iw, $wgExtraInterlanguageLinkPrefixes )
- ) && substr_compare( $this->getTargetLanguage()->lc( ltrim( $origLink ) ),
- $iw, 0, strlen( $iw ) ) === 0
+ )
) {
# Bug 24502: filter duplicates
if ( !isset( $this->mLangLinkLanguages[$iw] ) ) {
* @param string $prefix
* @return string HTML-wikitext mix oh yuck
*/
- function makeKnownLinkHolder( $nt, $text = '', $query = array(), $trail = '', $prefix = '' ) {
+ public function makeKnownLinkHolder( $nt, $text = '', $query = array(), $trail = '', $prefix = '' ) {
list( $inside, $trail ) = Linker::splitTrail( $trail );
if ( is_string( $query ) ) {
* @param string $text More-or-less HTML
* @return string Less-or-more HTML with NOPARSE bits
*/
- function armorLinks( $text ) {
+ public function armorLinks( $text ) {
return preg_replace( '/\b((?i)' . $this->mUrlProtocols . ')/',
"{$this->mUniqPrefix}NOPARSE$1", $text );
}
* Return true if subpage links should be expanded on this page.
* @return bool
*/
- function areSubpagesAllowed() {
+ public function areSubpagesAllowed() {
# Some namespaces don't allow subpages
return MWNamespace::hasSubpages( $this->mTitle->getNamespace() );
}
* @return string The full name of the link
* @private
*/
- function maybeDoSubpageLink( $target, &$text ) {
+ public function maybeDoSubpageLink( $target, &$text ) {
return Linker::normalizeSubpageLink( $this->mTitle, $target, $text );
}
*
* @return string
*/
- function closeParagraph() {
+ public function closeParagraph() {
$result = '';
if ( $this->mLastSection != '' ) {
$result = '</' . $this->mLastSection . ">\n";
*
* @return int
*/
- function getCommon( $st1, $st2 ) {
+ public function getCommon( $st1, $st2 ) {
$fl = strlen( $st1 );
$shorter = strlen( $st2 );
if ( $fl < $shorter ) {
*
* @return string
*/
- function openList( $char ) {
+ public function openList( $char ) {
$result = $this->closeParagraph();
if ( '*' === $char ) {
*
* @return string
*/
- function nextItem( $char ) {
+ public function nextItem( $char ) {
if ( '*' === $char || '#' === $char ) {
return "</li>\n<li>";
} elseif ( ':' === $char || ';' === $char ) {
*
* @return string
*/
- function closeList( $char ) {
+ public function closeList( $char ) {
if ( '*' === $char ) {
$text = "</li></ul>";
} elseif ( '#' === $char ) {
* @private
* @return string The lists rendered as HTML
*/
- function doBlockLevels( $text, $linestart ) {
+ public function doBlockLevels( $text, $linestart ) {
wfProfileIn( __METHOD__ );
# Parsing through the text line by line. The main thing
* @throws MWException
* @return string The position of the ':', or false if none found
*/
- function findColonNoLinks( $str, &$before, &$after ) {
+ public function findColonNoLinks( $str, &$before, &$after ) {
wfProfileIn( __METHOD__ );
$pos = strpos( $str, ':' );
* @throws MWException
* @return string
*/
- function getVariableValue( $index, $frame = false ) {
+ public function getVariableValue( $index, $frame = false ) {
global $wgContLang, $wgSitename, $wgServer, $wgServerName;
global $wgArticlePath, $wgScriptPath, $wgStylePath;
*
* @private
*/
- function initialiseVariables() {
+ public function initialiseVariables() {
wfProfileIn( __METHOD__ );
$variableIDs = MagicWord::getVariableIDs();
$substIDs = MagicWord::getSubstIDs();
*
* @return PPNode
*/
- function preprocessToDom( $text, $flags = 0 ) {
+ public function preprocessToDom( $text, $flags = 0 ) {
$dom = $this->getPreprocessor()->preprocessToObj( $text, $flags );
return $dom;
}
*
* @return array
*/
- static function createAssocArgs( $args ) {
+ public static function createAssocArgs( $args ) {
$assocArgs = array();
$index = 1;
foreach ( $args as $arg ) {
* @param string|int|null $max Maximum allowed, when an explicit limit has been
* exceeded, provide the values (optional)
*/
- function limitationWarn( $limitationType, $current = '', $max = '' ) {
+ public function limitationWarn( $limitationType, $current = '', $max = '' ) {
# does no harm if $current and $max are present but are unnecessary for the message
$warning = wfMessage( "$limitationType-warning" )->numParams( $current, $max )
->inLanguage( $this->mOptions->getUserLangObj() )->text();
*
* @return array
*/
- function getTemplateDom( $title ) {
+ public function getTemplateDom( $title ) {
$cacheTitle = $title;
$titleText = $title->getPrefixedDBkey();
* @param Title $title
* @return array ( string or false, Title )
*/
- function fetchTemplateAndTitle( $title ) {
+ public function fetchTemplateAndTitle( $title ) {
// Defaults to Parser::statelessFetchTemplate()
$templateCb = $this->mOptions->getTemplateCallback();
$stuff = call_user_func( $templateCb, $title, $this );
* @param Title $title
* @return string|bool
*/
- function fetchTemplate( $title ) {
+ public function fetchTemplate( $title ) {
$rv = $this->fetchTemplateAndTitle( $title );
return $rv[0];
}
*
* @return array
*/
- static function statelessFetchTemplate( $title, $parser = false ) {
+ public static function statelessFetchTemplate( $title, $parser = false ) {
$text = $skip = false;
$finalTitle = $title;
$deps = array();
* @param array $options Array of options to RepoGroup::findFile
* @return File|bool
*/
- function fetchFile( $title, $options = array() ) {
+ public function fetchFile( $title, $options = array() ) {
$res = $this->fetchFileAndTitle( $title, $options );
return $res[0];
}
* @param array $options Array of options to RepoGroup::findFile
* @return array ( File or false, Title of file )
*/
- function fetchFileAndTitle( $title, $options = array() ) {
+ public function fetchFileAndTitle( $title, $options = array() ) {
$file = $this->fetchFileNoRegister( $title, $options );
$time = $file ? $file->getTimestamp() : false;
*
* @return string
*/
- function interwikiTransclude( $title, $action ) {
+ public function interwikiTransclude( $title, $action ) {
global $wgEnableScaryTranscluding;
if ( !$wgEnableScaryTranscluding ) {
* @param string $url
* @return mixed|string
*/
- function fetchScaryTemplateMaybeFromCache( $url ) {
+ public function fetchScaryTemplateMaybeFromCache( $url ) {
global $wgTranscludeCacheExpiry;
$dbr = wfGetDB( DB_SLAVE );
$tsCond = $dbr->timestamp( time() - $wgTranscludeCacheExpiry );
*
* @return array
*/
- function argSubstitution( $piece, $frame ) {
+ public function argSubstitution( $piece, $frame ) {
wfProfileIn( __METHOD__ );
$error = false;
* @throws MWException
* @return string
*/
- function extensionSubstitution( $params, $frame ) {
+ public function extensionSubstitution( $params, $frame ) {
$name = $frame->expand( $params['name'] );
$attrText = !isset( $params['attr'] ) ? null : $frame->expand( $params['attr'] );
$content = !isset( $params['inner'] ) ? null : $frame->expand( $params['inner'] );
* @param int $size The size of the text
* @return bool False if this inclusion would take it over the maximum, true otherwise
*/
- function incrementIncludeSize( $type, $size ) {
+ public function incrementIncludeSize( $type, $size ) {
if ( $this->mIncludeSizes[$type] + $size > $this->mOptions->getMaxIncludeSize() ) {
return false;
} else {
*
* @return bool False if the limit has been exceeded
*/
- function incrementExpensiveFunctionCount() {
+ public function incrementExpensiveFunctionCount() {
$this->mExpensiveFunctionCount++;
return $this->mExpensiveFunctionCount <= $this->mOptions->getExpensiveParserFunctionLimit();
}
*
* @return string
*/
- function doDoubleUnderscore( $text ) {
+ public function doDoubleUnderscore( $text ) {
wfProfileIn( __METHOD__ );
# The position of __TOC__ needs to be recorded
* @return mixed|string
* @private
*/
- function formatHeadings( $text, $origText, $isMain = true ) {
+ public function formatHeadings( $text, $origText, $isMain = true ) {
global $wgMaxTocLevel, $wgExperimentalHtmlIds;
# Inhibit editsection links if requested in the page
* or null to use default value
* @return string
*/
- function getUserSig( &$user, $nickname = false, $fancySig = null ) {
+ public function getUserSig( &$user, $nickname = false, $fancySig = null ) {
global $wgMaxSigChars;
$username = $user->getName();
* @param string $text
* @return string|bool An expanded string, or false if invalid.
*/
- function validateSig( $text ) {
+ public function validateSig( $text ) {
return Xml::isWellFormedXmlFragment( $text ) ? $text : false;
}
* @throws MWException
* @return callable|null The old value of the mTagHooks array associated with the hook
*/
- function setTransparentTagHook( $tag, $callback ) {
+ public function setTransparentTagHook( $tag, $callback ) {
$tag = strtolower( $tag );
if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) {
throw new MWException( "Invalid character {$m[0]} in setTransparentHook('$tag', ...) call" );
/**
* Remove all tag hooks
*/
- function clearTagHooks() {
+ public function clearTagHooks() {
$this->mTagHooks = array();
$this->mFunctionTagHooks = array();
$this->mStripList = $this->mDefaultStripList;
*
* @return array
*/
- function getFunctionHooks() {
+ public function getFunctionHooks() {
return array_keys( $this->mFunctionHooks );
}
* @throws MWException
* @return null
*/
- function setFunctionTagHook( $tag, $callback, $flags ) {
+ public function setFunctionTagHook( $tag, $callback, $flags ) {
$tag = strtolower( $tag );
if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) {
throw new MWException( "Invalid character {$m[0]} in setFunctionTagHook('$tag', ...) call" );
*
* @return array Array of link CSS classes, indexed by PDBK.
*/
- function replaceLinkHolders( &$text, $options = 0 ) {
+ public function replaceLinkHolders( &$text, $options = 0 ) {
return $this->mLinkHolders->replace( $text );
}
* @param string $text
* @return string
*/
- function replaceLinkHoldersText( $text ) {
+ public function replaceLinkHoldersText( $text ) {
return $this->mLinkHolders->replaceText( $text );
}
* @param array $params
* @return string HTML
*/
- function renderImageGallery( $text, $params ) {
+ public function renderImageGallery( $text, $params ) {
wfProfileIn( __METHOD__ );
$mode = false;
* @param string $handler
* @return array
*/
- function getImageParams( $handler ) {
+ public function getImageParams( $handler ) {
if ( $handler ) {
$handlerClass = get_class( $handler );
} else {
* @param LinkHolderArray|bool $holders
* @return string HTML
*/
- function makeImage( $title, $options, $holders = false ) {
+ public function makeImage( $title, $options, $holders = false ) {
# Check if the options text is of the form "options|alt text"
# Options are:
# * thumbnail make a thumbnail with enlarge-icon and caption, alignment depends on lang
$paramName = 'no-link';
$value = true;
$validated = true;
- } elseif ( preg_match( "/^(?i)$prots/", $value ) ) {
+ } elseif ( preg_match( "/^((?i)$prots)/", $value ) ) {
if ( preg_match( "/^((?i)$prots)$chars+$/u", $value, $m ) ) {
$paramName = 'link-url';
$this->mOutput->addExternalLink( $value );
* Set a flag in the output object indicating that the content is dynamic and
* shouldn't be cached.
*/
- function disableCache() {
+ public function disableCache() {
wfDebug( "Parser output marked as uncacheable.\n" );
if ( !$this->mOutput ) {
throw new MWException( __METHOD__ .
* @param bool|PPFrame $frame
* @return string
*/
- function attributeStripCallback( &$text, $frame = false ) {
+ public function attributeStripCallback( &$text, $frame = false ) {
$text = $this->replaceVariables( $text, $frame );
$text = $this->mStripState->unstripBoth( $text );
return $text;
*
* @return array
*/
- function getTags() {
+ public function getTags() {
return array_merge(
array_keys( $this->mTransparentTagHooks ),
array_keys( $this->mTagHooks ),
*
* @return string
*/
- function replaceTransparentTags( $text ) {
+ public function replaceTransparentTags( $text ) {
$matches = array();
$elements = array_keys( $this->mTransparentTagHooks );
$text = self::extractTagsAndParams( $elements, $text, $matches, $this->mUniqPrefix );
*
* @return int|null
*/
- function getRevisionId() {
+ public function getRevisionId() {
return $this->mRevisionId;
}
* the default server-local timestamp
* @return string
*/
- function getRevisionTimestamp() {
+ public function getRevisionTimestamp() {
if ( is_null( $this->mRevisionTimestamp ) ) {
wfProfileIn( __METHOD__ );
*
* @return string User name
*/
- function getRevisionUser() {
+ public function getRevisionUser() {
if ( is_null( $this->mRevisionUser ) ) {
$revObject = $this->getRevisionObject();
*
* @return int|null Revision size
*/
- function getRevisionSize() {
+ public function getRevisionSize() {
if ( is_null( $this->mRevisionSize ) ) {
$revObject = $this->getRevisionObject();
*
* @return string
*/
- function testSrvus( $text, Title $title, ParserOptions $options, $outputType = self::OT_HTML ) {
+ public function testSrvus( $text, Title $title, ParserOptions $options, $outputType = self::OT_HTML ) {
$magicScopeVariable = $this->lock();
$this->startParse( $title, $options, $outputType, true );
* @param ParserOptions $options
* @return string
*/
- function testPst( $text, Title $title, ParserOptions $options ) {
+ public function testPst( $text, Title $title, ParserOptions $options ) {
return $this->preSaveTransform( $text, $title, $options->getUser(), $options );
}
* @param ParserOptions $options
* @return string
*/
- function testPreprocess( $text, Title $title, ParserOptions $options ) {
+ public function testPreprocess( $text, Title $title, ParserOptions $options ) {
return $this->testSrvus( $text, $title, $options, self::OT_PREPROCESS );
}
*
* @return string
*/
- function markerSkipCallback( $s, $callback ) {
+ public function markerSkipCallback( $s, $callback ) {
$i = 0;
$out = '';
while ( $i < strlen( $s ) ) {
* @param string $text Input string
* @return string
*/
- function killMarkers( $text ) {
+ public function killMarkers( $text ) {
return $this->mStripState->killMarkers( $text );
}
*
* @return array
*/
- function serializeHalfParsedText( $text ) {
+ public function serializeHalfParsedText( $text ) {
wfProfileIn( __METHOD__ );
$data = array(
'text' => $text,
* @throws MWException
* @return string
*/
- function unserializeHalfParsedText( $data ) {
+ public function unserializeHalfParsedText( $data ) {
if ( !isset( $data['version'] ) || $data['version'] != self::HALF_PARSED_VERSION ) {
throw new MWException( __METHOD__ . ': invalid version' );
}
*
* @return bool
*/
- function isValidHalfParsedText( $data ) {
+ public function isValidHalfParsedText( $data ) {
return isset( $data['version'] ) && $data['version'] == self::HALF_PARSED_VERSION;
}
* @param ParserOptions $popts
* @return string
*/
- function getETag( $article, $popts ) {
+ public function getETag( $article, $popts ) {
return 'W/"' . $this->getParserOutputKey( $article,
$popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ) .
"--" . $article->getTouched() . '"';
*/
class ParserDiffTest
{
- var $parsers, $conf;
- var $shortOutput = false;
+ public $parsers;
+ public $conf;
+ public $shortOutput = false;
+ public $dtUniqPrefix;
- var $dtUniqPrefix;
-
- function __construct( $conf ) {
+ public function __construct( $conf ) {
if ( !isset( $conf['parsers'] ) ) {
throw new MWException( __METHOD__ . ': no parsers specified' );
}
$this->conf = $conf;
}
- function init() {
+ public function init() {
if ( !is_null( $this->parsers ) ) {
return;
}
}
}
- function __call( $name, $args ) {
+ public function __call( $name, $args ) {
$this->init();
$results = array();
$mismatch = false;
return $lastResult;
}
- function formatArray( $array ) {
+ public function formatArray( $array ) {
if ( $this->shortOutput ) {
foreach ( $array as $key => $value ) {
if ( $value instanceof ParserOutput ) {
return var_export( $array, true );
}
- function setFunctionHook( $id, $callback, $flags = 0 ) {
+ public function setFunctionHook( $id, $callback, $flags = 0 ) {
$this->init();
foreach ( $this->parsers as $parser ) {
$parser->setFunctionHook( $id, $callback, $flags );
* @param Parser $parser
* @return bool
*/
- function onClearState( &$parser ) {
+ public function onClearState( &$parser ) {
// hack marker prefixes to get identical output
if ( !isset( $this->dtUniqPrefix ) ) {
$this->dtUniqPrefix = $parser->uniqPrefix();
/**
* Interlanguage links are removed and returned in an array
*/
- var $mInterwikiMagic;
+ public $mInterwikiMagic;
/**
* Allow external images inline?
*/
- var $mAllowExternalImages;
+ public $mAllowExternalImages;
/**
* If not, any exception?
*/
- var $mAllowExternalImagesFrom;
+ public $mAllowExternalImagesFrom;
/**
* If not or it doesn't match, should we check an on-wiki whitelist?
*/
- var $mEnableImageWhitelist;
+ public $mEnableImageWhitelist;
/**
* Date format index
*/
- var $mDateFormat = null;
+ public $mDateFormat = null;
/**
* Create "edit section" links?
*/
- var $mEditSection = true;
+ public $mEditSection = true;
/**
* Allow inclusion of special pages?
*/
- var $mAllowSpecialInclusion;
+ public $mAllowSpecialInclusion;
/**
* Use tidy to cleanup output HTML?
*/
- var $mTidy = false;
+ public $mTidy = false;
/**
* Which lang to call for PLURAL and GRAMMAR
*/
- var $mInterfaceMessage = false;
+ public $mInterfaceMessage = false;
/**
* Overrides $mInterfaceMessage with arbitrary language
*/
- var $mTargetLanguage = null;
+ public $mTargetLanguage = null;
/**
* Maximum size of template expansions, in bytes
*/
- var $mMaxIncludeSize;
+ public $mMaxIncludeSize;
/**
* Maximum number of nodes touched by PPFrame::expand()
*/
- var $mMaxPPNodeCount;
+ public $mMaxPPNodeCount;
/**
* Maximum number of nodes generated by Preprocessor::preprocessToObj()
*/
- var $mMaxGeneratedPPNodeCount;
+ public $mMaxGeneratedPPNodeCount;
/**
* Maximum recursion depth in PPFrame::expand()
*/
- var $mMaxPPExpandDepth;
+ public $mMaxPPExpandDepth;
/**
* Maximum recursion depth for templates within templates
*/
- var $mMaxTemplateDepth;
+ public $mMaxTemplateDepth;
/**
* Maximum number of calls per parse to expensive parser functions
*/
- var $mExpensiveParserFunctionLimit;
+ public $mExpensiveParserFunctionLimit;
/**
* Remove HTML comments. ONLY APPLIES TO PREPROCESS OPERATIONS
*/
- var $mRemoveComments = true;
+ public $mRemoveComments = true;
/**
* Callback for template fetching. Used as first argument to call_user_func().
*/
- var $mTemplateCallback =
+ public $mTemplateCallback =
array( 'Parser', 'statelessFetchTemplate' );
/**
* Enable limit report in an HTML comment on output
*/
- var $mEnableLimitReport = false;
+ public $mEnableLimitReport = false;
/**
* Timestamp used for {{CURRENTDAY}} etc.
*/
- var $mTimestamp;
+ public $mTimestamp;
/**
* Target attribute for external links
*/
- var $mExternalLinkTarget;
+ public $mExternalLinkTarget;
/**
* Clean up signature texts?
* 1) Strip ~~~, ~~~~ and ~~~~~ out of signatures
* 2) Substitute all transclusions
*/
- var $mCleanSignatures;
+ public $mCleanSignatures;
/**
* Transform wiki markup when saving the page?
*/
- var $mPreSaveTransform = true;
+ public $mPreSaveTransform = true;
/**
* Whether content conversion should be disabled
*/
- var $mDisableContentConversion;
+ public $mDisableContentConversion;
/**
* Whether title conversion should be disabled
*/
- var $mDisableTitleConversion;
+ public $mDisableTitleConversion;
/**
* Automatically number headings?
*/
- var $mNumberHeadings;
+ public $mNumberHeadings;
/**
* Thumb size preferred by the user.
*/
- var $mThumbSize;
+ public $mThumbSize;
/**
* Maximum article size of an article to be marked as "stub"
/**
* Language object of the User language.
*/
- var $mUserLang;
+ public $mUserLang;
/**
* @var User
* Stored user object
*/
- var $mUser;
+ public $mUser;
/**
* Parsing the page for a "preview" operation?
*/
- var $mIsPreview = false;
+ public $mIsPreview = false;
/**
* Parsing the page for a "preview" operation on a single section?
*/
- var $mIsSectionPreview = false;
+ public $mIsSectionPreview = false;
/**
* Parsing the printable version of the page?
*/
- var $mIsPrintable = false;
+ public $mIsPrintable = false;
/**
* Extra key that should be present in the caching key.
*/
- var $mExtraKey = '';
+ public $mExtraKey = '';
/**
* Function to be called when an option is accessed.
*/
protected $onAccessCallback = null;
- function getInterwikiMagic() {
+ public function getInterwikiMagic() {
return $this->mInterwikiMagic;
}
- function getAllowExternalImages() {
+ public function getAllowExternalImages() {
return $this->mAllowExternalImages;
}
- function getAllowExternalImagesFrom() {
+ public function getAllowExternalImagesFrom() {
return $this->mAllowExternalImagesFrom;
}
- function getEnableImageWhitelist() {
+ public function getEnableImageWhitelist() {
return $this->mEnableImageWhitelist;
}
- function getEditSection() {
+ public function getEditSection() {
return $this->mEditSection;
}
- function getNumberHeadings() {
+ public function getNumberHeadings() {
$this->optionUsed( 'numberheadings' );
return $this->mNumberHeadings;
}
- function getAllowSpecialInclusion() {
+ public function getAllowSpecialInclusion() {
return $this->mAllowSpecialInclusion;
}
- function getTidy() {
+ public function getTidy() {
return $this->mTidy;
}
- function getInterfaceMessage() {
+ public function getInterfaceMessage() {
return $this->mInterfaceMessage;
}
- function getTargetLanguage() {
+ public function getTargetLanguage() {
return $this->mTargetLanguage;
}
- function getMaxIncludeSize() {
+ public function getMaxIncludeSize() {
return $this->mMaxIncludeSize;
}
- function getMaxPPNodeCount() {
+ public function getMaxPPNodeCount() {
return $this->mMaxPPNodeCount;
}
- function getMaxGeneratedPPNodeCount() {
+ public function getMaxGeneratedPPNodeCount() {
return $this->mMaxGeneratedPPNodeCount;
}
- function getMaxPPExpandDepth() {
+ public function getMaxPPExpandDepth() {
return $this->mMaxPPExpandDepth;
}
- function getMaxTemplateDepth() {
+ public function getMaxTemplateDepth() {
return $this->mMaxTemplateDepth;
}
/* @since 1.20 */
- function getExpensiveParserFunctionLimit() {
+ public function getExpensiveParserFunctionLimit() {
return $this->mExpensiveParserFunctionLimit;
}
- function getRemoveComments() {
+ public function getRemoveComments() {
return $this->mRemoveComments;
}
- function getTemplateCallback() {
+ public function getTemplateCallback() {
return $this->mTemplateCallback;
}
- function getEnableLimitReport() {
+ public function getEnableLimitReport() {
return $this->mEnableLimitReport;
}
- function getCleanSignatures() {
+ public function getCleanSignatures() {
return $this->mCleanSignatures;
}
- function getExternalLinkTarget() {
+ public function getExternalLinkTarget() {
return $this->mExternalLinkTarget;
}
- function getDisableContentConversion() {
+ public function getDisableContentConversion() {
return $this->mDisableContentConversion;
}
- function getDisableTitleConversion() {
+ public function getDisableTitleConversion() {
return $this->mDisableTitleConversion;
}
- function getThumbSize() {
+ public function getThumbSize() {
$this->optionUsed( 'thumbsize' );
return $this->mThumbSize;
}
- function getStubThreshold() {
+ public function getStubThreshold() {
$this->optionUsed( 'stubthreshold' );
return $this->mStubThreshold;
}
- function getIsPreview() {
+ public function getIsPreview() {
return $this->mIsPreview;
}
- function getIsSectionPreview() {
+ public function getIsSectionPreview() {
return $this->mIsSectionPreview;
}
- function getIsPrintable() {
+ public function getIsPrintable() {
$this->optionUsed( 'printable' );
return $this->mIsPrintable;
}
- function getUser() {
+ public function getUser() {
return $this->mUser;
}
- function getPreSaveTransform() {
+ public function getPreSaveTransform() {
return $this->mPreSaveTransform;
}
- function getDateFormat() {
+ public function getDateFormat() {
$this->optionUsed( 'dateformat' );
if ( !isset( $this->mDateFormat ) ) {
$this->mDateFormat = $this->mUser->getDatePreference();
return $this->mDateFormat;
}
- function getTimestamp() {
+ public function getTimestamp() {
if ( !isset( $this->mTimestamp ) ) {
$this->mTimestamp = wfTimestampNow();
}
* @return Language
* @since 1.19
*/
- function getUserLangObj() {
+ public function getUserLangObj() {
$this->optionUsed( 'userlang' );
return $this->mUserLang;
}
* @return string Language code
* @since 1.17
*/
- function getUserLang() {
+ public function getUserLang() {
return $this->getUserLangObj()->getCode();
}
- function setInterwikiMagic( $x ) {
+ public function setInterwikiMagic( $x ) {
return wfSetVar( $this->mInterwikiMagic, $x );
}
- function setAllowExternalImages( $x ) {
+ public function setAllowExternalImages( $x ) {
return wfSetVar( $this->mAllowExternalImages, $x );
}
- function setAllowExternalImagesFrom( $x ) {
+ public function setAllowExternalImagesFrom( $x ) {
return wfSetVar( $this->mAllowExternalImagesFrom, $x );
}
- function setEnableImageWhitelist( $x ) {
+ public function setEnableImageWhitelist( $x ) {
return wfSetVar( $this->mEnableImageWhitelist, $x );
}
- function setDateFormat( $x ) {
+ public function setDateFormat( $x ) {
return wfSetVar( $this->mDateFormat, $x );
}
- function setEditSection( $x ) {
+ public function setEditSection( $x ) {
return wfSetVar( $this->mEditSection, $x );
}
- function setNumberHeadings( $x ) {
+ public function setNumberHeadings( $x ) {
return wfSetVar( $this->mNumberHeadings, $x );
}
- function setAllowSpecialInclusion( $x ) {
+ public function setAllowSpecialInclusion( $x ) {
return wfSetVar( $this->mAllowSpecialInclusion, $x );
}
- function setTidy( $x ) {
+ public function setTidy( $x ) {
return wfSetVar( $this->mTidy, $x );
}
- function setInterfaceMessage( $x ) {
+ public function setInterfaceMessage( $x ) {
return wfSetVar( $this->mInterfaceMessage, $x );
}
- function setTargetLanguage( $x ) {
+ public function setTargetLanguage( $x ) {
return wfSetVar( $this->mTargetLanguage, $x, true );
}
- function setMaxIncludeSize( $x ) {
+ public function setMaxIncludeSize( $x ) {
return wfSetVar( $this->mMaxIncludeSize, $x );
}
- function setMaxPPNodeCount( $x ) {
+ public function setMaxPPNodeCount( $x ) {
return wfSetVar( $this->mMaxPPNodeCount, $x );
}
- function setMaxGeneratedPPNodeCount( $x ) {
+ public function setMaxGeneratedPPNodeCount( $x ) {
return wfSetVar( $this->mMaxGeneratedPPNodeCount, $x );
}
- function setMaxTemplateDepth( $x ) {
+ public function setMaxTemplateDepth( $x ) {
return wfSetVar( $this->mMaxTemplateDepth, $x );
}
/* @since 1.20 */
- function setExpensiveParserFunctionLimit( $x ) {
+ public function setExpensiveParserFunctionLimit( $x ) {
return wfSetVar( $this->mExpensiveParserFunctionLimit, $x );
}
- function setRemoveComments( $x ) {
+ public function setRemoveComments( $x ) {
return wfSetVar( $this->mRemoveComments, $x );
}
- function setTemplateCallback( $x ) {
+ public function setTemplateCallback( $x ) {
return wfSetVar( $this->mTemplateCallback, $x );
}
- function enableLimitReport( $x = true ) {
+ public function enableLimitReport( $x = true ) {
return wfSetVar( $this->mEnableLimitReport, $x );
}
- function setTimestamp( $x ) {
+ public function setTimestamp( $x ) {
return wfSetVar( $this->mTimestamp, $x );
}
- function setCleanSignatures( $x ) {
+ public function setCleanSignatures( $x ) {
return wfSetVar( $this->mCleanSignatures, $x );
}
- function setExternalLinkTarget( $x ) {
+ public function setExternalLinkTarget( $x ) {
return wfSetVar( $this->mExternalLinkTarget, $x );
}
- function disableContentConversion( $x = true ) {
+ public function disableContentConversion( $x = true ) {
return wfSetVar( $this->mDisableContentConversion, $x );
}
- function disableTitleConversion( $x = true ) {
+ public function disableTitleConversion( $x = true ) {
return wfSetVar( $this->mDisableTitleConversion, $x );
}
- function setUserLang( $x ) {
+ public function setUserLang( $x ) {
if ( is_string( $x ) ) {
$x = Language::factory( $x );
}
return wfSetVar( $this->mUserLang, $x );
}
- function setThumbSize( $x ) {
+ public function setThumbSize( $x ) {
return wfSetVar( $this->mThumbSize, $x );
}
- function setStubThreshold( $x ) {
+ public function setStubThreshold( $x ) {
return wfSetVar( $this->mStubThreshold, $x );
}
- function setPreSaveTransform( $x ) {
+ public function setPreSaveTransform( $x ) {
return wfSetVar( $this->mPreSaveTransform, $x );
}
- function setIsPreview( $x ) {
+ public function setIsPreview( $x ) {
return wfSetVar( $this->mIsPreview, $x );
}
- function setIsSectionPreview( $x ) {
+ public function setIsSectionPreview( $x ) {
return wfSetVar( $this->mIsSectionPreview, $x );
}
- function setIsPrintable( $x ) {
+ public function setIsPrintable( $x ) {
return wfSetVar( $this->mIsPrintable, $x );
}
/**
* Extra key that should be present in the parser cache key.
+ * @param string $key
*/
- function addExtraKey( $key ) {
+ public function addExtraKey( $key ) {
$this->mExtraKey .= '!' . $key;
}
* @param User $user
* @param Language $lang
*/
- function __construct( $user = null, $lang = null ) {
+ public function __construct( $user = null, $lang = null ) {
if ( $user === null ) {
global $wgUser;
if ( $wgUser === null ) {
* This is a private API with the parser.
* @param callable $callback
*/
- function registerWatcher( $callback ) {
+ public function registerWatcher( $callback ) {
$this->onAccessCallback = $callback;
}
* @ingroup Parser
*/
class ParserOutput extends CacheTime {
- var $mText, # The output text
+ public $mText, # The output text
$mLanguageLinks, # List of the full text of language links, in the order they appear
$mCategories, # Map of category names to sort keys
$mTitleText, # title text of the chosen language variant
const EDITSECTION_REGEX =
'#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
- function __construct( $text = '', $languageLinks = array(), $categoryLinks = array(),
+ public function __construct( $text = '', $languageLinks = array(), $categoryLinks = array(),
$containsOldMagic = false, $titletext = ''
) {
$this->mText = $text;
$this->mTitleText = $titletext;
}
- function getText() {
+ public function getText() {
wfProfileIn( __METHOD__ );
$text = $this->mText;
if ( $this->mEditSectionTokens ) {
* @throws MWException
* @return mixed
*/
- function replaceEditSectionLinksCallback( $m ) {
+ public function replaceEditSectionLinksCallback( $m ) {
global $wgOut, $wgLang;
$args = array(
htmlspecialchars_decode( $m[1] ),
return call_user_func_array( array( $skin, 'doEditSectionLink' ), $args );
}
- function &getLanguageLinks() {
+ public function &getLanguageLinks() {
return $this->mLanguageLinks;
}
- function getInterwikiLinks() {
+ public function getInterwikiLinks() {
return $this->mInterwikiLinks;
}
- function getCategoryLinks() {
+ public function getCategoryLinks() {
return array_keys( $this->mCategories );
}
- function &getCategories() {
+ public function &getCategories() {
return $this->mCategories;
}
- function getTitleText() {
+ public function getTitleText() {
return $this->mTitleText;
}
- function getSections() {
+ public function getSections() {
return $this->mSections;
}
- function getEditSectionTokens() {
+ public function getEditSectionTokens() {
return $this->mEditSectionTokens;
}
- function &getLinks() {
+ public function &getLinks() {
return $this->mLinks;
}
- function &getTemplates() {
+ public function &getTemplates() {
return $this->mTemplates;
}
- function &getTemplateIds() {
+ public function &getTemplateIds() {
return $this->mTemplateIds;
}
- function &getImages() {
+ public function &getImages() {
return $this->mImages;
}
- function &getFileSearchOptions() {
+ public function &getFileSearchOptions() {
return $this->mFileSearchOptions;
}
- function &getExternalLinks() {
+ public function &getExternalLinks() {
return $this->mExternalLinks;
}
- function getNoGallery() {
+ public function getNoGallery() {
return $this->mNoGallery;
}
- function getHeadItems() {
+ public function getHeadItems() {
return $this->mHeadItems;
}
- function getModules() {
+ public function getModules() {
return $this->mModules;
}
- function getModuleScripts() {
+ public function getModuleScripts() {
return $this->mModuleScripts;
}
- function getModuleStyles() {
+ public function getModuleStyles() {
return $this->mModuleStyles;
}
- function getModuleMessages() {
+ public function getModuleMessages() {
return $this->mModuleMessages;
}
/** @since 1.23 */
- function getJsConfigVars() {
+ public function getJsConfigVars() {
return $this->mJsConfigVars;
}
- function getOutputHooks() {
+ public function getOutputHooks() {
return (array)$this->mOutputHooks;
}
- function getWarnings() {
+ public function getWarnings() {
return array_keys( $this->mWarnings );
}
- function getIndexPolicy() {
+ public function getIndexPolicy() {
return $this->mIndexPolicy;
}
- function getTOCHTML() {
+ public function getTOCHTML() {
return $this->mTOCHTML;
}
- function getTimestamp() {
+ public function getTimestamp() {
return $this->mTimestamp;
}
- function getLimitReportData() {
+ public function getLimitReportData() {
return $this->mLimitReportData;
}
- function getTOCEnabled() {
+ public function getTOCEnabled() {
return $this->mTOCEnabled;
}
- function setText( $text ) {
+ public function setText( $text ) {
return wfSetVar( $this->mText, $text );
}
- function setLanguageLinks( $ll ) {
+ public function setLanguageLinks( $ll ) {
return wfSetVar( $this->mLanguageLinks, $ll );
}
- function setCategoryLinks( $cl ) {
+ public function setCategoryLinks( $cl ) {
return wfSetVar( $this->mCategories, $cl );
}
- function setTitleText( $t ) {
+ public function setTitleText( $t ) {
return wfSetVar( $this->mTitleText, $t );
}
- function setSections( $toc ) {
+ public function setSections( $toc ) {
return wfSetVar( $this->mSections, $toc );
}
- function setEditSectionTokens( $t ) {
+ public function setEditSectionTokens( $t ) {
return wfSetVar( $this->mEditSectionTokens, $t );
}
- function setIndexPolicy( $policy ) {
+ public function setIndexPolicy( $policy ) {
return wfSetVar( $this->mIndexPolicy, $policy );
}
- function setTOCHTML( $tochtml ) {
+ public function setTOCHTML( $tochtml ) {
return wfSetVar( $this->mTOCHTML, $tochtml );
}
- function setTimestamp( $timestamp ) {
+ public function setTimestamp( $timestamp ) {
return wfSetVar( $this->mTimestamp, $timestamp );
}
- function setTOCEnabled( $flag ) {
+ public function setTOCEnabled( $flag ) {
return wfSetVar( $this->mTOCEnabled, $flag );
}
- function addCategory( $c, $sort ) {
+ public function addCategory( $c, $sort ) {
$this->mCategories[$c] = $sort;
}
- function addLanguageLink( $t ) {
+ public function addLanguageLink( $t ) {
$this->mLanguageLinks[] = $t;
}
- function addWarning( $s ) {
+ public function addWarning( $s ) {
$this->mWarnings[$s] = 1;
}
- function addOutputHook( $hook, $data = false ) {
+ public function addOutputHook( $hook, $data = false ) {
$this->mOutputHooks[] = array( $hook, $data );
}
- function setNewSection( $value ) {
+ public function setNewSection( $value ) {
$this->mNewSection = (bool)$value;
}
- function hideNewSection( $value ) {
+ public function hideNewSection( $value ) {
$this->mHideNewSection = (bool)$value;
}
- function getHideNewSection() {
+ public function getHideNewSection() {
return (bool)$this->mHideNewSection;
}
- function getNewSection() {
+ public function getNewSection() {
return (bool)$this->mNewSection;
}
* @param string $url The url to check
* @return bool
*/
- static function isLinkInternal( $internal, $url ) {
+ public static function isLinkInternal( $internal, $url ) {
return (bool)preg_match( '/^' .
# If server is proto relative, check also for http/https links
( substr( $internal, 0, 2 ) === '//' ? '(?:https?:)?' : '' ) .
);
}
- function addExternalLink( $url ) {
+ public function addExternalLink( $url ) {
# We don't register links pointing to our own server, unless... :-)
global $wgServer, $wgRegisterInternalExternals;
* @param Title $title
* @param int|null $id Optional known page_id so we can skip the lookup
*/
- function addLink( Title $title, $id = null ) {
+ public function addLink( Title $title, $id = null ) {
if ( $title->isExternal() ) {
// Don't record interwikis in pagelinks
$this->addInterwikiLink( $title );
* @param string $sha1 Base 36 SHA-1 of file (or false if non-existing)
* @return void
*/
- function addImage( $name, $timestamp = null, $sha1 = null ) {
+ public function addImage( $name, $timestamp = null, $sha1 = null ) {
$this->mImages[$name] = 1;
if ( $timestamp !== null && $sha1 !== null ) {
$this->mFileSearchOptions[$name] = array( 'time' => $timestamp, 'sha1' => $sha1 );
* @param int $rev_id
* @return void
*/
- function addTemplate( $title, $page_id, $rev_id ) {
+ public function addTemplate( $title, $page_id, $rev_id ) {
$ns = $title->getNamespace();
$dbk = $title->getDBkey();
if ( !isset( $this->mTemplates[$ns] ) ) {
* @param Title $title Title object, must be an interwiki link
* @throws MWException If given invalid input
*/
- function addInterwikiLink( $title ) {
+ public function addInterwikiLink( $title ) {
if ( !$title->isExternal() ) {
throw new MWException( 'Non-interwiki link passed, internal parser error.' );
}
* @param string $section
* @param string|bool $tag
*/
- function addHeadItem( $section, $tag = false ) {
+ public function addHeadItem( $section, $tag = false ) {
if ( $tag !== false ) {
$this->mHeadItems[$tag] = $section;
} else {
/**
* Fairly generic flag setter thingy.
+ * @param string $flag
*/
public function setFlag( $flag ) {
$this->mFlags[$flag] = true;
* Resets the parse start timestamps for future calls to getTimeSinceStart()
* @since 1.22
*/
- function resetParseStartTime() {
+ public function resetParseStartTime() {
$this->mParseStartTime = self::getTimes();
}
* @param string $clock
* @return float|null
*/
- function getTimeSinceStart( $clock ) {
+ public function getTimeSinceStart( $clock ) {
if ( !isset( $this->mParseStartTime[$clock] ) ) {
return null;
}
* @param string $key Message key
* @param mixed $value Appropriate for Message::params()
*/
- function setLimitReportData( $key, $value ) {
+ public function setLimitReportData( $key, $value ) {
$this->mLimitReportData[$key] = $value;
}
/**
* Save space for for serialization by removing useless values
*/
- function __sleep() {
+ public function __sleep() {
return array_diff(
array_keys( get_object_vars( $this ) ),
array( 'mSecondaryDataUpdates', 'mParseStartTime' )
*
* @param Parser $parser
*/
- function __construct( $parser );
+ public function __construct( $parser );
/**
* Create a new top-level frame for expansion of a page
*
* @return PPFrame
*/
- function newFrame();
+ public function newFrame();
/**
* Create a new custom frame for programmatic use of parameter replacement
*
* @return PPFrame
*/
- function newCustomFrame( $args );
+ public function newCustomFrame( $args );
/**
* Create a new custom node for programmatic use of parameter replacement
*
* @param array $values
*/
- function newPartNodeArray( $values );
+ public function newPartNodeArray( $values );
/**
* Preprocess text to a PPNode
*
* @return PPNode
*/
- function preprocessToObj( $text, $flags = 0 );
+ public function preprocessToObj( $text, $flags = 0 );
}
/**
*
* @return PPFrame
*/
- function newChild( $args = false, $title = false, $indexOffset = 0 );
+ public function newChild( $args = false, $title = false, $indexOffset = 0 );
/**
* Expand a document tree node, caching the result on its parent with the given key
*/
- function cachedExpand( $key, $root, $flags = 0 );
+ public function cachedExpand( $key, $root, $flags = 0 );
/**
* Expand a document tree node
*/
- function expand( $root, $flags = 0 );
+ public function expand( $root, $flags = 0 );
/**
* Implode with flags for expand()
*/
- function implodeWithFlags( $sep, $flags /*, ... */ );
+ public function implodeWithFlags( $sep, $flags /*, ... */ );
/**
* Implode with no flags specified
*/
- function implode( $sep /*, ... */ );
+ public function implode( $sep /*, ... */ );
/**
* Makes an object that, when expand()ed, will be the same as one obtained
* with implode()
*/
- function virtualImplode( $sep /*, ... */ );
+ public function virtualImplode( $sep /*, ... */ );
/**
* Virtual implode with brackets
*/
- function virtualBracketedImplode( $start, $sep, $end /*, ... */ );
+ public function virtualBracketedImplode( $start, $sep, $end /*, ... */ );
/**
* Returns true if there are no arguments in this frame
*
* @return bool
*/
- function isEmpty();
+ public function isEmpty();
/**
* Returns all arguments of this frame
*/
- function getArguments();
+ public function getArguments();
/**
* Returns all numbered arguments of this frame
*/
- function getNumberedArguments();
+ public function getNumberedArguments();
/**
* Returns all named arguments of this frame
*/
- function getNamedArguments();
+ public function getNamedArguments();
/**
* Get an argument to this frame by name
*/
- function getArgument( $name );
+ public function getArgument( $name );
/**
* Returns true if the infinite loop check is OK, false if a loop is detected
* @param Title $title
* @return bool
*/
- function loopCheck( $title );
+ public function loopCheck( $title );
/**
* Return true if the frame is a template frame
*/
- function isTemplate();
+ public function isTemplate();
/**
* Set the "volatile" flag.
*
* @param bool $flag
*/
- function setVolatile( $flag = true );
+ public function setVolatile( $flag = true );
/**
* Get the "volatile" flag.
* @see self::setVolatile()
* @return bool
*/
- function isVolatile();
+ public function isVolatile();
/**
* Get the TTL of the frame's output.
*
* @return int|null
*/
- function getTTL();
+ public function getTTL();
/**
* Set the TTL of the output of this frame and all of its ancestors.
* @see self::getTTL()
* @param int $ttl
*/
- function setTTL( $ttl );
+ public function setTTL( $ttl );
/**
* Get a title of frame
*
* @return Title
*/
- function getTitle();
+ public function getTitle();
}
/**
* Get an array-type node containing the children of this node.
* Returns false if this is not a tree node.
*/
- function getChildren();
+ public function getChildren();
/**
* Get the first child of a tree node. False if there isn't one.
*
* @return PPNode
*/
- function getFirstChild();
+ public function getFirstChild();
/**
* Get the next sibling of any node. False if there isn't one
*/
- function getNextSibling();
+ public function getNextSibling();
/**
* Get all children of this tree node which have a given name.
* Returns an array-type node, or false if this is not a tree node.
*/
- function getChildrenOfType( $type );
+ public function getChildrenOfType( $type );
/**
* Returns the length of the array, or false if this is not an array-type node
*/
- function getLength();
+ public function getLength();
/**
* Returns an item of an array-type node
*/
- function item( $i );
+ public function item( $i );
/**
* Get the name of this node. The following names are defined here:
*
* The subclass may define various other names for tree and leaf nodes.
*/
- function getName();
+ public function getName();
/**
* Split a "<part>" node into an associative array containing:
* index String index
* value PPNode value
*/
- function splitArg();
+ public function splitArg();
/**
* Split an "<ext>" node into an associative array containing name, attr, inner and close
* All values in the resulting array are PPNodes. Inner and close are optional.
*/
- function splitExt();
+ public function splitExt();
/**
* Split an "<h>" node
*/
- function splitHeading();
+ public function splitHeading();
}
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class Preprocessor_DOM implements Preprocessor {
+ // @codingStandardsIgnoreEnd
/**
* @var Parser
*/
- var $parser;
+ public $parser;
- var $memoryLimit;
+ public $memoryLimit;
const CACHE_VERSION = 1;
- function __construct( $parser ) {
+ public function __construct( $parser ) {
$this->parser = $parser;
$mem = ini_get( 'memory_limit' );
$this->memoryLimit = false;
/**
* @return PPFrame_DOM
*/
- function newFrame() {
+ public function newFrame() {
return new PPFrame_DOM( $this );
}
* @param array $args
* @return PPCustomFrame_DOM
*/
- function newCustomFrame( $args ) {
+ public function newCustomFrame( $args ) {
return new PPCustomFrame_DOM( $this, $args );
}
* @param array $values
* @return PPNode_DOM
*/
- function newPartNodeArray( $values ) {
+ public function newPartNodeArray( $values ) {
//NOTE: DOM manipulation is slower than building & parsing XML! (or so Tim sais)
$xml = "<list>";
* @throws MWException
* @return bool
*/
- function memCheck() {
+ public function memCheck() {
if ( $this->memoryLimit === false ) {
return true;
}
* @throws MWException
* @return PPNode_DOM
*/
- function preprocessToObj( $text, $flags = 0 ) {
+ public function preprocessToObj( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
global $wgMemc, $wgPreprocessorCacheThreshold;
* @param int $flags
* @return string
*/
- function preprocessToXml( $text, $flags = 0 ) {
+ public function preprocessToXml( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
$rules = array(
'{' => array(
* @ingroup Parser
*/
class PPDStack {
- var $stack, $rootAccum;
+ public $stack, $rootAccum;
/**
* @var PPDStack
*/
- var $top;
- var $out;
- var $elementClass = 'PPDStackElement';
+ public $top;
+ public $out;
+ public $elementClass = 'PPDStackElement';
- static $false = false;
+ public static $false = false;
- function __construct() {
+ public function __construct() {
$this->stack = array();
$this->top = false;
$this->rootAccum = '';
/**
* @return int
*/
- function count() {
+ public function count() {
return count( $this->stack );
}
- function &getAccum() {
+ public function &getAccum() {
return $this->accum;
}
- function getCurrentPart() {
+ public function getCurrentPart() {
if ( $this->top === false ) {
return false;
} else {
}
}
- function push( $data ) {
+ public function push( $data ) {
if ( $data instanceof $this->elementClass ) {
$this->stack[] = $data;
} else {
$this->accum =& $this->top->getAccum();
}
- function pop() {
+ public function pop() {
if ( !count( $this->stack ) ) {
throw new MWException( __METHOD__ . ': no elements remaining' );
}
return $temp;
}
- function addPart( $s = '' ) {
+ public function addPart( $s = '' ) {
$this->top->addPart( $s );
$this->accum =& $this->top->getAccum();
}
/**
* @return array
*/
- function getFlags() {
+ public function getFlags() {
if ( !count( $this->stack ) ) {
return array(
'findEquals' => false,
* @ingroup Parser
*/
class PPDStackElement {
- var $open, // Opening character (\n for heading)
+ public $open, // Opening character (\n for heading)
$close, // Matching closing character
$count, // Number of opening characters found (number of "=" for heading)
$parts, // Array of PPDPart objects describing pipe-separated parts.
$lineStart; // True if the open char appeared at the start of the input line. Not set for headings.
- var $partClass = 'PPDPart';
+ public $partClass = 'PPDPart';
- function __construct( $data = array() ) {
+ public function __construct( $data = array() ) {
$class = $this->partClass;
$this->parts = array( new $class );
}
}
- function &getAccum() {
+ public function &getAccum() {
return $this->parts[count( $this->parts ) - 1]->out;
}
- function addPart( $s = '' ) {
+ public function addPart( $s = '' ) {
$class = $this->partClass;
$this->parts[] = new $class( $s );
}
- function getCurrentPart() {
+ public function getCurrentPart() {
return $this->parts[count( $this->parts ) - 1];
}
/**
* @return array
*/
- function getFlags() {
+ public function getFlags() {
$partCount = count( $this->parts );
$findPipe = $this->open != "\n" && $this->open != '[';
return array(
* @param bool|int $openingCount
* @return string
*/
- function breakSyntax( $openingCount = false ) {
+ public function breakSyntax( $openingCount = false ) {
if ( $this->open == "\n" ) {
$s = $this->parts[0]->out;
} else {
* @ingroup Parser
*/
class PPDPart {
- var $out; // Output accumulator string
+ public $out; // Output accumulator string
// Optional member variables:
// eqpos Position of equals sign in output accumulator
// commentEnd Past-the-end input pointer for the last comment encountered
// visualEnd Past-the-end input pointer for the end of the accumulator minus comments
- function __construct( $out = '' ) {
+ public function __construct( $out = '' ) {
$this->out = $out;
}
}
/**
* An expansion frame, used as a context to expand the result of preprocessToObj()
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPFrame_DOM implements PPFrame {
+ // @codingStandardsIgnoreEnd
/**
* @var Preprocessor
*/
- var $preprocessor;
+ public $preprocessor;
/**
* @var Parser
*/
- var $parser;
+ public $parser;
/**
* @var Title
*/
- var $title;
- var $titleCache;
+ public $title;
+ public $titleCache;
/**
* Hashtable listing templates which are disallowed for expansion in this frame,
* having been encountered previously in parent frames.
*/
- var $loopCheckHash;
+ public $loopCheckHash;
/**
* Recursion depth of this frame, top = 0
* Note that this is NOT the same as expansion depth in expand()
*/
- var $depth;
+ public $depth;
private $volatile = false;
private $ttl = null;
* Construct a new preprocessor frame.
* @param Preprocessor $preprocessor The parent preprocessor
*/
- function __construct( $preprocessor ) {
+ public function __construct( $preprocessor ) {
$this->preprocessor = $preprocessor;
$this->parser = $preprocessor->parser;
$this->title = $this->parser->mTitle;
* @param int $indexOffset
* @return PPTemplateFrame_DOM
*/
- function newChild( $args = false, $title = false, $indexOffset = 0 ) {
+ public function newChild( $args = false, $title = false, $indexOffset = 0 ) {
$namedArgs = array();
$numberedArgs = array();
if ( $title === false ) {
* @param int $flags
* @return string
*/
- function cachedExpand( $key, $root, $flags = 0 ) {
+ public function cachedExpand( $key, $root, $flags = 0 ) {
// we don't have a parent, so we don't have a cache
return $this->expand( $root, $flags );
}
* @param int $flags
* @return string
*/
- function expand( $root, $flags = 0 ) {
+ public function expand( $root, $flags = 0 ) {
static $expansionDepth = 0;
if ( is_string( $root ) ) {
return $root;
* @param int $flags
* @return string
*/
- function implodeWithFlags( $sep, $flags /*, ... */ ) {
+ public function implodeWithFlags( $sep, $flags /*, ... */ ) {
$args = array_slice( func_get_args(), 2 );
$first = true;
* @param string $sep
* @return string
*/
- function implode( $sep /*, ... */ ) {
+ public function implode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
$first = true;
* @param string $sep
* @return array
*/
- function virtualImplode( $sep /*, ... */ ) {
+ public function virtualImplode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
$out = array();
$first = true;
* @param string $end
* @return array
*/
- function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
+ public function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
$args = array_slice( func_get_args(), 3 );
$out = array( $start );
$first = true;
return $out;
}
- function __toString() {
+ public function __toString() {
return 'frame{}';
}
- function getPDBK( $level = false ) {
+ public function getPDBK( $level = false ) {
if ( $level === false ) {
return $this->title->getPrefixedDBkey();
} else {
/**
* @return array
*/
- function getArguments() {
+ public function getArguments() {
return array();
}
/**
* @return array
*/
- function getNumberedArguments() {
+ public function getNumberedArguments() {
return array();
}
/**
* @return array
*/
- function getNamedArguments() {
+ public function getNamedArguments() {
return array();
}
*
* @return bool
*/
- function isEmpty() {
+ public function isEmpty() {
return true;
}
- function getArgument( $name ) {
+ public function getArgument( $name ) {
return false;
}
* @param Title $title
* @return bool
*/
- function loopCheck( $title ) {
+ public function loopCheck( $title ) {
return !isset( $this->loopCheckHash[$title->getPrefixedDBkey()] );
}
*
* @return bool
*/
- function isTemplate() {
+ public function isTemplate() {
return false;
}
*
* @return Title
*/
- function getTitle() {
+ public function getTitle() {
return $this->title;
}
*
* @param bool $flag
*/
- function setVolatile( $flag = true ) {
+ public function setVolatile( $flag = true ) {
$this->volatile = $flag;
}
*
* @return bool
*/
- function isVolatile() {
+ public function isVolatile() {
return $this->volatile;
}
*
* @param int $ttl
*/
- function setTTL( $ttl ) {
+ public function setTTL( $ttl ) {
if ( $ttl !== null && ( $this->ttl === null || $ttl < $this->ttl ) ) {
$this->ttl = $ttl;
}
*
* @return int|null
*/
- function getTTL() {
+ public function getTTL() {
return $this->ttl;
}
}
/**
* Expansion frame with template arguments
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPTemplateFrame_DOM extends PPFrame_DOM {
- var $numberedArgs, $namedArgs;
+ // @codingStandardsIgnoreEnd
+
+ public $numberedArgs, $namedArgs;
/**
* @var PPFrame_DOM
*/
- var $parent;
- var $numberedExpansionCache, $namedExpansionCache;
+ public $parent;
+ public $numberedExpansionCache, $namedExpansionCache;
/**
* @param Preprocessor $preprocessor
* @param array $namedArgs
* @param bool|Title $title
*/
- function __construct( $preprocessor, $parent = false, $numberedArgs = array(),
+ public function __construct( $preprocessor, $parent = false, $numberedArgs = array(),
$namedArgs = array(), $title = false
) {
parent::__construct( $preprocessor );
$this->numberedExpansionCache = $this->namedExpansionCache = array();
}
- function __toString() {
+ public function __toString() {
$s = 'tplframe{';
$first = true;
$args = $this->numberedArgs + $this->namedArgs;
* @param int $flags
* @return string
*/
- function cachedExpand( $key, $root, $flags = 0 ) {
+ public function cachedExpand( $key, $root, $flags = 0 ) {
if ( isset( $this->parent->childExpansionCache[$key] ) ) {
return $this->parent->childExpansionCache[$key];
}
*
* @return bool
*/
- function isEmpty() {
+ public function isEmpty() {
return !count( $this->numberedArgs ) && !count( $this->namedArgs );
}
- function getArguments() {
+ public function getArguments() {
$arguments = array();
foreach ( array_merge(
array_keys( $this->numberedArgs ),
return $arguments;
}
- function getNumberedArguments() {
+ public function getNumberedArguments() {
$arguments = array();
foreach ( array_keys( $this->numberedArgs ) as $key ) {
$arguments[$key] = $this->getArgument( $key );
return $arguments;
}
- function getNamedArguments() {
+ public function getNamedArguments() {
$arguments = array();
foreach ( array_keys( $this->namedArgs ) as $key ) {
$arguments[$key] = $this->getArgument( $key );
return $arguments;
}
- function getNumberedArgument( $index ) {
+ public function getNumberedArgument( $index ) {
if ( !isset( $this->numberedArgs[$index] ) ) {
return false;
}
return $this->numberedExpansionCache[$index];
}
- function getNamedArgument( $name ) {
+ public function getNamedArgument( $name ) {
if ( !isset( $this->namedArgs[$name] ) ) {
return false;
}
return $this->namedExpansionCache[$name];
}
- function getArgument( $name ) {
+ public function getArgument( $name ) {
$text = $this->getNumberedArgument( $name );
if ( $text === false ) {
$text = $this->getNamedArgument( $name );
*
* @return bool
*/
- function isTemplate() {
+ public function isTemplate() {
return true;
}
- function setVolatile( $flag = true ) {
+ public function setVolatile( $flag = true ) {
parent::setVolatile( $flag );
$this->parent->setVolatile( $flag );
}
- function setTTL( $ttl ) {
+ public function setTTL( $ttl ) {
parent::setTTL( $ttl );
$this->parent->setTTL( $ttl );
}
/**
* Expansion frame with custom arguments
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPCustomFrame_DOM extends PPFrame_DOM {
- var $args;
+ // @codingStandardsIgnoreEnd
+
+ public $args;
- function __construct( $preprocessor, $args ) {
+ public function __construct( $preprocessor, $args ) {
parent::__construct( $preprocessor );
$this->args = $args;
}
- function __toString() {
+ public function __toString() {
$s = 'cstmframe{';
$first = true;
foreach ( $this->args as $name => $value ) {
/**
* @return bool
*/
- function isEmpty() {
+ public function isEmpty() {
return !count( $this->args );
}
- function getArgument( $index ) {
+ public function getArgument( $index ) {
if ( !isset( $this->args[$index] ) ) {
return false;
}
return $this->args[$index];
}
- function getArguments() {
+ public function getArguments() {
return $this->args;
}
}
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPNode_DOM implements PPNode {
+ // @codingStandardsIgnoreEnd
/**
* @var DOMElement
*/
- var $node;
- var $xpath;
+ public $node;
+ public $xpath;
- function __construct( $node, $xpath = false ) {
+ public function __construct( $node, $xpath = false ) {
$this->node = $node;
}
/**
* @return DOMXPath
*/
- function getXPath() {
+ public function getXPath() {
if ( $this->xpath === null ) {
$this->xpath = new DOMXPath( $this->node->ownerDocument );
}
return $this->xpath;
}
- function __toString() {
+ public function __toString() {
if ( $this->node instanceof DOMNodeList ) {
$s = '';
foreach ( $this->node as $node ) {
/**
* @return bool|PPNode_DOM
*/
- function getChildren() {
+ public function getChildren() {
return $this->node->childNodes ? new self( $this->node->childNodes ) : false;
}
/**
* @return bool|PPNode_DOM
*/
- function getFirstChild() {
+ public function getFirstChild() {
return $this->node->firstChild ? new self( $this->node->firstChild ) : false;
}
/**
* @return bool|PPNode_DOM
*/
- function getNextSibling() {
+ public function getNextSibling() {
return $this->node->nextSibling ? new self( $this->node->nextSibling ) : false;
}
*
* @return bool|PPNode_DOM
*/
- function getChildrenOfType( $type ) {
+ public function getChildrenOfType( $type ) {
return new self( $this->getXPath()->query( $type, $this->node ) );
}
/**
* @return int
*/
- function getLength() {
+ public function getLength() {
if ( $this->node instanceof DOMNodeList ) {
return $this->node->length;
} else {
* @param int $i
* @return bool|PPNode_DOM
*/
- function item( $i ) {
+ public function item( $i ) {
$item = $this->node->item( $i );
return $item ? new self( $item ) : false;
}
/**
* @return string
*/
- function getName() {
+ public function getName() {
if ( $this->node instanceof DOMNodeList ) {
return '#nodelist';
} else {
* @throws MWException
* @return array
*/
- function splitArg() {
+ public function splitArg() {
$xpath = $this->getXPath();
$names = $xpath->query( 'name', $this->node );
$values = $xpath->query( 'value', $this->node );
* @throws MWException
* @return array
*/
- function splitExt() {
+ public function splitExt() {
$xpath = $this->getXPath();
$names = $xpath->query( 'name', $this->node );
$attrs = $xpath->query( 'attr', $this->node );
* @throws MWException
* @return array
*/
- function splitHeading() {
+ public function splitHeading() {
if ( $this->getName() !== 'h' ) {
throw new MWException( 'Invalid h node passed to ' . __METHOD__ );
}
* * attribute nodes are children
* * "<h>" nodes that aren't at the top are replaced with <possible-h>
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class Preprocessor_Hash implements Preprocessor {
+ // @codingStandardsIgnoreEnd
+
/**
* @var Parser
*/
- var $parser;
+ public $parser;
const CACHE_VERSION = 1;
- function __construct( $parser ) {
+ public function __construct( $parser ) {
$this->parser = $parser;
}
/**
* @return PPFrame_Hash
*/
- function newFrame() {
+ public function newFrame() {
return new PPFrame_Hash( $this );
}
* @param array $args
* @return PPCustomFrame_Hash
*/
- function newCustomFrame( $args ) {
+ public function newCustomFrame( $args ) {
return new PPCustomFrame_Hash( $this, $args );
}
* @param array $values
* @return PPNode_Hash_Array
*/
- function newPartNodeArray( $values ) {
+ public function newPartNodeArray( $values ) {
$list = array();
foreach ( $values as $k => $val ) {
* @throws MWException
* @return PPNode_Hash_Tree
*/
- function preprocessToObj( $text, $flags = 0 ) {
+ public function preprocessToObj( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
// Check cache.
/**
* Stack class to help Preprocessor::preprocessToObj()
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPDStack_Hash extends PPDStack {
- function __construct() {
+ // @codingStandardsIgnoreEnd
+
+ public function __construct() {
$this->elementClass = 'PPDStackElement_Hash';
parent::__construct();
$this->rootAccum = new PPDAccum_Hash;
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPDStackElement_Hash extends PPDStackElement {
- function __construct( $data = array() ) {
+ // @codingStandardsIgnoreENd
+
+ public function __construct( $data = array() ) {
$this->partClass = 'PPDPart_Hash';
parent::__construct( $data );
}
* @param int|bool $openingCount
* @return PPDAccum_Hash
*/
- function breakSyntax( $openingCount = false ) {
+ public function breakSyntax( $openingCount = false ) {
if ( $this->open == "\n" ) {
$accum = $this->parts[0]->out;
} else {
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPDPart_Hash extends PPDPart {
- function __construct( $out = '' ) {
+ // @codingStandardsIgnoreEnd
+
+ public function __construct( $out = '' ) {
$accum = new PPDAccum_Hash;
if ( $out !== '' ) {
$accum->addLiteral( $out );
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPDAccum_Hash {
- var $firstNode, $lastNode;
+ // @codingStandardsIgnoreEnd
+
+ public $firstNode, $lastNode;
- function __construct() {
+ public function __construct() {
$this->firstNode = $this->lastNode = false;
}
* Append a string literal
* @param string $s
*/
- function addLiteral( $s ) {
+ public function addLiteral( $s ) {
if ( $this->lastNode === false ) {
$this->firstNode = $this->lastNode = new PPNode_Hash_Text( $s );
} elseif ( $this->lastNode instanceof PPNode_Hash_Text ) {
* Append a PPNode
* @param PPNode $node
*/
- function addNode( PPNode $node ) {
+ public function addNode( PPNode $node ) {
if ( $this->lastNode === false ) {
$this->firstNode = $this->lastNode = $node;
} else {
* @param string $name
* @param string $value
*/
- function addNodeWithText( $name, $value ) {
+ public function addNodeWithText( $name, $value ) {
$node = PPNode_Hash_Tree::newWithText( $name, $value );
$this->addNode( $node );
}
* subsequently be modified, especially nextSibling.
* @param PPDAccum_Hash $accum
*/
- function addAccum( $accum ) {
+ public function addAccum( $accum ) {
if ( $accum->lastNode === false ) {
// nothing to add
} elseif ( $this->lastNode === false ) {
/**
* An expansion frame, used as a context to expand the result of preprocessToObj()
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPFrame_Hash implements PPFrame {
+ // @codingStandardsIgnoreEnd
/**
* @var Parser
*/
- var $parser;
+ public $parser;
/**
* @var Preprocessor
*/
- var $preprocessor;
+ public $preprocessor;
/**
* @var Title
*/
- var $title;
- var $titleCache;
+ public $title;
+ public $titleCache;
/**
* Hashtable listing templates which are disallowed for expansion in this frame,
* having been encountered previously in parent frames.
*/
- var $loopCheckHash;
+ public $loopCheckHash;
/**
* Recursion depth of this frame, top = 0
* Note that this is NOT the same as expansion depth in expand()
*/
- var $depth;
+ public $depth;
private $volatile = false;
private $ttl = null;
* Construct a new preprocessor frame.
* @param Preprocessor $preprocessor The parent preprocessor
*/
- function __construct( $preprocessor ) {
+ public function __construct( $preprocessor ) {
$this->preprocessor = $preprocessor;
$this->parser = $preprocessor->parser;
$this->title = $this->parser->mTitle;
* @throws MWException
* @return PPTemplateFrame_Hash
*/
- function newChild( $args = false, $title = false, $indexOffset = 0 ) {
+ public function newChild( $args = false, $title = false, $indexOffset = 0 ) {
$namedArgs = array();
$numberedArgs = array();
if ( $title === false ) {
* @param int $flags
* @return string
*/
- function cachedExpand( $key, $root, $flags = 0 ) {
+ public function cachedExpand( $key, $root, $flags = 0 ) {
// we don't have a parent, so we don't have a cache
return $this->expand( $root, $flags );
}
* @param int $flags
* @return string
*/
- function expand( $root, $flags = 0 ) {
+ public function expand( $root, $flags = 0 ) {
static $expansionDepth = 0;
if ( is_string( $root ) ) {
return $root;
* @param int $flags
* @return string
*/
- function implodeWithFlags( $sep, $flags /*, ... */ ) {
+ public function implodeWithFlags( $sep, $flags /*, ... */ ) {
$args = array_slice( func_get_args(), 2 );
$first = true;
* @param string $sep
* @return string
*/
- function implode( $sep /*, ... */ ) {
+ public function implode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
$first = true;
* @param string $sep
* @return PPNode_Hash_Array
*/
- function virtualImplode( $sep /*, ... */ ) {
+ public function virtualImplode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
$out = array();
$first = true;
* @param string $end
* @return PPNode_Hash_Array
*/
- function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
+ public function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
$args = array_slice( func_get_args(), 3 );
$out = array( $start );
$first = true;
return new PPNode_Hash_Array( $out );
}
- function __toString() {
+ public function __toString() {
return 'frame{}';
}
* @param bool $level
* @return array|bool|string
*/
- function getPDBK( $level = false ) {
+ public function getPDBK( $level = false ) {
if ( $level === false ) {
return $this->title->getPrefixedDBkey();
} else {
/**
* @return array
*/
- function getArguments() {
+ public function getArguments() {
return array();
}
/**
* @return array
*/
- function getNumberedArguments() {
+ public function getNumberedArguments() {
return array();
}
/**
* @return array
*/
- function getNamedArguments() {
+ public function getNamedArguments() {
return array();
}
*
* @return bool
*/
- function isEmpty() {
+ public function isEmpty() {
return true;
}
* @param string $name
* @return bool
*/
- function getArgument( $name ) {
+ public function getArgument( $name ) {
return false;
}
*
* @return bool
*/
- function loopCheck( $title ) {
+ public function loopCheck( $title ) {
return !isset( $this->loopCheckHash[$title->getPrefixedDBkey()] );
}
*
* @return bool
*/
- function isTemplate() {
+ public function isTemplate() {
return false;
}
*
* @return Title
*/
- function getTitle() {
+ public function getTitle() {
return $this->title;
}
*
* @param bool $flag
*/
- function setVolatile( $flag = true ) {
+ public function setVolatile( $flag = true ) {
$this->volatile = $flag;
}
*
* @return bool
*/
- function isVolatile() {
+ public function isVolatile() {
return $this->volatile;
}
*
* @param int $ttl
*/
- function setTTL( $ttl ) {
+ public function setTTL( $ttl ) {
if ( $ttl !== null && ( $this->ttl === null || $ttl < $this->ttl ) ) {
$this->ttl = $ttl;
}
*
* @return int|null
*/
- function getTTL() {
+ public function getTTL() {
return $this->ttl;
}
}
/**
* Expansion frame with template arguments
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPTemplateFrame_Hash extends PPFrame_Hash {
- var $numberedArgs, $namedArgs, $parent;
- var $numberedExpansionCache, $namedExpansionCache;
+ // @codingStandardsIgnoreEnd
+
+ public $numberedArgs, $namedArgs, $parent;
+ public $numberedExpansionCache, $namedExpansionCache;
/**
* @param Preprocessor $preprocessor
* @param array $namedArgs
* @param bool|Title $title
*/
- function __construct( $preprocessor, $parent = false, $numberedArgs = array(),
+ public function __construct( $preprocessor, $parent = false, $numberedArgs = array(),
$namedArgs = array(), $title = false
) {
parent::__construct( $preprocessor );
$this->numberedExpansionCache = $this->namedExpansionCache = array();
}
- function __toString() {
+ public function __toString() {
$s = 'tplframe{';
$first = true;
$args = $this->numberedArgs + $this->namedArgs;
* @param int $flags
* @return string
*/
- function cachedExpand( $key, $root, $flags = 0 ) {
+ public function cachedExpand( $key, $root, $flags = 0 ) {
if ( isset( $this->parent->childExpansionCache[$key] ) ) {
return $this->parent->childExpansionCache[$key];
}
*
* @return bool
*/
- function isEmpty() {
+ public function isEmpty() {
return !count( $this->numberedArgs ) && !count( $this->namedArgs );
}
/**
* @return array
*/
- function getArguments() {
+ public function getArguments() {
$arguments = array();
foreach ( array_merge(
array_keys( $this->numberedArgs ),
/**
* @return array
*/
- function getNumberedArguments() {
+ public function getNumberedArguments() {
$arguments = array();
foreach ( array_keys( $this->numberedArgs ) as $key ) {
$arguments[$key] = $this->getArgument( $key );
/**
* @return array
*/
- function getNamedArguments() {
+ public function getNamedArguments() {
$arguments = array();
foreach ( array_keys( $this->namedArgs ) as $key ) {
$arguments[$key] = $this->getArgument( $key );
* @param int $index
* @return array|bool
*/
- function getNumberedArgument( $index ) {
+ public function getNumberedArgument( $index ) {
if ( !isset( $this->numberedArgs[$index] ) ) {
return false;
}
* @param string $name
* @return bool
*/
- function getNamedArgument( $name ) {
+ public function getNamedArgument( $name ) {
if ( !isset( $this->namedArgs[$name] ) ) {
return false;
}
* @param string $name
* @return array|bool
*/
- function getArgument( $name ) {
+ public function getArgument( $name ) {
$text = $this->getNumberedArgument( $name );
if ( $text === false ) {
$text = $this->getNamedArgument( $name );
*
* @return bool
*/
- function isTemplate() {
+ public function isTemplate() {
return true;
}
- function setVolatile( $flag = true ) {
+ public function setVolatile( $flag = true ) {
parent::setVolatile( $flag );
$this->parent->setVolatile( $flag );
}
- function setTTL( $ttl ) {
+ public function setTTL( $ttl ) {
parent::setTTL( $ttl );
$this->parent->setTTL( $ttl );
}
/**
* Expansion frame with custom arguments
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPCustomFrame_Hash extends PPFrame_Hash {
- var $args;
+ // @codingStandardsIgnoreEnd
- function __construct( $preprocessor, $args ) {
+ public $args;
+
+ public function __construct( $preprocessor, $args ) {
parent::__construct( $preprocessor );
$this->args = $args;
}
- function __toString() {
+ public function __toString() {
$s = 'cstmframe{';
$first = true;
foreach ( $this->args as $name => $value ) {
/**
* @return bool
*/
- function isEmpty() {
+ public function isEmpty() {
return !count( $this->args );
}
* @param int $index
* @return bool
*/
- function getArgument( $index ) {
+ public function getArgument( $index ) {
if ( !isset( $this->args[$index] ) ) {
return false;
}
return $this->args[$index];
}
- function getArguments() {
+ public function getArguments() {
return $this->args;
}
}
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPNode_Hash_Tree implements PPNode {
- var $name, $firstChild, $lastChild, $nextSibling;
+ // @codingStandardsIgnoreEnd
+
+ public $name, $firstChild, $lastChild, $nextSibling;
- function __construct( $name ) {
+ public function __construct( $name ) {
$this->name = $name;
$this->firstChild = $this->lastChild = $this->nextSibling = false;
}
- function __toString() {
+ public function __toString() {
$inner = '';
$attribs = '';
for ( $node = $this->firstChild; $node; $node = $node->nextSibling ) {
* @param string $text
* @return PPNode_Hash_Tree
*/
- static function newWithText( $name, $text ) {
+ public static function newWithText( $name, $text ) {
$obj = new self( $name );
$obj->addChild( new PPNode_Hash_Text( $text ) );
return $obj;
}
- function addChild( $node ) {
+ public function addChild( $node ) {
if ( $this->lastChild === false ) {
$this->firstChild = $this->lastChild = $node;
} else {
/**
* @return PPNode_Hash_Array
*/
- function getChildren() {
+ public function getChildren() {
$children = array();
for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
$children[] = $child;
return new PPNode_Hash_Array( $children );
}
- function getFirstChild() {
+ public function getFirstChild() {
return $this->firstChild;
}
- function getNextSibling() {
+ public function getNextSibling() {
return $this->nextSibling;
}
- function getChildrenOfType( $name ) {
+ public function getChildrenOfType( $name ) {
$children = array();
for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
if ( isset( $child->name ) && $child->name === $name ) {
/**
* @return bool
*/
- function getLength() {
+ public function getLength() {
return false;
}
* @param int $i
* @return bool
*/
- function item( $i ) {
+ public function item( $i ) {
return false;
}
/**
* @return string
*/
- function getName() {
+ public function getName() {
return $this->name;
}
* @throws MWException
* @return array
*/
- function splitArg() {
+ public function splitArg() {
$bits = array();
for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
if ( !isset( $child->name ) ) {
* @throws MWException
* @return array
*/
- function splitExt() {
+ public function splitExt() {
$bits = array();
for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
if ( !isset( $child->name ) ) {
* @throws MWException
* @return array
*/
- function splitHeading() {
+ public function splitHeading() {
if ( $this->name !== 'h' ) {
throw new MWException( 'Invalid h node passed to ' . __METHOD__ );
}
* @throws MWException
* @return array
*/
- function splitTemplate() {
+ public function splitTemplate() {
$parts = array();
$bits = array( 'lineStart' => '' );
for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPNode_Hash_Text implements PPNode {
- var $value, $nextSibling;
+ // @codingStandardsIgnoreEnd
+
+ public $value, $nextSibling;
- function __construct( $value ) {
+ public function __construct( $value ) {
if ( is_object( $value ) ) {
throw new MWException( __CLASS__ . ' given object instead of string' );
}
$this->value = $value;
}
- function __toString() {
+ public function __toString() {
return htmlspecialchars( $this->value );
}
- function getNextSibling() {
+ public function getNextSibling() {
return $this->nextSibling;
}
- function getChildren() {
+ public function getChildren() {
return false;
}
- function getFirstChild() {
+ public function getFirstChild() {
return false;
}
- function getChildrenOfType( $name ) {
+ public function getChildrenOfType( $name ) {
return false;
}
- function getLength() {
+ public function getLength() {
return false;
}
- function item( $i ) {
+ public function item( $i ) {
return false;
}
- function getName() {
+ public function getName() {
return '#text';
}
- function splitArg() {
+ public function splitArg() {
throw new MWException( __METHOD__ . ': not supported' );
}
- function splitExt() {
+ public function splitExt() {
throw new MWException( __METHOD__ . ': not supported' );
}
- function splitHeading() {
+ public function splitHeading() {
throw new MWException( __METHOD__ . ': not supported' );
}
}
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPNode_Hash_Array implements PPNode {
- var $value, $nextSibling;
+ // @codingStandardsIgnoreEnd
- function __construct( $value ) {
+ public $value, $nextSibling;
+
+ public function __construct( $value ) {
$this->value = $value;
}
- function __toString() {
+ public function __toString() {
return var_export( $this, true );
}
- function getLength() {
+ public function getLength() {
return count( $this->value );
}
- function item( $i ) {
+ public function item( $i ) {
return $this->value[$i];
}
- function getName() {
+ public function getName() {
return '#nodelist';
}
- function getNextSibling() {
+ public function getNextSibling() {
return $this->nextSibling;
}
- function getChildren() {
+ public function getChildren() {
return false;
}
- function getFirstChild() {
+ public function getFirstChild() {
return false;
}
- function getChildrenOfType( $name ) {
+ public function getChildrenOfType( $name ) {
return false;
}
- function splitArg() {
+ public function splitArg() {
throw new MWException( __METHOD__ . ': not supported' );
}
- function splitExt() {
+ public function splitExt() {
throw new MWException( __METHOD__ . ': not supported' );
}
- function splitHeading() {
+ public function splitHeading() {
throw new MWException( __METHOD__ . ': not supported' );
}
}
/**
* @ingroup Parser
+ * @codingStandardsIgnoreStart
*/
class PPNode_Hash_Attr implements PPNode {
- var $name, $value, $nextSibling;
+ // @codingStandardsIgnoreEnd
+
+ public $name, $value, $nextSibling;
- function __construct( $name, $value ) {
+ public function __construct( $name, $value ) {
$this->name = $name;
$this->value = $value;
}
- function __toString() {
+ public function __toString() {
return "<@{$this->name}>" . htmlspecialchars( $this->value ) . "</@{$this->name}>";
}
- function getName() {
+ public function getName() {
return $this->name;
}
- function getNextSibling() {
+ public function getNextSibling() {
return $this->nextSibling;
}
- function getChildren() {
+ public function getChildren() {
return false;
}
- function getFirstChild() {
+ public function getFirstChild() {
return false;
}
- function getChildrenOfType( $name ) {
+ public function getChildrenOfType( $name ) {
return false;
}
- function getLength() {
+ public function getLength() {
return false;
}
- function item( $i ) {
+ public function item( $i ) {
return false;
}
- function splitArg() {
+ public function splitArg() {
throw new MWException( __METHOD__ . ': not supported' );
}
- function splitExt() {
+ public function splitExt() {
throw new MWException( __METHOD__ . ': not supported' );
}
- function splitHeading() {
+ public function splitHeading() {
throw new MWException( __METHOD__ . ': not supported' );
}
}
/**
* @param string $prefix
*/
- function __construct( $prefix ) {
+ public function __construct( $prefix ) {
$this->prefix = $prefix;
$this->data = array(
'nowiki' => array(),
* @param string $marker
* @param string $value
*/
- function addNoWiki( $marker, $value ) {
+ public function addNoWiki( $marker, $value ) {
$this->addItem( 'nowiki', $marker, $value );
}
* @param string $marker
* @param string $value
*/
- function addGeneral( $marker, $value ) {
+ public function addGeneral( $marker, $value ) {
$this->addItem( 'general', $marker, $value );
}
* @param string $text
* @return mixed
*/
- function unstripGeneral( $text ) {
+ public function unstripGeneral( $text ) {
return $this->unstripType( 'general', $text );
}
* @param string $text
* @return mixed
*/
- function unstripNoWiki( $text ) {
+ public function unstripNoWiki( $text ) {
return $this->unstripType( 'nowiki', $text );
}
* @param string $text
* @return mixed
*/
- function unstripBoth( $text ) {
+ public function unstripBoth( $text ) {
$text = $this->unstripType( 'general', $text );
$text = $this->unstripType( 'nowiki', $text );
return $text;
*
* @return StripState
*/
- function getSubState( $text ) {
+ public function getSubState( $text ) {
$subState = new StripState( $this->prefix );
$pos = 0;
while ( true ) {
* @param array $texts
* @return array
*/
- function merge( $otherState, $texts ) {
+ public function merge( $otherState, $texts ) {
$mergePrefix = Parser::getRandomString();
foreach ( $otherState->data as $type => $items ) {
* @param string $text Input string
* @return string
*/
- function killMarkers( $text ) {
+ public function killMarkers( $text ) {
return preg_replace( $this->regex, '', $text );
}
}
/**
* Do something with the error, like showing it to the user.
+ *
+ * @param Status $status
+ *
* @return bool
*/
public function error( $status ) {
}
}
}
-
-/**
- * Convenience class for dealing with PoolCounters using callbacks
- * @since 1.22
- */
-class PoolCounterWorkViaCallback extends PoolCounterWork {
- /** @var callable */
- protected $doWork;
- /** @var callable|null */
- protected $doCachedWork;
- /** @var callable|null */
- protected $fallback;
- /** @var callable|null */
- protected $error;
-
- /**
- * Build a PoolCounterWork class from a type, key, and callback map.
- *
- * The callback map must at least have a callback for the 'doWork' method.
- * Additionally, callbacks can be provided for the 'doCachedWork', 'fallback',
- * and 'error' methods. Methods without callbacks will be no-ops that return false.
- * If a 'doCachedWork' callback is provided, then execute() may wait for any prior
- * process in the pool to finish and reuse its cached result.
- *
- * @param string $type
- * @param string $key
- * @param array $callbacks Map of callbacks
- * @throws MWException
- */
- public function __construct( $type, $key, array $callbacks ) {
- parent::__construct( $type, $key );
- foreach ( array( 'doWork', 'doCachedWork', 'fallback', 'error' ) as $name ) {
- if ( isset( $callbacks[$name] ) ) {
- if ( !is_callable( $callbacks[$name] ) ) {
- throw new MWException( "Invalid callback provided for '$name' function." );
- }
- $this->$name = $callbacks[$name];
- }
- }
- if ( !isset( $this->doWork ) ) {
- throw new MWException( "No callback provided for 'doWork' function." );
- }
- $this->cacheable = isset( $this->doCachedWork );
- }
-
- public function doWork() {
- return call_user_func_array( $this->doWork, array() );
- }
-
- public function getCachedWork() {
- if ( $this->doCachedWork ) {
- return call_user_func_array( $this->doCachedWork, array() );
- }
- return false;
- }
-
- public function fallback() {
- if ( $this->fallback ) {
- return call_user_func_array( $this->fallback, array() );
- }
- return false;
- }
-
- public function error( $status ) {
- if ( $this->error ) {
- return call_user_func_array( $this->error, array( $status ) );
- }
- return false;
- }
-}
--- /dev/null
+<?php
+/**
+ * Provides of semaphore semantics for restricting the number
+ * of workers that may be concurrently performing the same task.
+ *
+ * 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
+ */
+
+/**
+ * Convenience class for dealing with PoolCounters using callbacks
+ * @since 1.22
+ */
+class PoolCounterWorkViaCallback extends PoolCounterWork {
+ /** @var callable */
+ protected $doWork;
+ /** @var callable|null */
+ protected $doCachedWork;
+ /** @var callable|null */
+ protected $fallback;
+ /** @var callable|null */
+ protected $error;
+
+ /**
+ * Build a PoolCounterWork class from a type, key, and callback map.
+ *
+ * The callback map must at least have a callback for the 'doWork' method.
+ * Additionally, callbacks can be provided for the 'doCachedWork', 'fallback',
+ * and 'error' methods. Methods without callbacks will be no-ops that return false.
+ * If a 'doCachedWork' callback is provided, then execute() may wait for any prior
+ * process in the pool to finish and reuse its cached result.
+ *
+ * @param string $type
+ * @param string $key
+ * @param array $callbacks Map of callbacks
+ * @throws MWException
+ */
+ public function __construct( $type, $key, array $callbacks ) {
+ parent::__construct( $type, $key );
+ foreach ( array( 'doWork', 'doCachedWork', 'fallback', 'error' ) as $name ) {
+ if ( isset( $callbacks[$name] ) ) {
+ if ( !is_callable( $callbacks[$name] ) ) {
+ throw new MWException( "Invalid callback provided for '$name' function." );
+ }
+ $this->$name = $callbacks[$name];
+ }
+ }
+ if ( !isset( $this->doWork ) ) {
+ throw new MWException( "No callback provided for 'doWork' function." );
+ }
+ $this->cacheable = isset( $this->doCachedWork );
+ }
+
+ public function doWork() {
+ return call_user_func_array( $this->doWork, array() );
+ }
+
+ public function getCachedWork() {
+ if ( $this->doCachedWork ) {
+ return call_user_func_array( $this->doCachedWork, array() );
+ }
+ return false;
+ }
+
+ public function fallback() {
+ if ( $this->fallback ) {
+ return call_user_func_array( $this->fallback, array() );
+ }
+ return false;
+ }
+
+ public function error( $status ) {
+ if ( $this->error ) {
+ return call_user_func_array( $this->error, array( $status ) );
+ }
+ return false;
+ }
+}
/**
* @param Page $page
+ * @param ParserOptions $parserOptions ParserOptions to use for the parse
* @param int $revid ID of the revision being parsed.
* @param bool $useParserCache Whether to use the parser cache.
- * @param ParserOptions $parserOptions ParserOptions to use for the parse
* operation.
* @param Content|string $content Content to parse or null to load it; may
* also be given as a wikitext string, for BC.
continue;
}
$pfline = sprintf( $wgUDPProfilerFormatString, $this->getProfileID(), $pfdata['count'],
- $pfdata['cpu'], $pfdata['cpu_sq'], $pfdata['real'], $pfdata['real_sq'], $entry );
+ $pfdata['cpu'], $pfdata['cpu_sq'], $pfdata['real'], $pfdata['real_sq'], $entry,
+ $pfdata['memory'] );
$length = strlen( $pfline );
/* printf("<!-- $pfline -->"); */
if ( $length + $plength > 1400 ) {
/**
* Callback to get a formatted line for the call tree
+ * @param array $entry
* @return string
*/
protected function getCallTreeLine( $entry ) {
/**
* Dummy calls to wfProfileIn/wfProfileOut to calculate its overhead
+ * @param int $profileCount
*/
protected static function calculateOverhead( $profileCount ) {
wfProfileIn( '-overhead-total' );
/**
* Sends some text to the specified live feed.
*
- * @see RecentChange::cleanupForIRC
+ * @see IRCColourfulRCFeedFormatter::cleanupForIRC
* @param array $feed The feed, as configured in an associative array
* @param string $line The text to send
* @return bool Success
/** @var array Associative array mapping module name to info associative array */
protected $moduleInfos = array();
+ /** @var Config $config */
+ private $config;
+
/**
* @var array Associative array mapping framework ids to a list of names of test suite modules
* like array( 'qunit' => array( 'mediawiki.tests.qunit.suites', 'ext.foo.tests', .. ), .. )
* @return string Filtered data, or a comment containing an error message
*/
public function filter( $filter, $data, $cacheReport = true ) {
- global $wgResourceLoaderMinifierStatementsOnOwnLine, $wgResourceLoaderMinifierMaxLineLength;
wfProfileIn( __METHOD__ );
// For empty/whitespace-only data or for unknown filters, don't perform
switch ( $filter ) {
case 'minify-js':
$result = JavaScriptMinifier::minify( $data,
- $wgResourceLoaderMinifierStatementsOnOwnLine,
- $wgResourceLoaderMinifierMaxLineLength
+ $this->config->get( 'ResourceLoaderMinifierStatementsOnOwnLine' ),
+ $this->config->get( 'ResourceLoaderMinifierMaxLineLength' )
);
if ( $cacheReport ) {
$result .= "\n/* cache key: $key */";
/**
* Register core modules and runs registration hooks.
+ * @param Config|null $config
*/
- public function __construct() {
- global $IP, $wgResourceModules, $wgResourceLoaderSources, $wgLoadScript, $wgEnableJavaScriptTest;
+ public function __construct( Config $config = null ) {
+ global $IP;
wfProfileIn( __METHOD__ );
+ if ( $config === null ) {
+ wfDebug( __METHOD__ . ' was called without providing a Config instance' );
+ $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+ }
+
+ $this->config = $config;
+
// Add 'local' source first
$this->addSource(
'local',
- array( 'loadScript' => $wgLoadScript, 'apiScript' => wfScript( 'api' ) )
+ array( 'loadScript' => wfScript( 'load' ), 'apiScript' => wfScript( 'api' ) )
);
// Add other sources
- $this->addSource( $wgResourceLoaderSources );
+ $this->addSource( $config->get( 'ResourceLoaderSources' ) );
// Register core modules
$this->register( include "$IP/resources/Resources.php" );
// Register extension modules
wfRunHooks( 'ResourceLoaderRegisterModules', array( &$this ) );
- $this->register( $wgResourceModules );
+ $this->register( $config->get( 'ResourceModules' ) );
- if ( $wgEnableJavaScriptTest === true ) {
+ if ( $config->get( 'EnableJavaScriptTest' ) === true ) {
$this->registerTestModules();
}
wfProfileOut( __METHOD__ );
}
+ /**
+ * @return Config
+ */
+ public function getConfig() {
+ return $this->config;
+ }
+
/**
* Register a module with the ResourceLoader system.
*
// Apply custom skin-defined styles to existing modules.
if ( $this->isFileModule( $name ) ) {
- global $wgResourceModuleSkinStyles;
- foreach ( $wgResourceModuleSkinStyles as $skinName => $skinStyles ) {
+ foreach ( $this->config->get( 'ResourceModuleSkinStyles' ) as $skinName => $skinStyles ) {
// If this module already defines skinStyles for this skin, ignore $wgResourceModuleSkinStyles.
if ( isset( $this->moduleInfos[$name]['skinStyles'][$skinName] ) ) {
continue;
/**
*/
public function registerTestModules() {
- global $IP, $wgEnableJavaScriptTest;
+ global $IP;
- if ( $wgEnableJavaScriptTest !== true ) {
+ if ( $this->config->get( 'EnableJavaScriptTest' ) !== true ) {
throw new MWException( 'Attempt to register JavaScript test modules '
. 'but <code>$wgEnableJavaScriptTest</code> is false. '
. 'Edit your <code>LocalSettings.php</code> to enable it.' );
} else {
$class = $info['class'];
}
+ /** @var ResourceLoaderModule $object */
$object = new $class( $info );
+ $object->setConfig( $this->getConfig() );
}
$object->setName( $name );
$this->modules[$name] = $object;
* @param ResourceLoaderContext $context Context in which a response should be formed
*/
public function respond( ResourceLoaderContext $context ) {
- global $wgCacheEpoch, $wgUseFileCache;
-
// Use file cache if enabled and available...
- if ( $wgUseFileCache ) {
+ if ( $this->config->get( 'UseFileCache' ) ) {
$fileCache = ResourceFileCache::newFromContext( $context );
if ( $this->tryRespondFromFileCache( $fileCache, $context ) ) {
return; // output handled
// To send Last-Modified and support If-Modified-Since, we need to detect
// the last modified time
- $mtime = wfTimestamp( TS_UNIX, $wgCacheEpoch );
+ $mtime = wfTimestamp( TS_UNIX, $this->config->get( 'CacheEpoch' ) );
foreach ( $modules as $module ) {
/**
* @var $module ResourceLoaderModule
* @return void
*/
protected function sendResponseHeaders( ResourceLoaderContext $context, $mtime, $errors ) {
- global $wgResourceLoaderMaxage;
+ $rlMaxage = $this->config->get( 'ResourceLoaderMaxage' );
// If a version wasn't specified we need a shorter expiry time for updates
// to propagate to clients quickly
// If there were errors, we also need a shorter expiry time so we can recover quickly
if ( is_null( $context->getVersion() ) || $errors ) {
- $maxage = $wgResourceLoaderMaxage['unversioned']['client'];
- $smaxage = $wgResourceLoaderMaxage['unversioned']['server'];
+ $maxage = $rlMaxage['unversioned']['client'];
+ $smaxage = $rlMaxage['unversioned']['server'];
// If a version was specified we can use a longer expiry time since changing
// version numbers causes cache misses
} else {
- $maxage = $wgResourceLoaderMaxage['versioned']['client'];
- $smaxage = $wgResourceLoaderMaxage['versioned']['server'];
+ $maxage = $rlMaxage['versioned']['client'];
+ $smaxage = $rlMaxage['versioned']['server'];
}
if ( $context->getOnly() === 'styles' ) {
header( 'Content-Type: text/css; charset=utf-8' );
protected function tryRespondFromFileCache(
ResourceFileCache $fileCache, ResourceLoaderContext $context
) {
- global $wgResourceLoaderMaxage;
+ $rlMaxage = $this->config->get( 'ResourceLoaderMaxage' );
// Buffer output to catch warnings.
ob_start();
// Get the maximum age the cache can be
$maxage = is_null( $context->getVersion() )
- ? $wgResourceLoaderMaxage['unversioned']['server']
- : $wgResourceLoaderMaxage['versioned']['server'];
+ ? $rlMaxage['unversioned']['server']
+ : $rlMaxage['versioned']['server'];
// Minimum timestamp the cache file must have
$good = $fileCache->isCacheGood( wfTimestamp( TS_MW, time() - $maxage ) );
if ( !$good ) {
if ( count( $states ) ) {
$out .= self::makeLoaderStateScript( $states );
}
+
+ // In only=script requests for modules that are not raw (e.g. not the startup module)
+ // ensure the execution is conditional to avoid situations where browsers with an
+ // unsupported environment do unconditionally execute a module's scripts. Otherwise users
+ // will get things like "ReferenceError: mw is undefined" or "jQuery is undefined" from
+ // legacy scripts loaded with only=scripts (such as the 'site' module).
+ $out = self::makeLoaderConditionalScript( $out );
} else {
if ( count( $states ) ) {
$exceptions .= self::makeComment(
/**
* Returns LESS compiler set up for use with MediaWiki
*
+ * @param Config $config
+ * @throws MWException
* @since 1.22
* @return lessc
*/
- public static function getLessCompiler() {
- global $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths;
-
+ public static function getLessCompiler( Config $config ) {
// When called from the installer, it is possible that a required PHP extension
// is missing (at least for now; see bug 47564). If this is the case, throw an
// exception (caught by the installer) to prevent a fatal error later on.
$less = new lessc();
$less->setPreserveComments( true );
- $less->setVariables( self::getLESSVars() );
- $less->setImportDir( $wgResourceLoaderLESSImportPaths );
- foreach ( $wgResourceLoaderLESSFunctions as $name => $func ) {
+ $less->setVariables( self::getLESSVars( $config ) );
+ $less->setImportDir( $config->get( 'ResourceLoaderLESSImportPaths' ) );
+ foreach ( $config->get( 'ResourceLoaderLESSFunctions' ) as $name => $func ) {
$less->registerFunction( $name, $func );
}
return $less;
/**
* Get global LESS variables.
*
- * $since 1.22
+ * @param Config $config
+ * @since 1.22
* @return array Map of variable names to string CSS values.
*/
- public static function getLESSVars() {
- global $wgResourceLoaderLESSVars;
-
- $lessVars = $wgResourceLoaderLESSVars;
+ public static function getLESSVars( Config $config ) {
+ $lessVars = $config->get( 'ResourceLoaderLESSVars' );
// Sort by key to ensure consistent hashing for cache lookups.
ksort( $lessVars );
return $lessVars;
* @param ResourceLoader $resourceLoader
* @param WebRequest $request
*/
- public function __construct( $resourceLoader, WebRequest $request ) {
- global $wgDefaultSkin, $wgResourceLoaderDebug;
-
+ public function __construct( ResourceLoader $resourceLoader, WebRequest $request ) {
$this->resourceLoader = $resourceLoader;
$this->request = $request;
// Various parameters
$this->skin = $request->getVal( 'skin' );
$this->user = $request->getVal( 'user' );
- $this->debug = $request->getFuzzyBool( 'debug', $wgResourceLoaderDebug );
+ $this->debug = $request->getFuzzyBool(
+ 'debug', $resourceLoader->getConfig()->get( 'ResourceLoaderDebug' )
+ );
$this->only = $request->getVal( 'only' );
$this->version = $request->getVal( 'version' );
$this->raw = $request->getFuzzyBool( 'raw' );
$skinnames = Skin::getSkinNames();
// If no skin is specified, or we don't recognize the skin, use the default skin
if ( !$this->skin || !isset( $skinnames[$this->skin] ) ) {
- $this->skin = $wgDefaultSkin;
+ $this->skin = $resourceLoader->getConfig()->get( 'DefaultSkin' );
}
}
* @return ResourceLoaderContext
*/
public static function newDummyContext() {
- return new self( null, new FauxRequest( array() ) );
+ return new self( new ResourceLoader, new FauxRequest( array() ) );
}
/**
// but were preserved for backwards-compatibility just in case. Tread lightly.
$localBasePath = $localBasePath === null ? $IP : $localBasePath;
- if ( $remoteBasePath !== null ) {
- $remoteBasePath = $remoteBasePath;
- } else {
+ if ( $remoteBasePath === null ) {
$remoteBasePath = $wgResourceBasePath === null ? $wgScriptPath : $wgResourceBasePath;
}
return null;
}
- global $wgResourceLoaderValidateStaticJS;
$localPath = $this->getLocalPath( $this->skipFunction );
if ( !file_exists( $localPath ) ) {
throw new MWException( __METHOD__ . ": skip function file not found: \"$localPath\"" );
}
$contents = file_get_contents( $localPath );
- if ( $wgResourceLoaderValidateStaticJS ) {
- $contents = $this->validateScriptFile( $fileName, $contents );
+ if ( $this->getConfig()->get( 'ResourceLoaderValidateStaticJS' ) ) {
+ $contents = $this->validateScriptFile( $localPath, $contents );
}
return $contents;
}
/**
* Get the definition summary for this module.
*
+ * @param ResourceLoaderContext $context
* @return array
*/
public function getDefinitionSummary( ResourceLoaderContext $context ) {
* @return string Concatenated and remapped JavaScript data from $scripts
*/
protected function readScriptFiles( array $scripts ) {
- global $wgResourceLoaderValidateStaticJS;
if ( empty( $scripts ) ) {
return '';
}
throw new MWException( __METHOD__ . ": script file not found: \"$localPath\"" );
}
$contents = file_get_contents( $localPath );
- if ( $wgResourceLoaderValidateStaticJS ) {
+ if ( $this->getConfig()->get( 'ResourceLoaderValidateStaticJS' ) ) {
// Static files don't really need to be checked as often; unlike
// on-wiki module they shouldn't change unexpectedly without
// admin interference.
* @param string $fileName File name of root LESS file.
* @return string Cache key
*/
- protected static function getLESSCacheKey( $fileName ) {
- $vars = json_encode( ResourceLoader::getLESSVars() );
+ protected function getLESSCacheKey( $fileName ) {
+ $vars = json_encode( ResourceLoader::getLESSVars( $this->getConfig() ) );
$hash = md5( $fileName . $vars );
return wfMemcKey( 'resourceloader', 'less', $hash );
}
* @return string CSS source
*/
protected function compileLESSFile( $fileName ) {
- $key = self::getLESSCacheKey( $fileName );
+ $key = $this->getLESSCacheKey( $fileName );
$cache = wfGetCache( CACHE_ANYTHING );
// The input to lessc. Either an associative array representing the
$source = $fileName;
}
- $compiler = ResourceLoader::getLessCompiler();
+ $compiler = ResourceLoader::getLessCompiler( $this->getConfig() );
$result = null;
$result = $compiler->cachedCompile( $source );
// In-object cache for message blob mtime
protected $msgBlobMtime = array();
+ /**
+ * @var Config
+ */
+ protected $config;
+
/* Methods */
/**
return '';
}
+ /**
+ * @return Config
+ * @since 1.24
+ */
+ public function getConfig() {
+ if ( $this->config === null ) {
+ // Ugh, fall back to default
+ $this->config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+ }
+
+ return $this->config;
+ }
+
+ /**
+ * @param Config $config
+ * @since 1.24
+ */
+ public function setConfig( Config $config ) {
+ $this->config = $config;
+ }
+
/**
* Get the URL or URLs to load for this module's JS in debug mode.
* The default behavior is to return a load.php?only=scripts URL for
*
* @since 1.23
*
+ * @param ResourceLoaderContext $context
* @return int UNIX timestamp or 0 if no definition summary was provided
* by getDefinitionSummary()
*/
*
* @since 1.23
*
+ * @param ResourceLoaderContext $context
* @return array|null
*/
public function getDefinitionSummary( ResourceLoaderContext $context ) {
* @return string JS with the original, or a replacement error
*/
protected function validateScriptFile( $fileName, $contents ) {
- global $wgResourceLoaderValidateJS;
- if ( $wgResourceLoaderValidateJS ) {
+ if ( $this->getConfig()->get( 'ResourceLoaderValidateJS' ) ) {
// Try for cache hit
// Use CACHE_ANYTHING since filtering is very slow compared to DB queries
$key = wfMemcKey( 'resourceloader', 'jsparse', self::$parseCacheVersion, md5( $contents ) );
* @return array List of pages
*/
protected function getPages( ResourceLoaderContext $context ) {
- global $wgUseSiteJs, $wgUseSiteCss;
-
$pages = array();
- if ( $wgUseSiteJs ) {
+ if ( $this->getConfig()->get( 'UseSiteJs' ) ) {
$pages['MediaWiki:Common.js'] = array( 'type' => 'script' );
$pages['MediaWiki:' . ucfirst( $context->getSkin() ) . '.js'] = array( 'type' => 'script' );
}
- if ( $wgUseSiteCss ) {
+ if ( $this->getConfig()->get( 'UseSiteCss' ) ) {
$pages['MediaWiki:Common.css'] = array( 'type' => 'style' );
$pages['MediaWiki:' . ucfirst( $context->getSkin() ) . '.css'] = array( 'type' => 'style' );
* @param ResourceLoaderContext $context
* @return array
*/
- protected function getConfig( $context ) {
+ protected function getConfigSettings( $context ) {
$hash = $context->getHash();
if ( isset( $this->configVars[$hash] ) ) {
return $this->configVars[$hash];
}
- global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
- $wgArticlePath, $wgScriptPath, $wgServer, $wgServerName,
- $wgContLang, $wgVariantArticlePath, $wgActionPaths, $wgVersion,
- $wgEnableAPI, $wgEnableWriteAPI, $wgDBname,
- $wgSitename, $wgFileExtensions, $wgExtensionAssetsPath,
- $wgCookiePrefix, $wgCookieDomain, $wgCookiePath,
- $wgCookieExpiration, $wgResourceLoaderMaxQueryLength,
- $wgResourceLoaderStorageEnabled, $wgResourceLoaderStorageVersion,
- $wgSearchType;
+ global $wgContLang;
$mainPage = Title::newMainPage();
}
}
+ $conf = $this->getConfig();
// Build list of variables
$vars = array(
- 'wgLoadScript' => $wgLoadScript,
+ 'wgLoadScript' => wfScript( 'load' ),
'debug' => $context->getDebug(),
'skin' => $context->getSkin(),
- 'stylepath' => $wgStylePath,
+ 'stylepath' => $conf->get( 'StylePath' ),
'wgUrlProtocols' => wfUrlProtocols(),
- 'wgArticlePath' => $wgArticlePath,
- 'wgScriptPath' => $wgScriptPath,
- 'wgScriptExtension' => $wgScriptExtension,
- 'wgScript' => $wgScript,
- 'wgSearchType' => $wgSearchType,
- 'wgVariantArticlePath' => $wgVariantArticlePath,
+ 'wgArticlePath' => $conf->get( 'ArticlePath' ),
+ 'wgScriptPath' => $conf->get( 'ScriptPath' ),
+ 'wgScriptExtension' => $conf->get( 'ScriptExtension' ),
+ 'wgScript' => wfScript(),
+ 'wgSearchType' => $conf->get( 'SearchType' ),
+ 'wgVariantArticlePath' => $conf->get( 'VariantArticlePath' ),
// Force object to avoid "empty" associative array from
// becoming [] instead of {} in JS (bug 34604)
- 'wgActionPaths' => (object)$wgActionPaths,
- 'wgServer' => $wgServer,
- 'wgServerName' => $wgServerName,
+ 'wgActionPaths' => (object)$conf->get( 'ActionPaths' ),
+ 'wgServer' => $conf->get( 'Server' ),
+ 'wgServerName' => $conf->get( 'ServerName' ),
'wgUserLanguage' => $context->getLanguage(),
'wgContentLanguage' => $wgContLang->getCode(),
- 'wgVersion' => $wgVersion,
- 'wgEnableAPI' => $wgEnableAPI,
- 'wgEnableWriteAPI' => $wgEnableWriteAPI,
+ 'wgVersion' => $conf->get( 'Version' ),
+ 'wgEnableAPI' => $conf->get( 'EnableAPI' ),
+ 'wgEnableWriteAPI' => $conf->get( 'EnableWriteAPI' ),
'wgMainPageTitle' => $mainPage->getPrefixedText(),
'wgFormattedNamespaces' => $wgContLang->getFormattedNamespaces(),
'wgNamespaceIds' => $namespaceIds,
'wgContentNamespaces' => MWNamespace::getContentNamespaces(),
- 'wgSiteName' => $wgSitename,
- 'wgFileExtensions' => array_values( array_unique( $wgFileExtensions ) ),
- 'wgDBname' => $wgDBname,
+ 'wgSiteName' => $conf->get( 'Sitename' ),
+ 'wgFileExtensions' => array_values( array_unique( $conf->get( 'FileExtensions' ) ) ),
+ 'wgDBname' => $conf->get( 'DBname' ),
// This sucks, it is only needed on Special:Upload, but I could
// not find a way to add vars only for a certain module
'wgFileCanRotate' => BitmapHandler::canRotate(),
'wgAvailableSkins' => Skin::getSkinNames(),
- 'wgExtensionAssetsPath' => $wgExtensionAssetsPath,
+ 'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ),
// MediaWiki sets cookies to have this prefix by default
- 'wgCookiePrefix' => $wgCookiePrefix,
- 'wgCookieDomain' => $wgCookieDomain,
- 'wgCookiePath' => $wgCookiePath,
- 'wgCookieExpiration' => $wgCookieExpiration,
- 'wgResourceLoaderMaxQueryLength' => $wgResourceLoaderMaxQueryLength,
+ 'wgCookiePrefix' => $conf->get( 'CookiePrefix' ),
+ 'wgCookieDomain' => $conf->get( 'CookieDomain' ),
+ 'wgCookiePath' => $conf->get( 'CookiePath' ),
+ 'wgCookieExpiration' => $conf->get( 'CookieExpiration' ),
+ 'wgResourceLoaderMaxQueryLength' => $conf->get( 'ResourceLoaderMaxQueryLength' ),
'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces,
'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ),
- 'wgResourceLoaderStorageVersion' => $wgResourceLoaderStorageVersion,
- 'wgResourceLoaderStorageEnabled' => $wgResourceLoaderStorageEnabled,
+ 'wgResourceLoaderStorageVersion' => $conf->get( 'ResourceLoaderStorageVersion' ),
+ 'wgResourceLoaderStorageEnabled' => $conf->get( 'ResourceLoaderStorageEnabled' ),
);
wfRunHooks( 'ResourceLoaderGetConfigVars', array( &$vars ) );
* @param string $moduleName
* @return array
*/
- protected static function getImplicitDependencies( Array $registryData, $moduleName ) {
+ protected static function getImplicitDependencies( array $registryData, $moduleName ) {
static $dependencyCache = array();
// The list of implicit dependencies won't be altered, so we can
* - string 'source'
* - string|false 'loader'
*/
- public static function compileUnresolvedDependencies( Array &$registryData ) {
+ public static function compileUnresolvedDependencies( array &$registryData ) {
foreach ( $registryData as $name => &$data ) {
if ( $data['loader'] !== false ) {
continue;
* @param ResourceLoaderContext $context
* @return string JavaScript code for registering all modules with the client loader
*/
- public static function getModuleRegistrations( ResourceLoaderContext $context ) {
- global $wgCacheEpoch;
+ public function getModuleRegistrations( ResourceLoaderContext $context ) {
wfProfileIn( __METHOD__ );
$resourceLoader = $context->getResourceLoader();
// getModifiedTime() is supposed to return a UNIX timestamp, but it doesn't always
// seem to do that, and custom implementations might forget. Coerce it to TS_UNIX
$moduleMtime = wfTimestamp( TS_UNIX, $module->getModifiedTime( $context ) );
- $mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $wgCacheEpoch ) );
+ $mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $this->getConfig()->get( 'CacheEpoch' ) ) );
// FIXME: Convert to numbers, wfTimestamp always gives us stings, even for TS_UNIX
return true;
}
+ /**
+ * Base modules required for the the base environment of ResourceLoader
+ *
+ * @return array
+ */
+ public static function getStartupModules() {
+ return array( 'jquery', 'mediawiki' );
+ }
+
/**
* Get the load URL of the startup modules.
*
* @return string
*/
public static function getStartupModulesUrl( ResourceLoaderContext $context ) {
- // The core modules:
- $moduleNames = array( 'jquery', 'mediawiki' );
+ $moduleNames = self::getStartupModules();
// Get the latest version
$loader = $context->getResourceLoader();
* @return string
*/
public function getScript( ResourceLoaderContext $context ) {
- global $IP, $wgLegacyJavaScriptGlobals;
+ global $IP;
$out = file_get_contents( "$IP/resources/src/startup.js" );
if ( $context->getOnly() === 'scripts' ) {
// Startup function
- $configuration = $this->getConfig( $context );
- $registrations = self::getModuleRegistrations( $context );
+ $configuration = $this->getConfigSettings( $context );
+ $registrations = $this->getModuleRegistrations( $context );
// Fix indentation
$registrations = str_replace( "\n", "\n\t", trim( $registrations ) );
$out .= "var startUp = function () {\n" .
"\tmw.config = new " .
- Xml::encodeJsCall( 'mw.Map', array( $wgLegacyJavaScriptGlobals ) ) . "\n" .
+ Xml::encodeJsCall( 'mw.Map', array( $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) ) ) . "\n" .
"\t$registrations\n" .
"\t" . Xml::encodeJsCall( 'mw.config.set', array( $configuration ) ) .
"};\n";
* @return array|mixed
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
- global $IP, $wgCacheEpoch;
+ global $IP;
$hash = $context->getHash();
if ( isset( $this->modifiedTime[$hash] ) ) {
$loader->preloadModuleInfo( $loader->getModuleNames(), $context );
$time = max(
- wfTimestamp( TS_UNIX, $wgCacheEpoch ),
+ wfTimestamp( TS_UNIX, $this->getConfig()->get( 'CacheEpoch' ) ),
filemtime( "$IP/resources/src/startup.js" ),
$this->getHashMtime( $context )
);
* @return string Hash
*/
public function getModifiedHash( ResourceLoaderContext $context ) {
- global $wgLegacyJavaScriptGlobals;
-
$data = array(
- 'vars' => $this->getConfig( $context ),
- 'wgLegacyJavaScriptGlobals' => $wgLegacyJavaScriptGlobals,
+ 'vars' => $this->getConfigSettings( $context ),
+ 'wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ),
);
return md5( serialize( $data ) );
* @return array
*/
public function getStyles( ResourceLoaderContext $context ) {
- global $wgAllowUserCssPrefs, $wgUser;
+ global $wgUser;
- if ( !$wgAllowUserCssPrefs ) {
+ if ( !$this->getConfig()->get( 'AllowUserCssPrefs' ) ) {
return array();
}
* @return array
*/
protected function getPages( ResourceLoaderContext $context ) {
- global $wgUser, $wgUseSiteJs, $wgUseSiteCss;
+ global $wgUser;
$userName = $context->getUser();
if ( $userName === null ) {
return array();
}
- if ( !$wgUseSiteJs && !$wgUseSiteCss ) {
+
+ $useSiteJs = $this->getConfig()->get( 'UseSiteJs' );
+ $useSiteCss = $this->getConfig()->get( 'UseSiteCss' );
+ if ( !$useSiteJs && !$useSiteCss ) {
return array();
}
if ( $group == '*' ) {
continue;
}
- if ( $wgUseSiteJs ) {
+ if ( $useSiteJs ) {
$pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
}
- if ( $wgUseSiteCss ) {
+ if ( $useSiteCss ) {
$pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
}
}
* @return array
*/
protected function getPages( ResourceLoaderContext $context ) {
- global $wgAllowUserJs, $wgAllowUserCss;
$username = $context->getUser();
if ( $username === null ) {
return array();
}
- if ( !$wgAllowUserJs && !$wgAllowUserCss ) {
+
+ $allowUserJs = $this->getConfig()->get( 'AllowUserJs' );
+ $allowUserCss = $this->getConfig()->get( 'AllowUserCss' );
+
+ if ( !$allowUserJs && !$allowUserCss ) {
return array();
}
$userpage = $userpageTitle->getPrefixedDBkey(); // Needed so $excludepages works
$pages = array();
- if ( $wgAllowUserJs ) {
+ if ( $allowUserJs ) {
$pages["$userpage/common.js"] = array( 'type' => 'script' );
$pages["$userpage/" . $context->getSkin() . '.js'] = array( 'type' => 'script' );
}
- if ( $wgAllowUserCss ) {
+ if ( $allowUserCss ) {
$pages["$userpage/common.css"] = array( 'type' => 'style' );
$pages["$userpage/" . $context->getSkin() . '.css'] = array( 'type' => 'style' );
}
* @return array
*/
public function getStyles( ResourceLoaderContext $context ) {
- global $wgScriptPath;
-
$styles = array();
foreach ( $this->getPages( $context ) as $titleText => $options ) {
if ( $options['type'] !== 'style' ) {
if ( $this->getFlip( $context ) ) {
$style = CSSJanus::transform( $style, true, false );
}
- $style = CSSMin::remap( $style, false, $wgScriptPath, true );
+ $style = CSSMin::remap( $style, false, $this->getConfig()->get( 'ScriptPath' ), true );
if ( !isset( $styles[$media] ) ) {
$styles[$media] = array();
}
/**
* Get the definition summary for this module.
*
+ * @param ResourceLoaderContext $context
* @return array
*/
public function getDefinitionSummary( ResourceLoaderContext $context ) {
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * Item class for a archive table row
+ */
+class RevDelArchiveItem extends RevDelRevisionItem {
+ public function __construct( $list, $row ) {
+ RevDelItem::__construct( $list, $row );
+ $this->revision = Revision::newFromArchiveRow( $row,
+ array( 'page' => $this->list->title->getArticleID() ) );
+ }
+
+ public function getIdField() {
+ return 'ar_timestamp';
+ }
+
+ public function getTimestampField() {
+ return 'ar_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'ar_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'ar_user_text';
+ }
+
+ public function getId() {
+ # Convert DB timestamp to MW timestamp
+ return $this->revision->getTimestamp();
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'archive',
+ array( 'ar_deleted' => $bits ),
+ array(
+ 'ar_namespace' => $this->list->title->getNamespace(),
+ 'ar_title' => $this->list->title->getDBkey(),
+ // use timestamp for index
+ 'ar_timestamp' => $this->row->ar_timestamp,
+ 'ar_rev_id' => $this->row->ar_rev_id,
+ 'ar_deleted' => $this->getBits()
+ ),
+ __METHOD__ );
+
+ return (bool)$dbw->affectedRows();
+ }
+
+ protected function getRevisionLink() {
+ $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+ $this->revision->getTimestamp(), $this->list->getUser() ) );
+
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $date;
+ }
+
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Undelete' ),
+ $date,
+ array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'timestamp' => $this->revision->getTimestamp()
+ )
+ );
+ }
+
+ protected function getDiffLink() {
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $this->list->msg( 'diff' )->escaped();
+ }
+
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Undelete' ),
+ $this->list->msg( 'diff' )->escaped(),
+ array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'diff' => 'prev',
+ 'timestamp' => $this->revision->getTimestamp()
+ )
+ );
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * List for archive table items, i.e. revisions deleted via action=delete
+ */
+class RevDelArchiveList extends RevDelRevisionList {
+ public function getType() {
+ return 'archive';
+ }
+
+ public static function getRelationType() {
+ return 'ar_timestamp';
+ }
+
+ /**
+ * @param DatabaseBase $db
+ * @return mixed
+ */
+ public function doQuery( $db ) {
+ $timestamps = array();
+ foreach ( $this->ids as $id ) {
+ $timestamps[] = $db->timestamp( $id );
+ }
+
+ return $db->select( 'archive', Revision::selectArchiveFields(),
+ array(
+ 'ar_namespace' => $this->title->getNamespace(),
+ 'ar_title' => $this->title->getDBkey(),
+ 'ar_timestamp' => $timestamps
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'ar_timestamp DESC' )
+ );
+ }
+
+ public function newItem( $row ) {
+ return new RevDelArchiveItem( $this, $row );
+ }
+
+ public function doPreCommitUpdates() {
+ return Status::newGood();
+ }
+
+ public function doPostCommitUpdates() {
+ return Status::newGood();
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * Item class for a filearchive table row
+ */
+class RevDelArchivedFileItem extends RevDelFileItem {
+ public function __construct( $list, $row ) {
+ RevDelItem::__construct( $list, $row );
+ $this->file = ArchivedFile::newFromRow( $row );
+ }
+
+ public function getIdField() {
+ return 'fa_id';
+ }
+
+ public function getTimestampField() {
+ return 'fa_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'fa_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'fa_user_text';
+ }
+
+ public function getId() {
+ return $this->row->fa_id;
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'filearchive',
+ array( 'fa_deleted' => $bits ),
+ array(
+ 'fa_id' => $this->row->fa_id,
+ 'fa_deleted' => $this->getBits(),
+ ),
+ __METHOD__
+ );
+
+ return (bool)$dbw->affectedRows();
+ }
+
+ protected function getLink() {
+ $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+ $this->file->getTimestamp(), $this->list->getUser() ) );
+
+ # Hidden files...
+ if ( !$this->canViewContent() ) {
+ $link = $date;
+ } else {
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+ $key = $this->file->getKey();
+ $link = Linker::link( $undelete, $date, array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'file' => $key,
+ 'token' => $this->list->getUser()->getEditToken( $key )
+ )
+ );
+ }
+ if ( $this->isDeleted() ) {
+ $link = '<span class="history-deleted">' . $link . '</span>';
+ }
+
+ return $link;
+ }
+
+ public function getApiData( ApiResult $result ) {
+ $file = $this->file;
+ $user = $this->list->getUser();
+ $ret = array(
+ 'title' => $this->list->title->getPrefixedText(),
+ 'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
+ 'width' => $file->getWidth(),
+ 'height' => $file->getHeight(),
+ 'size' => $file->getSize(),
+ );
+ $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
+ $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
+ $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
+ if ( $this->canViewContent() ) {
+ $ret += array(
+ 'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'file' => $file->getKey(),
+ 'token' => $user->getEditToken( $file->getKey() )
+ ),
+ false, PROTO_RELATIVE
+ ),
+ );
+ }
+ if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
+ $ret += array(
+ 'userid' => $file->getUser( 'id' ),
+ 'user' => $file->getUser( 'text' ),
+ );
+ }
+ if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
+ $ret += array(
+ 'comment' => $file->getRawDescription(),
+ );
+ }
+
+ return $ret;
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * List for filearchive table items
+ */
+class RevDelArchivedFileList extends RevDelFileList {
+ public function getType() {
+ return 'filearchive';
+ }
+
+ public static function getRelationType() {
+ return 'fa_id';
+ }
+
+ /**
+ * @param DatabaseBase $db
+ * @return mixed
+ */
+ public function doQuery( $db ) {
+ $ids = array_map( 'intval', $this->ids );
+
+ return $db->select(
+ 'filearchive',
+ ArchivedFile::selectFields(),
+ array(
+ 'fa_name' => $this->title->getDBkey(),
+ 'fa_id' => $ids
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'fa_id DESC' )
+ );
+ }
+
+ public function newItem( $row ) {
+ return new RevDelArchivedFileItem( $this, $row );
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * Item class for a archive table row by ar_rev_id -- actually
+ * used via RevDelRevisionList.
+ */
+class RevDelArchivedRevisionItem extends RevDelArchiveItem {
+ public function __construct( $list, $row ) {
+ RevDelItem::__construct( $list, $row );
+
+ $this->revision = Revision::newFromArchiveRow( $row,
+ array( 'page' => $this->list->title->getArticleID() ) );
+ }
+
+ public function getIdField() {
+ return 'ar_rev_id';
+ }
+
+ public function getId() {
+ return $this->revision->getId();
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'archive',
+ array( 'ar_deleted' => $bits ),
+ array( 'ar_rev_id' => $this->row->ar_rev_id,
+ 'ar_deleted' => $this->getBits()
+ ),
+ __METHOD__ );
+
+ return (bool)$dbw->affectedRows();
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * Item class for an oldimage table row
+ */
+class RevDelFileItem extends RevDelItem {
+ /** @var File */
+ public $file;
+
+ public function __construct( $list, $row ) {
+ parent::__construct( $list, $row );
+ $this->file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
+ }
+
+ public function getIdField() {
+ return 'oi_archive_name';
+ }
+
+ public function getTimestampField() {
+ return 'oi_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'oi_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'oi_user_text';
+ }
+
+ public function getId() {
+ $parts = explode( '!', $this->row->oi_archive_name );
+
+ return $parts[0];
+ }
+
+ public function canView() {
+ return $this->file->userCan( File::DELETED_RESTRICTED, $this->list->getUser() );
+ }
+
+ public function canViewContent() {
+ return $this->file->userCan( File::DELETED_FILE, $this->list->getUser() );
+ }
+
+ public function getBits() {
+ return $this->file->getVisibility();
+ }
+
+ public function setBits( $bits ) {
+ # Queue the file op
+ # @todo FIXME: Move to LocalFile.php
+ if ( $this->isDeleted() ) {
+ if ( $bits & File::DELETED_FILE ) {
+ # Still deleted
+ } else {
+ # Newly undeleted
+ $key = $this->file->getStorageKey();
+ $srcRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
+ $this->list->storeBatch[] = array(
+ $this->file->repo->getVirtualUrl( 'deleted' ) . '/' . $srcRel,
+ 'public',
+ $this->file->getRel()
+ );
+ $this->list->cleanupBatch[] = $key;
+ }
+ } elseif ( $bits & File::DELETED_FILE ) {
+ # Newly deleted
+ $key = $this->file->getStorageKey();
+ $dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
+ $this->list->deleteBatch[] = array( $this->file->getRel(), $dstRel );
+ }
+
+ # Do the database operations
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'oldimage',
+ array( 'oi_deleted' => $bits ),
+ array(
+ 'oi_name' => $this->row->oi_name,
+ 'oi_timestamp' => $this->row->oi_timestamp,
+ 'oi_deleted' => $this->getBits()
+ ),
+ __METHOD__
+ );
+
+ return (bool)$dbw->affectedRows();
+ }
+
+ public function isDeleted() {
+ return $this->file->isDeleted( File::DELETED_FILE );
+ }
+
+ /**
+ * Get the link to the file.
+ * Overridden by RevDelArchivedFileItem.
+ * @return string
+ */
+ protected function getLink() {
+ $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+ $this->file->getTimestamp(), $this->list->getUser() ) );
+
+ if ( !$this->isDeleted() ) {
+ # Regular files...
+ return Html::rawElement( 'a', array( 'href' => $this->file->getUrl() ), $date );
+ }
+
+ # Hidden files...
+ if ( !$this->canViewContent() ) {
+ $link = $date;
+ } else {
+ $link = Linker::link(
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
+ $date,
+ array(),
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'file' => $this->file->getArchiveName(),
+ 'token' => $this->list->getUser()->getEditToken(
+ $this->file->getArchiveName() )
+ )
+ );
+ }
+
+ return '<span class="history-deleted">' . $link . '</span>';
+ }
+
+ /**
+ * Generate a user tool link cluster if the current user is allowed to view it
+ * @return string HTML
+ */
+ protected function getUserTools() {
+ if ( $this->file->userCan( Revision::DELETED_USER, $this->list->getUser() ) ) {
+ $uid = $this->file->getUser( 'id' );
+ $name = $this->file->getUser( 'text' );
+ $link = Linker::userLink( $uid, $name ) . Linker::userToolLinks( $uid, $name );
+ } else {
+ $link = $this->list->msg( 'rev-deleted-user' )->escaped();
+ }
+ if ( $this->file->isDeleted( Revision::DELETED_USER ) ) {
+ return '<span class="history-deleted">' . $link . '</span>';
+ }
+
+ return $link;
+ }
+
+ /**
+ * Wrap and format the file's comment block, if the current
+ * user is allowed to view it.
+ *
+ * @return string HTML
+ */
+ protected function getComment() {
+ if ( $this->file->userCan( File::DELETED_COMMENT, $this->list->getUser() ) ) {
+ $block = Linker::commentBlock( $this->file->getDescription() );
+ } else {
+ $block = ' ' . $this->list->msg( 'rev-deleted-comment' )->escaped();
+ }
+ if ( $this->file->isDeleted( File::DELETED_COMMENT ) ) {
+ return "<span class=\"history-deleted\">$block</span>";
+ }
+
+ return $block;
+ }
+
+ public function getHTML() {
+ $data =
+ $this->list->msg( 'widthheight' )->numParams(
+ $this->file->getWidth(), $this->file->getHeight() )->text() .
+ ' (' . $this->list->msg( 'nbytes' )->numParams( $this->file->getSize() )->text() . ')';
+
+ return '<li>' . $this->getLink() . ' ' . $this->getUserTools() . ' ' .
+ $data . ' ' . $this->getComment() . '</li>';
+ }
+
+ public function getApiData( ApiResult $result ) {
+ $file = $this->file;
+ $user = $this->list->getUser();
+ $ret = array(
+ 'title' => $this->list->title->getPrefixedText(),
+ 'archivename' => $file->getArchiveName(),
+ 'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
+ 'width' => $file->getWidth(),
+ 'height' => $file->getHeight(),
+ 'size' => $file->getSize(),
+ );
+ $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
+ $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
+ $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
+ if ( !$this->isDeleted() ) {
+ $ret += array(
+ 'url' => $file->getUrl(),
+ );
+ } elseif ( $this->canViewContent() ) {
+ $ret += array(
+ 'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
+ array(
+ 'target' => $this->list->title->getPrefixedText(),
+ 'file' => $file->getArchiveName(),
+ 'token' => $user->getEditToken( $file->getArchiveName() )
+ ),
+ false, PROTO_RELATIVE
+ ),
+ );
+ }
+ if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
+ $ret += array(
+ 'userid' => $file->user,
+ 'user' => $file->user_text,
+ );
+ }
+ if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
+ $ret += array(
+ 'comment' => $file->description,
+ );
+ }
+
+ return $ret;
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * List for oldimage table items
+ */
+class RevDelFileList extends RevDelList {
+ /** @var array */
+ public $storeBatch;
+
+ /** @var array */
+ public $deleteBatch;
+
+ /** @var array */
+ public $cleanupBatch;
+
+ public function getType() {
+ return 'oldimage';
+ }
+
+ public static function getRelationType() {
+ return 'oi_archive_name';
+ }
+
+ public static function getRestriction() {
+ return 'deleterevision';
+ }
+
+ public static function getRevdelConstant() {
+ return File::DELETED_FILE;
+ }
+
+ /**
+ * @param DatabaseBase $db
+ * @return mixed
+ */
+ public function doQuery( $db ) {
+ $archiveNames = array();
+ foreach ( $this->ids as $timestamp ) {
+ $archiveNames[] = $timestamp . '!' . $this->title->getDBkey();
+ }
+
+ return $db->select(
+ 'oldimage',
+ OldLocalFile::selectFields(),
+ array(
+ 'oi_name' => $this->title->getDBkey(),
+ 'oi_archive_name' => $archiveNames
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'oi_timestamp DESC' )
+ );
+ }
+
+ public function newItem( $row ) {
+ return new RevDelFileItem( $this, $row );
+ }
+
+ public function clearFileOps() {
+ $this->deleteBatch = array();
+ $this->storeBatch = array();
+ $this->cleanupBatch = array();
+ }
+
+ public function doPreCommitUpdates() {
+ $status = Status::newGood();
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ if ( $this->storeBatch ) {
+ $status->merge( $repo->storeBatch( $this->storeBatch, FileRepo::OVERWRITE_SAME ) );
+ }
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+ if ( $this->deleteBatch ) {
+ $status->merge( $repo->deleteBatch( $this->deleteBatch ) );
+ }
+ if ( !$status->isOK() ) {
+ // Running cleanupDeletedBatch() after a failed storeBatch() with the DB already
+ // modified (but destined for rollback) causes data loss
+ return $status;
+ }
+ if ( $this->cleanupBatch ) {
+ $status->merge( $repo->cleanupDeletedBatch( $this->cleanupBatch ) );
+ }
+
+ return $status;
+ }
+
+ public function doPostCommitUpdates() {
+ $file = wfLocalFile( $this->title );
+ $file->purgeCache();
+ $file->purgeDescription();
+ $purgeUrls = array();
+ foreach ( $this->ids as $timestamp ) {
+ $archiveName = $timestamp . '!' . $this->title->getDBkey();
+ $file->purgeOldThumbnails( $archiveName );
+ $purgeUrls[] = $file->getArchiveUrl( $archiveName );
+ }
+ if ( $this->getConfig()->get( 'UseSquid' ) ) {
+ // purge full images from cache
+ SquidUpdate::purge( $purgeUrls );
+ }
+
+ return Status::newGood();
+ }
+
+ public function getSuppressBit() {
+ return File::DELETED_RESTRICTED;
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * Item class for a logging table row
+ */
+class RevDelLogItem extends RevDelItem {
+ public function getIdField() {
+ return 'log_id';
+ }
+
+ public function getTimestampField() {
+ return 'log_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'log_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'log_user_text';
+ }
+
+ public function canView() {
+ return LogEventsList::userCan( $this->row, Revision::DELETED_RESTRICTED, $this->list->getUser() );
+ }
+
+ public function canViewContent() {
+ return true; // none
+ }
+
+ public function getBits() {
+ return $this->row->log_deleted;
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'recentchanges',
+ array(
+ 'rc_deleted' => $bits,
+ 'rc_patrolled' => 1
+ ),
+ array(
+ 'rc_logid' => $this->row->log_id,
+ 'rc_timestamp' => $this->row->log_timestamp // index
+ ),
+ __METHOD__
+ );
+ $dbw->update( 'logging',
+ array( 'log_deleted' => $bits ),
+ array(
+ 'log_id' => $this->row->log_id,
+ 'log_deleted' => $this->getBits()
+ ),
+ __METHOD__
+ );
+
+ return (bool)$dbw->affectedRows();
+ }
+
+ public function getHTML() {
+ $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+ $this->row->log_timestamp, $this->list->getUser() ) );
+ $title = Title::makeTitle( $this->row->log_namespace, $this->row->log_title );
+ $formatter = LogFormatter::newFromRow( $this->row );
+ $formatter->setContext( $this->list->getContext() );
+ $formatter->setAudience( LogFormatter::FOR_THIS_USER );
+
+ // Log link for this page
+ $loglink = Linker::link(
+ SpecialPage::getTitleFor( 'Log' ),
+ $this->list->msg( 'log' )->escaped(),
+ array(),
+ array( 'page' => $title->getPrefixedText() )
+ );
+ $loglink = $this->list->msg( 'parentheses' )->rawParams( $loglink )->escaped();
+ // User links and action text
+ $action = $formatter->getActionText();
+ // Comment
+ $comment = $this->list->getLanguage()->getDirMark()
+ . Linker::commentBlock( $this->row->log_comment );
+
+ if ( LogEventsList::isDeleted( $this->row, LogPage::DELETED_COMMENT ) ) {
+ $comment = '<span class="history-deleted">' . $comment . '</span>';
+ }
+
+ return "<li>$loglink $date $action $comment</li>";
+ }
+
+ public function getApiData( ApiResult $result ) {
+ $logEntry = DatabaseLogEntry::newFromRow( $this->row );
+ $user = $this->list->getUser();
+ $ret = array(
+ 'id' => $logEntry->getId(),
+ 'type' => $logEntry->getType(),
+ 'action' => $logEntry->getSubtype(),
+ );
+ $ret += $logEntry->isDeleted( LogPage::DELETED_USER )
+ ? array( 'userhidden' => '' )
+ : array();
+ $ret += $logEntry->isDeleted( LogPage::DELETED_COMMENT )
+ ? array( 'commenthidden' => '' )
+ : array();
+ $ret += $logEntry->isDeleted( LogPage::DELETED_ACTION )
+ ? array( 'actionhidden' => '' )
+ : array();
+
+ if ( LogEventsList::userCan( $this->row, LogPage::DELETED_ACTION, $user ) ) {
+ ApiQueryLogEvents::addLogParams(
+ $result,
+ $ret,
+ $logEntry->getParameters(),
+ $logEntry->getType(),
+ $logEntry->getSubtype(),
+ $logEntry->getTimestamp(),
+ $logEntry->isLegacy()
+ );
+ }
+ if ( LogEventsList::userCan( $this->row, LogPage::DELETED_USER, $user ) ) {
+ $ret += array(
+ 'userid' => $this->row->log_user,
+ 'user' => $this->row->log_user_text,
+ );
+ }
+ if ( LogEventsList::userCan( $this->row, LogPage::DELETED_COMMENT, $user ) ) {
+ $ret += array(
+ 'comment' => $this->row->log_comment,
+ );
+ }
+
+ return $ret;
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * List for logging table items
+ */
+class RevDelLogList extends RevDelList {
+ public function getType() {
+ return 'logging';
+ }
+
+ public static function getRelationType() {
+ return 'log_id';
+ }
+
+ public static function getRestriction() {
+ return 'deletelogentry';
+ }
+
+ public static function getRevdelConstant() {
+ return LogPage::DELETED_ACTION;
+ }
+
+ public static function suggestTarget( $target, array $ids ) {
+ $result = wfGetDB( DB_SLAVE )->select( 'logging',
+ 'log_type',
+ array( 'log_id' => $ids ),
+ __METHOD__,
+ array( 'DISTINCT' )
+ );
+ if ( $result->numRows() == 1 ) {
+ // If there's only one type, the target can be set to include it.
+ return SpecialPage::getTitleFor( 'Log', $result->current()->log_type );
+ }
+
+ return SpecialPage::getTitleFor( 'Log' );
+ }
+
+ /**
+ * @param DatabaseBase $db
+ * @return mixed
+ */
+ public function doQuery( $db ) {
+ $ids = array_map( 'intval', $this->ids );
+
+ return $db->select( 'logging', array(
+ 'log_id',
+ 'log_type',
+ 'log_action',
+ 'log_timestamp',
+ 'log_user',
+ 'log_user_text',
+ 'log_namespace',
+ 'log_title',
+ 'log_page',
+ 'log_comment',
+ 'log_params',
+ 'log_deleted'
+ ),
+ array( 'log_id' => $ids ),
+ __METHOD__,
+ array( 'ORDER BY' => 'log_id DESC' )
+ );
+ }
+
+ public function newItem( $row ) {
+ return new RevDelLogItem( $this, $row );
+ }
+
+ public function getSuppressBit() {
+ return Revision::DELETED_RESTRICTED;
+ }
+
+ public function getLogAction() {
+ return 'event';
+ }
+
+ public function getLogParams( $params ) {
+ return array(
+ implode( ',', $params['ids'] ),
+ "ofield={$params['oldBits']}",
+ "nfield={$params['newBits']}"
+ );
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * Item class for a live revision table row
+ */
+class RevDelRevisionItem extends RevDelItem {
+ /** @var Revision */
+ public $revision;
+
+ public function __construct( $list, $row ) {
+ parent::__construct( $list, $row );
+ $this->revision = new Revision( $row );
+ }
+
+ public function getIdField() {
+ return 'rev_id';
+ }
+
+ public function getTimestampField() {
+ return 'rev_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'rev_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'rev_user_text';
+ }
+
+ public function canView() {
+ return $this->revision->userCan( Revision::DELETED_RESTRICTED, $this->list->getUser() );
+ }
+
+ public function canViewContent() {
+ return $this->revision->userCan( Revision::DELETED_TEXT, $this->list->getUser() );
+ }
+
+ public function getBits() {
+ return $this->revision->getVisibility();
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ // Update revision table
+ $dbw->update( 'revision',
+ array( 'rev_deleted' => $bits ),
+ array(
+ 'rev_id' => $this->revision->getId(),
+ 'rev_page' => $this->revision->getPage(),
+ 'rev_deleted' => $this->getBits()
+ ),
+ __METHOD__
+ );
+ if ( !$dbw->affectedRows() ) {
+ // Concurrent fail!
+ return false;
+ }
+ // Update recentchanges table
+ $dbw->update( 'recentchanges',
+ array(
+ 'rc_deleted' => $bits,
+ 'rc_patrolled' => 1
+ ),
+ array(
+ 'rc_this_oldid' => $this->revision->getId(), // condition
+ // non-unique timestamp index
+ 'rc_timestamp' => $dbw->timestamp( $this->revision->getTimestamp() ),
+ ),
+ __METHOD__
+ );
+
+ return true;
+ }
+
+ public function isDeleted() {
+ return $this->revision->isDeleted( Revision::DELETED_TEXT );
+ }
+
+ public function isHideCurrentOp( $newBits ) {
+ return ( $newBits & Revision::DELETED_TEXT )
+ && $this->list->getCurrent() == $this->getId();
+ }
+
+ /**
+ * Get the HTML link to the revision text.
+ * Overridden by RevDelArchiveItem.
+ * @return string
+ */
+ protected function getRevisionLink() {
+ $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+ $this->revision->getTimestamp(), $this->list->getUser() ) );
+
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $date;
+ }
+
+ return Linker::linkKnown(
+ $this->list->title,
+ $date,
+ array(),
+ array(
+ 'oldid' => $this->revision->getId(),
+ 'unhide' => 1
+ )
+ );
+ }
+
+ /**
+ * Get the HTML link to the diff.
+ * Overridden by RevDelArchiveItem
+ * @return string
+ */
+ protected function getDiffLink() {
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $this->list->msg( 'diff' )->escaped();
+ } else {
+ return Linker::linkKnown(
+ $this->list->title,
+ $this->list->msg( 'diff' )->escaped(),
+ array(),
+ array(
+ 'diff' => $this->revision->getId(),
+ 'oldid' => 'prev',
+ 'unhide' => 1
+ )
+ );
+ }
+ }
+
+ public function getHTML() {
+ $difflink = $this->list->msg( 'parentheses' )
+ ->rawParams( $this->getDiffLink() )->escaped();
+ $revlink = $this->getRevisionLink();
+ $userlink = Linker::revUserLink( $this->revision );
+ $comment = Linker::revComment( $this->revision );
+ if ( $this->isDeleted() ) {
+ $revlink = "<span class=\"history-deleted\">$revlink</span>";
+ }
+
+ return "<li>$difflink $revlink $userlink $comment</li>";
+ }
+
+ public function getApiData( ApiResult $result ) {
+ $rev = $this->revision;
+ $user = $this->list->getUser();
+ $ret = array(
+ 'id' => $rev->getId(),
+ 'timestamp' => wfTimestamp( TS_ISO_8601, $rev->getTimestamp() ),
+ );
+ $ret += $rev->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
+ $ret += $rev->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
+ $ret += $rev->isDeleted( Revision::DELETED_TEXT ) ? array( 'texthidden' => '' ) : array();
+ if ( $rev->userCan( Revision::DELETED_USER, $user ) ) {
+ $ret += array(
+ 'userid' => $rev->getUser( Revision::FOR_THIS_USER ),
+ 'user' => $rev->getUserText( Revision::FOR_THIS_USER ),
+ );
+ }
+ if ( $rev->userCan( Revision::DELETED_COMMENT, $user ) ) {
+ $ret += array(
+ 'comment' => $rev->getComment( Revision::FOR_THIS_USER ),
+ );
+ }
+
+ return $ret;
+ }
+}
--- /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
+ * @ingroup RevisionDelete
+ */
+
+/**
+ * List for revision table items
+ *
+ * This will check both the 'revision' table for live revisions and the
+ * 'archive' table for traditionally-deleted revisions that have an
+ * ar_rev_id saved.
+ *
+ * See RevDelRevisionItem and RevDelArchivedRevisionItem for items.
+ */
+class RevDelRevisionList extends RevDelList {
+ /** @var int */
+ public $currentRevId;
+
+ public function getType() {
+ return 'revision';
+ }
+
+ public static function getRelationType() {
+ return 'rev_id';
+ }
+
+ public static function getRestriction() {
+ return 'deleterevision';
+ }
+
+ public static function getRevdelConstant() {
+ return Revision::DELETED_TEXT;
+ }
+
+ public static function suggestTarget( $target, array $ids ) {
+ $rev = Revision::newFromId( $ids[0] );
+ return $rev ? $rev->getTitle() : $target;
+ }
+
+ /**
+ * @param DatabaseBase $db
+ * @return mixed
+ */
+ public function doQuery( $db ) {
+ $ids = array_map( 'intval', $this->ids );
+ $live = $db->select(
+ array( 'revision', 'page', 'user' ),
+ array_merge( Revision::selectFields(), Revision::selectUserFields() ),
+ array(
+ 'rev_page' => $this->title->getArticleID(),
+ 'rev_id' => $ids,
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_id DESC' ),
+ array(
+ 'page' => Revision::pageJoinCond(),
+ 'user' => Revision::userJoinCond() )
+ );
+
+ if ( $live->numRows() >= count( $ids ) ) {
+ // All requested revisions are live, keeps things simple!
+ return $live;
+ }
+
+ // Check if any requested revisions are available fully deleted.
+ $archived = $db->select( array( 'archive' ), Revision::selectArchiveFields(),
+ array(
+ 'ar_rev_id' => $ids
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'ar_rev_id DESC' )
+ );
+
+ if ( $archived->numRows() == 0 ) {
+ return $live;
+ } elseif ( $live->numRows() == 0 ) {
+ return $archived;
+ } else {
+ // Combine the two! Whee
+ $rows = array();
+ foreach ( $live as $row ) {
+ $rows[$row->rev_id] = $row;
+ }
+ foreach ( $archived as $row ) {
+ $rows[$row->ar_rev_id] = $row;
+ }
+ krsort( $rows );
+ return new FakeResultWrapper( array_values( $rows ) );
+ }
+ }
+
+ public function newItem( $row ) {
+ if ( isset( $row->rev_id ) ) {
+ return new RevDelRevisionItem( $this, $row );
+ } elseif ( isset( $row->ar_rev_id ) ) {
+ return new RevDelArchivedRevisionItem( $this, $row );
+ } else {
+ // This shouldn't happen. :)
+ throw new MWException( 'Invalid row type in RevDelRevisionList' );
+ }
+ }
+
+ public function getCurrent() {
+ if ( is_null( $this->currentRevId ) ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $this->currentRevId = $dbw->selectField(
+ 'page', 'page_latest', $this->title->pageCond(), __METHOD__ );
+ }
+ return $this->currentRevId;
+ }
+
+ public function getSuppressBit() {
+ return Revision::DELETED_RESTRICTED;
+ }
+
+ public function doPreCommitUpdates() {
+ $this->title->invalidateCache();
+ return Status::newGood();
+ }
+
+ public function doPostCommitUpdates() {
+ $this->title->purgeSquid();
+ // Extensions that require referencing previous revisions may need this
+ wfRunHooks( 'ArticleRevisionVisibilitySet', array( &$this->title ) );
+ return Status::newGood();
+ }
+}
+++ /dev/null
-<?php
-/**
- * Base implementations for deletable items.
- *
- * 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 RevisionDelete
- */
-
-/**
- * List for revision table items
- *
- * This will check both the 'revision' table for live revisions and the
- * 'archive' table for traditionally-deleted revisions that have an
- * ar_rev_id saved.
- *
- * See RevDelRevisionItem and RevDelArchivedRevisionItem for items.
- */
-class RevDelRevisionList extends RevDelList {
- /** @var int */
- var $currentRevId;
-
- public function getType() {
- return 'revision';
- }
-
- public static function getRelationType() {
- return 'rev_id';
- }
-
- public static function getRestriction() {
- return 'deleterevision';
- }
-
- public static function getRevdelConstant() {
- return Revision::DELETED_TEXT;
- }
-
- public static function suggestTarget( $target, array $ids ) {
- $rev = Revision::newFromId( $ids[0] );
- return $rev ? $rev->getTitle() : $target;
- }
-
- /**
- * @param DatabaseBase $db
- * @return mixed
- */
- public function doQuery( $db ) {
- $ids = array_map( 'intval', $this->ids );
- $live = $db->select(
- array( 'revision', 'page', 'user' ),
- array_merge( Revision::selectFields(), Revision::selectUserFields() ),
- array(
- 'rev_page' => $this->title->getArticleID(),
- 'rev_id' => $ids,
- ),
- __METHOD__,
- array( 'ORDER BY' => 'rev_id DESC' ),
- array(
- 'page' => Revision::pageJoinCond(),
- 'user' => Revision::userJoinCond() )
- );
-
- if ( $live->numRows() >= count( $ids ) ) {
- // All requested revisions are live, keeps things simple!
- return $live;
- }
-
- // Check if any requested revisions are available fully deleted.
- $archived = $db->select( array( 'archive' ), Revision::selectArchiveFields(),
- array(
- 'ar_rev_id' => $ids
- ),
- __METHOD__,
- array( 'ORDER BY' => 'ar_rev_id DESC' )
- );
-
- if ( $archived->numRows() == 0 ) {
- return $live;
- } elseif ( $live->numRows() == 0 ) {
- return $archived;
- } else {
- // Combine the two! Whee
- $rows = array();
- foreach ( $live as $row ) {
- $rows[$row->rev_id] = $row;
- }
- foreach ( $archived as $row ) {
- $rows[$row->ar_rev_id] = $row;
- }
- krsort( $rows );
- return new FakeResultWrapper( array_values( $rows ) );
- }
- }
-
- public function newItem( $row ) {
- if ( isset( $row->rev_id ) ) {
- return new RevDelRevisionItem( $this, $row );
- } elseif ( isset( $row->ar_rev_id ) ) {
- return new RevDelArchivedRevisionItem( $this, $row );
- } else {
- // This shouldn't happen. :)
- throw new MWException( 'Invalid row type in RevDelRevisionList' );
- }
- }
-
- public function getCurrent() {
- if ( is_null( $this->currentRevId ) ) {
- $dbw = wfGetDB( DB_MASTER );
- $this->currentRevId = $dbw->selectField(
- 'page', 'page_latest', $this->title->pageCond(), __METHOD__ );
- }
- return $this->currentRevId;
- }
-
- public function getSuppressBit() {
- return Revision::DELETED_RESTRICTED;
- }
-
- public function doPreCommitUpdates() {
- $this->title->invalidateCache();
- return Status::newGood();
- }
-
- public function doPostCommitUpdates() {
- $this->title->purgeSquid();
- // Extensions that require referencing previous revisions may need this
- wfRunHooks( 'ArticleRevisionVisibilitySet', array( &$this->title ) );
- return Status::newGood();
- }
-}
-
-/**
- * Item class for a live revision table row
- */
-class RevDelRevisionItem extends RevDelItem {
- /** @var Revision */
- var $revision;
-
- public function __construct( $list, $row ) {
- parent::__construct( $list, $row );
- $this->revision = new Revision( $row );
- }
-
- public function getIdField() {
- return 'rev_id';
- }
-
- public function getTimestampField() {
- return 'rev_timestamp';
- }
-
- public function getAuthorIdField() {
- return 'rev_user';
- }
-
- public function getAuthorNameField() {
- return 'rev_user_text';
- }
-
- public function canView() {
- return $this->revision->userCan( Revision::DELETED_RESTRICTED, $this->list->getUser() );
- }
-
- public function canViewContent() {
- return $this->revision->userCan( Revision::DELETED_TEXT, $this->list->getUser() );
- }
-
- public function getBits() {
- return $this->revision->getVisibility();
- }
-
- public function setBits( $bits ) {
- $dbw = wfGetDB( DB_MASTER );
- // Update revision table
- $dbw->update( 'revision',
- array( 'rev_deleted' => $bits ),
- array(
- 'rev_id' => $this->revision->getId(),
- 'rev_page' => $this->revision->getPage(),
- 'rev_deleted' => $this->getBits()
- ),
- __METHOD__
- );
- if ( !$dbw->affectedRows() ) {
- // Concurrent fail!
- return false;
- }
- // Update recentchanges table
- $dbw->update( 'recentchanges',
- array(
- 'rc_deleted' => $bits,
- 'rc_patrolled' => 1
- ),
- array(
- 'rc_this_oldid' => $this->revision->getId(), // condition
- // non-unique timestamp index
- 'rc_timestamp' => $dbw->timestamp( $this->revision->getTimestamp() ),
- ),
- __METHOD__
- );
- return true;
- }
-
- public function isDeleted() {
- return $this->revision->isDeleted( Revision::DELETED_TEXT );
- }
-
- public function isHideCurrentOp( $newBits ) {
- return ( $newBits & Revision::DELETED_TEXT )
- && $this->list->getCurrent() == $this->getId();
- }
-
- /**
- * Get the HTML link to the revision text.
- * Overridden by RevDelArchiveItem.
- * @return string
- */
- protected function getRevisionLink() {
- $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
- $this->revision->getTimestamp(), $this->list->getUser() ) );
-
- if ( $this->isDeleted() && !$this->canViewContent() ) {
- return $date;
- }
- return Linker::linkKnown(
- $this->list->title,
- $date,
- array(),
- array(
- 'oldid' => $this->revision->getId(),
- 'unhide' => 1
- )
- );
- }
-
- /**
- * Get the HTML link to the diff.
- * Overridden by RevDelArchiveItem
- * @return string
- */
- protected function getDiffLink() {
- if ( $this->isDeleted() && !$this->canViewContent() ) {
- return $this->list->msg( 'diff' )->escaped();
- } else {
- return Linker::linkKnown(
- $this->list->title,
- $this->list->msg( 'diff' )->escaped(),
- array(),
- array(
- 'diff' => $this->revision->getId(),
- 'oldid' => 'prev',
- 'unhide' => 1
- )
- );
- }
- }
-
- public function getHTML() {
- $difflink = $this->list->msg( 'parentheses' )
- ->rawParams( $this->getDiffLink() )->escaped();
- $revlink = $this->getRevisionLink();
- $userlink = Linker::revUserLink( $this->revision );
- $comment = Linker::revComment( $this->revision );
- if ( $this->isDeleted() ) {
- $revlink = "<span class=\"history-deleted\">$revlink</span>";
- }
- return "<li>$difflink $revlink $userlink $comment</li>";
- }
-
- public function getApiData( ApiResult $result ) {
- $rev = $this->revision;
- $user = $this->list->getUser();
- $ret = array(
- 'id' => $rev->getId(),
- 'timestamp' => wfTimestamp( TS_ISO_8601, $rev->getTimestamp() ),
- );
- $ret += $rev->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
- $ret += $rev->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
- $ret += $rev->isDeleted( Revision::DELETED_TEXT ) ? array( 'texthidden' => '' ) : array();
- if ( $rev->userCan( Revision::DELETED_USER, $user ) ) {
- $ret += array(
- 'userid' => $rev->getUser( Revision::FOR_THIS_USER ),
- 'user' => $rev->getUserText( Revision::FOR_THIS_USER ),
- );
- }
- if ( $rev->userCan( Revision::DELETED_COMMENT, $user ) ) {
- $ret += array(
- 'comment' => $rev->getComment( Revision::FOR_THIS_USER ),
- );
- }
- return $ret;
- }
-}
-
-/**
- * List for archive table items, i.e. revisions deleted via action=delete
- */
-class RevDelArchiveList extends RevDelRevisionList {
- public function getType() {
- return 'archive';
- }
-
- public static function getRelationType() {
- return 'ar_timestamp';
- }
-
- /**
- * @param DatabaseBase $db
- * @return mixed
- */
- public function doQuery( $db ) {
- $timestamps = array();
- foreach ( $this->ids as $id ) {
- $timestamps[] = $db->timestamp( $id );
- }
- return $db->select( 'archive', Revision::selectArchiveFields(),
- array(
- 'ar_namespace' => $this->title->getNamespace(),
- 'ar_title' => $this->title->getDBkey(),
- 'ar_timestamp' => $timestamps
- ),
- __METHOD__,
- array( 'ORDER BY' => 'ar_timestamp DESC' )
- );
- }
-
- public function newItem( $row ) {
- return new RevDelArchiveItem( $this, $row );
- }
-
- public function doPreCommitUpdates() {
- return Status::newGood();
- }
-
- public function doPostCommitUpdates() {
- return Status::newGood();
- }
-}
-
-/**
- * Item class for a archive table row
- */
-class RevDelArchiveItem extends RevDelRevisionItem {
- public function __construct( $list, $row ) {
- RevDelItem::__construct( $list, $row );
- $this->revision = Revision::newFromArchiveRow( $row,
- array( 'page' => $this->list->title->getArticleID() ) );
- }
-
- public function getIdField() {
- return 'ar_timestamp';
- }
-
- public function getTimestampField() {
- return 'ar_timestamp';
- }
-
- public function getAuthorIdField() {
- return 'ar_user';
- }
-
- public function getAuthorNameField() {
- return 'ar_user_text';
- }
-
- public function getId() {
- # Convert DB timestamp to MW timestamp
- return $this->revision->getTimestamp();
- }
-
- public function setBits( $bits ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'archive',
- array( 'ar_deleted' => $bits ),
- array(
- 'ar_namespace' => $this->list->title->getNamespace(),
- 'ar_title' => $this->list->title->getDBkey(),
- // use timestamp for index
- 'ar_timestamp' => $this->row->ar_timestamp,
- 'ar_rev_id' => $this->row->ar_rev_id,
- 'ar_deleted' => $this->getBits()
- ),
- __METHOD__ );
- return (bool)$dbw->affectedRows();
- }
-
- protected function getRevisionLink() {
- $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
- $this->revision->getTimestamp(), $this->list->getUser() ) );
-
- if ( $this->isDeleted() && !$this->canViewContent() ) {
- return $date;
- }
-
- return Linker::link(
- SpecialPage::getTitleFor( 'Undelete' ),
- $date,
- array(),
- array(
- 'target' => $this->list->title->getPrefixedText(),
- 'timestamp' => $this->revision->getTimestamp()
- )
- );
- }
-
- protected function getDiffLink() {
- if ( $this->isDeleted() && !$this->canViewContent() ) {
- return $this->list->msg( 'diff' )->escaped();
- }
-
- return Linker::link(
- SpecialPage::getTitleFor( 'Undelete' ),
- $this->list->msg( 'diff' )->escaped(),
- array(),
- array(
- 'target' => $this->list->title->getPrefixedText(),
- 'diff' => 'prev',
- 'timestamp' => $this->revision->getTimestamp()
- )
- );
- }
-}
-
-/**
- * Item class for a archive table row by ar_rev_id -- actually
- * used via RevDelRevisionList.
- */
-class RevDelArchivedRevisionItem extends RevDelArchiveItem {
- public function __construct( $list, $row ) {
- RevDelItem::__construct( $list, $row );
-
- $this->revision = Revision::newFromArchiveRow( $row,
- array( 'page' => $this->list->title->getArticleID() ) );
- }
-
- public function getIdField() {
- return 'ar_rev_id';
- }
-
- public function getId() {
- return $this->revision->getId();
- }
-
- public function setBits( $bits ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'archive',
- array( 'ar_deleted' => $bits ),
- array( 'ar_rev_id' => $this->row->ar_rev_id,
- 'ar_deleted' => $this->getBits()
- ),
- __METHOD__ );
- return (bool)$dbw->affectedRows();
- }
-}
-
-/**
- * List for oldimage table items
- */
-class RevDelFileList extends RevDelList {
- /** @var array */
- var $storeBatch;
-
- /** @var array */
- var $deleteBatch;
-
- /** @var array */
- var $cleanupBatch;
-
- public function getType() {
- return 'oldimage';
- }
-
- public static function getRelationType() {
- return 'oi_archive_name';
- }
-
- public static function getRestriction() {
- return 'deleterevision';
- }
-
- public static function getRevdelConstant() {
- return File::DELETED_FILE;
- }
-
- /**
- * @param DatabaseBase $db
- * @return mixed
- */
- public function doQuery( $db ) {
- $archiveNames = array();
- foreach ( $this->ids as $timestamp ) {
- $archiveNames[] = $timestamp . '!' . $this->title->getDBkey();
- }
- return $db->select(
- 'oldimage',
- OldLocalFile::selectFields(),
- array(
- 'oi_name' => $this->title->getDBkey(),
- 'oi_archive_name' => $archiveNames
- ),
- __METHOD__,
- array( 'ORDER BY' => 'oi_timestamp DESC' )
- );
- }
-
- public function newItem( $row ) {
- return new RevDelFileItem( $this, $row );
- }
-
- public function clearFileOps() {
- $this->deleteBatch = array();
- $this->storeBatch = array();
- $this->cleanupBatch = array();
- }
-
- public function doPreCommitUpdates() {
- $status = Status::newGood();
- $repo = RepoGroup::singleton()->getLocalRepo();
- if ( $this->storeBatch ) {
- $status->merge( $repo->storeBatch( $this->storeBatch, FileRepo::OVERWRITE_SAME ) );
- }
- if ( !$status->isOK() ) {
- return $status;
- }
- if ( $this->deleteBatch ) {
- $status->merge( $repo->deleteBatch( $this->deleteBatch ) );
- }
- if ( !$status->isOK() ) {
- // Running cleanupDeletedBatch() after a failed storeBatch() with the DB already
- // modified (but destined for rollback) causes data loss
- return $status;
- }
- if ( $this->cleanupBatch ) {
- $status->merge( $repo->cleanupDeletedBatch( $this->cleanupBatch ) );
- }
- return $status;
- }
-
- public function doPostCommitUpdates() {
- global $wgUseSquid;
- $file = wfLocalFile( $this->title );
- $file->purgeCache();
- $file->purgeDescription();
- $purgeUrls = array();
- foreach ( $this->ids as $timestamp ) {
- $archiveName = $timestamp . '!' . $this->title->getDBkey();
- $file->purgeOldThumbnails( $archiveName );
- $purgeUrls[] = $file->getArchiveUrl( $archiveName );
- }
- if ( $wgUseSquid ) {
- // purge full images from cache
- SquidUpdate::purge( $purgeUrls );
- }
- return Status::newGood();
- }
-
- public function getSuppressBit() {
- return File::DELETED_RESTRICTED;
- }
-}
-
-/**
- * Item class for an oldimage table row
- */
-class RevDelFileItem extends RevDelItem {
- /** @var File */
- var $file;
-
- public function __construct( $list, $row ) {
- parent::__construct( $list, $row );
- $this->file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
- }
-
- public function getIdField() {
- return 'oi_archive_name';
- }
-
- public function getTimestampField() {
- return 'oi_timestamp';
- }
-
- public function getAuthorIdField() {
- return 'oi_user';
- }
-
- public function getAuthorNameField() {
- return 'oi_user_text';
- }
-
- public function getId() {
- $parts = explode( '!', $this->row->oi_archive_name );
- return $parts[0];
- }
-
- public function canView() {
- return $this->file->userCan( File::DELETED_RESTRICTED, $this->list->getUser() );
- }
-
- public function canViewContent() {
- return $this->file->userCan( File::DELETED_FILE, $this->list->getUser() );
- }
-
- public function getBits() {
- return $this->file->getVisibility();
- }
-
- public function setBits( $bits ) {
- # Queue the file op
- # @todo FIXME: Move to LocalFile.php
- if ( $this->isDeleted() ) {
- if ( $bits & File::DELETED_FILE ) {
- # Still deleted
- } else {
- # Newly undeleted
- $key = $this->file->getStorageKey();
- $srcRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
- $this->list->storeBatch[] = array(
- $this->file->repo->getVirtualUrl( 'deleted' ) . '/' . $srcRel,
- 'public',
- $this->file->getRel()
- );
- $this->list->cleanupBatch[] = $key;
- }
- } elseif ( $bits & File::DELETED_FILE ) {
- # Newly deleted
- $key = $this->file->getStorageKey();
- $dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
- $this->list->deleteBatch[] = array( $this->file->getRel(), $dstRel );
- }
-
- # Do the database operations
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'oldimage',
- array( 'oi_deleted' => $bits ),
- array(
- 'oi_name' => $this->row->oi_name,
- 'oi_timestamp' => $this->row->oi_timestamp,
- 'oi_deleted' => $this->getBits()
- ),
- __METHOD__
- );
- return (bool)$dbw->affectedRows();
- }
-
- public function isDeleted() {
- return $this->file->isDeleted( File::DELETED_FILE );
- }
-
- /**
- * Get the link to the file.
- * Overridden by RevDelArchivedFileItem.
- * @return string
- */
- protected function getLink() {
- $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
- $this->file->getTimestamp(), $this->list->getUser() ) );
-
- if ( !$this->isDeleted() ) {
- # Regular files...
- return Html::rawElement( 'a', array( 'href' => $this->file->getUrl() ), $date );
- }
-
- # Hidden files...
- if ( !$this->canViewContent() ) {
- $link = $date;
- } else {
- $link = Linker::link(
- SpecialPage::getTitleFor( 'Revisiondelete' ),
- $date,
- array(),
- array(
- 'target' => $this->list->title->getPrefixedText(),
- 'file' => $this->file->getArchiveName(),
- 'token' => $this->list->getUser()->getEditToken(
- $this->file->getArchiveName() )
- )
- );
- }
- return '<span class="history-deleted">' . $link . '</span>';
- }
-
- /**
- * Generate a user tool link cluster if the current user is allowed to view it
- * @return string HTML
- */
- protected function getUserTools() {
- if ( $this->file->userCan( Revision::DELETED_USER, $this->list->getUser() ) ) {
- $uid = $this->file->getUser( 'id' );
- $name = $this->file->getUser( 'text' );
- $link = Linker::userLink( $uid, $name ) . Linker::userToolLinks( $uid, $name );
- } else {
- $link = $this->list->msg( 'rev-deleted-user' )->escaped();
- }
- if ( $this->file->isDeleted( Revision::DELETED_USER ) ) {
- return '<span class="history-deleted">' . $link . '</span>';
- }
- return $link;
- }
-
- /**
- * Wrap and format the file's comment block, if the current
- * user is allowed to view it.
- *
- * @return string HTML
- */
- protected function getComment() {
- if ( $this->file->userCan( File::DELETED_COMMENT, $this->list->getUser() ) ) {
- $block = Linker::commentBlock( $this->file->getDescription() );
- } else {
- $block = ' ' . $this->list->msg( 'rev-deleted-comment' )->escaped();
- }
- if ( $this->file->isDeleted( File::DELETED_COMMENT ) ) {
- return "<span class=\"history-deleted\">$block</span>";
- }
- return $block;
- }
-
- public function getHTML() {
- $data =
- $this->list->msg( 'widthheight' )->numParams(
- $this->file->getWidth(), $this->file->getHeight() )->text() .
- ' (' . $this->list->msg( 'nbytes' )->numParams( $this->file->getSize() )->text() . ')';
-
- return '<li>' . $this->getLink() . ' ' . $this->getUserTools() . ' ' .
- $data . ' ' . $this->getComment() . '</li>';
- }
-
- public function getApiData( ApiResult $result ) {
- $file = $this->file;
- $user = $this->list->getUser();
- $ret = array(
- 'title' => $this->list->title->getPrefixedText(),
- 'archivename' => $file->getArchiveName(),
- 'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
- 'width' => $file->getWidth(),
- 'height' => $file->getHeight(),
- 'size' => $file->getSize(),
- );
- $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
- $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
- $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
- if ( !$this->isDeleted() ) {
- $ret += array(
- 'url' => $file->getUrl(),
- );
- } elseif ( $this->canViewContent() ) {
- $ret += array(
- 'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
- array(
- 'target' => $this->list->title->getPrefixedText(),
- 'file' => $file->getArchiveName(),
- 'token' => $user->getEditToken( $file->getArchiveName() )
- ),
- false, PROTO_RELATIVE
- ),
- );
- }
- if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
- $ret += array(
- 'userid' => $file->user,
- 'user' => $file->user_text,
- );
- }
- if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
- $ret += array(
- 'comment' => $file->description,
- );
- }
- return $ret;
- }
-}
-
-/**
- * List for filearchive table items
- */
-class RevDelArchivedFileList extends RevDelFileList {
- public function getType() {
- return 'filearchive';
- }
-
- public static function getRelationType() {
- return 'fa_id';
- }
-
- /**
- * @param DatabaseBase $db
- * @return mixed
- */
- public function doQuery( $db ) {
- $ids = array_map( 'intval', $this->ids );
- return $db->select(
- 'filearchive',
- ArchivedFile::selectFields(),
- array(
- 'fa_name' => $this->title->getDBkey(),
- 'fa_id' => $ids
- ),
- __METHOD__,
- array( 'ORDER BY' => 'fa_id DESC' )
- );
- }
-
- public function newItem( $row ) {
- return new RevDelArchivedFileItem( $this, $row );
- }
-}
-
-/**
- * Item class for a filearchive table row
- */
-class RevDelArchivedFileItem extends RevDelFileItem {
- public function __construct( $list, $row ) {
- RevDelItem::__construct( $list, $row );
- $this->file = ArchivedFile::newFromRow( $row );
- }
-
- public function getIdField() {
- return 'fa_id';
- }
-
- public function getTimestampField() {
- return 'fa_timestamp';
- }
-
- public function getAuthorIdField() {
- return 'fa_user';
- }
-
- public function getAuthorNameField() {
- return 'fa_user_text';
- }
-
- public function getId() {
- return $this->row->fa_id;
- }
-
- public function setBits( $bits ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'filearchive',
- array( 'fa_deleted' => $bits ),
- array(
- 'fa_id' => $this->row->fa_id,
- 'fa_deleted' => $this->getBits(),
- ),
- __METHOD__
- );
- return (bool)$dbw->affectedRows();
- }
-
- protected function getLink() {
- $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
- $this->file->getTimestamp(), $this->list->getUser() ) );
-
- # Hidden files...
- if ( !$this->canViewContent() ) {
- $link = $date;
- } else {
- $undelete = SpecialPage::getTitleFor( 'Undelete' );
- $key = $this->file->getKey();
- $link = Linker::link( $undelete, $date, array(),
- array(
- 'target' => $this->list->title->getPrefixedText(),
- 'file' => $key,
- 'token' => $this->list->getUser()->getEditToken( $key )
- )
- );
- }
- if ( $this->isDeleted() ) {
- $link = '<span class="history-deleted">' . $link . '</span>';
- }
- return $link;
- }
-
- public function getApiData( ApiResult $result ) {
- $file = $this->file;
- $user = $this->list->getUser();
- $ret = array(
- 'title' => $this->list->title->getPrefixedText(),
- 'timestamp' => wfTimestamp( TS_ISO_8601, $file->getTimestamp() ),
- 'width' => $file->getWidth(),
- 'height' => $file->getHeight(),
- 'size' => $file->getSize(),
- );
- $ret += $file->isDeleted( Revision::DELETED_USER ) ? array( 'userhidden' => '' ) : array();
- $ret += $file->isDeleted( Revision::DELETED_COMMENT ) ? array( 'commenthidden' => '' ) : array();
- $ret += $this->isDeleted() ? array( 'contenthidden' => '' ) : array();
- if ( $this->canViewContent() ) {
- $ret += array(
- 'url' => SpecialPage::getTitleFor( 'Revisiondelete' )->getLinkURL(
- array(
- 'target' => $this->list->title->getPrefixedText(),
- 'file' => $file->getKey(),
- 'token' => $user->getEditToken( $file->getKey() )
- ),
- false, PROTO_RELATIVE
- ),
- );
- }
- if ( $file->userCan( Revision::DELETED_USER, $user ) ) {
- $ret += array(
- 'userid' => $file->getUser( 'id' ),
- 'user' => $file->getUser( 'text' ),
- );
- }
- if ( $file->userCan( Revision::DELETED_COMMENT, $user ) ) {
- $ret += array(
- 'comment' => $file->getRawDescription(),
- );
- }
- return $ret;
- }
-}
-
-/**
- * List for logging table items
- */
-class RevDelLogList extends RevDelList {
- public function getType() {
- return 'logging';
- }
-
- public static function getRelationType() {
- return 'log_id';
- }
-
- public static function getRestriction() {
- return 'deletelogentry';
- }
-
- public static function getRevdelConstant() {
- return LogPage::DELETED_ACTION;
- }
-
- public static function suggestTarget( $target, array $ids ) {
- $result = wfGetDB( DB_SLAVE )->select( 'logging',
- 'log_type',
- array( 'log_id' => $ids ),
- __METHOD__,
- array( 'DISTINCT' )
- );
- if ( $result->numRows() == 1 ) {
- // If there's only one type, the target can be set to include it.
- return SpecialPage::getTitleFor( 'Log', $result->current()->log_type );
- }
- return SpecialPage::getTitleFor( 'Log' );
- }
-
- /**
- * @param DatabaseBase $db
- * @return mixed
- */
- public function doQuery( $db ) {
- $ids = array_map( 'intval', $this->ids );
- return $db->select( 'logging', array(
- 'log_id',
- 'log_type',
- 'log_action',
- 'log_timestamp',
- 'log_user',
- 'log_user_text',
- 'log_namespace',
- 'log_title',
- 'log_page',
- 'log_comment',
- 'log_params',
- 'log_deleted'
- ),
- array( 'log_id' => $ids ),
- __METHOD__,
- array( 'ORDER BY' => 'log_id DESC' )
- );
- }
-
- public function newItem( $row ) {
- return new RevDelLogItem( $this, $row );
- }
-
- public function getSuppressBit() {
- return Revision::DELETED_RESTRICTED;
- }
-
- public function getLogAction() {
- return 'event';
- }
-
- public function getLogParams( $params ) {
- return array(
- implode( ',', $params['ids'] ),
- "ofield={$params['oldBits']}",
- "nfield={$params['newBits']}"
- );
- }
-}
-
-/**
- * Item class for a logging table row
- */
-class RevDelLogItem extends RevDelItem {
- public function getIdField() {
- return 'log_id';
- }
-
- public function getTimestampField() {
- return 'log_timestamp';
- }
-
- public function getAuthorIdField() {
- return 'log_user';
- }
-
- public function getAuthorNameField() {
- return 'log_user_text';
- }
-
- public function canView() {
- return LogEventsList::userCan( $this->row, Revision::DELETED_RESTRICTED, $this->list->getUser() );
- }
-
- public function canViewContent() {
- return true; // none
- }
-
- public function getBits() {
- return $this->row->log_deleted;
- }
-
- public function setBits( $bits ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'recentchanges',
- array(
- 'rc_deleted' => $bits,
- 'rc_patrolled' => 1
- ),
- array(
- 'rc_logid' => $this->row->log_id,
- 'rc_timestamp' => $this->row->log_timestamp // index
- ),
- __METHOD__
- );
- $dbw->update( 'logging',
- array( 'log_deleted' => $bits ),
- array(
- 'log_id' => $this->row->log_id,
- 'log_deleted' => $this->getBits()
- ),
- __METHOD__
- );
- return (bool)$dbw->affectedRows();
- }
-
- public function getHTML() {
- $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
- $this->row->log_timestamp, $this->list->getUser() ) );
- $title = Title::makeTitle( $this->row->log_namespace, $this->row->log_title );
- $formatter = LogFormatter::newFromRow( $this->row );
- $formatter->setContext( $this->list->getContext() );
- $formatter->setAudience( LogFormatter::FOR_THIS_USER );
-
- // Log link for this page
- $loglink = Linker::link(
- SpecialPage::getTitleFor( 'Log' ),
- $this->list->msg( 'log' )->escaped(),
- array(),
- array( 'page' => $title->getPrefixedText() )
- );
- $loglink = $this->list->msg( 'parentheses' )->rawParams( $loglink )->escaped();
- // User links and action text
- $action = $formatter->getActionText();
- // Comment
- $comment = $this->list->getLanguage()->getDirMark()
- . Linker::commentBlock( $this->row->log_comment );
-
- if ( LogEventsList::isDeleted( $this->row, LogPage::DELETED_COMMENT ) ) {
- $comment = '<span class="history-deleted">' . $comment . '</span>';
- }
-
- return "<li>$loglink $date $action $comment</li>";
- }
-
- public function getApiData( ApiResult $result ) {
- $logEntry = DatabaseLogEntry::newFromRow( $this->row );
- $user = $this->list->getUser();
- $ret = array(
- 'id' => $logEntry->getId(),
- 'type' => $logEntry->getType(),
- 'action' => $logEntry->getSubtype(),
- );
- $ret += $logEntry->isDeleted( LogPage::DELETED_USER )
- ? array( 'userhidden' => '' )
- : array();
- $ret += $logEntry->isDeleted( LogPage::DELETED_COMMENT )
- ? array( 'commenthidden' => '' )
- : array();
- $ret += $logEntry->isDeleted( LogPage::DELETED_ACTION )
- ? array( 'actionhidden' => '' )
- : array();
-
- if ( LogEventsList::userCan( $this->row, LogPage::DELETED_ACTION, $user ) ) {
- ApiQueryLogEvents::addLogParams(
- $result,
- $ret,
- $logEntry->getParameters(),
- $logEntry->getType(),
- $logEntry->getSubtype(),
- $logEntry->getTimestamp(),
- $logEntry->isLegacy()
- );
- }
- if ( LogEventsList::userCan( $this->row, LogPage::DELETED_USER, $user ) ) {
- $ret += array(
- 'userid' => $this->row->log_user,
- 'user' => $this->row->log_user_text,
- );
- }
- if ( LogEventsList::userCan( $this->row, LogPage::DELETED_COMMENT, $user ) ) {
- $ret += array(
- 'comment' => $this->row->log_comment,
- );
- }
- return $ret;
- }
-}
* Returns true if the item is "current", and the operation to set the given
* bits can't be executed for that reason
* STUB
+ * @param int $newBits
* @return bool
*/
public function isHideCurrentOp( $newBits ) {
* If the update fails because it did not match, the function should return
* false. This prevents concurrency problems.
*
+ * @param int $newBits
* @return bool Success
*/
abstract public function setBits( $newBits );
* Suggest a target for the revision deletion
* @since 1.22
* @param string $typeName
- * @param Title|null $title User-supplied target
+ * @param Title|null $target User-supplied target
* @param array $ids
* @return Title|null
*/
* Transform search term in cases when parts of the query came as different
* GET params (when supported), e.g. for prefix queries:
* search=test&prefix=Main_Page/Archive -> test prefix:Main Page/Archive
+ * @param string $term
+ * @return string
*/
function transformSearchTerm( $term ) {
return $term;
/**
* Really find the title match.
+ * @param string $searchterm
* @return null|Title
*/
private static function getNearMatchInternal( $searchterm ) {
/**
* Basic wikitext removal
* @protected
+ * @param string $text
* @return mixed
*/
function removeWiki( $text ) {
* Does not do anything for generic search engine
* subclasses may define this though
*
+ * @param string $filteredTerm
+ * @param bool $fulltext
* @return string
*/
function queryRanking( $filteredTerm, $fulltext ) {
}
/** @todo document
+ * @param string $filteredText
+ * @param bool $fulltext
* @return string
*/
function parseQuery( $filteredText, $fulltext ) {
/**
* @since 1.18 (changed)
+ * @param string $filteredTerm
+ * @param bool $fulltext
* @return array
*/
function getCountQuery( $filteredTerm, $fulltext ) {
/**
* Converts some characters for MySQL's indexing to grok it correctly,
* and pads short words to overcome limitations.
+ * @param string $string
* @return mixed|string
*/
function normalizeText( $string ) {
* Armor a case-folded UTF-8 string to get through MySQL's
* fulltext search without being mucked up by funny charset
* settings or anything else of the sort.
+ * @param array $matches
* @return string
*/
protected function stripForSearchCallback( $matches ) {
* Does not do anything for generic search engine
* subclasses may define this though
*
+ * @param string $filteredTerm
+ * @param bool $fulltext
* @return string
*/
function queryRanking( $filteredTerm, $fulltext ) {
/**
* Parse a user input search string, and return an SQL fragment to be used
* as part of a WHERE clause
+ * @param string $filteredText
+ * @param bool $fulltext
* @return string
*/
function parseQuery( $filteredText, $fulltext ) {
* latest revision article text (pagecontent.old_text)
*
* @param string $term Raw search term
- * @return PostgresSearchResultSet
+ * @return SqlSearchResultSet
*/
function searchTitle( $term ) {
$q = $this->searchQuery( $term, 'titlevector', 'page_title' );
$olderror = error_reporting( E_ERROR );
$resultSet = $this->db->resultObject( $this->db->query( $q, 'SearchPostgres', true ) );
error_reporting( $olderror );
- return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
+ return new SqlSearchResultSet( $resultSet, $this->searchTerms );
}
function searchText( $term ) {
$olderror = error_reporting( E_ERROR );
$resultSet = $this->db->resultObject( $this->db->query( $q, 'SearchPostgres', true ) );
error_reporting( $olderror );
- return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
+ return new SqlSearchResultSet( $resultSet, $this->searchTerms );
}
/**
return true;
}
-} ## end of the SearchPostgres class
-
-/**
- * @ingroup Search
- */
-class PostgresSearchResult extends SearchResult {
- function __construct( $row ) {
- parent::__construct( $row );
- $this->score = $row->score;
- }
-
- function getScore() {
- return $this->score;
- }
-}
-
-/**
- * @ingroup Search
- */
-class PostgresSearchResultSet extends SqlSearchResultSet {
- function next() {
- $row = $this->resultSet->fetchObject();
- if ( $row === false ) {
- return false;
- } else {
- return new PostgresSearchResult( $row );
- }
- }
}
return $this->mImage;
}
- /**
- * @return float|null If not supported
- */
- function getScore() {
- return null;
- }
-
/**
* Lazy initialization of article text from DB
*/
* Parse the user's query and transform it into an SQL fragment which will
* become part of a WHERE clause
*
+ * @param string $filteredText
+ * @param bool $fulltext
* @return string
*/
function parseQuery( $filteredText, $fulltext ) {
--- /dev/null
+<?php
+/**
+ * Base class for all skins.
+ *
+ * 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
+ */
+
+/**
+ * @defgroup Skins Skins
+ */
+
+/**
+ * The main skin class which provides methods and properties for all other skins.
+ *
+ * See docs/skin.txt for more information.
+ *
+ * @ingroup Skins
+ */
+abstract class Skin extends ContextSource {
+ protected $skinname = null;
+ protected $mRelevantTitle = null;
+ protected $mRelevantUser = null;
+
+ /**
+ * @var string Stylesheets set to use. Subdirectory in skins/ where various stylesheets are
+ * located. Only needs to be set if you intend to use the getSkinStylePath() method.
+ */
+ public $stylename = null;
+
+ /**
+ * Fetch the set of available skins.
+ * @return array Associative array of strings
+ */
+ static function getSkinNames() {
+ return SkinFactory::getDefaultInstance()->getSkinNames();
+ }
+
+ /**
+ * Fetch the skinname messages for available skins.
+ * @return string[]
+ */
+ static function getSkinNameMessages() {
+ $messages = array();
+ foreach ( self::getSkinNames() as $skinKey => $skinName ) {
+ $messages[] = "skinname-$skinKey";
+ }
+ return $messages;
+ }
+
+ /**
+ * Fetch the list of user-selectable skins in regards to $wgSkipSkins.
+ * Useful for Special:Preferences and other places where you
+ * only want to show skins users _can_ use.
+ * @return string[]
+ * @since 1.23
+ */
+ public static function getAllowedSkins() {
+ global $wgSkipSkins;
+
+ $allowedSkins = self::getSkinNames();
+
+ foreach ( $wgSkipSkins as $skip ) {
+ unset( $allowedSkins[$skip] );
+ }
+
+ return $allowedSkins;
+ }
+
+ /**
+ * @deprecated since 1.23, use getAllowedSkins
+ * @return string[]
+ */
+ public static function getUsableSkins() {
+ wfDeprecated( __METHOD__, '1.23' );
+ return self::getAllowedSkins();
+ }
+
+ /**
+ * Normalize a skin preference value to a form that can be loaded.
+ *
+ * If a skin can't be found, it will fall back to the configured default ($wgDefaultSkin), or the
+ * hardcoded default ($wgFallbackSkin) if the default skin is unavailable too.
+ *
+ * @param string $key 'monobook', 'vector', etc.
+ * @return string
+ */
+ static function normalizeKey( $key ) {
+ global $wgDefaultSkin, $wgFallbackSkin;
+
+ $skinNames = Skin::getSkinNames();
+
+ // Make keys lowercase for case-insensitive matching.
+ $skinNames = array_change_key_case( $skinNames, CASE_LOWER );
+ $key = strtolower( $key );
+ $defaultSkin = strtolower( $wgDefaultSkin );
+ $fallbackSkin = strtolower( $wgFallbackSkin );
+
+ if ( $key == '' || $key == 'default' ) {
+ // Don't return the default immediately;
+ // in a misconfiguration we need to fall back.
+ $key = $defaultSkin;
+ }
+
+ if ( isset( $skinNames[$key] ) ) {
+ return $key;
+ }
+
+ // Older versions of the software used a numeric setting
+ // in the user preferences.
+ $fallback = array(
+ 0 => $defaultSkin,
+ 2 => 'cologneblue'
+ );
+
+ if ( isset( $fallback[$key] ) ) {
+ $key = $fallback[$key];
+ }
+
+ if ( isset( $skinNames[$key] ) ) {
+ return $key;
+ } elseif ( isset( $skinNames[$defaultSkin] ) ) {
+ return $defaultSkin;
+ } else {
+ return $fallbackSkin;
+ }
+ }
+
+ /**
+ * Factory method for loading a skin of a given type
+ * @param string $key 'monobook', 'vector', etc.
+ * @return Skin
+ * @deprecated since 1.24; Use SkinFactory instead
+ */
+ static function &newFromKey( $key ) {
+ wfDeprecated( __METHOD__, '1.24' );
+
+ $key = Skin::normalizeKey( $key );
+ $factory = SkinFactory::getDefaultInstance();
+
+ // normalizeKey() guarantees that a skin with this key will exist.
+ $skin = $factory->makeSkin( $key );
+ return $skin;
+ }
+
+ /**
+ * @return string Skin name
+ */
+ public function getSkinName() {
+ return $this->skinname;
+ }
+
+ /**
+ * @param OutputPage $out
+ */
+ function initPage( OutputPage $out ) {
+ wfProfileIn( __METHOD__ );
+
+ $this->preloadExistence();
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Defines the ResourceLoader modules that should be added to the skin
+ * It is recommended that skins wishing to override call parent::getDefaultModules()
+ * and substitute out any modules they wish to change by using a key to look them up
+ * @return array Array of modules with helper keys for easy overriding
+ */
+ public function getDefaultModules() {
+ global $wgIncludeLegacyJavaScript, $wgPreloadJavaScriptMwUtil, $wgUseAjax,
+ $wgAjaxWatch, $wgEnableAPI, $wgEnableWriteAPI;
+
+ $out = $this->getOutput();
+ $user = $out->getUser();
+ $modules = array(
+ // modules that enhance the page content in some way
+ 'content' => array(
+ 'mediawiki.page.ready',
+ ),
+ // modules that exist for legacy reasons
+ 'legacy' => array(),
+ // modules relating to search functionality
+ 'search' => array(),
+ // modules relating to functionality relating to watching an article
+ 'watch' => array(),
+ // modules which relate to the current users preferences
+ 'user' => array(),
+ );
+ if ( $wgIncludeLegacyJavaScript ) {
+ $modules['legacy'][] = 'mediawiki.legacy.wikibits';
+ }
+
+ if ( $wgPreloadJavaScriptMwUtil ) {
+ $modules['legacy'][] = 'mediawiki.util';
+ }
+
+ // Add various resources if required
+ if ( $wgUseAjax ) {
+ $modules['legacy'][] = 'mediawiki.legacy.ajax';
+
+ if ( $wgEnableAPI ) {
+ if ( $wgEnableWriteAPI && $wgAjaxWatch && $user->isLoggedIn()
+ && $user->isAllowed( 'writeapi' )
+ ) {
+ $modules['watch'][] = 'mediawiki.page.watch.ajax';
+ }
+
+ $modules['search'][] = 'mediawiki.searchSuggest';
+ }
+ }
+
+ if ( $user->getBoolOption( 'editsectiononrightclick' ) ) {
+ $modules['user'][] = 'mediawiki.action.view.rightClickEdit';
+ }
+
+ // Crazy edit-on-double-click stuff
+ if ( $out->isArticle() && $user->getOption( 'editondblclick' ) ) {
+ $modules['user'][] = 'mediawiki.action.view.dblClickEdit';
+ }
+ return $modules;
+ }
+
+ /**
+ * Preload the existence of three commonly-requested pages in a single query
+ */
+ function preloadExistence() {
+ $user = $this->getUser();
+
+ // User/talk link
+ $titles = array( $user->getUserPage(), $user->getTalkPage() );
+
+ // Other tab link
+ if ( $this->getTitle()->isSpecialPage() ) {
+ // nothing
+ } elseif ( $this->getTitle()->isTalkPage() ) {
+ $titles[] = $this->getTitle()->getSubjectPage();
+ } else {
+ $titles[] = $this->getTitle()->getTalkPage();
+ }
+
+ $lb = new LinkBatch( $titles );
+ $lb->setCaller( __METHOD__ );
+ $lb->execute();
+ }
+
+ /**
+ * Get the current revision ID
+ *
+ * @return int
+ */
+ public function getRevisionId() {
+ return $this->getOutput()->getRevisionId();
+ }
+
+ /**
+ * Whether the revision displayed is the latest revision of the page
+ *
+ * @return bool
+ */
+ public function isRevisionCurrent() {
+ $revID = $this->getRevisionId();
+ return $revID == 0 || $revID == $this->getTitle()->getLatestRevID();
+ }
+
+ /**
+ * Set the "relevant" title
+ * @see self::getRelevantTitle()
+ * @param Title $t
+ */
+ public function setRelevantTitle( $t ) {
+ $this->mRelevantTitle = $t;
+ }
+
+ /**
+ * Return the "relevant" title.
+ * A "relevant" title is not necessarily the actual title of the page.
+ * Special pages like Special:MovePage use set the page they are acting on
+ * as their "relevant" title, this allows the skin system to display things
+ * such as content tabs which belong to to that page instead of displaying
+ * a basic special page tab which has almost no meaning.
+ *
+ * @return Title
+ */
+ public function getRelevantTitle() {
+ if ( isset( $this->mRelevantTitle ) ) {
+ return $this->mRelevantTitle;
+ }
+ return $this->getTitle();
+ }
+
+ /**
+ * Set the "relevant" user
+ * @see self::getRelevantUser()
+ * @param User $u
+ */
+ public function setRelevantUser( $u ) {
+ $this->mRelevantUser = $u;
+ }
+
+ /**
+ * Return the "relevant" user.
+ * A "relevant" user is similar to a relevant title. Special pages like
+ * Special:Contributions mark the user which they are relevant to so that
+ * things like the toolbox can display the information they usually are only
+ * able to display on a user's userpage and talkpage.
+ * @return User
+ */
+ public function getRelevantUser() {
+ if ( isset( $this->mRelevantUser ) ) {
+ return $this->mRelevantUser;
+ }
+ $title = $this->getRelevantTitle();
+ if ( $title->hasSubjectNamespace( NS_USER ) ) {
+ $rootUser = $title->getRootText();
+ if ( User::isIP( $rootUser ) ) {
+ $this->mRelevantUser = User::newFromName( $rootUser, false );
+ } else {
+ $user = User::newFromName( $rootUser, false );
+ if ( $user && $user->isLoggedIn() ) {
+ $this->mRelevantUser = $user;
+ }
+ }
+ return $this->mRelevantUser;
+ }
+ return null;
+ }
+
+ /**
+ * Outputs the HTML generated by other functions.
+ * @param OutputPage $out
+ */
+ abstract function outputPage( OutputPage $out = null );
+
+ /**
+ * @param array $data
+ * @return string
+ */
+ static function makeVariablesScript( $data ) {
+ if ( $data ) {
+ return Html::inlineScript(
+ ResourceLoader::makeLoaderConditionalScript( ResourceLoader::makeConfigSetScript( $data ) )
+ );
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * Get the query to generate a dynamic stylesheet
+ *
+ * @return array
+ */
+ public static function getDynamicStylesheetQuery() {
+ global $wgSquidMaxage;
+
+ return array(
+ 'action' => 'raw',
+ 'maxage' => $wgSquidMaxage,
+ 'usemsgcache' => 'yes',
+ 'ctype' => 'text/css',
+ 'smaxage' => $wgSquidMaxage,
+ );
+ }
+
+ /**
+ * Add skin specific stylesheets
+ * Calling this method with an $out of anything but the same OutputPage
+ * inside ->getOutput() is deprecated. The $out arg is kept
+ * for compatibility purposes with skins.
+ * @param OutputPage $out
+ * @todo delete
+ */
+ abstract function setupSkinUserCss( OutputPage $out );
+
+ /**
+ * TODO: document
+ * @param Title $title
+ * @return string
+ */
+ function getPageClasses( $title ) {
+ $numeric = 'ns-' . $title->getNamespace();
+
+ if ( $title->isSpecialPage() ) {
+ $type = 'ns-special';
+ // bug 23315: provide a class based on the canonical special page name without subpages
+ list( $canonicalName ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+ if ( $canonicalName ) {
+ $type .= ' ' . Sanitizer::escapeClass( "mw-special-$canonicalName" );
+ } else {
+ $type .= ' mw-invalidspecialpage';
+ }
+ } elseif ( $title->isTalkPage() ) {
+ $type = 'ns-talk';
+ } else {
+ $type = 'ns-subject';
+ }
+
+ $name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() );
+
+ return "$numeric $type $name";
+ }
+
+ /**
+ * Return values for <html> element
+ * @return array of associative name-to-value elements for <html> element
+ */
+ public function getHtmlElementAttributes() {
+ $lang = $this->getLanguage();
+ return array(
+ 'lang' => $lang->getHtmlCode(),
+ 'dir' => $lang->getDir(),
+ 'class' => 'client-nojs',
+ );
+ }
+
+ /**
+ * This will be called by OutputPage::headElement when it is creating the
+ * "<body>" tag, skins can override it if they have a need to add in any
+ * body attributes or classes of their own.
+ * @param OutputPage $out
+ * @param array $bodyAttrs
+ */
+ function addToBodyAttributes( $out, &$bodyAttrs ) {
+ // does nothing by default
+ }
+
+ /**
+ * URL to the logo
+ * @return string
+ */
+ function getLogo() {
+ global $wgLogo;
+ return $wgLogo;
+ }
+
+ /**
+ * @return string
+ */
+ function getCategoryLinks() {
+ global $wgUseCategoryBrowser;
+
+ $out = $this->getOutput();
+ $allCats = $out->getCategoryLinks();
+
+ if ( !count( $allCats ) ) {
+ return '';
+ }
+
+ $embed = "<li>";
+ $pop = "</li>";
+
+ $s = '';
+ $colon = $this->msg( 'colon-separator' )->escaped();
+
+ if ( !empty( $allCats['normal'] ) ) {
+ $t = $embed . implode( "{$pop}{$embed}", $allCats['normal'] ) . $pop;
+
+ $msg = $this->msg( 'pagecategories' )->numParams( count( $allCats['normal'] ) )->escaped();
+ $linkPage = wfMessage( 'pagecategorieslink' )->inContentLanguage()->text();
+ $s .= '<div id="mw-normal-catlinks" class="mw-normal-catlinks">' .
+ Linker::link( Title::newFromText( $linkPage ), $msg )
+ . $colon . '<ul>' . $t . '</ul>' . '</div>';
+ }
+
+ # Hidden categories
+ if ( isset( $allCats['hidden'] ) ) {
+ if ( $this->getUser()->getBoolOption( 'showhiddencats' ) ) {
+ $class = ' mw-hidden-cats-user-shown';
+ } elseif ( $this->getTitle()->getNamespace() == NS_CATEGORY ) {
+ $class = ' mw-hidden-cats-ns-shown';
+ } else {
+ $class = ' mw-hidden-cats-hidden';
+ }
+
+ $s .= "<div id=\"mw-hidden-catlinks\" class=\"mw-hidden-catlinks$class\">" .
+ $this->msg( 'hidden-categories' )->numParams( count( $allCats['hidden'] ) )->escaped() .
+ $colon . '<ul>' . $embed . implode( "{$pop}{$embed}", $allCats['hidden'] ) . $pop . '</ul>' .
+ '</div>';
+ }
+
+ # optional 'dmoz-like' category browser. Will be shown under the list
+ # of categories an article belong to
+ if ( $wgUseCategoryBrowser ) {
+ $s .= '<br /><hr />';
+
+ # get a big array of the parents tree
+ $parenttree = $this->getTitle()->getParentCategoryTree();
+ # Skin object passed by reference cause it can not be
+ # accessed under the method subfunction drawCategoryBrowser
+ $tempout = explode( "\n", $this->drawCategoryBrowser( $parenttree ) );
+ # Clean out bogus first entry and sort them
+ unset( $tempout[0] );
+ asort( $tempout );
+ # Output one per line
+ $s .= implode( "<br />\n", $tempout );
+ }
+
+ return $s;
+ }
+
+ /**
+ * Render the array as a series of links.
+ * @param array $tree Categories tree returned by Title::getParentCategoryTree
+ * @return string Separated by >, terminate with "\n"
+ */
+ function drawCategoryBrowser( $tree ) {
+ $return = '';
+
+ foreach ( $tree as $element => $parent ) {
+ if ( empty( $parent ) ) {
+ # element start a new list
+ $return .= "\n";
+ } else {
+ # grab the others elements
+ $return .= $this->drawCategoryBrowser( $parent ) . ' > ';
+ }
+
+ # add our current element to the list
+ $eltitle = Title::newFromText( $element );
+ $return .= Linker::link( $eltitle, htmlspecialchars( $eltitle->getText() ) );
+ }
+
+ return $return;
+ }
+
+ /**
+ * @return string
+ */
+ function getCategories() {
+ $out = $this->getOutput();
+
+ $catlinks = $this->getCategoryLinks();
+
+ $classes = 'catlinks';
+
+ // Check what we're showing
+ $allCats = $out->getCategoryLinks();
+ $showHidden = $this->getUser()->getBoolOption( 'showhiddencats' ) ||
+ $this->getTitle()->getNamespace() == NS_CATEGORY;
+
+ if ( empty( $allCats['normal'] ) && !( !empty( $allCats['hidden'] ) && $showHidden ) ) {
+ $classes .= ' catlinks-allhidden';
+ }
+
+ return "<div id='catlinks' class='$classes'>{$catlinks}</div>";
+ }
+
+ /**
+ * This runs a hook to allow extensions placing their stuff after content
+ * and article metadata (e.g. categories).
+ * Note: This function has nothing to do with afterContent().
+ *
+ * This hook is placed here in order to allow using the same hook for all
+ * skins, both the SkinTemplate based ones and the older ones, which directly
+ * use this class to get their data.
+ *
+ * The output of this function gets processed in SkinTemplate::outputPage() for
+ * the SkinTemplate based skins, all other skins should directly echo it.
+ *
+ * @return string Empty by default, if not changed by any hook function.
+ */
+ protected function afterContentHook() {
+ $data = '';
+
+ if ( wfRunHooks( 'SkinAfterContent', array( &$data, $this ) ) ) {
+ // adding just some spaces shouldn't toggle the output
+ // of the whole <div/>, so we use trim() here
+ if ( trim( $data ) != '' ) {
+ // Doing this here instead of in the skins to
+ // ensure that the div has the same ID in all
+ // skins
+ $data = "<div id='mw-data-after-content'>\n" .
+ "\t$data\n" .
+ "</div>\n";
+ }
+ } else {
+ wfDebug( "Hook SkinAfterContent changed output processing.\n" );
+ }
+
+ return $data;
+ }
+
+ /**
+ * Generate debug data HTML for displaying at the bottom of the main content
+ * area.
+ * @return string HTML containing debug data, if enabled (otherwise empty).
+ */
+ protected function generateDebugHTML() {
+ return MWDebug::getHTMLDebugLog();
+ }
+
+ /**
+ * This gets called shortly before the "</body>" tag.
+ *
+ * @return string HTML-wrapped JS code to be put before "</body>"
+ */
+ function bottomScripts() {
+ // TODO and the suckage continues. This function is really just a wrapper around
+ // OutputPage::getBottomScripts() which takes a Skin param. This should be cleaned
+ // up at some point
+ $bottomScriptText = $this->getOutput()->getBottomScripts();
+ wfRunHooks( 'SkinAfterBottomScripts', array( $this, &$bottomScriptText ) );
+
+ return $bottomScriptText;
+ }
+
+ /**
+ * Text with the permalink to the source page,
+ * usually shown on the footer of a printed page
+ *
+ * @return string HTML text with an URL
+ */
+ function printSource() {
+ $oldid = $this->getRevisionId();
+ if ( $oldid ) {
+ $canonicalUrl = $this->getTitle()->getCanonicalURL( 'oldid=' . $oldid );
+ $url = htmlspecialchars( wfExpandIRI( $canonicalUrl ) );
+ } else {
+ // oldid not available for non existing pages
+ $url = htmlspecialchars( wfExpandIRI( $this->getTitle()->getCanonicalURL() ) );
+ }
+
+ return $this->msg( 'retrievedfrom', '<a dir="ltr" href="' . $url
+ . '">' . $url . '</a>' )->text();
+ }
+
+ /**
+ * @return string
+ */
+ function getUndeleteLink() {
+ $action = $this->getRequest()->getVal( 'action', 'view' );
+
+ if ( $this->getUser()->isAllowed( 'deletedhistory' ) &&
+ ( $this->getTitle()->getArticleID() == 0 || $action == 'history' ) ) {
+ $n = $this->getTitle()->isDeleted();
+
+ if ( $n ) {
+ if ( $this->getUser()->isAllowed( 'undelete' ) ) {
+ $msg = 'thisisdeleted';
+ } else {
+ $msg = 'viewdeleted';
+ }
+
+ return $this->msg( $msg )->rawParams(
+ Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Undelete', $this->getTitle()->getPrefixedDBkey() ),
+ $this->msg( 'restorelink' )->numParams( $n )->escaped() )
+ )->text();
+ }
+ }
+
+ return '';
+ }
+
+ /**
+ * @return string
+ */
+ function subPageSubtitle() {
+ $out = $this->getOutput();
+ $subpages = '';
+
+ if ( !wfRunHooks( 'SkinSubPageSubtitle', array( &$subpages, $this, $out ) ) ) {
+ return $subpages;
+ }
+
+ if ( $out->isArticle() && MWNamespace::hasSubpages( $out->getTitle()->getNamespace() ) ) {
+ $ptext = $this->getTitle()->getPrefixedText();
+ if ( preg_match( '/\//', $ptext ) ) {
+ $links = explode( '/', $ptext );
+ array_pop( $links );
+ $c = 0;
+ $growinglink = '';
+ $display = '';
+ $lang = $this->getLanguage();
+
+ foreach ( $links as $link ) {
+ $growinglink .= $link;
+ $display .= $link;
+ $linkObj = Title::newFromText( $growinglink );
+
+ if ( is_object( $linkObj ) && $linkObj->isKnown() ) {
+ $getlink = Linker::linkKnown(
+ $linkObj,
+ htmlspecialchars( $display )
+ );
+
+ $c++;
+
+ if ( $c > 1 ) {
+ $subpages .= $lang->getDirMarkEntity() . $this->msg( 'pipe-separator' )->escaped();
+ } else {
+ $subpages .= '< ';
+ }
+
+ $subpages .= $getlink;
+ $display = '';
+ } else {
+ $display .= '/';
+ }
+ $growinglink .= '/';
+ }
+ }
+ }
+
+ return $subpages;
+ }
+
+ /**
+ * Returns true if the IP should be shown in the header
+ * @return bool
+ */
+ function showIPinHeader() {
+ global $wgShowIPinHeader;
+ return $wgShowIPinHeader && session_id() != '';
+ }
+
+ /**
+ * @return string
+ */
+ function getSearchLink() {
+ $searchPage = SpecialPage::getTitleFor( 'Search' );
+ return $searchPage->getLocalURL();
+ }
+
+ /**
+ * @return string
+ */
+ function escapeSearchLink() {
+ return htmlspecialchars( $this->getSearchLink() );
+ }
+
+ /**
+ * @param string $type
+ * @return string
+ */
+ function getCopyright( $type = 'detect' ) {
+ global $wgRightsPage, $wgRightsUrl, $wgRightsText;
+
+ if ( $type == 'detect' ) {
+ if ( !$this->isRevisionCurrent()
+ && !$this->msg( 'history_copyright' )->inContentLanguage()->isDisabled()
+ ) {
+ $type = 'history';
+ } else {
+ $type = 'normal';
+ }
+ }
+
+ if ( $type == 'history' ) {
+ $msg = 'history_copyright';
+ } else {
+ $msg = 'copyright';
+ }
+
+ if ( $wgRightsPage ) {
+ $title = Title::newFromText( $wgRightsPage );
+ $link = Linker::linkKnown( $title, $wgRightsText );
+ } elseif ( $wgRightsUrl ) {
+ $link = Linker::makeExternalLink( $wgRightsUrl, $wgRightsText );
+ } elseif ( $wgRightsText ) {
+ $link = $wgRightsText;
+ } else {
+ # Give up now
+ return '';
+ }
+
+ // Allow for site and per-namespace customization of copyright notice.
+ // @todo Remove deprecated $forContent param from hook handlers and then remove here.
+ $forContent = true;
+
+ wfRunHooks(
+ 'SkinCopyrightFooter',
+ array( $this->getTitle(), $type, &$msg, &$link, &$forContent )
+ );
+
+ return $this->msg( $msg )->rawParams( $link )->text();
+ }
+
+ /**
+ * @return null|string
+ */
+ function getCopyrightIcon() {
+ global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgCopyrightIcon;
+
+ $out = '';
+
+ if ( $wgCopyrightIcon ) {
+ $out = $wgCopyrightIcon;
+ } elseif ( $wgRightsIcon ) {
+ $icon = htmlspecialchars( $wgRightsIcon );
+
+ if ( $wgRightsUrl ) {
+ $url = htmlspecialchars( $wgRightsUrl );
+ $out .= '<a href="' . $url . '">';
+ }
+
+ $text = htmlspecialchars( $wgRightsText );
+ $out .= "<img src=\"$icon\" alt=\"$text\" width=\"88\" height=\"31\" />";
+
+ if ( $wgRightsUrl ) {
+ $out .= '</a>';
+ }
+ }
+
+ return $out;
+ }
+
+ /**
+ * Gets the powered by MediaWiki icon.
+ * @return string
+ */
+ function getPoweredBy() {
+ global $wgStylePath;
+
+ $url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
+ $text = '<a href="//www.mediawiki.org/"><img src="' . $url
+ . '" height="31" width="88" alt="Powered by MediaWiki" /></a>';
+ wfRunHooks( 'SkinGetPoweredBy', array( &$text, $this ) );
+ return $text;
+ }
+
+ /**
+ * Get the timestamp of the latest revision, formatted in user language
+ *
+ * @return string
+ */
+ protected function lastModified() {
+ $timestamp = $this->getOutput()->getRevisionTimestamp();
+
+ # No cached timestamp, load it from the database
+ if ( $timestamp === null ) {
+ $timestamp = Revision::getTimestampFromId( $this->getTitle(), $this->getRevisionId() );
+ }
+
+ if ( $timestamp ) {
+ $d = $this->getLanguage()->userDate( $timestamp, $this->getUser() );
+ $t = $this->getLanguage()->userTime( $timestamp, $this->getUser() );
+ $s = ' ' . $this->msg( 'lastmodifiedat', $d, $t )->text();
+ } else {
+ $s = '';
+ }
+
+ if ( wfGetLB()->getLaggedSlaveMode() ) {
+ $s .= ' <strong>' . $this->msg( 'laggedslavemode' )->text() . '</strong>';
+ }
+
+ return $s;
+ }
+
+ /**
+ * @param string $align
+ * @return string
+ */
+ function logoText( $align = '' ) {
+ if ( $align != '' ) {
+ $a = " style='float: {$align};'";
+ } else {
+ $a = '';
+ }
+
+ $mp = $this->msg( 'mainpage' )->escaped();
+ $mptitle = Title::newMainPage();
+ $url = ( is_object( $mptitle ) ? htmlspecialchars( $mptitle->getLocalURL() ) : '' );
+
+ $logourl = $this->getLogo();
+ $s = "<a href='{$url}'><img{$a} src='{$logourl}' alt='[{$mp}]' /></a>";
+
+ return $s;
+ }
+
+ /**
+ * Renders a $wgFooterIcons icon according to the method's arguments
+ * @param array $icon The icon to build the html for, see $wgFooterIcons
+ * for the format of this array.
+ * @param bool|string $withImage Whether to use the icon's image or output
+ * a text-only footericon.
+ * @return string HTML
+ */
+ function makeFooterIcon( $icon, $withImage = 'withImage' ) {
+ if ( is_string( $icon ) ) {
+ $html = $icon;
+ } else { // Assuming array
+ $url = isset( $icon["url"] ) ? $icon["url"] : null;
+ unset( $icon["url"] );
+ if ( isset( $icon["src"] ) && $withImage === 'withImage' ) {
+ // do this the lazy way, just pass icon data as an attribute array
+ $html = Html::element( 'img', $icon );
+ } else {
+ $html = htmlspecialchars( $icon["alt"] );
+ }
+ if ( $url ) {
+ $html = Html::rawElement( 'a', array( "href" => $url ), $html );
+ }
+ }
+ return $html;
+ }
+
+ /**
+ * Gets the link to the wiki's main page.
+ * @return string
+ */
+ function mainPageLink() {
+ $s = Linker::linkKnown(
+ Title::newMainPage(),
+ $this->msg( 'mainpage' )->escaped()
+ );
+
+ return $s;
+ }
+
+ /**
+ * Returns an HTML link for use in the footer
+ * @param string $desc The i18n message key for the link text
+ * @param string $page The i18n message key for the page to link to
+ * @return string HTML anchor
+ */
+ public function footerLink( $desc, $page ) {
+ // if the link description has been set to "-" in the default language,
+ if ( $this->msg( $desc )->inContentLanguage()->isDisabled() ) {
+ // then it is disabled, for all languages.
+ return '';
+ } else {
+ // Otherwise, we display the link for the user, described in their
+ // language (which may or may not be the same as the default language),
+ // but we make the link target be the one site-wide page.
+ $title = Title::newFromText( $this->msg( $page )->inContentLanguage()->text() );
+
+ return Linker::linkKnown(
+ $title,
+ $this->msg( $desc )->escaped()
+ );
+ }
+ }
+
+ /**
+ * Gets the link to the wiki's privacy policy page.
+ * @return string HTML
+ */
+ function privacyLink() {
+ return $this->footerLink( 'privacy', 'privacypage' );
+ }
+
+ /**
+ * Gets the link to the wiki's about page.
+ * @return string HTML
+ */
+ function aboutLink() {
+ return $this->footerLink( 'aboutsite', 'aboutpage' );
+ }
+
+ /**
+ * Gets the link to the wiki's general disclaimers page.
+ * @return string HTML
+ */
+ function disclaimerLink() {
+ return $this->footerLink( 'disclaimers', 'disclaimerpage' );
+ }
+
+ /**
+ * Return URL options for the 'edit page' link.
+ * This may include an 'oldid' specifier, if the current page view is such.
+ *
+ * @return array
+ * @private
+ */
+ function editUrlOptions() {
+ $options = array( 'action' => 'edit' );
+
+ if ( !$this->isRevisionCurrent() ) {
+ $options['oldid'] = intval( $this->getRevisionId() );
+ }
+
+ return $options;
+ }
+
+ /**
+ * @param User|int $id
+ * @return bool
+ */
+ function showEmailUser( $id ) {
+ if ( $id instanceof User ) {
+ $targetUser = $id;
+ } else {
+ $targetUser = User::newFromId( $id );
+ }
+
+ # The sending user must have a confirmed email address and the target
+ # user must have a confirmed email address and allow emails from users.
+ return $this->getUser()->canSendEmail() &&
+ $targetUser->canReceiveEmail();
+ }
+
+ /**
+ * Return a fully resolved style path url to images or styles stored in the common folder.
+ * This method returns a url resolved using the configured skin style path
+ * and includes the style version inside of the url.
+ * @param string $name The name or path of a skin resource file
+ * @return string The fully resolved style path url including styleversion
+ */
+ function getCommonStylePath( $name ) {
+ global $wgStylePath, $wgStyleVersion;
+ return "$wgStylePath/common/$name?$wgStyleVersion";
+ }
+
+ /**
+ * Return a fully resolved style path url to images or styles stored in the current skins's folder.
+ * This method returns a url resolved using the configured skin style path
+ * and includes the style version inside of the url.
+ *
+ * Requires $stylename to be set, otherwise throws MWException.
+ *
+ * @param string $name The name or path of a skin resource file
+ * @return string The fully resolved style path url including styleversion
+ */
+ function getSkinStylePath( $name ) {
+ global $wgStylePath, $wgStyleVersion;
+
+ if ( $this->stylename === null ) {
+ $class = get_class( $this );
+ throw new MWException( "$class::\$stylename must be set to use getSkinStylePath()" );
+ }
+
+ return "$wgStylePath/{$this->stylename}/$name?$wgStyleVersion";
+ }
+
+ /* these are used extensively in SkinTemplate, but also some other places */
+
+ /**
+ * @param string $urlaction
+ * @return string
+ */
+ static function makeMainPageUrl( $urlaction = '' ) {
+ $title = Title::newMainPage();
+ self::checkTitle( $title, '' );
+
+ return $title->getLocalURL( $urlaction );
+ }
+
+ /**
+ * Make a URL for a Special Page using the given query and protocol.
+ *
+ * If $proto is set to null, make a local URL. Otherwise, make a full
+ * URL with the protocol specified.
+ *
+ * @param string $name Name of the Special page
+ * @param string $urlaction Query to append
+ * @param string|null $proto Protocol to use or null for a local URL
+ * @return string
+ */
+ static function makeSpecialUrl( $name, $urlaction = '', $proto = null ) {
+ $title = SpecialPage::getSafeTitleFor( $name );
+ if ( is_null( $proto ) ) {
+ return $title->getLocalURL( $urlaction );
+ } else {
+ return $title->getFullURL( $urlaction, false, $proto );
+ }
+ }
+
+ /**
+ * @param string $name
+ * @param string $subpage
+ * @param string $urlaction
+ * @return string
+ */
+ static function makeSpecialUrlSubpage( $name, $subpage, $urlaction = '' ) {
+ $title = SpecialPage::getSafeTitleFor( $name, $subpage );
+ return $title->getLocalURL( $urlaction );
+ }
+
+ /**
+ * @param string $name
+ * @param string $urlaction
+ * @return string
+ */
+ static function makeI18nUrl( $name, $urlaction = '' ) {
+ $title = Title::newFromText( wfMessage( $name )->inContentLanguage()->text() );
+ self::checkTitle( $title, $name );
+ return $title->getLocalURL( $urlaction );
+ }
+
+ /**
+ * @param string $name
+ * @param string $urlaction
+ * @return string
+ */
+ static function makeUrl( $name, $urlaction = '' ) {
+ $title = Title::newFromText( $name );
+ self::checkTitle( $title, $name );
+
+ return $title->getLocalURL( $urlaction );
+ }
+
+ /**
+ * If url string starts with http, consider as external URL, else
+ * internal
+ * @param string $name
+ * @return string URL
+ */
+ static function makeInternalOrExternalUrl( $name ) {
+ if ( preg_match( '/^(?i:' . wfUrlProtocols() . ')/', $name ) ) {
+ return $name;
+ } else {
+ return self::makeUrl( $name );
+ }
+ }
+
+ /**
+ * this can be passed the NS number as defined in Language.php
+ * @param string $name
+ * @param string $urlaction
+ * @param int $namespace
+ * @return string
+ */
+ static function makeNSUrl( $name, $urlaction = '', $namespace = NS_MAIN ) {
+ $title = Title::makeTitleSafe( $namespace, $name );
+ self::checkTitle( $title, $name );
+
+ return $title->getLocalURL( $urlaction );
+ }
+
+ /**
+ * these return an array with the 'href' and boolean 'exists'
+ * @param string $name
+ * @param string $urlaction
+ * @return array
+ */
+ static function makeUrlDetails( $name, $urlaction = '' ) {
+ $title = Title::newFromText( $name );
+ self::checkTitle( $title, $name );
+
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0,
+ );
+ }
+
+ /**
+ * Make URL details where the article exists (or at least it's convenient to think so)
+ * @param string $name Article name
+ * @param string $urlaction
+ * @return array
+ */
+ static function makeKnownUrlDetails( $name, $urlaction = '' ) {
+ $title = Title::newFromText( $name );
+ self::checkTitle( $title, $name );
+
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => true
+ );
+ }
+
+ /**
+ * make sure we have some title to operate on
+ *
+ * @param Title $title
+ * @param string $name
+ */
+ static function checkTitle( &$title, $name ) {
+ if ( !is_object( $title ) ) {
+ $title = Title::newFromText( $name );
+ if ( !is_object( $title ) ) {
+ $title = Title::newFromText( '--error: link target missing--' );
+ }
+ }
+ }
+
+ /**
+ * Build an array that represents the sidebar(s), the navigation bar among them.
+ *
+ * BaseTemplate::getSidebar can be used to simplify the format and id generation in new skins.
+ *
+ * The format of the returned array is array( heading => content, ... ), where:
+ * - heading is the heading of a navigation portlet. It is either:
+ * - magic string to be handled by the skins ('SEARCH' / 'LANGUAGES' / 'TOOLBOX' / ...)
+ * - a message name (e.g. 'navigation'), the message should be HTML-escaped by the skin
+ * - plain text, which should be HTML-escaped by the skin
+ * - content is the contents of the portlet. It is either:
+ * - HTML text (<ul><li>...</li>...</ul>)
+ * - array of link data in a format accepted by BaseTemplate::makeListItem()
+ * - (for a magic string as a key, any value)
+ *
+ * Note that extensions can control the sidebar contents using the SkinBuildSidebar hook
+ * and can technically insert anything in here; skin creators are expected to handle
+ * values described above.
+ *
+ * @return array
+ */
+ function buildSidebar() {
+ global $wgMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry;
+ wfProfileIn( __METHOD__ );
+
+ $key = wfMemcKey( 'sidebar', $this->getLanguage()->getCode() );
+
+ if ( $wgEnableSidebarCache ) {
+ $cachedsidebar = $wgMemc->get( $key );
+ if ( $cachedsidebar ) {
+ wfRunHooks( 'SidebarBeforeOutput', array( $this, &$cachedsidebar ) );
+
+ wfProfileOut( __METHOD__ );
+ return $cachedsidebar;
+ }
+ }
+
+ $bar = array();
+ $this->addToSidebar( $bar, 'sidebar' );
+
+ wfRunHooks( 'SkinBuildSidebar', array( $this, &$bar ) );
+ if ( $wgEnableSidebarCache ) {
+ $wgMemc->set( $key, $bar, $wgSidebarCacheExpiry );
+ }
+
+ wfRunHooks( 'SidebarBeforeOutput', array( $this, &$bar ) );
+
+ wfProfileOut( __METHOD__ );
+ return $bar;
+ }
+
+ /**
+ * Add content from a sidebar system message
+ * Currently only used for MediaWiki:Sidebar (but may be used by Extensions)
+ *
+ * This is just a wrapper around addToSidebarPlain() for backwards compatibility
+ *
+ * @param array $bar
+ * @param string $message
+ */
+ function addToSidebar( &$bar, $message ) {
+ $this->addToSidebarPlain( $bar, wfMessage( $message )->inContentLanguage()->plain() );
+ }
+
+ /**
+ * Add content from plain text
+ * @since 1.17
+ * @param array $bar
+ * @param string $text
+ * @return array
+ */
+ function addToSidebarPlain( &$bar, $text ) {
+ $lines = explode( "\n", $text );
+
+ $heading = '';
+
+ foreach ( $lines as $line ) {
+ if ( strpos( $line, '*' ) !== 0 ) {
+ continue;
+ }
+ $line = rtrim( $line, "\r" ); // for Windows compat
+
+ if ( strpos( $line, '**' ) !== 0 ) {
+ $heading = trim( $line, '* ' );
+ if ( !array_key_exists( $heading, $bar ) ) {
+ $bar[$heading] = array();
+ }
+ } else {
+ $line = trim( $line, '* ' );
+
+ if ( strpos( $line, '|' ) !== false ) { // sanity check
+ $line = MessageCache::singleton()->transform( $line, false, null, $this->getTitle() );
+ $line = array_map( 'trim', explode( '|', $line, 2 ) );
+ if ( count( $line ) !== 2 ) {
+ // Second sanity check, could be hit by people doing
+ // funky stuff with parserfuncs... (bug 33321)
+ continue;
+ }
+
+ $extraAttribs = array();
+
+ $msgLink = $this->msg( $line[0] )->inContentLanguage();
+ if ( $msgLink->exists() ) {
+ $link = $msgLink->text();
+ if ( $link == '-' ) {
+ continue;
+ }
+ } else {
+ $link = $line[0];
+ }
+ $msgText = $this->msg( $line[1] );
+ if ( $msgText->exists() ) {
+ $text = $msgText->text();
+ } else {
+ $text = $line[1];
+ }
+
+ if ( preg_match( '/^(?i:' . wfUrlProtocols() . ')/', $link ) ) {
+ $href = $link;
+
+ // Parser::getExternalLinkAttribs won't work here because of the Namespace things
+ global $wgNoFollowLinks, $wgNoFollowDomainExceptions;
+ if ( $wgNoFollowLinks && !wfMatchesDomainList( $href, $wgNoFollowDomainExceptions ) ) {
+ $extraAttribs['rel'] = 'nofollow';
+ }
+
+ global $wgExternalLinkTarget;
+ if ( $wgExternalLinkTarget ) {
+ $extraAttribs['target'] = $wgExternalLinkTarget;
+ }
+ } else {
+ $title = Title::newFromText( $link );
+
+ if ( $title ) {
+ $title = $title->fixSpecialName();
+ $href = $title->getLinkURL();
+ } else {
+ $href = 'INVALID-TITLE';
+ }
+ }
+
+ $bar[$heading][] = array_merge( array(
+ 'text' => $text,
+ 'href' => $href,
+ 'id' => 'n-' . Sanitizer::escapeId( strtr( $line[1], ' ', '-' ), 'noninitial' ),
+ 'active' => false
+ ), $extraAttribs );
+ } else {
+ continue;
+ }
+ }
+ }
+
+ return $bar;
+ }
+
+ /**
+ * This function previously controlled whether the 'mediawiki.legacy.wikiprintable' module
+ * should be loaded by OutputPage. That module no longer exists and the return value of this
+ * method is ignored.
+ *
+ * If your skin doesn't provide its own print styles, the 'mediawiki.legacy.commonPrint' module
+ * can be used instead (SkinTemplate-based skins do it automatically).
+ *
+ * @deprecated since 1.22
+ * @return bool
+ */
+ public function commonPrintStylesheet() {
+ wfDeprecated( __METHOD__, '1.22' );
+ return false;
+ }
+
+ /**
+ * Gets new talk page messages for the current user and returns an
+ * appropriate alert message (or an empty string if there are no messages)
+ * @return string
+ */
+ function getNewtalks() {
+
+ $newMessagesAlert = '';
+ $user = $this->getUser();
+ $newtalks = $user->getNewMessageLinks();
+ $out = $this->getOutput();
+
+ // Allow extensions to disable or modify the new messages alert
+ if ( !wfRunHooks( 'GetNewMessagesAlert', array( &$newMessagesAlert, $newtalks, $user, $out ) ) ) {
+ return '';
+ }
+ if ( $newMessagesAlert ) {
+ return $newMessagesAlert;
+ }
+
+ if ( count( $newtalks ) == 1 && $newtalks[0]['wiki'] === wfWikiID() ) {
+ $uTalkTitle = $user->getTalkPage();
+ $lastSeenRev = isset( $newtalks[0]['rev'] ) ? $newtalks[0]['rev'] : null;
+ $nofAuthors = 0;
+ if ( $lastSeenRev !== null ) {
+ $plural = true; // Default if we have a last seen revision: if unknown, use plural
+ $latestRev = Revision::newFromTitle( $uTalkTitle, false, Revision::READ_NORMAL );
+ if ( $latestRev !== null ) {
+ // Singular if only 1 unseen revision, plural if several unseen revisions.
+ $plural = $latestRev->getParentId() !== $lastSeenRev->getId();
+ $nofAuthors = $uTalkTitle->countAuthorsBetween(
+ $lastSeenRev, $latestRev, 10, 'include_new' );
+ }
+ } else {
+ // Singular if no revision -> diff link will show latest change only in any case
+ $plural = false;
+ }
+ $plural = $plural ? 999 : 1;
+ // 999 signifies "more than one revision". We don't know how many, and even if we did,
+ // the number of revisions or authors is not necessarily the same as the number of
+ // "messages".
+ $newMessagesLink = Linker::linkKnown(
+ $uTalkTitle,
+ $this->msg( 'newmessageslinkplural' )->params( $plural )->escaped(),
+ array(),
+ array( 'redirect' => 'no' )
+ );
+
+ $newMessagesDiffLink = Linker::linkKnown(
+ $uTalkTitle,
+ $this->msg( 'newmessagesdifflinkplural' )->params( $plural )->escaped(),
+ array(),
+ $lastSeenRev !== null
+ ? array( 'oldid' => $lastSeenRev->getId(), 'diff' => 'cur' )
+ : array( 'diff' => 'cur' )
+ );
+
+ if ( $nofAuthors >= 1 && $nofAuthors <= 10 ) {
+ $newMessagesAlert = $this->msg(
+ 'youhavenewmessagesfromusers',
+ $newMessagesLink,
+ $newMessagesDiffLink
+ )->numParams( $nofAuthors, $plural );
+ } else {
+ // $nofAuthors === 11 signifies "11 or more" ("more than 10")
+ $newMessagesAlert = $this->msg(
+ $nofAuthors > 10 ? 'youhavenewmessagesmanyusers' : 'youhavenewmessages',
+ $newMessagesLink,
+ $newMessagesDiffLink
+ )->numParams( $plural );
+ }
+ $newMessagesAlert = $newMessagesAlert->text();
+ # Disable Squid cache
+ $out->setSquidMaxage( 0 );
+ } elseif ( count( $newtalks ) ) {
+ $sep = $this->msg( 'newtalkseparator' )->escaped();
+ $msgs = array();
+
+ foreach ( $newtalks as $newtalk ) {
+ $msgs[] = Xml::element(
+ 'a',
+ array( 'href' => $newtalk['link'] ), $newtalk['wiki']
+ );
+ }
+ $parts = implode( $sep, $msgs );
+ $newMessagesAlert = $this->msg( 'youhavenewmessagesmulti' )->rawParams( $parts )->escaped();
+ $out->setSquidMaxage( 0 );
+ }
+
+ return $newMessagesAlert;
+ }
+
+ /**
+ * Get a cached notice
+ *
+ * @param string $name Message name, or 'default' for $wgSiteNotice
+ * @return string HTML fragment
+ */
+ private function getCachedNotice( $name ) {
+ global $wgRenderHashAppend, $parserMemc, $wgContLang;
+
+ wfProfileIn( __METHOD__ );
+
+ $needParse = false;
+
+ if ( $name === 'default' ) {
+ // special case
+ global $wgSiteNotice;
+ $notice = $wgSiteNotice;
+ if ( empty( $notice ) ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ } else {
+ $msg = $this->msg( $name )->inContentLanguage();
+ if ( $msg->isDisabled() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $notice = $msg->plain();
+ }
+
+ // Use the extra hash appender to let eg SSL variants separately cache.
+ $key = wfMemcKey( $name . $wgRenderHashAppend );
+ $cachedNotice = $parserMemc->get( $key );
+ if ( is_array( $cachedNotice ) ) {
+ if ( md5( $notice ) == $cachedNotice['hash'] ) {
+ $notice = $cachedNotice['html'];
+ } else {
+ $needParse = true;
+ }
+ } else {
+ $needParse = true;
+ }
+
+ if ( $needParse ) {
+ $parsed = $this->getOutput()->parse( $notice );
+ $parserMemc->set( $key, array( 'html' => $parsed, 'hash' => md5( $notice ) ), 600 );
+ $notice = $parsed;
+ }
+
+ $notice = Html::rawElement( 'div', array( 'id' => 'localNotice',
+ 'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ), $notice );
+ wfProfileOut( __METHOD__ );
+ return $notice;
+ }
+
+ /**
+ * Get a notice based on page's namespace
+ *
+ * @return string HTML fragment
+ */
+ function getNamespaceNotice() {
+ wfProfileIn( __METHOD__ );
+
+ $key = 'namespacenotice-' . $this->getTitle()->getNsText();
+ $namespaceNotice = $this->getCachedNotice( $key );
+ if ( $namespaceNotice && substr( $namespaceNotice, 0, 7 ) != '<p><' ) {
+ $namespaceNotice = '<div id="namespacebanner">' . $namespaceNotice . '</div>';
+ } else {
+ $namespaceNotice = '';
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $namespaceNotice;
+ }
+
+ /**
+ * Get the site notice
+ *
+ * @return string HTML fragment
+ */
+ function getSiteNotice() {
+ wfProfileIn( __METHOD__ );
+ $siteNotice = '';
+
+ if ( wfRunHooks( 'SiteNoticeBefore', array( &$siteNotice, $this ) ) ) {
+ if ( is_object( $this->getUser() ) && $this->getUser()->isLoggedIn() ) {
+ $siteNotice = $this->getCachedNotice( 'sitenotice' );
+ } else {
+ $anonNotice = $this->getCachedNotice( 'anonnotice' );
+ if ( !$anonNotice ) {
+ $siteNotice = $this->getCachedNotice( 'sitenotice' );
+ } else {
+ $siteNotice = $anonNotice;
+ }
+ }
+ if ( !$siteNotice ) {
+ $siteNotice = $this->getCachedNotice( 'default' );
+ }
+ }
+
+ wfRunHooks( 'SiteNoticeAfter', array( &$siteNotice, $this ) );
+ wfProfileOut( __METHOD__ );
+ return $siteNotice;
+ }
+
+ /**
+ * Create a section edit link. This supersedes editSectionLink() and
+ * editSectionLinkForOther().
+ *
+ * @param Title $nt The title being linked to (may not be the same as
+ * the current page, if the section is included from a template)
+ * @param string $section The designation of the section being pointed to,
+ * to be included in the link, like "§ion=$section"
+ * @param string $tooltip The tooltip to use for the link: will be escaped
+ * and wrapped in the 'editsectionhint' message
+ * @param string $lang Language code
+ * @return string HTML to use for edit link
+ */
+ public function doEditSectionLink( Title $nt, $section, $tooltip = null, $lang = false ) {
+ // HTML generated here should probably have userlangattributes
+ // added to it for LTR text on RTL pages
+
+ $lang = wfGetLangObj( $lang );
+
+ $attribs = array();
+ if ( !is_null( $tooltip ) ) {
+ # Bug 25462: undo double-escaping.
+ $tooltip = Sanitizer::decodeCharReferences( $tooltip );
+ $attribs['title'] = wfMessage( 'editsectionhint' )->rawParams( $tooltip )
+ ->inLanguage( $lang )->text();
+ }
+ $link = Linker::link( $nt, wfMessage( 'editsection' )->inLanguage( $lang )->text(),
+ $attribs,
+ array( 'action' => 'edit', 'section' => $section ),
+ array( 'noclasses', 'known' )
+ );
+
+ # Add the brackets and the span and run the hook.
+ $result = '<span class="mw-editsection">'
+ . '<span class="mw-editsection-bracket">[</span>'
+ . $link
+ . '<span class="mw-editsection-bracket">]</span>'
+ . '</span>';
+
+ wfRunHooks( 'DoEditSectionLink', array( $this, $nt, $section, $tooltip, &$result, $lang ) );
+ return $result;
+ }
+
+ /**
+ * Use PHP's magic __call handler to intercept legacy calls to the linker
+ * for backwards compatibility.
+ *
+ * @param string $fname Name of called method
+ * @param array $args Arguments to the method
+ * @throws MWException
+ * @return mixed
+ */
+ function __call( $fname, $args ) {
+ $realFunction = array( 'Linker', $fname );
+ if ( is_callable( $realFunction ) ) {
+ wfDeprecated( get_class( $this ) . '::' . $fname, '1.21' );
+ return call_user_func_array( $realFunction, $args );
+ } else {
+ $className = get_class( $this );
+ throw new MWException( "Call to undefined method $className::$fname" );
+ }
+ }
+
+}
--- /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
+ */
+
+/**
+ * Exceptions for skin-related failures
+ *
+ * @since 1.24
+ */
+class SkinException extends MWException {
+}
--- /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
+ */
+
+/**
+ * Factory class to create Skin objects
+ *
+ * @since 1.24
+ */
+class SkinFactory {
+
+ /**
+ * Map of name => callback
+ * @var array
+ */
+ private $factoryFunctions = array();
+ /**
+ * Map of name => fallback human-readable name, used when the 'skinname-<skin>' message is not
+ * available
+ *
+ * @var array
+ */
+ private $displayNames = array();
+ /**
+ * Map of name => class name without "Skin" prefix, for legacy skins using the autodiscovery
+ * mechanism
+ *
+ * @var array
+ */
+ private $legacySkins = array();
+
+ /**
+ * @var SkinFactory
+ */
+ private static $self;
+
+ public static function getDefaultInstance() {
+ if ( !self::$self ) {
+ self::$self = new self;
+ }
+
+ return self::$self;
+ }
+
+ /**
+ * Register a new Skin factory function.
+ *
+ * Will override if it's already registered.
+ *
+ * @param string $name Internal skin name. Should be all-lowercase (technically doesn't have
+ * to be, but doing so would change the case of i18n message keys).
+ * @param string $displayName For backwards-compatibility with old skin loading system. This is
+ * the text used as skin's human-readable name when the 'skinname-<skin>' message is not
+ * available. It should be the same as the skin name provided in $wgExtensionCredits.
+ * @param callable $callback Callback that takes the skin name as an argument
+ * @throws InvalidArgumentException If an invalid callback is provided
+ */
+ public function register( $name, $displayName, $callback ) {
+ if ( !is_callable( $callback ) ) {
+ throw new InvalidArgumentException( 'Invalid callback provided' );
+ }
+ $this->factoryFunctions[$name] = $callback;
+ $this->displayNames[$name] = $displayName;
+ }
+
+ /**
+ * @return array
+ */
+ private function getLegacySkinNames() {
+ static $skinsInitialised = false;
+
+ if ( !$skinsInitialised || !count( $this->legacySkins ) ) {
+ # Get a list of available skins
+ # Build using the regular expression '^(.*).php$'
+ # Array keys are all lower case, array value keep the case used by filename
+ #
+ wfProfileIn( __METHOD__ . '-init' );
+
+ global $wgStyleDirectory;
+
+ $skinDir = dir( $wgStyleDirectory );
+
+ if ( $skinDir !== false && $skinDir !== null ) {
+ # while code from www.php.net
+ while ( false !== ( $file = $skinDir->read() ) ) {
+ // Skip non-PHP files, hidden files, and '.dep' includes
+ $matches = array();
+
+ if ( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
+ $aSkin = $matches[1];
+
+ // Explicitly disallow loading core skins via the autodiscovery mechanism.
+ //
+ // They should be loaded already (in a non-autodicovery way), but old files might still
+ // exist on the server because our MW version upgrade process is widely documented as
+ // requiring just copying over all files, without removing old ones.
+ //
+ // This is one of the reasons we should have never used autodiscovery in the first
+ // place. This hack can be safely removed when autodiscovery is gone.
+ if ( in_array( $aSkin, array( 'CologneBlue', 'Modern', 'MonoBook', 'Vector' ) ) ) {
+ wfLogWarning(
+ "An old copy of the $aSkin skin was found in your skins/ directory. " .
+ "You should remove it to avoid problems in the future." .
+ "See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for details."
+ );
+ continue;
+ }
+
+ wfLogWarning(
+ "A skin using autodiscovery mechanism, $aSkin, was found in your skins/ directory. " .
+ "The mechanism will be removed in MediaWiki 1.25 and the skin will no longer be recognized. " .
+ "See https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery for information how to fix this."
+ );
+ $this->legacySkins[strtolower( $aSkin )] = $aSkin;
+ }
+ }
+ $skinDir->close();
+ }
+ $skinsInitialised = true;
+ wfProfileOut( __METHOD__ . '-init' );
+ }
+ return $this->legacySkins;
+
+ }
+
+ /**
+ * Returns an associative array of:
+ * skin name => human readable name
+ *
+ * @return array
+ */
+ public function getSkinNames() {
+ return array_merge(
+ $this->getLegacySkinNames(),
+ $this->displayNames
+ );
+ }
+
+ /**
+ * Get a legacy skin which uses the autodiscovery mechanism.
+ *
+ * @param string $name
+ * @return Skin|bool false if the skin couldn't be constructed
+ */
+ private function getLegacySkin( $name ) {
+ $skinNames = $this->getLegacySkinNames();
+ if ( !isset( $skinNames[$name] ) ) {
+ return false;
+ }
+ $skinName = $skinNames[$name];
+ $className = "Skin{$skinName}";
+
+ # Grab the skin class and initialise it.
+ if ( !class_exists( $className ) ) {
+ global $wgStyleDirectory;
+ require_once "{$wgStyleDirectory}/{$skinName}.php";
+
+ # Check if we got it
+ if ( !class_exists( $className ) ) {
+ # DO NOT die if the class isn't found. This breaks maintenance
+ # scripts and can cause a user account to be unrecoverable
+ # except by SQL manipulation if a previously valid skin name
+ # is no longer valid.
+ return false;
+ }
+ }
+ $skin = new $className( $name );
+ return $skin;
+
+ }
+
+ /**
+ * Create a given Skin using the registered callback for $name.
+ * @param string $name Name of the skin you want
+ * @throws SkinException If a factory function isn't registered for $name
+ * @throws UnexpectedValueException If the factory function returns a non-Skin object
+ * @return Skin
+ */
+ public function makeSkin( $name ) {
+ if ( !isset( $this->factoryFunctions[$name] ) ) {
+ // Check the legacy autodiscovery method of skin loading
+ $legacy = $this->getLegacySkin( $name );
+ if ( $legacy ) {
+ return $legacy;
+ }
+ throw new SkinException( "No registered builder available for $name." );
+ }
+ $skin = call_user_func( $this->factoryFunctions[$name], $name );
+ if ( $skin instanceof Skin ) {
+ return $skin;
+ } else {
+ throw new UnexpectedValueException( "The builder for $name returned a non-Skin object." );
+ }
+ }
+}
--- /dev/null
+<?php
+/**
+ * Skin file for the fallback skin.
+ *
+ * The structure is copied from the example skin (mediawiki/skins/Example).
+ *
+ * @since 1.24
+ * @file
+ */
+
+/**
+ * SkinTemplate class for the fallback skin
+ */
+class SkinFallback extends SkinTemplate {
+
+ public $skinname = 'fallback';
+ public $template = 'SkinFallbackTemplate';
+
+ /**
+ * Add CSS via ResourceLoader
+ *
+ * @param OutputPage $out
+ */
+ public function setupSkinUserCss( OutputPage $out ) {
+ parent::setupSkinUserCss( $out );
+ $out->addModuleStyles( 'mediawiki.skinning.interface' );
+ }
+}
--- /dev/null
+<?php
+
+/**
+ * Skin template for the fallback skin.
+ *
+ * The structure is copied from the example skin (mediawiki/skins/Example).
+ *
+ * @since 1.24
+ * @file
+ */
+
+/**
+ * BaseTemplate class for the fallback skin
+ */
+class SkinFallbackTemplate extends BaseTemplate {
+ /**
+ * @return array
+ */
+ private function findInstalledSkins() {
+ $styleDirectory = $this->config->get( 'StyleDirectory' ); // @todo we should inject this directly?
+ // Get all subdirectories which might contains skins
+ $possibleSkins = scandir( $styleDirectory );
+ $possibleSkins = array_filter( $possibleSkins, function ( $maybeDir ) use ( $styleDirectory ) {
+ return $maybeDir !== '.' && $maybeDir !== '..' && is_dir( "$styleDirectory/$maybeDir" );
+ } );
+
+ // Only keep the ones that contain a .php file with the same name inside
+ $possibleSkins = array_filter( $possibleSkins, function ( $skinDir ) use ( $styleDirectory ) {
+ return is_file( "$styleDirectory/$skinDir/$skinDir.php" );
+ } );
+
+ return $possibleSkins;
+ }
+
+ /**
+ * Inform the user why they are seeing this skin.
+ *
+ * @return string
+ */
+ private function buildHelpfulInformationMessage() {
+ $defaultSkin = $this->config->get( 'DefaultSkin' );
+ $installedSkins = $this->findInstalledSkins();
+ $enabledSkins = SkinFactory::getDefaultInstance()->getSkinNames();
+ $enabledSkins = array_change_key_case( $enabledSkins, CASE_LOWER );
+
+ if ( $installedSkins ) {
+ $skinsInstalledText = array();
+ $skinsInstalledSnippet = array();
+
+ foreach ( $installedSkins as $skin ) {
+ $normalizedKey = strtolower( $skin );
+ $isEnabled = array_key_exists( $normalizedKey, $enabledSkins );
+ if ( $isEnabled ) {
+ $skinsInstalledText[] = $this->getMsg( 'default-skin-not-found-row-enabled' )
+ ->params( $normalizedKey, $skin )->plain();
+ } else {
+ $skinsInstalledText[] = $this->getMsg( 'default-skin-not-found-row-disabled' )
+ ->params( $normalizedKey, $skin )->plain();
+ $skinsInstalledSnippet[] = "require_once \"\$IP/skins/$skin/$skin.php\";";
+ }
+ }
+
+ return $this->getMsg( 'default-skin-not-found' )->params(
+ $defaultSkin,
+ implode( "\n", $skinsInstalledText ),
+ implode( "\n", $skinsInstalledSnippet )
+ )->parseAsBlock();
+ } else {
+ return $this->getMsg( 'default-skin-not-found-no-skins' )->params(
+ $defaultSkin
+ )->parseAsBlock();
+ }
+ }
+
+ /**
+ * Outputs the entire contents of the page. No navigation (other than search box), just the big
+ * warning message and page content.
+ */
+ public function execute() {
+ $this->html( 'headelement' ) ?>
+
+ <div class="warningbox">
+ <?php echo $this->buildHelpfulInformationMessage() ?>
+ </div>
+
+ <form action="<?php $this->text( 'wgScript' ) ?>">
+ <input type="hidden" name="title" value="<?php $this->text( 'searchtitle' ) ?>" />
+ <h3><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3>
+ <?php echo $this->makeSearchInput( array( "id" => "searchInput" ) ) ?>
+ <?php echo $this->makeSearchButton( 'go' ) ?>
+ </form>
+
+ <div class="mw-body" role="main">
+ <h1 class="firstHeading">
+ <span dir="auto"><?php $this->html( 'title' ) ?></span>
+ </h1>
+
+ <div class="mw-body-content">
+ <?php $this->html( 'bodytext' ) ?>
+ <?php $this->html( 'catlinks' ) ?>
+ </div>
+ </div>
+
+ <?php $this->printTrail() ?>
+ </body></html>
+
+ <?php
+ }
+}
--- /dev/null
+<?php
+/**
+ * Base class for template-based skins.
+ *
+ * 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
+ */
+
+/**
+ * Wrapper object for MediaWiki's localization functions,
+ * to be passed to the template engine.
+ *
+ * @private
+ * @ingroup Skins
+ */
+class MediaWikiI18N {
+ private $context = array();
+
+ function set( $varName, $value ) {
+ $this->context[$varName] = $value;
+ }
+
+ function translate( $value ) {
+ wfProfileIn( __METHOD__ );
+
+ // Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
+ $value = preg_replace( '/^string:/', '', $value );
+
+ $value = wfMessage( $value )->text();
+ // interpolate variables
+ $m = array();
+ while ( preg_match( '/\$([0-9]*?)/sm', $value, $m ) ) {
+ list( $src, $var ) = $m;
+ wfSuppressWarnings();
+ $varValue = $this->context[$var];
+ wfRestoreWarnings();
+ $value = str_replace( $src, $varValue, $value );
+ }
+ wfProfileOut( __METHOD__ );
+ return $value;
+ }
+}
+
+/**
+ * Template-filler skin base class
+ * Formerly generic PHPTal (http://phptal.sourceforge.net/) skin
+ * Based on Brion's smarty skin
+ * @copyright Copyright © Gabriel Wicke -- http://www.aulinx.de/
+ *
+ * @todo Needs some serious refactoring into functions that correspond
+ * to the computations individual esi snippets need. Most importantly no body
+ * parsing for most of those of course.
+ *
+ * @ingroup Skins
+ */
+class SkinTemplate extends Skin {
+ /**
+ * @var string Name of our skin, it probably needs to be all lower case.
+ * Child classes should override the default.
+ */
+ public $skinname = 'monobook';
+
+ /**
+ * @var string For QuickTemplate, the name of the subclass which will
+ * actually fill the template. Child classes should override the default.
+ */
+ public $template = 'QuickTemplate';
+
+ /**
+ * Add specific styles for this skin
+ *
+ * @param OutputPage $out
+ */
+ function setupSkinUserCss( OutputPage $out ) {
+ $out->addModuleStyles( array(
+ 'mediawiki.legacy.shared',
+ 'mediawiki.legacy.commonPrint',
+ 'mediawiki.ui.button'
+ ) );
+ }
+
+ /**
+ * Create the template engine object; we feed it a bunch of data
+ * and eventually it spits out some HTML. Should have interface
+ * roughly equivalent to PHPTAL 0.7.
+ *
+ * @param string $classname
+ * @param bool|string $repository Subdirectory where we keep template files
+ * @param bool|string $cache_dir
+ * @return QuickTemplate
+ * @private
+ */
+ function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
+ return new $classname( $this->getConfig() );
+ }
+
+ /**
+ * Generates array of language links for the current page
+ *
+ * @return array
+ */
+ public function getLanguages() {
+ global $wgHideInterlanguageLinks;
+ if ( $wgHideInterlanguageLinks ) {
+ return array();
+ }
+
+ $userLang = $this->getLanguage();
+ $languageLinks = array();
+
+ foreach ( $this->getOutput()->getLanguageLinks() as $languageLinkText ) {
+ $languageLinkParts = explode( ':', $languageLinkText, 2 );
+ $class = 'interlanguage-link interwiki-' . $languageLinkParts[0];
+ unset( $languageLinkParts );
+
+ $languageLinkTitle = Title::newFromText( $languageLinkText );
+ if ( $languageLinkTitle ) {
+ $ilInterwikiCode = $languageLinkTitle->getInterwiki();
+ $ilLangName = Language::fetchLanguageName( $ilInterwikiCode );
+
+ if ( strval( $ilLangName ) === '' ) {
+ $ilDisplayTextMsg = wfMessage( "interlanguage-link-$ilInterwikiCode" );
+ if ( !$ilDisplayTextMsg->isDisabled() ) {
+ // Use custom MW message for the display text
+ $ilLangName = $ilDisplayTextMsg->text();
+ } else {
+ // Last resort: fallback to the language link target
+ $ilLangName = $languageLinkText;
+ }
+ } else {
+ // Use the language autonym as display text
+ $ilLangName = $this->formatLanguageName( $ilLangName );
+ }
+
+ // CLDR extension or similar is required to localize the language name;
+ // otherwise we'll end up with the autonym again.
+ $ilLangLocalName = Language::fetchLanguageName(
+ $ilInterwikiCode,
+ $userLang->getCode()
+ );
+
+ $languageLinkTitleText = $languageLinkTitle->getText();
+ if ( $ilLangLocalName === '' ) {
+ $ilFriendlySiteName = wfMessage( "interlanguage-link-sitename-$ilInterwikiCode" );
+ if ( !$ilFriendlySiteName->isDisabled() ) {
+ if ( $languageLinkTitleText === '' ) {
+ $ilTitle = wfMessage(
+ 'interlanguage-link-title-nonlangonly',
+ $ilFriendlySiteName->text()
+ )->text();
+ } else {
+ $ilTitle = wfMessage(
+ 'interlanguage-link-title-nonlang',
+ $languageLinkTitleText,
+ $ilFriendlySiteName->text()
+ )->text();
+ }
+ } else {
+ // we have nothing friendly to put in the title, so fall back to
+ // displaying the interlanguage link itself in the title text
+ // (similar to what is done in page content)
+ $ilTitle = $languageLinkTitle->getInterwiki() .
+ ":$languageLinkTitleText";
+ }
+ } elseif ( $languageLinkTitleText === '' ) {
+ $ilTitle = wfMessage(
+ 'interlanguage-link-title-langonly',
+ $ilLangLocalName
+ )->text();
+ } else {
+ $ilTitle = wfMessage(
+ 'interlanguage-link-title',
+ $languageLinkTitleText,
+ $ilLangLocalName
+ )->text();
+ }
+
+ $ilInterwikiCodeBCP47 = wfBCP47( $ilInterwikiCode );
+ $languageLink = array(
+ 'href' => $languageLinkTitle->getFullURL(),
+ 'text' => $ilLangName,
+ 'title' => $ilTitle,
+ 'class' => $class,
+ 'lang' => $ilInterwikiCodeBCP47,
+ 'hreflang' => $ilInterwikiCodeBCP47,
+ );
+ wfRunHooks(
+ 'SkinTemplateGetLanguageLink',
+ array( &$languageLink, $languageLinkTitle, $this->getTitle() )
+ );
+ $languageLinks[] = $languageLink;
+ }
+ }
+
+ return $languageLinks;
+ }
+
+ protected function setupTemplateForOutput() {
+ wfProfileIn( __METHOD__ );
+
+ $request = $this->getRequest();
+ $user = $this->getUser();
+ $title = $this->getTitle();
+
+ wfProfileIn( __METHOD__ . '-init' );
+ $tpl = $this->setupTemplate( $this->template, 'skins' );
+ wfProfileOut( __METHOD__ . '-init' );
+
+ wfProfileIn( __METHOD__ . '-stuff' );
+ $this->thispage = $title->getPrefixedDBkey();
+ $this->titletxt = $title->getPrefixedText();
+ $this->userpage = $user->getUserPage()->getPrefixedText();
+ $query = array();
+ if ( !$request->wasPosted() ) {
+ $query = $request->getValues();
+ unset( $query['title'] );
+ unset( $query['returnto'] );
+ unset( $query['returntoquery'] );
+ }
+ $this->thisquery = wfArrayToCgi( $query );
+ $this->loggedin = $user->isLoggedIn();
+ $this->username = $user->getName();
+
+ if ( $this->loggedin || $this->showIPinHeader() ) {
+ $this->userpageUrlDetails = self::makeUrlDetails( $this->userpage );
+ } else {
+ # This won't be used in the standard skins, but we define it to preserve the interface
+ # To save time, we check for existence
+ $this->userpageUrlDetails = self::makeKnownUrlDetails( $this->userpage );
+ }
+
+ wfProfileOut( __METHOD__ . '-stuff' );
+
+ wfProfileOut( __METHOD__ );
+
+ return $tpl;
+ }
+
+ /**
+ * initialize various variables and generate the template
+ *
+ * @param OutputPage $out
+ */
+ function outputPage( OutputPage $out = null ) {
+ wfProfileIn( __METHOD__ );
+ Profiler::instance()->setTemplated( true );
+
+ $oldContext = null;
+ if ( $out !== null ) {
+ // @todo Add wfDeprecated in 1.20
+ $oldContext = $this->getContext();
+ $this->setContext( $out->getContext() );
+ }
+
+ $out = $this->getOutput();
+
+ wfProfileIn( __METHOD__ . '-init' );
+ $this->initPage( $out );
+ wfProfileOut( __METHOD__ . '-init' );
+ $tpl = $this->prepareQuickTemplate();
+ // execute template
+ wfProfileIn( __METHOD__ . '-execute' );
+ $res = $tpl->execute();
+ wfProfileOut( __METHOD__ . '-execute' );
+
+ // result may be an error
+ $this->printOrError( $res );
+
+ if ( $oldContext ) {
+ $this->setContext( $oldContext );
+ }
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * initialize various variables and generate the template
+ *
+ * @since 1.23
+ * @return QuickTemplate The template to be executed by outputPage
+ */
+ protected function prepareQuickTemplate() {
+ global $wgContLang, $wgScript, $wgStylePath, $wgMimeType, $wgJsMimeType,
+ $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits,
+ $wgShowCreditsIfMax, $wgPageShowWatchingUsers, $wgArticlePath,
+ $wgScriptPath, $wgServer;
+
+ wfProfileIn( __METHOD__ );
+
+ $title = $this->getTitle();
+ $request = $this->getRequest();
+ $out = $this->getOutput();
+ $tpl = $this->setupTemplateForOutput();
+
+ wfProfileIn( __METHOD__ . '-stuff2' );
+ $tpl->set( 'title', $out->getPageTitle() );
+ $tpl->set( 'pagetitle', $out->getHTMLTitle() );
+ $tpl->set( 'displaytitle', $out->mPageLinkTitle );
+
+ $tpl->setRef( 'thispage', $this->thispage );
+ $tpl->setRef( 'titleprefixeddbkey', $this->thispage );
+ $tpl->set( 'titletext', $title->getText() );
+ $tpl->set( 'articleid', $title->getArticleID() );
+
+ $tpl->set( 'isarticle', $out->isArticle() );
+
+ $subpagestr = $this->subPageSubtitle();
+ if ( $subpagestr !== '' ) {
+ $subpagestr = '<span class="subpages">' . $subpagestr . '</span>';
+ }
+ $tpl->set( 'subtitle', $subpagestr . $out->getSubtitle() );
+
+ $undelete = $this->getUndeleteLink();
+ if ( $undelete === '' ) {
+ $tpl->set( 'undelete', '' );
+ } else {
+ $tpl->set( 'undelete', '<span class="subpages">' . $undelete . '</span>' );
+ }
+
+ $tpl->set( 'catlinks', $this->getCategories() );
+ if ( $out->isSyndicated() ) {
+ $feeds = array();
+ foreach ( $out->getSyndicationLinks() as $format => $link ) {
+ $feeds[$format] = array(
+ // Messages: feed-atom, feed-rss
+ 'text' => $this->msg( "feed-$format" )->text(),
+ 'href' => $link
+ );
+ }
+ $tpl->setRef( 'feeds', $feeds );
+ } else {
+ $tpl->set( 'feeds', false );
+ }
+
+ $tpl->setRef( 'mimetype', $wgMimeType );
+ $tpl->setRef( 'jsmimetype', $wgJsMimeType );
+ $tpl->set( 'charset', 'UTF-8' );
+ $tpl->setRef( 'wgScript', $wgScript );
+ $tpl->setRef( 'skinname', $this->skinname );
+ $tpl->set( 'skinclass', get_class( $this ) );
+ $tpl->setRef( 'skin', $this );
+ $tpl->setRef( 'stylename', $this->stylename );
+ $tpl->set( 'printable', $out->isPrintable() );
+ $tpl->set( 'handheld', $request->getBool( 'handheld' ) );
+ $tpl->setRef( 'loggedin', $this->loggedin );
+ $tpl->set( 'notspecialpage', !$title->isSpecialPage() );
+ $tpl->set( 'searchaction', $this->escapeSearchLink() );
+ $tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBkey() );
+ $tpl->set( 'search', trim( $request->getVal( 'search' ) ) );
+ $tpl->setRef( 'stylepath', $wgStylePath );
+ $tpl->setRef( 'articlepath', $wgArticlePath );
+ $tpl->setRef( 'scriptpath', $wgScriptPath );
+ $tpl->setRef( 'serverurl', $wgServer );
+ $tpl->setRef( 'logopath', $wgLogo );
+ $tpl->setRef( 'sitename', $wgSitename );
+
+ $userLang = $this->getLanguage();
+ $userLangCode = $userLang->getHtmlCode();
+ $userLangDir = $userLang->getDir();
+
+ $tpl->set( 'lang', $userLangCode );
+ $tpl->set( 'dir', $userLangDir );
+ $tpl->set( 'rtl', $userLang->isRTL() );
+
+ $tpl->set( 'capitalizeallnouns', $userLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
+ $tpl->set( 'showjumplinks', true ); // showjumplinks preference has been removed
+ $tpl->set( 'username', $this->loggedin ? $this->username : null );
+ $tpl->setRef( 'userpage', $this->userpage );
+ $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
+ $tpl->set( 'userlang', $userLangCode );
+
+ // Users can have their language set differently than the
+ // content of the wiki. For these users, tell the web browser
+ // that interface elements are in a different language.
+ $tpl->set( 'userlangattributes', '' );
+ $tpl->set( 'specialpageattributes', '' ); # obsolete
+ // Used by VectorBeta to insert HTML before content but after the
+ // heading for the page title. Defaults to empty string.
+ $tpl->set( 'prebodyhtml', '' );
+
+ if ( $userLangCode !== $wgContLang->getHtmlCode() || $userLangDir !== $wgContLang->getDir() ) {
+ $escUserlang = htmlspecialchars( $userLangCode );
+ $escUserdir = htmlspecialchars( $userLangDir );
+ // Attributes must be in double quotes because htmlspecialchars() doesn't
+ // escape single quotes
+ $attrs = " lang=\"$escUserlang\" dir=\"$escUserdir\"";
+ $tpl->set( 'userlangattributes', $attrs );
+ }
+
+ wfProfileOut( __METHOD__ . '-stuff2' );
+
+ wfProfileIn( __METHOD__ . '-stuff3' );
+ $tpl->set( 'newtalk', $this->getNewtalks() );
+ $tpl->set( 'logo', $this->logoText() );
+
+ $tpl->set( 'copyright', false );
+ $tpl->set( 'viewcount', false );
+ $tpl->set( 'lastmod', false );
+ $tpl->set( 'credits', false );
+ $tpl->set( 'numberofwatchingusers', false );
+ if ( $out->isArticle() && $title->exists() ) {
+ if ( $this->isRevisionCurrent() ) {
+ if ( !$wgDisableCounters ) {
+ $viewcount = $this->getWikiPage()->getCount();
+ if ( $viewcount ) {
+ $tpl->set( 'viewcount', $this->msg( 'viewcount' )->numParams( $viewcount )->parse() );
+ }
+ }
+
+ if ( $wgPageShowWatchingUsers ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $num = $dbr->selectField( 'watchlist', 'COUNT(*)',
+ array( 'wl_title' => $title->getDBkey(), 'wl_namespace' => $title->getNamespace() ),
+ __METHOD__
+ );
+ if ( $num > 0 ) {
+ $tpl->set( 'numberofwatchingusers',
+ $this->msg( 'number_of_watching_users_pageview' )->numParams( $num )->parse()
+ );
+ }
+ }
+
+ if ( $wgMaxCredits != 0 ) {
+ $tpl->set( 'credits', Action::factory( 'credits', $this->getWikiPage(),
+ $this->getContext() )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax ) );
+ } else {
+ $tpl->set( 'lastmod', $this->lastModified() );
+ }
+ }
+ $tpl->set( 'copyright', $this->getCopyright() );
+ }
+ wfProfileOut( __METHOD__ . '-stuff3' );
+
+ wfProfileIn( __METHOD__ . '-stuff4' );
+ $tpl->set( 'copyrightico', $this->getCopyrightIcon() );
+ $tpl->set( 'poweredbyico', $this->getPoweredBy() );
+ $tpl->set( 'disclaimer', $this->disclaimerLink() );
+ $tpl->set( 'privacy', $this->privacyLink() );
+ $tpl->set( 'about', $this->aboutLink() );
+
+ $tpl->set( 'footerlinks', array(
+ 'info' => array(
+ 'lastmod',
+ 'viewcount',
+ 'numberofwatchingusers',
+ 'credits',
+ 'copyright',
+ ),
+ 'places' => array(
+ 'privacy',
+ 'about',
+ 'disclaimer',
+ ),
+ ) );
+
+ global $wgFooterIcons;
+ $tpl->set( 'footericons', $wgFooterIcons );
+ foreach ( $tpl->data['footericons'] as $footerIconsKey => &$footerIconsBlock ) {
+ if ( count( $footerIconsBlock ) > 0 ) {
+ foreach ( $footerIconsBlock as &$footerIcon ) {
+ if ( isset( $footerIcon['src'] ) ) {
+ if ( !isset( $footerIcon['width'] ) ) {
+ $footerIcon['width'] = 88;
+ }
+ if ( !isset( $footerIcon['height'] ) ) {
+ $footerIcon['height'] = 31;
+ }
+ }
+ }
+ } else {
+ unset( $tpl->data['footericons'][$footerIconsKey] );
+ }
+ }
+
+ $tpl->set( 'sitenotice', $this->getSiteNotice() );
+ $tpl->set( 'bottomscripts', $this->bottomScripts() );
+ $tpl->set( 'printfooter', $this->printSource() );
+
+ # An ID that includes the actual body text; without categories, contentSub, ...
+ $realBodyAttribs = array( 'id' => 'mw-content-text' );
+
+ # Add a mw-content-ltr/rtl class to be able to style based on text direction
+ # when the content is different from the UI language, i.e.:
+ # not for special pages or file pages AND only when viewing AND if the page exists
+ # (or is in MW namespace, because that has default content)
+ if ( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
+ Action::getActionName( $this ) === 'view' &&
+ ( $title->exists() || $title->getNamespace() == NS_MEDIAWIKI ) ) {
+ $pageLang = $title->getPageViewLanguage();
+ $realBodyAttribs['lang'] = $pageLang->getHtmlCode();
+ $realBodyAttribs['dir'] = $pageLang->getDir();
+ $realBodyAttribs['class'] = 'mw-content-' . $pageLang->getDir();
+ }
+
+ $out->mBodytext = Html::rawElement( 'div', $realBodyAttribs, $out->mBodytext );
+ $tpl->setRef( 'bodytext', $out->mBodytext );
+
+ $language_urls = $this->getLanguages();
+ if ( count( $language_urls ) ) {
+ $tpl->setRef( 'language_urls', $language_urls );
+ } else {
+ $tpl->set( 'language_urls', false );
+ }
+ wfProfileOut( __METHOD__ . '-stuff4' );
+
+ wfProfileIn( __METHOD__ . '-stuff5' );
+ # Personal toolbar
+ $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
+ $content_navigation = $this->buildContentNavigationUrls();
+ $content_actions = $this->buildContentActionUrls( $content_navigation );
+ $tpl->setRef( 'content_navigation', $content_navigation );
+ $tpl->setRef( 'content_actions', $content_actions );
+
+ $tpl->set( 'sidebar', $this->buildSidebar() );
+ $tpl->set( 'nav_urls', $this->buildNavUrls() );
+
+ // Set the head scripts near the end, in case the above actions resulted in added scripts
+ $tpl->set( 'headelement', $out->headElement( $this ) );
+
+ $tpl->set( 'debug', '' );
+ $tpl->set( 'debughtml', $this->generateDebugHTML() );
+ $tpl->set( 'reporttime', wfReportTime() );
+
+ // original version by hansm
+ if ( !wfRunHooks( 'SkinTemplateOutputPageBeforeExec', array( &$this, &$tpl ) ) ) {
+ wfDebug( __METHOD__ . ": Hook SkinTemplateOutputPageBeforeExec broke outputPage execution!\n" );
+ }
+
+ // Set the bodytext to another key so that skins can just output it on it's own
+ // and output printfooter and debughtml separately
+ $tpl->set( 'bodycontent', $tpl->data['bodytext'] );
+
+ // Append printfooter and debughtml onto bodytext so that skins that
+ // were already using bodytext before they were split out don't suddenly
+ // start not outputting information.
+ $tpl->data['bodytext'] .= Html::rawElement(
+ 'div',
+ array( 'class' => 'printfooter' ),
+ "\n{$tpl->data['printfooter']}"
+ ) . "\n";
+ $tpl->data['bodytext'] .= $tpl->data['debughtml'];
+
+ // allow extensions adding stuff after the page content.
+ // See Skin::afterContentHook() for further documentation.
+ $tpl->set( 'dataAfterContent', $this->afterContentHook() );
+ wfProfileOut( __METHOD__ . '-stuff5' );
+
+ wfProfileOut( __METHOD__ );
+ return $tpl;
+ }
+
+ /**
+ * Get the HTML for the p-personal list
+ * @return string
+ */
+ public function getPersonalToolsList() {
+ $tpl = $this->setupTemplateForOutput();
+ $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
+ $html = '';
+ foreach ( $tpl->getPersonalTools() as $key => $item ) {
+ $html .= $tpl->makeListItem( $key, $item );
+ }
+ return $html;
+ }
+
+ /**
+ * Format language name for use in sidebar interlanguage links list.
+ * By default it is capitalized.
+ *
+ * @param string $name Language name, e.g. "English" or "español"
+ * @return string
+ * @private
+ */
+ function formatLanguageName( $name ) {
+ return $this->getLanguage()->ucfirst( $name );
+ }
+
+ /**
+ * Output the string, or print error message if it's
+ * an error object of the appropriate type.
+ * For the base class, assume strings all around.
+ *
+ * @param string $str
+ * @private
+ */
+ function printOrError( $str ) {
+ echo $str;
+ }
+
+ /**
+ * Output a boolean indicating if buildPersonalUrls should output separate
+ * login and create account links or output a combined link
+ * By default we simply return a global config setting that affects most skins
+ * This is setup as a method so that like with $wgLogo and getLogo() a skin
+ * can override this setting and always output one or the other if it has
+ * a reason it can't output one of the two modes.
+ * @return bool
+ */
+ function useCombinedLoginLink() {
+ global $wgUseCombinedLoginLink;
+ return $wgUseCombinedLoginLink;
+ }
+
+ /**
+ * build array of urls for personal toolbar
+ * @return array
+ */
+ protected function buildPersonalUrls() {
+ $title = $this->getTitle();
+ $request = $this->getRequest();
+ $pageurl = $title->getLocalURL();
+ wfProfileIn( __METHOD__ );
+
+ /* set up the default links for the personal toolbar */
+ $personal_urls = array();
+
+ # Due to bug 32276, if a user does not have read permissions,
+ # $this->getTitle() will just give Special:Badtitle, which is
+ # not especially useful as a returnto parameter. Use the title
+ # from the request instead, if there was one.
+ if ( $this->getUser()->isAllowed( 'read' ) ) {
+ $page = $this->getTitle();
+ } else {
+ $page = Title::newFromText( $request->getVal( 'title', '' ) );
+ }
+ $page = $request->getVal( 'returnto', $page );
+ $a = array();
+ if ( strval( $page ) !== '' ) {
+ $a['returnto'] = $page;
+ $query = $request->getVal( 'returntoquery', $this->thisquery );
+ if ( $query != '' ) {
+ $a['returntoquery'] = $query;
+ }
+ }
+
+ $returnto = wfArrayToCgi( $a );
+ if ( $this->loggedin ) {
+ $personal_urls['userpage'] = array(
+ 'text' => $this->username,
+ 'href' => &$this->userpageUrlDetails['href'],
+ 'class' => $this->userpageUrlDetails['exists'] ? false : 'new',
+ 'active' => ( $this->userpageUrlDetails['href'] == $pageurl ),
+ 'dir' => 'auto'
+ );
+ $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
+ $personal_urls['mytalk'] = array(
+ 'text' => $this->msg( 'mytalk' )->text(),
+ 'href' => &$usertalkUrlDetails['href'],
+ 'class' => $usertalkUrlDetails['exists'] ? false : 'new',
+ 'active' => ( $usertalkUrlDetails['href'] == $pageurl )
+ );
+ $href = self::makeSpecialUrl( 'Preferences' );
+ $personal_urls['preferences'] = array(
+ 'text' => $this->msg( 'mypreferences' )->text(),
+ 'href' => $href,
+ 'active' => ( $href == $pageurl )
+ );
+
+ if ( $this->getUser()->isAllowed( 'viewmywatchlist' ) ) {
+ $href = self::makeSpecialUrl( 'Watchlist' );
+ $personal_urls['watchlist'] = array(
+ 'text' => $this->msg( 'mywatchlist' )->text(),
+ 'href' => $href,
+ 'active' => ( $href == $pageurl )
+ );
+ }
+
+ # We need to do an explicit check for Special:Contributions, as we
+ # have to match both the title, and the target, which could come
+ # from request values (Special:Contributions?target=Jimbo_Wales)
+ # or be specified in "sub page" form
+ # (Special:Contributions/Jimbo_Wales). The plot
+ # thickens, because the Title object is altered for special pages,
+ # so it doesn't contain the original alias-with-subpage.
+ $origTitle = Title::newFromText( $request->getText( 'title' ) );
+ if ( $origTitle instanceof Title && $origTitle->isSpecialPage() ) {
+ list( $spName, $spPar ) = SpecialPageFactory::resolveAlias( $origTitle->getText() );
+ $active = $spName == 'Contributions'
+ && ( ( $spPar && $spPar == $this->username )
+ || $request->getText( 'target' ) == $this->username );
+ } else {
+ $active = false;
+ }
+
+ $href = self::makeSpecialUrlSubpage( 'Contributions', $this->username );
+ $personal_urls['mycontris'] = array(
+ 'text' => $this->msg( 'mycontris' )->text(),
+ 'href' => $href,
+ 'active' => $active
+ );
+ $personal_urls['logout'] = array(
+ 'text' => $this->msg( 'pt-userlogout' )->text(),
+ 'href' => self::makeSpecialUrl( 'Userlogout',
+ // userlogout link must always contain an & character, otherwise we might not be able
+ // to detect a buggy precaching proxy (bug 17790)
+ $title->isSpecial( 'Preferences' ) ? 'noreturnto' : $returnto
+ ),
+ 'active' => false
+ );
+ } else {
+ $useCombinedLoginLink = $this->useCombinedLoginLink();
+ $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
+ ? 'nav-login-createaccount'
+ : 'pt-login';
+ $is_signup = $request->getText( 'type' ) == 'signup';
+
+ $login_url = array(
+ 'text' => $this->msg( $loginlink )->text(),
+ 'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
+ 'active' => $title->isSpecial( 'Userlogin' )
+ && ( $loginlink == 'nav-login-createaccount' || !$is_signup ),
+ );
+ $createaccount_url = array(
+ 'text' => $this->msg( 'pt-createaccount' )->text(),
+ 'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
+ 'active' => $title->isSpecial( 'Userlogin' ) && $is_signup,
+ );
+
+ if ( $this->showIPinHeader() ) {
+ $href = &$this->userpageUrlDetails['href'];
+ $personal_urls['anonuserpage'] = array(
+ 'text' => $this->username,
+ 'href' => $href,
+ 'class' => $this->userpageUrlDetails['exists'] ? false : 'new',
+ 'active' => ( $pageurl == $href )
+ );
+ $usertalkUrlDetails = $this->makeTalkUrlDetails( $this->userpage );
+ $href = &$usertalkUrlDetails['href'];
+ $personal_urls['anontalk'] = array(
+ 'text' => $this->msg( 'anontalk' )->text(),
+ 'href' => $href,
+ 'class' => $usertalkUrlDetails['exists'] ? false : 'new',
+ 'active' => ( $pageurl == $href )
+ );
+ }
+
+ if ( $this->getUser()->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
+ $personal_urls['createaccount'] = $createaccount_url;
+ }
+
+ $personal_urls['login'] = $login_url;
+ }
+
+ wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title, $this ) );
+ wfProfileOut( __METHOD__ );
+ return $personal_urls;
+ }
+
+ /**
+ * Builds an array with tab definition
+ *
+ * @param Title $title Page Where the tab links to
+ * @param string|array $message Message key or an array of message keys (will fall back)
+ * @param bool $selected Display the tab as selected
+ * @param string $query Query string attached to tab URL
+ * @param bool $checkEdit Check if $title exists and mark with .new if one doesn't
+ *
+ * @return array
+ */
+ function tabAction( $title, $message, $selected, $query = '', $checkEdit = false ) {
+ $classes = array();
+ if ( $selected ) {
+ $classes[] = 'selected';
+ }
+ if ( $checkEdit && !$title->isKnown() ) {
+ $classes[] = 'new';
+ if ( $query !== '' ) {
+ $query = 'action=edit&redlink=1&' . $query;
+ } else {
+ $query = 'action=edit&redlink=1';
+ }
+ }
+
+ // wfMessageFallback will nicely accept $message as an array of fallbacks
+ // or just a single key
+ $msg = wfMessageFallback( $message )->setContext( $this->getContext() );
+ if ( is_array( $message ) ) {
+ // for hook compatibility just keep the last message name
+ $message = end( $message );
+ }
+ if ( $msg->exists() ) {
+ $text = $msg->text();
+ } else {
+ global $wgContLang;
+ $text = $wgContLang->getFormattedNsText(
+ MWNamespace::getSubject( $title->getNamespace() ) );
+ }
+
+ $result = array();
+ if ( !wfRunHooks( 'SkinTemplateTabAction', array( &$this,
+ $title, $message, $selected, $checkEdit,
+ &$classes, &$query, &$text, &$result ) ) ) {
+ return $result;
+ }
+
+ return array(
+ 'class' => implode( ' ', $classes ),
+ 'text' => $text,
+ 'href' => $title->getLocalURL( $query ),
+ 'primary' => true );
+ }
+
+ function makeTalkUrlDetails( $name, $urlaction = '' ) {
+ $title = Title::newFromText( $name );
+ if ( !is_object( $title ) ) {
+ throw new MWException( __METHOD__ . " given invalid pagename $name" );
+ }
+ $title = $title->getTalkPage();
+ self::checkTitle( $title, $name );
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0,
+ );
+ }
+
+ function makeArticleUrlDetails( $name, $urlaction = '' ) {
+ $title = Title::newFromText( $name );
+ $title = $title->getSubjectPage();
+ self::checkTitle( $title, $name );
+ return array(
+ 'href' => $title->getLocalURL( $urlaction ),
+ 'exists' => $title->getArticleID() != 0,
+ );
+ }
+
+ /**
+ * a structured array of links usually used for the tabs in a skin
+ *
+ * There are 4 standard sections
+ * namespaces: Used for namespace tabs like special, page, and talk namespaces
+ * views: Used for primary page views like read, edit, history
+ * actions: Used for most extra page actions like deletion, protection, etc...
+ * variants: Used to list the language variants for the page
+ *
+ * Each section's value is a key/value array of links for that section.
+ * The links themselves have these common keys:
+ * - class: The css classes to apply to the tab
+ * - text: The text to display on the tab
+ * - href: The href for the tab to point to
+ * - rel: An optional rel= for the tab's link
+ * - redundant: If true the tab will be dropped in skins using content_actions
+ * this is useful for tabs like "Read" which only have meaning in skins that
+ * take special meaning from the grouped structure of content_navigation
+ *
+ * Views also have an extra key which can be used:
+ * - primary: If this is not true skins like vector may try to hide the tab
+ * when the user has limited space in their browser window
+ *
+ * content_navigation using code also expects these ids to be present on the
+ * links, however these are usually automatically generated by SkinTemplate
+ * itself and are not necessary when using a hook. The only things these may
+ * matter to are people modifying content_navigation after it's initial creation:
+ * - id: A "preferred" id, most skins are best off outputting this preferred
+ * id for best compatibility.
+ * - tooltiponly: This is set to true for some tabs in cases where the system
+ * believes that the accesskey should not be added to the tab.
+ *
+ * @return array
+ */
+ protected function buildContentNavigationUrls() {
+ global $wgDisableLangConversion;
+
+ wfProfileIn( __METHOD__ );
+
+ // Display tabs for the relevant title rather than always the title itself
+ $title = $this->getRelevantTitle();
+ $onPage = $title->equals( $this->getTitle() );
+
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+ $user = $this->getUser();
+
+ $content_navigation = array(
+ 'namespaces' => array(),
+ 'views' => array(),
+ 'actions' => array(),
+ 'variants' => array()
+ );
+
+ // parameters
+ $action = $request->getVal( 'action', 'view' );
+
+ $userCanRead = $title->quickUserCan( 'read', $user );
+
+ $preventActiveTabs = false;
+ wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this, &$preventActiveTabs ) );
+
+ // Checks if page is some kind of content
+ if ( $title->canExist() ) {
+ // Gets page objects for the related namespaces
+ $subjectPage = $title->getSubjectPage();
+ $talkPage = $title->getTalkPage();
+
+ // Determines if this is a talk page
+ $isTalk = $title->isTalkPage();
+
+ // Generates XML IDs from namespace names
+ $subjectId = $title->getNamespaceKey( '' );
+
+ if ( $subjectId == 'main' ) {
+ $talkId = 'talk';
+ } else {
+ $talkId = "{$subjectId}_talk";
+ }
+
+ $skname = $this->skinname;
+
+ // Adds namespace links
+ $subjectMsg = array( "nstab-$subjectId" );
+ if ( $subjectPage->isMainPage() ) {
+ array_unshift( $subjectMsg, 'mainpage-nstab' );
+ }
+ $content_navigation['namespaces'][$subjectId] = $this->tabAction(
+ $subjectPage, $subjectMsg, !$isTalk && !$preventActiveTabs, '', $userCanRead
+ );
+ $content_navigation['namespaces'][$subjectId]['context'] = 'subject';
+ $content_navigation['namespaces'][$talkId] = $this->tabAction(
+ $talkPage, array( "nstab-$talkId", 'talk' ), $isTalk && !$preventActiveTabs, '', $userCanRead
+ );
+ $content_navigation['namespaces'][$talkId]['context'] = 'talk';
+
+ if ( $userCanRead ) {
+ $isForeignFile = $title->inNamespace( NS_FILE ) && $this->canUseWikiPage() &&
+ $this->getWikiPage() instanceof WikiFilePage && !$this->getWikiPage()->isLocal();
+
+ // Adds view view link
+ if ( $title->exists() || $isForeignFile ) {
+ $content_navigation['views']['view'] = $this->tabAction(
+ $isTalk ? $talkPage : $subjectPage,
+ array( "$skname-view-view", 'view' ),
+ ( $onPage && ( $action == 'view' || $action == 'purge' ) ), '', true
+ );
+ // signal to hide this from simple content_actions
+ $content_navigation['views']['view']['redundant'] = true;
+ }
+
+ // If it is a non-local file, show a link to the file in its own repository
+ if ( $isForeignFile ) {
+ $file = $this->getWikiPage()->getFile();
+ $content_navigation['views']['view-foreign'] = array(
+ 'class' => '',
+ 'text' => wfMessageFallback( "$skname-view-foreign", 'view-foreign' )->
+ setContext( $this->getContext() )->
+ params( $file->getRepo()->getDisplayName() )->text(),
+ 'href' => $file->getDescriptionUrl(),
+ 'primary' => false,
+ );
+ }
+
+ wfProfileIn( __METHOD__ . '-edit' );
+
+ // Checks if user can edit the current page if it exists or create it otherwise
+ if ( $title->quickUserCan( 'edit', $user )
+ && ( $title->exists() || $title->quickUserCan( 'create', $user ) )
+ ) {
+ // Builds CSS class for talk page links
+ $isTalkClass = $isTalk ? ' istalk' : '';
+ // Whether the user is editing the page
+ $isEditing = $onPage && ( $action == 'edit' || $action == 'submit' );
+ // Whether to show the "Add a new section" tab
+ // Checks if this is a current rev of talk page and is not forced to be hidden
+ $showNewSection = !$out->forceHideNewSectionLink()
+ && ( ( $isTalk && $this->isRevisionCurrent() ) || $out->showNewSectionLink() );
+ $section = $request->getVal( 'section' );
+
+ if ( $title->exists()
+ || ( $title->getNamespace() == NS_MEDIAWIKI
+ && $title->getDefaultMessageText() !== false
+ )
+ ) {
+ $msgKey = $isForeignFile ? 'edit-local' : 'edit';
+ } else {
+ $msgKey = $isForeignFile ? 'create-local' : 'create';
+ }
+ $content_navigation['views']['edit'] = array(
+ 'class' => ( $isEditing && ( $section !== 'new' || !$showNewSection )
+ ? 'selected'
+ : ''
+ ) . $isTalkClass,
+ 'text' => wfMessageFallback( "$skname-view-$msgKey", $msgKey )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $title->getLocalURL( $this->editUrlOptions() ),
+ 'primary' => !$isForeignFile, // don't collapse this in vector
+ );
+
+ // section link
+ if ( $showNewSection ) {
+ // Adds new section link
+ //$content_navigation['actions']['addsection']
+ $content_navigation['views']['addsection'] = array(
+ 'class' => ( $isEditing && $section == 'new' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-addsection", 'addsection' )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $title->getLocalURL( 'action=edit§ion=new' )
+ );
+ }
+ // Checks if the page has some kind of viewable content
+ } elseif ( $title->hasSourceText() ) {
+ // Adds view source view link
+ $content_navigation['views']['viewsource'] = array(
+ 'class' => ( $onPage && $action == 'edit' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-viewsource", 'viewsource' )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $title->getLocalURL( $this->editUrlOptions() ),
+ 'primary' => true, // don't collapse this in vector
+ );
+ }
+ wfProfileOut( __METHOD__ . '-edit' );
+
+ wfProfileIn( __METHOD__ . '-live' );
+ // Checks if the page exists
+ if ( $title->exists() ) {
+ // Adds history view link
+ $content_navigation['views']['history'] = array(
+ 'class' => ( $onPage && $action == 'history' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-view-history", 'history_short' )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $title->getLocalURL( 'action=history' ),
+ 'rel' => 'archives',
+ );
+
+ if ( $title->quickUserCan( 'delete', $user ) ) {
+ $content_navigation['actions']['delete'] = array(
+ 'class' => ( $onPage && $action == 'delete' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-delete", 'delete' )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $title->getLocalURL( 'action=delete' )
+ );
+ }
+
+ if ( $title->quickUserCan( 'move', $user ) ) {
+ $moveTitle = SpecialPage::getTitleFor( 'Movepage', $title->getPrefixedDBkey() );
+ $content_navigation['actions']['move'] = array(
+ 'class' => $this->getTitle()->isSpecial( 'Movepage' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-move", 'move' )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $moveTitle->getLocalURL()
+ );
+ }
+ } else {
+ // article doesn't exist or is deleted
+ if ( $user->isAllowed( 'deletedhistory' ) ) {
+ $n = $title->isDeleted();
+ if ( $n ) {
+ $undelTitle = SpecialPage::getTitleFor( 'Undelete' );
+ // If the user can't undelete but can view deleted
+ // history show them a "View .. deleted" tab instead.
+ $msgKey = $user->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
+ $content_navigation['actions']['undelete'] = array(
+ 'class' => $this->getTitle()->isSpecial( 'Undelete' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-$msgKey", "{$msgKey}_short" )
+ ->setContext( $this->getContext() )->numParams( $n )->text(),
+ 'href' => $undelTitle->getLocalURL( array( 'target' => $title->getPrefixedDBkey() ) )
+ );
+ }
+ }
+ }
+
+ if ( $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() &&
+ MWNamespace::getRestrictionLevels( $title->getNamespace(), $user ) !== array( '' )
+ ) {
+ $mode = $title->isProtected() ? 'unprotect' : 'protect';
+ $content_navigation['actions'][$mode] = array(
+ 'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-$mode", $mode )
+ ->setContext( $this->getContext() )->text(),
+ 'href' => $title->getLocalURL( "action=$mode" )
+ );
+ }
+
+ wfProfileOut( __METHOD__ . '-live' );
+
+ // Checks if the user is logged in
+ if ( $this->loggedin && $user->isAllowedAll( 'viewmywatchlist', 'editmywatchlist' ) ) {
+ /**
+ * The following actions use messages which, if made particular to
+ * the any specific skins, would break the Ajax code which makes this
+ * action happen entirely inline. OutputPage::getJSVars
+ * defines a set of messages in a javascript object - and these
+ * messages are assumed to be global for all skins. Without making
+ * a change to that procedure these messages will have to remain as
+ * the global versions.
+ */
+ $mode = $user->isWatched( $title ) ? 'unwatch' : 'watch';
+ $token = WatchAction::getWatchToken( $title, $user, $mode );
+ $content_navigation['actions'][$mode] = array(
+ 'class' => $onPage && ( $action == 'watch' || $action == 'unwatch' ) ? 'selected' : false,
+ // uses 'watch' or 'unwatch' message
+ 'text' => $this->msg( $mode )->text(),
+ 'href' => $title->getLocalURL( array( 'action' => $mode, 'token' => $token ) )
+ );
+ }
+ }
+
+ wfRunHooks( 'SkinTemplateNavigation', array( &$this, &$content_navigation ) );
+
+ if ( $userCanRead && !$wgDisableLangConversion ) {
+ $pageLang = $title->getPageLanguage();
+ // Gets list of language variants
+ $variants = $pageLang->getVariants();
+ // Checks that language conversion is enabled and variants exist
+ // And if it is not in the special namespace
+ if ( count( $variants ) > 1 ) {
+ // Gets preferred variant (note that user preference is
+ // only possible for wiki content language variant)
+ $preferred = $pageLang->getPreferredVariant();
+ if ( Action::getActionName( $this ) === 'view' ) {
+ $params = $request->getQueryValues();
+ unset( $params['title'] );
+ } else {
+ $params = array();
+ }
+ // Loops over each variant
+ foreach ( $variants as $code ) {
+ // Gets variant name from language code
+ $varname = $pageLang->getVariantname( $code );
+ // Appends variant link
+ $content_navigation['variants'][] = array(
+ 'class' => ( $code == $preferred ) ? 'selected' : false,
+ 'text' => $varname,
+ 'href' => $title->getLocalURL( array( 'variant' => $code ) + $params ),
+ 'lang' => wfBCP47( $code ),
+ 'hreflang' => wfBCP47( $code ),
+ );
+ }
+ }
+ }
+ } else {
+ // If it's not content, it's got to be a special page
+ $content_navigation['namespaces']['special'] = array(
+ 'class' => 'selected',
+ 'text' => $this->msg( 'nstab-special' )->text(),
+ 'href' => $request->getRequestURL(), // @see: bug 2457, bug 2510
+ 'context' => 'subject'
+ );
+
+ wfRunHooks( 'SkinTemplateNavigation::SpecialPage',
+ array( &$this, &$content_navigation ) );
+ }
+
+ // Equiv to SkinTemplateContentActions
+ wfRunHooks( 'SkinTemplateNavigation::Universal', array( &$this, &$content_navigation ) );
+
+ // Setup xml ids and tooltip info
+ foreach ( $content_navigation as $section => &$links ) {
+ foreach ( $links as $key => &$link ) {
+ $xmlID = $key;
+ if ( isset( $link['context'] ) && $link['context'] == 'subject' ) {
+ $xmlID = 'ca-nstab-' . $xmlID;
+ } elseif ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
+ $xmlID = 'ca-talk';
+ } elseif ( $section == 'variants' ) {
+ $xmlID = 'ca-varlang-' . $xmlID;
+ } else {
+ $xmlID = 'ca-' . $xmlID;
+ }
+ $link['id'] = $xmlID;
+ }
+ }
+
+ # We don't want to give the watch tab an accesskey if the
+ # page is being edited, because that conflicts with the
+ # accesskey on the watch checkbox. We also don't want to
+ # give the edit tab an accesskey, because that's fairly
+ # superfluous and conflicts with an accesskey (Ctrl-E) often
+ # used for editing in Safari.
+ if ( in_array( $action, array( 'edit', 'submit' ) ) ) {
+ if ( isset( $content_navigation['views']['edit'] ) ) {
+ $content_navigation['views']['edit']['tooltiponly'] = true;
+ }
+ if ( isset( $content_navigation['actions']['watch'] ) ) {
+ $content_navigation['actions']['watch']['tooltiponly'] = true;
+ }
+ if ( isset( $content_navigation['actions']['unwatch'] ) ) {
+ $content_navigation['actions']['unwatch']['tooltiponly'] = true;
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+
+ return $content_navigation;
+ }
+
+ /**
+ * an array of edit links by default used for the tabs
+ * @param array $content_navigation
+ * @return array
+ */
+ private function buildContentActionUrls( $content_navigation ) {
+
+ wfProfileIn( __METHOD__ );
+
+ // content_actions has been replaced with content_navigation for backwards
+ // compatibility and also for skins that just want simple tabs content_actions
+ // is now built by flattening the content_navigation arrays into one
+
+ $content_actions = array();
+
+ foreach ( $content_navigation as $links ) {
+ foreach ( $links as $key => $value ) {
+ if ( isset( $value['redundant'] ) && $value['redundant'] ) {
+ // Redundant tabs are dropped from content_actions
+ continue;
+ }
+
+ // content_actions used to have ids built using the "ca-$key" pattern
+ // so the xmlID based id is much closer to the actual $key that we want
+ // for that reason we'll just strip out the ca- if present and use
+ // the latter potion of the "id" as the $key
+ if ( isset( $value['id'] ) && substr( $value['id'], 0, 3 ) == 'ca-' ) {
+ $key = substr( $value['id'], 3 );
+ }
+
+ if ( isset( $content_actions[$key] ) ) {
+ wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening " .
+ "content_navigation into content_actions.\n" );
+ continue;
+ }
+
+ $content_actions[$key] = $value;
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+
+ return $content_actions;
+ }
+
+ /**
+ * build array of common navigation links
+ * @return array
+ */
+ protected function buildNavUrls() {
+ global $wgUploadNavigationUrl;
+
+ wfProfileIn( __METHOD__ );
+
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ $nav_urls = array();
+ $nav_urls['mainpage'] = array( 'href' => self::makeMainPageUrl() );
+ if ( $wgUploadNavigationUrl ) {
+ $nav_urls['upload'] = array( 'href' => $wgUploadNavigationUrl );
+ } elseif ( UploadBase::isEnabled() && UploadBase::isAllowed( $this->getUser() ) === true ) {
+ $nav_urls['upload'] = array( 'href' => self::makeSpecialUrl( 'Upload' ) );
+ } else {
+ $nav_urls['upload'] = false;
+ }
+ $nav_urls['specialpages'] = array( 'href' => self::makeSpecialUrl( 'Specialpages' ) );
+
+ $nav_urls['print'] = false;
+ $nav_urls['permalink'] = false;
+ $nav_urls['info'] = false;
+ $nav_urls['whatlinkshere'] = false;
+ $nav_urls['recentchangeslinked'] = false;
+ $nav_urls['contributions'] = false;
+ $nav_urls['log'] = false;
+ $nav_urls['blockip'] = false;
+ $nav_urls['emailuser'] = false;
+ $nav_urls['userrights'] = false;
+
+ // A print stylesheet is attached to all pages, but nobody ever
+ // figures that out. :) Add a link...
+ if ( !$out->isPrintable() && ( $out->isArticle() || $this->getTitle()->isSpecialPage() ) ) {
+ $nav_urls['print'] = array(
+ 'text' => $this->msg( 'printableversion' )->text(),
+ 'href' => $this->getTitle()->getLocalURL(
+ $request->appendQueryValue( 'printable', 'yes', true ) )
+ );
+ }
+
+ if ( $out->isArticle() ) {
+ // Also add a "permalink" while we're at it
+ $revid = $this->getRevisionId();
+ if ( $revid ) {
+ $nav_urls['permalink'] = array(
+ 'text' => $this->msg( 'permalink' )->text(),
+ 'href' => $this->getTitle()->getLocalURL( "oldid=$revid" )
+ );
+ }
+
+ // Use the copy of revision ID in case this undocumented, shady hook tries to mess with internals
+ wfRunHooks( 'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink',
+ array( &$this, &$nav_urls, &$revid, &$revid ) );
+ }
+
+ if ( $out->isArticleRelated() ) {
+ $nav_urls['whatlinkshere'] = array(
+ 'href' => SpecialPage::getTitleFor( 'Whatlinkshere', $this->thispage )->getLocalURL()
+ );
+
+ $nav_urls['info'] = array(
+ 'text' => $this->msg( 'pageinfo-toolboxlink' )->text(),
+ 'href' => $this->getTitle()->getLocalURL( "action=info" )
+ );
+
+ if ( $this->getTitle()->getArticleID() ) {
+ $nav_urls['recentchangeslinked'] = array(
+ 'href' => SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage )->getLocalURL()
+ );
+ }
+ }
+
+ $user = $this->getRelevantUser();
+ if ( $user ) {
+ $rootUser = $user->getName();
+
+ $nav_urls['contributions'] = array(
+ 'text' => $this->msg( 'contributions', $rootUser )->text(),
+ 'href' => self::makeSpecialUrlSubpage( 'Contributions', $rootUser )
+ );
+
+ $nav_urls['log'] = array(
+ 'href' => self::makeSpecialUrlSubpage( 'Log', $rootUser )
+ );
+
+ if ( $this->getUser()->isAllowed( 'block' ) ) {
+ $nav_urls['blockip'] = array(
+ 'text' => $this->msg( 'blockip', $rootUser )->text(),
+ 'href' => self::makeSpecialUrlSubpage( 'Block', $rootUser )
+ );
+ }
+
+ if ( $this->showEmailUser( $user ) ) {
+ $nav_urls['emailuser'] = array(
+ 'href' => self::makeSpecialUrlSubpage( 'Emailuser', $rootUser )
+ );
+ }
+
+ if ( !$user->isAnon() ) {
+ $sur = new UserrightsPage;
+ $sur->setContext( $this->getContext() );
+ if ( $sur->userCanExecute( $this->getUser() ) ) {
+ $nav_urls['userrights'] = array(
+ 'href' => self::makeSpecialUrlSubpage( 'Userrights', $rootUser )
+ );
+ }
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $nav_urls;
+ }
+
+ /**
+ * Generate strings used for xml 'id' names
+ * @return string
+ */
+ protected function getNameSpaceKey() {
+ return $this->getTitle()->getNamespaceKey();
+ }
+}
+
+/**
+ * Generic wrapper for template functions, with interface
+ * compatible with what we use of PHPTAL 0.7.
+ * @ingroup Skins
+ */
+abstract class QuickTemplate {
+
+ /** @var Config $config */
+ protected $config;
+
+ /**
+ * @param Config $config
+ */
+ function __construct( Config $config = null ) {
+ $this->data = array();
+ $this->translator = new MediaWikiI18N();
+ if ( $config === null ) {
+ wfDebug( __METHOD__ . ' was called with no Config instance passed to it' );
+ $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+ }
+ $this->config = $config;
+ }
+
+ /**
+ * Sets the value $value to $name
+ * @param string $name
+ * @param mixed $value
+ */
+ public function set( $name, $value ) {
+ $this->data[$name] = $value;
+ }
+
+ /**
+ * Gets the template data requested
+ * @since 1.22
+ * @param string $name Key for the data
+ * @param mixed $default Optional default (or null)
+ * @return mixed The value of the data requested or the deafult
+ */
+ public function get( $name, $default = null ) {
+ if ( isset( $this->data[$name] ) ) {
+ return $this->data[$name];
+ } else {
+ return $default;
+ }
+ }
+
+ /**
+ * @param string $name
+ * @param mixed $value
+ */
+ public function setRef( $name, &$value ) {
+ $this->data[$name] =& $value;
+ }
+
+ /**
+ * @param MediaWikiI18N $t
+ */
+ public function setTranslator( &$t ) {
+ $this->translator = &$t;
+ }
+
+ /**
+ * Main function, used by classes that subclass QuickTemplate
+ * to show the actual HTML output
+ */
+ abstract public function execute();
+
+ /**
+ * @private
+ * @param string $str
+ * @return string
+ */
+ function text( $str ) {
+ echo htmlspecialchars( $this->data[$str] );
+ }
+
+ /**
+ * @private
+ * @param string $str
+ * @return string
+ */
+ function html( $str ) {
+ echo $this->data[$str];
+ }
+
+ /**
+ * @private
+ * @param string $str
+ * @return string
+ */
+ function msg( $str ) {
+ echo htmlspecialchars( $this->translator->translate( $str ) );
+ }
+
+ /**
+ * @private
+ * @param string $str
+ * @return string
+ */
+ function msgHtml( $str ) {
+ echo $this->translator->translate( $str );
+ }
+
+ /**
+ * An ugly, ugly hack.
+ * @private
+ * @param string $str
+ * @return string
+ */
+ function msgWiki( $str ) {
+ global $wgOut;
+
+ $text = $this->translator->translate( $str );
+ echo $wgOut->parse( $text );
+ }
+
+ /**
+ * @private
+ * @param string $str
+ * @return bool
+ */
+ function haveData( $str ) {
+ return isset( $this->data[$str] );
+ }
+
+ /**
+ * @private
+ *
+ * @param string $str
+ * @return bool
+ */
+ function haveMsg( $str ) {
+ $msg = $this->translator->translate( $str );
+ return ( $msg != '-' ) && ( $msg != '' ); # ????
+ }
+
+ /**
+ * Get the Skin object related to this object
+ *
+ * @return Skin
+ */
+ public function getSkin() {
+ return $this->data['skin'];
+ }
+
+ /**
+ * Fetch the output of a QuickTemplate and return it
+ *
+ * @since 1.23
+ * @return string
+ */
+ public function getHTML() {
+ ob_start();
+ $this->execute();
+ $html = ob_get_contents();
+ ob_end_clean();
+ return $html;
+ }
+}
+
+/**
+ * New base template for a skin's template extended from QuickTemplate
+ * this class features helper methods that provide common ways of interacting
+ * with the data stored in the QuickTemplate
+ */
+abstract class BaseTemplate extends QuickTemplate {
+
+ /**
+ * Get a Message object with its context set
+ *
+ * @param string $name Message name
+ * @return Message
+ */
+ public function getMsg( $name ) {
+ return $this->getSkin()->msg( $name );
+ }
+
+ function msg( $str ) {
+ echo $this->getMsg( $str )->escaped();
+ }
+
+ function msgHtml( $str ) {
+ echo $this->getMsg( $str )->text();
+ }
+
+ function msgWiki( $str ) {
+ echo $this->getMsg( $str )->parseAsBlock();
+ }
+
+ /**
+ * Create an array of common toolbox items from the data in the quicktemplate
+ * stored by SkinTemplate.
+ * The resulting array is built according to a format intended to be passed
+ * through makeListItem to generate the html.
+ * @return array
+ */
+ function getToolbox() {
+ wfProfileIn( __METHOD__ );
+
+ $toolbox = array();
+ if ( isset( $this->data['nav_urls']['whatlinkshere'] )
+ && $this->data['nav_urls']['whatlinkshere']
+ ) {
+ $toolbox['whatlinkshere'] = $this->data['nav_urls']['whatlinkshere'];
+ $toolbox['whatlinkshere']['id'] = 't-whatlinkshere';
+ }
+ if ( isset( $this->data['nav_urls']['recentchangeslinked'] )
+ && $this->data['nav_urls']['recentchangeslinked']
+ ) {
+ $toolbox['recentchangeslinked'] = $this->data['nav_urls']['recentchangeslinked'];
+ $toolbox['recentchangeslinked']['msg'] = 'recentchangeslinked-toolbox';
+ $toolbox['recentchangeslinked']['id'] = 't-recentchangeslinked';
+ }
+ if ( isset( $this->data['feeds'] ) && $this->data['feeds'] ) {
+ $toolbox['feeds']['id'] = 'feedlinks';
+ $toolbox['feeds']['links'] = array();
+ foreach ( $this->data['feeds'] as $key => $feed ) {
+ $toolbox['feeds']['links'][$key] = $feed;
+ $toolbox['feeds']['links'][$key]['id'] = "feed-$key";
+ $toolbox['feeds']['links'][$key]['rel'] = 'alternate';
+ $toolbox['feeds']['links'][$key]['type'] = "application/{$key}+xml";
+ $toolbox['feeds']['links'][$key]['class'] = 'feedlink';
+ }
+ }
+ foreach ( array( 'contributions', 'log', 'blockip', 'emailuser',
+ 'userrights', 'upload', 'specialpages' ) as $special
+ ) {
+ if ( isset( $this->data['nav_urls'][$special] ) && $this->data['nav_urls'][$special] ) {
+ $toolbox[$special] = $this->data['nav_urls'][$special];
+ $toolbox[$special]['id'] = "t-$special";
+ }
+ }
+ if ( isset( $this->data['nav_urls']['print'] ) && $this->data['nav_urls']['print'] ) {
+ $toolbox['print'] = $this->data['nav_urls']['print'];
+ $toolbox['print']['id'] = 't-print';
+ $toolbox['print']['rel'] = 'alternate';
+ $toolbox['print']['msg'] = 'printableversion';
+ }
+ if ( isset( $this->data['nav_urls']['permalink'] ) && $this->data['nav_urls']['permalink'] ) {
+ $toolbox['permalink'] = $this->data['nav_urls']['permalink'];
+ if ( $toolbox['permalink']['href'] === '' ) {
+ unset( $toolbox['permalink']['href'] );
+ $toolbox['ispermalink']['tooltiponly'] = true;
+ $toolbox['ispermalink']['id'] = 't-ispermalink';
+ $toolbox['ispermalink']['msg'] = 'permalink';
+ } else {
+ $toolbox['permalink']['id'] = 't-permalink';
+ }
+ }
+ if ( isset( $this->data['nav_urls']['info'] ) && $this->data['nav_urls']['info'] ) {
+ $toolbox['info'] = $this->data['nav_urls']['info'];
+ $toolbox['info']['id'] = 't-info';
+ }
+
+ wfRunHooks( 'BaseTemplateToolbox', array( &$this, &$toolbox ) );
+ wfProfileOut( __METHOD__ );
+ return $toolbox;
+ }
+
+ /**
+ * Create an array of personal tools items from the data in the quicktemplate
+ * stored by SkinTemplate.
+ * The resulting array is built according to a format intended to be passed
+ * through makeListItem to generate the html.
+ * This is in reality the same list as already stored in personal_urls
+ * however it is reformatted so that you can just pass the individual items
+ * to makeListItem instead of hardcoding the element creation boilerplate.
+ * @return array
+ */
+ function getPersonalTools() {
+ $personal_tools = array();
+ foreach ( $this->get( 'personal_urls' ) as $key => $plink ) {
+ # The class on a personal_urls item is meant to go on the <a> instead
+ # of the <li> so we have to use a single item "links" array instead
+ # of using most of the personal_url's keys directly.
+ $ptool = array(
+ 'links' => array(
+ array( 'single-id' => "pt-$key" ),
+ ),
+ 'id' => "pt-$key",
+ );
+ if ( isset( $plink['active'] ) ) {
+ $ptool['active'] = $plink['active'];
+ }
+ foreach ( array( 'href', 'class', 'text', 'dir' ) as $k ) {
+ if ( isset( $plink[$k] ) ) {
+ $ptool['links'][0][$k] = $plink[$k];
+ }
+ }
+ $personal_tools[$key] = $ptool;
+ }
+ return $personal_tools;
+ }
+
+ function getSidebar( $options = array() ) {
+ // Force the rendering of the following portals
+ $sidebar = $this->data['sidebar'];
+ if ( !isset( $sidebar['SEARCH'] ) ) {
+ $sidebar['SEARCH'] = true;
+ }
+ if ( !isset( $sidebar['TOOLBOX'] ) ) {
+ $sidebar['TOOLBOX'] = true;
+ }
+ if ( !isset( $sidebar['LANGUAGES'] ) ) {
+ $sidebar['LANGUAGES'] = true;
+ }
+
+ if ( !isset( $options['search'] ) || $options['search'] !== true ) {
+ unset( $sidebar['SEARCH'] );
+ }
+ if ( isset( $options['toolbox'] ) && $options['toolbox'] === false ) {
+ unset( $sidebar['TOOLBOX'] );
+ }
+ if ( isset( $options['languages'] ) && $options['languages'] === false ) {
+ unset( $sidebar['LANGUAGES'] );
+ }
+
+ $boxes = array();
+ foreach ( $sidebar as $boxName => $content ) {
+ if ( $content === false ) {
+ continue;
+ }
+ switch ( $boxName ) {
+ case 'SEARCH':
+ // Search is a special case, skins should custom implement this
+ $boxes[$boxName] = array(
+ 'id' => 'p-search',
+ 'header' => $this->getMsg( 'search' )->text(),
+ 'generated' => false,
+ 'content' => true,
+ );
+ break;
+ case 'TOOLBOX':
+ $msgObj = $this->getMsg( 'toolbox' );
+ $boxes[$boxName] = array(
+ 'id' => 'p-tb',
+ 'header' => $msgObj->exists() ? $msgObj->text() : 'toolbox',
+ 'generated' => false,
+ 'content' => $this->getToolbox(),
+ );
+ break;
+ case 'LANGUAGES':
+ if ( $this->data['language_urls'] ) {
+ $msgObj = $this->getMsg( 'otherlanguages' );
+ $boxes[$boxName] = array(
+ 'id' => 'p-lang',
+ 'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
+ 'generated' => false,
+ 'content' => $this->data['language_urls'],
+ );
+ }
+ break;
+ default:
+ $msgObj = $this->getMsg( $boxName );
+ $boxes[$boxName] = array(
+ 'id' => "p-$boxName",
+ 'header' => $msgObj->exists() ? $msgObj->text() : $boxName,
+ 'generated' => true,
+ 'content' => $content,
+ );
+ break;
+ }
+ }
+
+ // HACK: Compatibility with extensions still using SkinTemplateToolboxEnd
+ $hookContents = null;
+ if ( isset( $boxes['TOOLBOX'] ) ) {
+ ob_start();
+ // We pass an extra 'true' at the end so extensions using BaseTemplateToolbox
+ // can abort and avoid outputting double toolbox links
+ wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
+ $hookContents = ob_get_contents();
+ ob_end_clean();
+ if ( !trim( $hookContents ) ) {
+ $hookContents = null;
+ }
+ }
+ // END hack
+
+ if ( isset( $options['htmlOnly'] ) && $options['htmlOnly'] === true ) {
+ foreach ( $boxes as $boxName => $box ) {
+ if ( is_array( $box['content'] ) ) {
+ $content = '<ul>';
+ foreach ( $box['content'] as $key => $val ) {
+ $content .= "\n " . $this->makeListItem( $key, $val );
+ }
+ // HACK, shove the toolbox end onto the toolbox if we're rendering itself
+ if ( $hookContents ) {
+ $content .= "\n $hookContents";
+ }
+ // END hack
+ $content .= "\n</ul>\n";
+ $boxes[$boxName]['content'] = $content;
+ }
+ }
+ } else {
+ if ( $hookContents ) {
+ $boxes['TOOLBOXEND'] = array(
+ 'id' => 'p-toolboxend',
+ 'header' => $boxes['TOOLBOX']['header'],
+ 'generated' => false,
+ 'content' => "<ul>{$hookContents}</ul>",
+ );
+ // HACK: Make sure that TOOLBOXEND is sorted next to TOOLBOX
+ $boxes2 = array();
+ foreach ( $boxes as $key => $box ) {
+ if ( $key === 'TOOLBOXEND' ) {
+ continue;
+ }
+ $boxes2[$key] = $box;
+ if ( $key === 'TOOLBOX' ) {
+ $boxes2['TOOLBOXEND'] = $boxes['TOOLBOXEND'];
+ }
+ }
+ $boxes = $boxes2;
+ // END hack
+ }
+ }
+
+ return $boxes;
+ }
+
+ /**
+ * @param string $name
+ */
+ protected function renderAfterPortlet( $name ) {
+ $content = '';
+ wfRunHooks( 'BaseTemplateAfterPortlet', array( $this, $name, &$content ) );
+
+ if ( $content !== '' ) {
+ echo "<div class='after-portlet after-portlet-$name'>$content</div>";
+ }
+
+ }
+
+ /**
+ * Makes a link, usually used by makeListItem to generate a link for an item
+ * in a list used in navigation lists, portlets, portals, sidebars, etc...
+ *
+ * @param string $key Usually a key from the list you are generating this
+ * link from.
+ * @param array $item Contains some of a specific set of keys.
+ *
+ * The text of the link will be generated either from the contents of the
+ * "text" key in the $item array, if a "msg" key is present a message by
+ * that name will be used, and if neither of those are set the $key will be
+ * used as a message name.
+ *
+ * If a "href" key is not present makeLink will just output htmlescaped text.
+ * The "href", "id", "class", "rel", and "type" keys are used as attributes
+ * for the link if present.
+ *
+ * If an "id" or "single-id" (if you don't want the actual id to be output
+ * on the link) is present it will be used to generate a tooltip and
+ * accesskey for the link.
+ *
+ * The keys "context" and "primary" are ignored; these keys are used
+ * internally by skins and are not supposed to be included in the HTML
+ * output.
+ *
+ * If you don't want an accesskey, set $item['tooltiponly'] = true;
+ *
+ * @param array $options Can be used to affect the output of a link.
+ * Possible options are:
+ * - 'text-wrapper' key to specify a list of elements to wrap the text of
+ * a link in. This should be an array of arrays containing a 'tag' and
+ * optionally an 'attributes' key. If you only have one element you don't
+ * need to wrap it in another array. eg: To use <a><span>...</span></a>
+ * in all links use array( 'text-wrapper' => array( 'tag' => 'span' ) )
+ * for your options.
+ * - 'link-class' key can be used to specify additional classes to apply
+ * to all links.
+ * - 'link-fallback' can be used to specify a tag to use instead of "<a>"
+ * if there is no link. eg: If you specify 'link-fallback' => 'span' than
+ * any non-link will output a "<span>" instead of just text.
+ *
+ * @return string
+ */
+ function makeLink( $key, $item, $options = array() ) {
+ if ( isset( $item['text'] ) ) {
+ $text = $item['text'];
+ } else {
+ $text = $this->translator->translate( isset( $item['msg'] ) ? $item['msg'] : $key );
+ }
+
+ $html = htmlspecialchars( $text );
+
+ if ( isset( $options['text-wrapper'] ) ) {
+ $wrapper = $options['text-wrapper'];
+ if ( isset( $wrapper['tag'] ) ) {
+ $wrapper = array( $wrapper );
+ }
+ while ( count( $wrapper ) > 0 ) {
+ $element = array_pop( $wrapper );
+ $html = Html::rawElement( $element['tag'], isset( $element['attributes'] )
+ ? $element['attributes']
+ : null, $html );
+ }
+ }
+
+ if ( isset( $item['href'] ) || isset( $options['link-fallback'] ) ) {
+ $attrs = $item;
+ foreach ( array( 'single-id', 'text', 'msg', 'tooltiponly', 'context', 'primary' ) as $k ) {
+ unset( $attrs[$k] );
+ }
+
+ if ( isset( $item['id'] ) && !isset( $item['single-id'] ) ) {
+ $item['single-id'] = $item['id'];
+ }
+ if ( isset( $item['single-id'] ) ) {
+ if ( isset( $item['tooltiponly'] ) && $item['tooltiponly'] ) {
+ $title = Linker::titleAttrib( $item['single-id'] );
+ if ( $title !== false ) {
+ $attrs['title'] = $title;
+ }
+ } else {
+ $tip = Linker::tooltipAndAccesskeyAttribs( $item['single-id'] );
+ if ( isset( $tip['title'] ) && $tip['title'] !== false ) {
+ $attrs['title'] = $tip['title'];
+ }
+ if ( isset( $tip['accesskey'] ) && $tip['accesskey'] !== false ) {
+ $attrs['accesskey'] = $tip['accesskey'];
+ }
+ }
+ }
+ if ( isset( $options['link-class'] ) ) {
+ if ( isset( $attrs['class'] ) ) {
+ $attrs['class'] .= " {$options['link-class']}";
+ } else {
+ $attrs['class'] = $options['link-class'];
+ }
+ }
+ $html = Html::rawElement( isset( $attrs['href'] )
+ ? 'a'
+ : $options['link-fallback'], $attrs, $html );
+ }
+
+ return $html;
+ }
+
+ /**
+ * Generates a list item for a navigation, portlet, portal, sidebar... list
+ *
+ * @param string $key Usually a key from the list you are generating this link from.
+ * @param array $item Array of list item data containing some of a specific set of keys.
+ * The "id", "class" and "itemtitle" keys will be used as attributes for the list item,
+ * if "active" contains a value of true a "active" class will also be appended to class.
+ *
+ * @param array $options
+ *
+ * If you want something other than a "<li>" you can pass a tag name such as
+ * "tag" => "span" in the $options array to change the tag used.
+ * link/content data for the list item may come in one of two forms
+ * A "links" key may be used, in which case it should contain an array with
+ * a list of links to include inside the list item, see makeLink for the
+ * format of individual links array items.
+ *
+ * Otherwise the relevant keys from the list item $item array will be passed
+ * to makeLink instead. Note however that "id" and "class" are used by the
+ * list item directly so they will not be passed to makeLink
+ * (however the link will still support a tooltip and accesskey from it)
+ * If you need an id or class on a single link you should include a "links"
+ * array with just one link item inside of it. If you want to add a title
+ * to the list item itself, you can set "itemtitle" to the value.
+ * $options is also passed on to makeLink calls
+ *
+ * @return string
+ */
+ function makeListItem( $key, $item, $options = array() ) {
+ if ( isset( $item['links'] ) ) {
+ $links = array();
+ foreach ( $item['links'] as $linkKey => $link ) {
+ $links[] = $this->makeLink( $linkKey, $link, $options );
+ }
+ $html = implode( ' ', $links );
+ } else {
+ $link = $item;
+ // These keys are used by makeListItem and shouldn't be passed on to the link
+ foreach ( array( 'id', 'class', 'active', 'tag', 'itemtitle' ) as $k ) {
+ unset( $link[$k] );
+ }
+ if ( isset( $item['id'] ) && !isset( $item['single-id'] ) ) {
+ // The id goes on the <li> not on the <a> for single links
+ // but makeSidebarLink still needs to know what id to use when
+ // generating tooltips and accesskeys.
+ $link['single-id'] = $item['id'];
+ }
+ $html = $this->makeLink( $key, $link, $options );
+ }
+
+ $attrs = array();
+ foreach ( array( 'id', 'class' ) as $attr ) {
+ if ( isset( $item[$attr] ) ) {
+ $attrs[$attr] = $item[$attr];
+ }
+ }
+ if ( isset( $item['active'] ) && $item['active'] ) {
+ if ( !isset( $attrs['class'] ) ) {
+ $attrs['class'] = '';
+ }
+ $attrs['class'] .= ' active';
+ $attrs['class'] = trim( $attrs['class'] );
+ }
+ if ( isset( $item['itemtitle'] ) ) {
+ $attrs['title'] = $item['itemtitle'];
+ }
+ return Html::rawElement( isset( $options['tag'] ) ? $options['tag'] : 'li', $attrs, $html );
+ }
+
+ function makeSearchInput( $attrs = array() ) {
+ $realAttrs = array(
+ 'type' => 'search',
+ 'name' => 'search',
+ 'placeholder' => wfMessage( 'searchsuggest-search' )->text(),
+ 'value' => $this->get( 'search', '' ),
+ );
+ $realAttrs = array_merge( $realAttrs, Linker::tooltipAndAccesskeyAttribs( 'search' ), $attrs );
+ return Html::element( 'input', $realAttrs );
+ }
+
+ function makeSearchButton( $mode, $attrs = array() ) {
+ switch ( $mode ) {
+ case 'go':
+ case 'fulltext':
+ $realAttrs = array(
+ 'type' => 'submit',
+ 'name' => $mode,
+ 'value' => $this->translator->translate(
+ $mode == 'go' ? 'searcharticle' : 'searchbutton' ),
+ );
+ $realAttrs = array_merge(
+ $realAttrs,
+ Linker::tooltipAndAccesskeyAttribs( "search-$mode" ),
+ $attrs
+ );
+ return Html::element( 'input', $realAttrs );
+ case 'image':
+ $buttonAttrs = array(
+ 'type' => 'submit',
+ 'name' => 'button',
+ );
+ $buttonAttrs = array_merge(
+ $buttonAttrs,
+ Linker::tooltipAndAccesskeyAttribs( 'search-fulltext' ),
+ $attrs
+ );
+ unset( $buttonAttrs['src'] );
+ unset( $buttonAttrs['alt'] );
+ unset( $buttonAttrs['width'] );
+ unset( $buttonAttrs['height'] );
+ $imgAttrs = array(
+ 'src' => $attrs['src'],
+ 'alt' => isset( $attrs['alt'] )
+ ? $attrs['alt']
+ : $this->translator->translate( 'searchbutton' ),
+ 'width' => isset( $attrs['width'] ) ? $attrs['width'] : null,
+ 'height' => isset( $attrs['height'] ) ? $attrs['height'] : null,
+ );
+ return Html::rawElement( 'button', $buttonAttrs, Html::element( 'img', $imgAttrs ) );
+ default:
+ throw new MWException( 'Unknown mode passed to BaseTemplate::makeSearchButton' );
+ }
+ }
+
+ /**
+ * Returns an array of footerlinks trimmed down to only those footer links that
+ * are valid.
+ * If you pass "flat" as an option then the returned array will be a flat array
+ * of footer icons instead of a key/value array of footerlinks arrays broken
+ * up into categories.
+ * @param string $option
+ * @return array|mixed
+ */
+ function getFooterLinks( $option = null ) {
+ $footerlinks = $this->get( 'footerlinks' );
+
+ // Reduce footer links down to only those which are being used
+ $validFooterLinks = array();
+ foreach ( $footerlinks as $category => $links ) {
+ $validFooterLinks[$category] = array();
+ foreach ( $links as $link ) {
+ if ( isset( $this->data[$link] ) && $this->data[$link] ) {
+ $validFooterLinks[$category][] = $link;
+ }
+ }
+ if ( count( $validFooterLinks[$category] ) <= 0 ) {
+ unset( $validFooterLinks[$category] );
+ }
+ }
+
+ if ( $option == 'flat' ) {
+ // fold footerlinks into a single array using a bit of trickery
+ $validFooterLinks = call_user_func_array(
+ 'array_merge',
+ array_values( $validFooterLinks )
+ );
+ }
+
+ return $validFooterLinks;
+ }
+
+ /**
+ * Returns an array of footer icons filtered down by options relevant to how
+ * the skin wishes to display them.
+ * If you pass "icononly" as the option all footer icons which do not have an
+ * image icon set will be filtered out.
+ * If you pass "nocopyright" then MediaWiki's copyright icon will not be included
+ * in the list of footer icons. This is mostly useful for skins which only
+ * display the text from footericons instead of the images and don't want a
+ * duplicate copyright statement because footerlinks already rendered one.
+ * @param string $option
+ * @return string
+ */
+ function getFooterIcons( $option = null ) {
+ // Generate additional footer icons
+ $footericons = $this->get( 'footericons' );
+
+ if ( $option == 'icononly' ) {
+ // Unset any icons which don't have an image
+ foreach ( $footericons as &$footerIconsBlock ) {
+ foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
+ if ( !is_string( $footerIcon ) && !isset( $footerIcon['src'] ) ) {
+ unset( $footerIconsBlock[$footerIconKey] );
+ }
+ }
+ }
+ // Redo removal of any empty blocks
+ foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
+ if ( count( $footerIconsBlock ) <= 0 ) {
+ unset( $footericons[$footerIconsKey] );
+ }
+ }
+ } elseif ( $option == 'nocopyright' ) {
+ unset( $footericons['copyright']['copyright'] );
+ if ( count( $footericons['copyright'] ) <= 0 ) {
+ unset( $footericons['copyright'] );
+ }
+ }
+
+ return $footericons;
+ }
+
+ /**
+ * Output the basic end-page trail including bottomscripts, reporttime, and
+ * debug stuff. This should be called right before outputting the closing
+ * body and html tags.
+ */
+ function printTrail() { ?>
+<?php echo MWDebug::getDebugHTML( $this->getSkin()->getContext() ); ?>
+<?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
+<?php $this->html( 'reporttime' ) ?>
+<?php
+ }
+}
* @return string
*/
public static function makeLegend( IContextSource $context ) {
- global $wgRecentChangesFlags;
$user = $context->getUser();
# The legend showing what the letters and stuff mean
$legend = Html::openElement( 'dl' ) . "\n";
# Iterates through them and gets the messages for both letter and tooltip
- $legendItems = $wgRecentChangesFlags;
+ $legendItems = $context->getConfig()->get( 'RecentChangesFlags' );
if ( !( $user->useRCPatrol() || $user->useNPPatrol() ) ) {
unset( $legendItems['unpatrolled'] );
}
* @param OutputPage $out OutputPage to print to
* @param Skin $skin User skin to use [unused]
* @param DatabaseBase $dbr (read) connection to use
- * @param int $res Result pointer
+ * @param ResultWrapper $res Result pointer
* @param int $num Number of available result rows
* @param int $offset Paging offset
*/
* @return bool
*/
function isExpensive() {
- global $wgDisableQueryPages;
- return $wgDisableQueryPages;
+ return $this->getConfig()->get( 'DisableQueryPages' );
}
/**
* @return bool
*/
function isCached() {
- global $wgMiserMode;
-
- return $this->isExpensive() && $wgMiserMode;
+ return $this->isExpensive() && $this->getConfig()->get( 'MiserMode' );
}
/**
* @param string $par
*/
function execute( $par ) {
- global $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
-
$user = $this->getUser();
if ( !$this->userCanExecute( $user ) ) {
$this->displayRestrictionError();
# Fetch the timestamp of this update
$ts = $this->getCachedTimestamp();
$lang = $this->getLanguage();
- $maxResults = $lang->formatNum( $wgQueryCacheLimit );
+ $maxResults = $lang->formatNum( $this->getConfig()->get( 'QueryCacheLimit' ) );
if ( $ts ) {
$updated = $lang->userTimeAndDate( $ts, $user );
# If updates on this page have been disabled, let the user know
# that the data set won't be refreshed for now
- if ( is_array( $wgDisableQueryPageUpdate )
- && in_array( $this->getName(), $wgDisableQueryPageUpdate )
+ if ( is_array( $this->getConfig()->get( 'DisableQueryPageUpdate' ) )
+ && in_array( $this->getName(), $this->getConfig()->get( 'DisableQueryPageUpdate' ) )
) {
$out->wrapWikiMsg(
"<div class=\"mw-querypage-no-updates\">\n$1\n</div>",
* @return bool
*/
function doFeed( $class = '', $limit = 50 ) {
- global $wgFeed, $wgFeedClasses, $wgFeedLimit;
-
- if ( !$wgFeed ) {
+ if ( !$this->getConfig()->get( 'Feed' ) ) {
$this->getOutput()->addWikiMsg( 'feed-unavailable' );
return false;
}
- $limit = min( $limit, $wgFeedLimit );
+ $limit = min( $limit, $this->getConfig()->get( 'FeedLimit' ) );
- if ( isset( $wgFeedClasses[$class] ) ) {
+ $feedClasses = $this->getConfig()->get( 'FeedClasses' );
+ if ( isset( $feedClasses[$class] ) ) {
/** @var RSSFeed|AtomFeed $feed */
- $feed = new $wgFeedClasses[$class](
+ $feed = new $feedClasses[$class](
$this->feedTitle(),
$this->feedDesc(),
$this->feedUrl() );
}
function feedTitle() {
- global $wgLanguageCode, $wgSitename;
$desc = $this->getDescription();
- return "$wgSitename - $desc [$wgLanguageCode]";
+ $code = $this->getConfig()->get( 'LanguageCode' );
+ $sitename = $this->getConfig()->get( 'Sitename' );
+ return "$sitename - $desc [$code]";
}
function feedDesc() {
* Includes some static functions for handling the special page list deprecated
* in favor of SpecialPageFactory.
*
- * @todo Turn this into a real ContextSource
* @ingroup SpecialPage
*/
class SpecialPage {
}
/**
- * If the user is not logged in, throws UserNotLoggedIn error.
+ * If the user is not logged in, throws UserNotLoggedIn error
*
- * Default error message includes a link to Special:Userlogin with properly set 'returnto' query
- * parameter.
+ * The user will be redirected to Special:Userlogin with the given message as an error on
+ * the form.
*
* @since 1.23
- * @param string|Message $reasonMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
- * will be used as message keys. If a string is given, the message will also receive a
- * formatted login link (generated using the 'loginreqlink' message) as first parameter. If a
- * Message is given, it will be passed on verbatim.
- * @param string|Message $titleMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
- * will be used as message keys.
+ * @param string $reasonMsg [optional] Message key to be displayed on login page
+ * @param string $titleMsg [optional] Passed on to UserNotLoggedIn constructor
* @throws UserNotLoggedIn
*/
- public function requireLogin( $reasonMsg = null, $titleMsg = null ) {
+ public function requireLogin(
+ $reasonMsg = 'exception-nologin-text', $titleMsg = 'exception-nologin'
+ ) {
if ( $this->getUser()->isAnon() ) {
- // Use default messages if not given or explicit null passed
- if ( !$reasonMsg ) {
- $reasonMsg = 'exception-nologin-text-manual';
- }
- if ( !$titleMsg ) {
- $titleMsg = 'exception-nologin';
- }
-
- // Convert to Messages with current context
- if ( is_string( $reasonMsg ) ) {
- $loginreqlink = Linker::linkKnown(
- SpecialPage::getTitleFor( 'Userlogin' ),
- $this->msg( 'loginreqlink' )->escaped(),
- array(),
- array( 'returnto' => $this->getPageTitle()->getPrefixedText() )
- );
- $reasonMsg = $this->msg( $reasonMsg )->rawParams( $loginreqlink );
- }
- if ( is_string( $titleMsg ) ) {
- $titleMsg = $this->msg( $titleMsg );
- }
-
throw new UserNotLoggedIn( $reasonMsg, $titleMsg );
}
}
$out->setArticleRelated( false );
$out->setRobotPolicy( $this->getRobotPolicy() );
$out->setPageTitle( $this->getDescription() );
+ if ( $this->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
+ $out->addModuleStyles( array(
+ 'mediawiki.ui.input',
+ 'mediawiki.ui.checkbox',
+ ) );
+ }
}
/**
* @param array $params
*/
protected function addFeedLinks( $params ) {
- global $wgFeedClasses;
-
$feedTemplate = wfScript( 'api' );
- foreach ( $wgFeedClasses as $format => $class ) {
+ foreach ( $this->getConfig()->get( 'FeedClasses' ) as $format => $class ) {
$theseParams = $params + array( 'feedformat' => $format );
$url = wfAppendQuery( $feedTemplate, $theseParams );
$this->getOutput()->addFeedLink( $format, $url );
* @since 1.21
*/
public function getFinalGroupName() {
- global $wgSpecialPageGroups;
$name = $this->getName();
+ $specialPageGroups = $this->getConfig()->get( 'SpecialPageGroups' );
// Allow overbidding the group from the wiki side
$msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
// Group '-' is used as default to have the chance to determine,
// if the special pages overrides this method,
// if not overridden, $wgSpecialPageGroups is checked for b/c
- if ( $group === '-' && isset( $wgSpecialPageGroups[$name] ) ) {
- $group = $wgSpecialPageGroups[$name];
+ if ( $group === '-' && isset( $specialPageGroups[$name] ) ) {
+ $group = $specialPageGroups[$name];
}
}
*/
protected $hideRights = array();
+ /**
+ * @var array
+ */
+ private $blockStatusByUid;
+
/**
* @param IContextSource $context
* @param null $group Unused
* @param string $par Parameter passed to the page
*/
function __construct( IContextSource $context = null, $group = null, $par = null ) {
- global $wgActiveUserDays;
-
parent::__construct( $context );
- $this->RCMaxAge = $wgActiveUserDays;
+ $this->RCMaxAge = $this->getConfig()->get( 'ActiveUserDays' );
$un = $this->getRequest()->getText( 'username', $par );
$this->requestedUser = '';
if ( $un != '' ) {
}
function getPageHeader() {
- global $wgScript;
-
$self = $this->getTitle();
$limit = $this->mLimit ? Html::hidden( 'limit', $this->mLimit ) : '';
# Form tag
- $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
+ $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) );
$out .= Xml::fieldset( $this->msg( 'activeusers' )->text() ) . "\n";
$out .= Html::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
* @param string $par Parameter passed to the page or null
*/
public function execute( $par ) {
- global $wgActiveUserDays;
+ $days = $this->getConfig()->get( 'ActiveUserDays' );
$this->setHeaders();
$this->outputHeader();
$out = $this->getOutput();
$out->wrapWikiMsg( "<div class='mw-activeusers-intro'>\n$1\n</div>",
- array( 'activeusers-intro', $this->getLanguage()->formatNum( $wgActiveUserDays ) ) );
+ array( 'activeusers-intro', $this->getLanguage()->formatNum( $days ) ) );
// Occasionally merge in new updates
- $seconds = min( self::mergeActiveUsers( 600 ), $wgActiveUserDays * 86400 );
+ $seconds = min( self::mergeActiveUsers( 600, $days ), $days * 86400 );
// Mention the level of staleness
$out->addWikiMsg( 'cachedspecial-viewing-cached-ttl',
$this->getLanguage()->formatDuration( $seconds ) );
}
/**
- * @param intr $period Seconds (do updates no more often than this)
+ * @param int $period Seconds (do updates no more often than this)
+ * @param int $days How many days user must be idle before he is considered inactive
* @return int How many seconds old the cache is
*/
- public static function mergeActiveUsers( $period ) {
- global $wgActiveUserDays;
-
+ public static function mergeActiveUsers( $period, $days ) {
$dbr = wfGetDB( DB_SLAVE );
$cTime = $dbr->selectField( 'querycache_info',
'qci_timestamp',
if ( !$cTime || ( time() - wfTimestamp( TS_UNIX, $cTime ) ) > $period ) {
$dbw = wfGetDB( DB_MASTER );
if ( $dbw->estimateRowCount( 'recentchanges' ) <= 10000 ) {
- $window = $wgActiveUserDays * 86400; // small wiki
+ $window = $days * 86400; // small wiki
} else {
$window = $period * 2;
}
- $cTime = self::doQueryCacheUpdate( $dbw, $window ) ?: $cTime;
+ $cTime = self::doQueryCacheUpdate( $dbw, $days, $window ) ?: $cTime;
}
}
return ( time() -
- ( $cTime ? wfTimestamp( TS_UNIX, $cTime ) : $wgActiveUserDays * 86400 ) );
+ ( $cTime ? wfTimestamp( TS_UNIX, $cTime ) : $days * 86400 ) );
}
/**
public static function cacheUpdate( DatabaseBase $dbw ) {
global $wgActiveUserDays;
- self::doQueryCacheUpdate( $dbw, $wgActiveUserDays * 86400 );
+ self::doQueryCacheUpdate( $dbw, $wgActiveUserDays, $wgActiveUserDays * 86400 );
}
/**
* Update the query cache as needed
*
* @param DatabaseBase $dbw
+ * @param int $days How many days user must be idle before he is considered inactive
* @param int $window Maximum time range of new data to scan (in seconds)
* @return int|bool UNIX timestamp the cache is now up-to-date as of (false on error)
*/
- protected static function doQueryCacheUpdate( DatabaseBase $dbw, $window ) {
- global $wgActiveUserDays;
-
+ protected static function doQueryCacheUpdate( DatabaseBase $dbw, $days, $window ) {
$lockKey = wfWikiID() . '-activeusers';
if ( !$dbw->lock( $lockKey, __METHOD__, 1 ) ) {
return false; // exclusive update (avoids duplicate entries)
// Pick the date range to fetch from. This is normally from the last
// update to till the present time, but has a limited window for sanity.
// If the window is limited, multiple runs are need to fully populate it.
- $sTimestamp = max( $cTimeUnix, $now - $wgActiveUserDays * 86400 );
+ $sTimestamp = max( $cTimeUnix, $now - $days * 86400 );
$eTimestamp = min( $sTimestamp + $window, $now );
// Get all the users active since the last update
$dbw->delete( 'querycachetwo',
array(
'qcc_type' => 'activeusers',
- 'qcc_value < ' . $dbw->addQuotes( $now - $wgActiveUserDays * 86400 ) // TS_UNIX
+ 'qcc_value < ' . $dbw->addQuotes( $now - $days * 86400 ) // TS_UNIX
),
__METHOD__
);
);
if ( $res->numRows() > 0 ) {
- $out = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-chunk' ) );
+ $out = Xml::openElement( 'ul', array( 'class' => 'mw-allpages-chunk' ) );
while ( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
$t = Title::newFromRow( $s );
if ( $t ) {
- $link = ( $s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
+ $out .= '<li' .
+ ( $s->page_is_redirect ? ' class="allpagesredirect"' : '' ) .
+ '>' .
Linker::link( $t ) .
- ( $s->page_is_redirect ? '</div>' : '' );
+ "</li>\n";
} else {
- $link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
+ $out .= '<li>[[' . htmlspecialchars( $s->page_title ) . "]]</li>\n";
}
-
- if ( $n % 3 == 0 ) {
- $out .= '<tr>';
- }
-
- $out .= "<td style=\"width:33%\">$link</td>";
- $n++;
- if ( $n % 3 == 0 ) {
- $out .= "</tr>\n";
- }
- }
-
- if ( ( $n % 3 ) != 0 ) {
- $out .= "</tr>\n";
}
- $out .= Xml::closeElement( 'table' );
+ $out .= Xml::closeElement( 'ul' );
} else {
$out = '';
}
'flatlist' => true,
),
'Limit' => array(
- 'class' => 'HTMLBlockedUsersItemSelect',
+ 'type' => 'limitselect',
'label-message' => 'table_pager_limit_label',
'options' => array(
$lang->formatNum( 20 ) => 20,
wfProfileOut( __METHOD__ );
}
}
-
-/**
- * Items per page dropdown. Essentially a crap workaround for bug 32603.
- */
-class HTMLBlockedUsersItemSelect extends HTMLSelectField {
- /**
- * Basically don't do any validation. If it's a number that's fine. Also,
- * add it to the list if it's not there already
- *
- * @param string $value
- * @param array $alldata
- * @return bool
- */
- function validate( $value, $alldata ) {
- if ( $value == '' ) {
- return true;
- }
-
- // Let folks pick an explicit limit not from our list, as long as it's a real numbr.
- if ( !in_array( $value, $this->mParams['options'] )
- && $value == intval( $value )
- && $value > 0
- ) {
- // This adds the explicitly requested limit value to the drop-down,
- // then makes sure it's sorted correctly so when we output the list
- // later, the custom option doesn't just show up last.
- $this->mParams['options'][$this->mParent->getLanguage()->formatNum( $value )] =
- intval( $value );
- asort( $this->mParams['options'] );
- }
-
- return true;
- }
-}
/**
* Main execution point
+ * @param string|null $par
*/
function execute( $par ) {
$this->getOutput()->disallowUserJs();
}
/**
+ * @param string $oldpass
+ * @param string $newpass
+ * @param string $retype
* @throws PasswordError When cannot set the new password because requirements not met.
*/
protected function attemptReset( $oldpass, $newpass, $retype ) {
}
if ( $feedType ) {
- // Maintain some level of backwards compatability
+ // Maintain some level of backwards compatibility
// If people request feeds using the old parameters, redirect to API
$feedParams['feedformat'] = $feedType;
$url = wfAppendQuery( wfScript( 'api' ), $feedParams );
/**
* Show the special page
+ * @param string|null $subpage
*/
function execute( $subpage ) {
global $wgParser;
*/
public function __construct() {
parent::__construct( 'Import', 'import' );
- global $wgImportTargetNamespace;
- $this->namespace = $wgImportTargetNamespace;
+ $this->namespace = $this->getConfig()->get( 'ImportTargetNamespace' );
}
/**
* Execute
+ * @param string|null $par
*/
function execute( $par ) {
$this->setHeaders();
* Do the actual import
*/
private function doImport() {
- global $wgImportSources, $wgExportMaxLinkDepth;
-
$isUpload = false;
$request = $this->getRequest();
$this->namespace = $request->getIntOrNull( 'namespace' );
$sourceName = $request->getVal( "source" );
$this->logcomment = $request->getText( 'log-comment' );
- $this->pageLinkDepth = $wgExportMaxLinkDepth == 0
+ $this->pageLinkDepth = $this->getConfig()->get( 'ExportMaxLinkDepth' ) == 0
? 0
: $request->getIntOrNull( 'pagelink-depth' );
$this->rootpage = $request->getText( 'rootpage' );
throw new PermissionsError( 'import' );
}
$this->interwiki = $request->getVal( 'interwiki' );
- if ( !in_array( $this->interwiki, $wgImportSources ) ) {
+ if ( !in_array( $this->interwiki, $this->getConfig()->get( 'ImportSources' ) ) ) {
$source = Status::newFatal( "import-invalid-interwiki" );
} else {
$this->history = $request->getCheck( 'interwikiHistory' );
}
private function showForm() {
- global $wgImportSources, $wgExportMaxLinkDepth;
-
$action = $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) );
$user = $this->getUser();
$out = $this->getOutput();
+ $importSources = $this->getConfig()->get( 'ImportSources' );
if ( $user->isAllowed( 'importupload' ) ) {
$out->addHTML(
Xml::closeElement( 'fieldset' )
);
} else {
- if ( empty( $wgImportSources ) ) {
+ if ( empty( $importSources ) ) {
$out->addWikiMsg( 'importnosources' );
}
}
- if ( $user->isAllowed( 'import' ) && !empty( $wgImportSources ) ) {
+ if ( $user->isAllowed( 'import' ) && !empty( $importSources ) ) {
# Show input field for import depth only if $wgExportMaxLinkDepth > 0
$importDepth = '';
- if ( $wgExportMaxLinkDepth > 0 ) {
+ if ( $this->getConfig()->get( 'ExportMaxLinkDepth' ) > 0 ) {
$importDepth = "<tr>
<td class='mw-label'>" .
$this->msg( 'export-pagelinks' )->parse() .
)
);
- foreach ( $wgImportSources as $prefix ) {
+ foreach ( $importSources as $prefix ) {
$selected = ( $this->interwiki === $prefix ) ? ' selected="selected"' : '';
$out->addHTML( Xml::option( $prefix, $prefix, $selected ) );
}
/**
* Show the special page
+ * @param string|null $par
*/
public function execute( $par ) {
global $wgImplicitGroups;
* @private
*/
function showOptions( $namespace, $type = 'edit', $level ) {
- global $wgScript;
- $action = htmlspecialchars( $wgScript );
+ $action = htmlspecialchars( wfScript() );
$title = $this->getPageTitle();
$special = htmlspecialchars( $title->getPrefixedDBkey() );
* @private
*/
function getLevelMenu( $pr_level ) {
- global $wgRestrictionLevels;
-
// Temporary array
$m = array( $this->msg( 'restriction-level-all' )->text() => 0 );
$options = array();
// First pass to load the log names
- foreach ( $wgRestrictionLevels as $type ) {
+ foreach ( $this->getConfig()->get( 'RestrictionLevels' ) as $type ) {
if ( $type != '' && $type != '*' ) {
// Messages: restriction-level-sysop, restriction-level-autoconfirmed
$text = $this->msg( "restriction-level-$type" )->text();
}
public function execute( $par ) {
- global $wgScript;
-
$cat = false;
$categoryStr = $this->getRequest()->getText( 'category', $par );
$submit = Html::input( '', $submitText, 'submit' );
$msg = $this->msg( 'randomincategory-selectcategory' );
- $form = Html::rawElement( 'form', array( 'action' => $wgScript ),
+ $form = Html::rawElement( 'form', array( 'action' => wfScript() ),
Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
$msg->rawParams( $input, $submit )->parse()
);
* @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
*/
public function doMainQuery( $conds, $opts ) {
- global $wgAllowCategorizedRecentChanges;
-
$dbr = $this->getDB();
$user = $this->getUser();
);
// Build the final data
- if ( $wgAllowCategorizedRecentChanges ) {
+ if ( $this->getConfig()->get( 'AllowCategorizedRecentChanges' ) ) {
$this->filterByCategories( $rows, $opts );
}
* @return array
*/
private function getFeedQuery() {
- global $wgFeedLimit;
$query = array_filter( $this->getOptions()->getAllValues(), function ( $value ) {
// API handles empty parameters in a different way
return $value !== '';
} );
$query['action'] = 'feedrecentchanges';
- if ( $query['limit'] > $wgFeedLimit ) {
- $query['limit'] = $wgFeedLimit;
+ $feedLimit = $this->getConfig()->get( 'FeedLimit' );
+ if ( $query['limit'] > $feedLimit ) {
+ $query['limit'] = $feedLimit;
}
return $query;
* @param FormOptions $opts
*/
public function outputChangesList( $rows, $opts ) {
- global $wgRCShowWatchingUsers, $wgShowUpdatedMarker;
-
$limit = $opts['limit'];
- $showWatcherCount = $wgRCShowWatchingUsers
+ $showWatcherCount = $this->getConfig()->get( 'RCShowWatchingUsers' )
&& $this->getUser()->getOption( 'shownumberswatching' );
$watcherCache = array();
$rc = RecentChange::newFromRow( $obj );
$rc->counter = $counter++;
# Check if the page has been updated since the last visit
- if ( $wgShowUpdatedMarker && !empty( $obj->wl_notificationtimestamp ) ) {
+ if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) && !empty( $obj->wl_notificationtimestamp ) ) {
$rc->notificationtimestamp = ( $obj->rc_timestamp >= $obj->wl_notificationtimestamp );
} else {
$rc->notificationtimestamp = false; // Default
* @param int $numRows Number of rows in the result to show after this header
*/
public function doHeader( $opts, $numRows ) {
- global $wgScript;
-
$this->setTopText( $opts );
$defaults = $opts->getAllValues();
$t = $this->getPageTitle();
$out .= Html::hidden( 'title', $t->getPrefixedText() );
- $form = Xml::tags( 'form', array( 'action' => $wgScript ), $out );
+ $form = Xml::tags( 'form', array( 'action' => wfScript() ), $out );
$panel[] = $form;
$panelString = implode( "\n", $panel );
$extraOpts = array();
$extraOpts['namespace'] = $this->namespaceFilterForm( $opts );
- global $wgAllowCategorizedRecentChanges;
- if ( $wgAllowCategorizedRecentChanges ) {
+ if ( $this->getConfig()->get( 'AllowCategorizedRecentChanges' ) ) {
$extraOpts['category'] = $this->categoryFilterForm( $opts );
}
* @return string
*/
function optionsPanel( $defaults, $nondefaults, $numRows ) {
- global $wgRCLinkLimits, $wgRCLinkDays;
-
$options = $nondefaults + $defaults;
$note = '';
}
# Sort data for display and make sure it's unique after we've added user data.
- $linkLimits = $wgRCLinkLimits;
+ $linkLimits = $this->getConfig()->get( 'RCLinkLimits' );
$linkLimits[] = $options['limit'];
sort( $linkLimits );
$linkLimits = array_unique( $linkLimits );
- $linkDays = $wgRCLinkDays;
+ $linkDays = $this->getConfig()->get( 'RCLinkDays' );
$linkDays[] = $options['days'];
sort( $linkDays );
$linkDays = array_unique( $linkDays );
return $res;
}
- protected function runMainQueryHook( &$tables, &$select, &$conds, &$query_options, &$join_conds, $opts ) {
- return parent::runMainQueryHook( $tables, $select, $conds, $query_options, $join_conds, $opts )
- && wfRunHooks(
- 'SpecialRecentChangesQuery',
- array( &$conds, &$tables, &$join_conds, $opts, &$query_options, &$select ),
- '1.23'
- );
- }
-
function setTopText( FormOptions $opts ) {
$target = $this->getTargetTitle();
if ( $target ) {
$this->getOutput()->addBacklinkSubtitle( $target );
+ $this->getSkin()->setRelevantTitle( $target );
}
}
/**
* Set $mType and $mValue based on parsed value of $subpage.
+ * @param string $subpage
*/
function setParameter( $subpage ) {
// parse $subpage to pull out the parts
/**
* Suppress the submit button if there's nothing to do;
* provide additional message on it otherwise.
+ * @param HTMLForm $form
*/
protected function alterForm( HTMLForm $form ) {
if ( $this->getTokensList() ) {
/**
* Report that the submit operation failed
+ * @param Status $status
*/
protected function failure( $status ) {
// Messages: revdelete-failure, logdelete-failure
$search = str_replace( "\n", " ", $request->getText( 'search', $titleParam ) );
$this->load();
+ if ( !is_null( $request->getVal( 'nsRemember' ) ) ) {
+ $this->saveNamespaces();
+ // Remove the token from the URL to prevent the user from inadvertently
+ // exposing it (e.g. by pasting it into a public wiki page) or undoing
+ // later settings changes (e.g. by reloading the page).
+ $query = $request->getValues();
+ unset( $query['title'], $query['nsRemember'] );
+ $out->redirect( $this->getPageTitle()->getFullURL( $query ) );
+ return;
+ }
$this->searchEngineType = $request->getVal( 'srbackend' );
# No match, generate an edit URL
$title = Title::newFromText( $term );
if ( !is_null( $title ) ) {
- global $wgGoToEdit;
wfRunHooks( 'SpecialSearchNogomatch', array( &$title ) );
wfDebugLog( 'nogomatch', $title->getFullText(), 'private' );
# If the feature is enabled, go straight to the edit page
- if ( $wgGoToEdit ) {
+ if ( $this->getConfig()->get( 'GoToEdit' ) ) {
$this->getOutput()->redirect( $title->getFullURL( array( 'action' => 'edit' ) ) );
return;
* @param string $term
*/
public function showResults( $term ) {
- global $wgDisableTextSearch, $wgSearchForwardUrl, $wgContLang, $wgScript;
+ global $wgContLang;
$profile = new ProfileSection( __METHOD__ );
$search = $this->getSearchEngine();
$search->setLimitOffset( $this->limit, $this->offset );
$search->setNamespaces( $this->namespaces );
- $this->saveNamespaces();
$search->prefix = $this->mPrefix;
$term = $search->transformSearchTerm( $term );
$out = $this->getOutput();
- if ( $wgDisableTextSearch ) {
- if ( $wgSearchForwardUrl ) {
- $url = str_replace( '$1', urlencode( $term ), $wgSearchForwardUrl );
+ if ( $this->getConfig()->get( 'DisableTextSearch' ) ) {
+ $searchFowardUrl = $this->getConfig()->get( 'SearchForwardUrl' );
+ if ( $searchFowardUrl ) {
+ $url = str_replace( '$1', urlencode( $term ), $searchFowardUrl );
$out->redirect( $url );
} else {
$out->addHTML(
array(
'id' => ( $this->profile === 'advanced' ? 'powersearch' : 'search' ),
'method' => 'get',
- 'action' => $wgScript
+ 'action' => wfScript(),
)
)
);
$request = $this->getRequest();
if ( $user->isLoggedIn() &&
- !is_null( $request->getVal( 'nsRemember' ) ) &&
$user->matchEditToken(
- $request->getVal( 'nsToken' ),
+ $request->getVal( 'nsRemember' ),
'searchnamespace',
$request
)
foreach ( MWNamespace::getValidNamespaces() as $n ) {
$user->setOption( 'searchNs' . $n, false );
}
- // The request parameters include all the namespaces we just searched.
+ // The request parameters include all the namespaces to be searched.
// Even if they're the same as an existing profile, they're not eaten.
foreach ( $this->namespaces as $n ) {
$user->setOption( 'searchNs' . $n, true );
$lang = $this->getLanguage();
- // format score
- if ( is_null( $result->getScore() ) ) {
- // Search engine doesn't report scoring info
- $score = '';
- } else {
- $percent = sprintf( '%2.1f', $result->getScore() * 100 );
- $score = $this->msg( 'search-result-score' )->numParams( $percent )->text()
- . ' - ';
- }
-
// format description
$byteSize = $result->getByteSize();
$wordCount = $result->getWordCount();
'<td style="vertical-align: top;">' .
"{$link} {$redirect} {$section} {$fileMatch}" .
$extract .
- "<div class='mw-search-result-data'>{$score}{$desc} - {$date}{$related}</div>" .
+ "<div class='mw-search-result-data'>{$desc} - {$date}{$related}</div>" .
'</td>' .
'</tr>' .
'</table>' .
$html = null;
+ $score = '';
if ( wfRunHooks( 'ShowSearchHit', array(
$this, $result, $terms,
&$link, &$redirect, &$section, &$extract,
) ) ) {
$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>" .
+ "<div class='mw-search-result-data'>{$size} - {$date}{$related}</div>" .
"</li>\n";
}
$remember = '';
$user = $this->getUser();
if ( $user->isLoggedIn() ) {
- $remember .= Html::hidden(
- 'nsToken',
- $user->getEditToken(
- 'searchnamespace',
- $this->getRequest()
- )
- ) .
- Xml::checkLabel(
+ $remember .= Xml::checkLabel(
wfMessage( 'powersearch-remember' )->text(),
'nsRemember',
'mw-search-powersearch-remember',
- false
+ false,
+ // The token goes here rather than in a hidden field so it
+ // is only sent when necessary (not every form submission).
+ array( 'value' => $user->getEditToken(
+ 'searchnamespace',
+ $this->getRequest()
+ ) )
);
}
return Xml::openElement( 'fieldset', array( 'id' => 'mw-searchoptions' ) ) .
Xml::element( 'legend', null, $this->msg( 'powersearch-legend' )->text() ) .
Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
- Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
+ Xml::element( 'div', array( 'id' => 'mw-search-togglebox' ), '', false ) .
Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) .
$hidden .
/**
* @param string $term
+ * @param int $resultsShown
+ * @param int $totalNum
* @return string
*/
protected function shortDialog( $term, $resultsShown, $totalNum ) {
}
private function getPageGroups() {
- global $wgSortSpecialPages;
-
$pages = SpecialPageFactory::getUsablePages( $this->getUser() );
if ( !count( $pages ) ) {
}
/** Sort */
- if ( $wgSortSpecialPages ) {
- foreach ( $groups as $group => $sortedPages ) {
- ksort( $groups[$group] );
- }
+ foreach ( $groups as $group => $sortedPages ) {
+ ksort( $groups[$group] );
}
/** Always move "other" to end */
}
public function execute( $par ) {
- global $wgMemc, $wgDisableCounters, $wgMiserMode;
+ global $wgMemc;
+
+ $disableCounters = $this->getConfig()->get( 'DisableCounters' );
+ $miserMode = $this->getConfig()->get( 'MiserMode' );
$this->setHeaders();
$this->getOutput()->addModuleStyles( 'mediawiki.special' );
# Staticic - views
$viewsStats = '';
- if ( !$wgDisableCounters ) {
+ if ( !$disableCounters ) {
$viewsStats = $this->getViewsStats();
}
# Set active user count
- if ( !$wgMiserMode ) {
+ if ( !$miserMode ) {
$key = wfMemcKey( 'sitestats', 'activeusers-updated' );
// Re-calculate the count if the last tally is old...
if ( !$wgMemc->get( $key ) ) {
$text .= $viewsStats;
# Statistic - popular pages
- if ( !$wgDisableCounters && !$wgMiserMode ) {
+ if ( !$disableCounters && !$miserMode ) {
$text .= $this->getMostViewedPages();
}
}
private function getUserStats() {
- global $wgActiveUserDays;
-
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), $this->msg( 'statistics-header-users' )->parse() ) .
Xml::closeElement( 'tr' ) .
$this->getLanguage()->formatNum( $this->activeUsers ),
array( 'class' => 'mw-statistics-users-active' ),
'statistics-users-active-desc',
- $this->getLanguage()->formatNum( $wgActiveUserDays )
+ $this->getLanguage()->formatNum( $this->getConfig()->get( 'ActiveUserDays' ) )
);
}
private function getGroupStats() {
- global $wgGroupPermissions, $wgImplicitGroups;
$text = '';
- foreach ( $wgGroupPermissions as $group => $permissions ) {
+ foreach ( $this->getConfig()->get( 'GroupPermissions' ) as $group => $permissions ) {
# Skip generic * and implicit groups
- if ( in_array( $group, $wgImplicitGroups ) || $group == '*' ) {
+ if ( in_array( $group, $this->getConfig()->get( 'ImplicitGroups' ) ) || $group == '*' ) {
continue;
}
$groupname = htmlspecialchars( $group );
}
function execute( $par ) {
- // Global array containing names of tracking categories
- global $wgTrackingCategories;
-
$this->setHeaders();
$this->outputHeader();
$this->getOutput()->allowClickjacking();
</tr></thead>"
);
- foreach ( $wgTrackingCategories as $catMsg ) {
+ foreach ( $this->getConfig()->get( 'TrackingCategories' ) as $catMsg ) {
/*
* Check if the tracking category varies by namespace
* Otherwise only pages in the current namespace will be displayed
/** @var Status */
protected $revisionStatus;
- function __construct( $title ) {
+ /** @var Config */
+ protected $config;
+
+ function __construct( $title, Config $config = null ) {
if ( is_null( $title ) ) {
throw new MWException( __METHOD__ . ' given a null title.' );
}
$this->title = $title;
+ if ( $config === null ) {
+ wfDebug( __METHOD__ . ' did not have a Config object passed to it' );
+ $config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
+ }
+ $this->config = $config;
}
/**
* @return ResultWrapper
*/
function listRevisions() {
- global $wgContentHandlerUseDB;
-
$dbr = wfGetDB( DB_SLAVE );
$tables = array( 'archive' );
'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1',
);
- if ( $wgContentHandlerUseDB ) {
+ if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
$fields[] = 'ar_content_format';
$fields[] = 'ar_content_model';
}
* @return Revision|null
*/
function getRevision( $timestamp ) {
- global $wgContentHandlerUseDB;
-
$dbr = wfGetDB( DB_SLAVE );
$fields = array(
'ar_sha1',
);
- if ( $wgContentHandlerUseDB ) {
+ if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
$fields[] = 'ar_content_format';
$fields[] = 'ar_content_model';
}
* @return Status Status object containing the number of revisions restored on success
*/
private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) {
- global $wgContentHandlerUseDB;
-
if ( wfReadOnly() ) {
throw new ReadOnlyError();
}
'ar_sha1'
);
- if ( $wgContentHandlerUseDB ) {
+ if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
$fields[] = 'ar_content_format';
$fields[] = 'ar_content_model';
}
}
function showSearchForm() {
- global $wgScript;
-
$out = $this->getOutput();
$out->setPageTitle( $this->msg( 'undelete-search-title' ) );
$out->addHTML(
- Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
+ Xml::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) ) .
Xml::fieldset( $this->msg( 'undelete-search-box' )->text() ) .
Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
Html::rawElement(
return;
}
- $archive = new PageArchive( $this->mTargetObj );
+ $archive = new PageArchive( $this->mTargetObj, $this->getConfig() );
if ( !wfRunHooks( 'UndeleteForm::showRevision', array( &$archive, $this->mTargetObj ) ) ) {
return;
}
array( 'undeletepagetitle', wfEscapeWikiText( $this->mTargetObj->getPrefixedText() ) )
);
- $archive = new PageArchive( $this->mTargetObj );
+ $archive = new PageArchive( $this->mTargetObj, $this->getConfig() );
wfRunHooks( 'UndeleteForm::showHistory', array( &$archive, $this->mTargetObj ) );
/*
$text = $archive->getLastRevisionText();
}
function undelete() {
- global $wgUploadMaintenance;
-
- if ( $wgUploadMaintenance && $this->mTargetObj->getNamespace() == NS_FILE ) {
+ if ( $this->getConfig()->get( 'UploadMaintenance' ) && $this->mTargetObj->getNamespace() == NS_FILE ) {
throw new ErrorPageError( 'undelete-error', 'filedelete-maintenance' );
}
}
$out = $this->getOutput();
- $archive = new PageArchive( $this->mTargetObj );
+ $archive = new PageArchive( $this->mTargetObj, $this->getConfig() );
wfRunHooks( 'UndeleteForm::undelete', array( &$archive, $this->mTargetObj ) );
$ok = $archive->undelete(
$this->mTargetTimestamp,
}
public function checkExecutePermissions( User $user ) {
- global $wgReadOnlyFile;
-
parent::checkExecutePermissions( $user );
# If the lock file isn't writable, we can do sweet bugger all
- if ( !file_exists( $wgReadOnlyFile ) ) {
+ if ( !file_exists( $this->getConfig()->get( 'ReadOnlyFile' ) ) ) {
throw new ErrorPageError( 'lockdb', 'databasenotlocked' );
}
}
}
public function onSubmit( array $data ) {
- global $wgReadOnlyFile;
-
if ( !$data['Confirm'] ) {
return Status::newFatal( 'locknoconfirm' );
}
+ $readOnlyFile = $this->getConfig()->get( 'ReadOnlyFile' );
wfSuppressWarnings();
- $res = unlink( $wgReadOnlyFile );
+ $res = unlink( $readOnlyFile );
wfRestoreWarnings();
if ( $res ) {
return Status::newGood();
} else {
- return Status::newFatal( 'filedeleteerror', $wgReadOnlyFile );
+ return Status::newFatal( 'filedeleteerror', $readOnlyFile );
}
}
}
function getQueryInfo() {
- global $wgCountCategorizedImagesAsUsed;
$retval = array(
'tables' => array( 'image', 'imagelinks' ),
'fields' => array(
'join_conds' => array( 'imagelinks' => array( 'LEFT JOIN', 'il_to = img_name' ) )
);
- if ( $wgCountCategorizedImagesAsUsed ) {
+ if ( $this->getConfig()->get( 'CountCategorizedImagesAsUsed' ) ) {
// Order is significant
$retval['tables'] = array( 'image', 'page', 'categorylinks',
'imagelinks' );
/**
* Add the JS
+ * @param string|null $par
*/
public function execute( $par ) {
parent::execute( $par );
* @return bool Success
*/
private function outputThumbFromStash( $file, $params ) {
- // this global, if it exists, points to a "scaler", as you might find in
+ $flags = 0;
+ // this config option, if it exists, points to a "scaler", as you might find in
// the Wikimedia Foundation cluster. See outputRemoteScaledThumb(). This
// is part of our horrible NFS-based system, we create a file on a mount
// point here, but fetch the scaled file from somewhere else that
// happens to share it over NFS.
- global $wgUploadStashScalerBaseUrl;
-
- $flags = 0;
- if ( $wgUploadStashScalerBaseUrl ) {
+ if ( $this->getConfig()->get( 'UploadStashScalerBaseUrl' ) ) {
$this->outputRemoteScaledThumb( $file, $params, $flags );
} else {
$this->outputLocallyScaledThumb( $file, $params, $flags );
throw new UploadStashFileNotFoundException( "no local path for scaled item" );
}
- // now we should construct a File, so we can get mime and other such info in a standard way
- // n.b. mimetype may be different from original (ogx original -> jpeg thumb)
+ // now we should construct a File, so we can get MIME and other such info in a standard way
+ // n.b. MIME type may be different from original (ogx original -> jpeg thumb)
$thumbFile = new UnregisteredLocalFile( false,
$this->stash->repo, $thumbnailImage->getStoragePath(), false );
if ( !$thumbFile ) {
* @return bool Success
*/
private function outputRemoteScaledThumb( $file, $params, $flags ) {
- // This global probably looks something like
+ // This option probably looks something like
// 'http://upload.wikimedia.org/wikipedia/test/thumb/temp'. Do not use
// trailing slash.
- global $wgUploadStashScalerBaseUrl;
- $scalerBaseUrl = $wgUploadStashScalerBaseUrl;
+ $scalerBaseUrl = $this->getConfig()->get( 'UploadStashScalerBaseUrl' );
if ( preg_match( '/^\/\//', $scalerBaseUrl ) ) {
// this is apparently a protocol-relative URL, which makes no sense in this context,
* Output HTTP response of raw content
* Side effect: writes HTTP response to STDOUT.
* @param string $content Content
- * @param string $contentType Mime type
+ * @param string $contentType MIME type
* @throws SpecialUploadStashTooLargeException
* @return bool
*/
/**
* Output headers for streaming
* @todo Unsure about encoding as binary; if we received from HTTP perhaps
- * we should use that encoding, concatted with semicolon to mimeType as it
+ * we should use that encoding, concatenated with semicolon to `$contentType` as it
* usually is.
* Side effect: preps PHP to write headers to STDOUT.
* @param string $contentType String suitable for content-type header
const NEED_TOKEN = 12;
const WRONG_TOKEN = 13;
+ /**
+ * Valid error and warning messages
+ *
+ * Special:Userlogin can show an error or warning message on the form when
+ * coming from another page. This is done via the ?error= or ?warning= GET
+ * parameters.
+ *
+ * This array is the list of valid message keys. All other values will be
+ * ignored.
+ *
+ * @since 1.24
+ * @var string[]
+ */
+ public static $validErrorMessages = array(
+ 'exception-nologin-text',
+ 'watchlistanontext',
+ 'changeemail-no-info',
+ 'resetpass-no-info',
+ 'confirmemail_needlogin',
+ 'prefsnologintext2',
+ );
+
public $mAbortLoginErrorMsg = null;
protected $mUsername;
protected $mType;
protected $mReason;
protected $mRealName;
+ protected $mEntryError = '';
+ protected $mEntryErrorType = 'error';
private $mTempPasswordUsed;
private $mLoaded = false;
$this->mReturnTo = $request->getVal( 'returnto', '' );
$this->mReturnToQuery = $request->getVal( 'returntoquery', '' );
+ // Show an error or warning passed on from a previous page
+ $entryError = $this->msg( $request->getVal( 'error', '' ) );
+ $entryWarning = $this->msg( $request->getVal( 'warning', '' ) );
+ // bc: provide login link as a parameter for messages where the translation
+ // was not updated
+ $loginreqlink = Linker::linkKnown(
+ $this->getPageTitle(),
+ $this->msg( 'loginreqlink' )->escaped(),
+ array(),
+ array(
+ 'returnto' => $this->mReturnTo,
+ 'returntoquery' => $this->mReturnToQuery,
+ 'uselang' => $this->mLanguage,
+ 'fromhttp' => $this->mFromHTTP ? '1' : '0',
+ )
+ );
+
+ // Only show valid error or warning messages.
+ if ( $entryError->exists()
+ && in_array( $entryError->getKey(), self::$validErrorMessages )
+ ) {
+ $this->mEntryErrorType = 'error';
+ $this->mEntryError = $entryError->rawParams( $loginreqlink )->escaped();
+
+ } elseif ( $entryWarning->exists()
+ && in_array( $entryWarning->getKey(), self::$validErrorMessages )
+ ) {
+ $this->mEntryErrorType = 'warning';
+ $this->mEntryError = $entryWarning->rawParams( $loginreqlink )->escaped();
+ }
+
if ( $wgEnableEmail ) {
$this->mEmail = $request->getText( 'wpEmail' );
} else {
}
}
- /*
+ /**
* @param string|null $subPage
*/
public function execute( $subPage ) {
}
$this->setHeaders();
+ // In the case where the user is already logged in, do not show the login page.
+ // The use case scenario for this is when a user opens a large number of tabs, is
+ // redirected to the login page on all of them, and then logs in on one, expecting
+ // all the others to work properly.
+ if ( $this->mType !== 'signup' && !$this->mPosted && $this->getUser()->isLoggedIn() ) {
+ $this->successfulLogin();
+ }
+
// If logging in and not on HTTPS, either redirect to it or offer a link.
global $wgSecureLogin;
if ( $this->mRequest->getProtocol() !== 'https' ) {
'returntoquery' => $this->mReturnToQuery !== '' ?
$this->mReturnToQuery : null,
'title' => null,
+ ( $this->mEntryErrorType === 'error' ? 'error' : 'warning' ) => $this->mEntryError,
) + $this->mRequest->getQueryValues();
$url = $title->getFullURL( $query, false, PROTO_HTTPS );
if ( $wgSecureLogin
return;
}
}
- $this->mainLoginForm( '' );
+ $this->mainLoginForm( $this->mEntryError, $this->mEntryErrorType );
}
/**
}
/**
+ * @param string $msg
+ * @param string $msgtype
* @private
*/
function mainLoginForm( $msg, $msgtype = 'error' ) {
$out->addModuleStyles( array(
'mediawiki.ui',
'mediawiki.ui.button',
+ 'mediawiki.ui.checkbox',
'mediawiki.ui.input',
'mediawiki.special.userlogin.common.styles'
) );
}
/**
+ * @param string $type
* @private
*/
function cookieRedirectCheck( $type ) {
}
/**
+ * @param string $type
* @private
*/
function onCookieRedirectCheck( $type ) {
* @return Status
*/
public function fetchUser( $username ) {
- global $wgUserrightsInterwikiDelimiter;
-
- $parts = explode( $wgUserrightsInterwikiDelimiter, $username );
+ $parts = explode( $this->getConfig()->get( 'UserrightsInterwikiDelimiter' ), $username );
if ( count( $parts ) < 2 ) {
$name = trim( $username );
$database = '';
* Output a form to allow searching for a user
*/
function switchForm() {
- global $wgScript;
$this->getOutput()->addHTML(
Html::openElement(
'form',
array(
'method' => 'get',
- 'action' => $wgScript,
+ 'action' => wfScript(),
'name' => 'uluser',
'id' => 'mw-userrights-form1'
)
/**
* main()
+ * @param string|null $par
*/
public function execute( $par ) {
global $IP, $wgExtensionCredits;
$software = array();
$software['[https://www.mediawiki.org/ MediaWiki]'] = self::getVersionLinked();
$phpKey = wfIsHHVM() ? '[http://hhvm.com/ HHVM]' :
- '[http://www.php.net/ PHP]';
+ '[https://php.net/ PHP]';
$software[$phpKey] = PHP_VERSION . " (" . PHP_SAPI . ")";
$software[$dbr->getSoftwareLink()] = $dbr->getServerInfo();
function getExtensionCredits() {
global $wgExtensionCredits;
- if ( !count( $wgExtensionCredits ) ) {
+ if (
+ count( $wgExtensionCredits ) === 0 ||
+ // Skins are displayed separately, see getSkinCredits()
+ ( count( $wgExtensionCredits ) === 1 && isset( $wgExtensionCredits['skin'] ) )
+ ) {
return '';
}
* @return string Wikitext
*/
function getSkinCredits() {
+ global $wgExtensionCredits;
+ if ( !isset( $wgExtensionCredits['skin'] ) || count( $wgExtensionCredits['skin'] ) === 0 ) {
+ return '';
+ }
+
$out = Xml::element(
'h2',
array( 'id' => 'mw-version-skin' ),
}
function getQueryInfo() {
- global $wgWantedPagesThreshold;
- $count = $wgWantedPagesThreshold - 1;
+ $count = $this->getConfig()->get( 'WantedPagesThreshold' ) - 1;
$query = array(
'tables' => array(
'pagelinks',
* @param string $subpage
*/
function execute( $subpage ) {
- global $wgEnotifWatchlist, $wgShowUpdatedMarker;
-
// Anons don't get a watchlist
$this->requireLogin( 'watchlistanontext' );
$user = $this->getUser();
$opts = $this->getOptions();
- if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker )
+ $config = $this->getConfig();
+ if ( ( $config->get( 'EnotifWatchlist' ) || $config->get( 'ShowUpdatedMarker' ) )
&& $request->getVal( 'reset' )
&& $request->wasPosted()
) {
* @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
*/
public function doMainQuery( $conds, $opts ) {
- global $wgShowUpdatedMarker;
-
$dbr = $this->getDB();
$user = $this->getUser();
),
);
- if ( $wgShowUpdatedMarker ) {
+ if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
$fields[] = 'wl_notificationtimestamp';
}
if ( $limitWatchlist ) {
* @param FormOptions $opts
*/
public function outputChangesList( $rows, $opts ) {
- global $wgShowUpdatedMarker, $wgRCShowWatchingUsers;
-
$dbr = $this->getDB();
$user = $this->getUser();
$output = $this->getOutput();
$rc = RecentChange::newFromRow( $obj );
$rc->counter = $counter++;
- if ( $wgShowUpdatedMarker ) {
+ if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
$updated = $obj->wl_notificationtimestamp;
} else {
$updated = false;
}
- if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
+ if ( $this->getConfig()->get( 'RCShowWatchingUsers' ) && $user->getOption( 'shownumberswatching' ) ) {
$rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
'COUNT(*)',
array(
}
function setTopText( FormOptions $opts ) {
- global $wgEnotifWatchlist, $wgShowUpdatedMarker;
-
$nondefaults = $opts->getChangedValues();
$form = "";
$user = $this->getUser();
$dbr = $this->getDB();
$numItems = $this->countItems( $dbr );
+ $showUpdatedMarker = $this->getConfig()->get( 'ShowUpdatedMarker' );
// Show watchlist header
$form .= "<p>";
$form .= $this->msg( 'nowatchlist' )->parse() . "\n";
} else {
$form .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n";
- if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
+ if ( $this->getConfig()->get( 'EnotifWatchlist' ) && $user->getOption( 'enotifwatchlistpages' ) ) {
$form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
}
- if ( $wgShowUpdatedMarker ) {
+ if ( $showUpdatedMarker ) {
$form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n";
}
}
$form .= "</p>";
- if ( $numItems > 0 && $wgShowUpdatedMarker ) {
+ if ( $numItems > 0 && $showUpdatedMarker ) {
$form .= Xml::openElement( 'form', array( 'method' => 'post',
'action' => $this->getPageTitle()->getLocalURL(),
'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
}
function execute( $par ) {
- global $wgQueryPageDefaultLimit;
$out = $this->getOutput();
$this->setHeaders();
$opts->add( 'target', '' );
$opts->add( 'namespace', '', FormOptions::INTNULL );
- $opts->add( 'limit', $wgQueryPageDefaultLimit );
+ $opts->add( 'limit', $this->getConfig()->get( 'QueryPageDefaultLimit' ) );
$opts->add( 'from', 0 );
$opts->add( 'back', 0 );
$opts->add( 'hideredirs', false );
* @param int $back Display from this article ID at backwards scrolling (default: 0)
*/
function showIndirectLinks( $level, $target, $limit, $from = 0, $back = 0 ) {
- global $wgMaxRedirectLinksRetrieved, $wgUseLinkNamespaceDBFields;
-
$out = $this->getOutput();
$dbr = wfGetDB( DB_SLAVE );
'il_to' => $target->getDBkey(),
);
+ $useLinkNamespaceDBFields = $this->getConfig()->get( 'UseLinkNamespaceDBFields' );
$namespace = $this->opts->getValue( 'namespace' );
if ( is_int( $namespace ) ) {
- if ( $wgUseLinkNamespaceDBFields ) {
+ if ( $useLinkNamespaceDBFields ) {
$conds['pagelinks']['pl_from_namespace'] = $namespace;
$conds['templatelinks']['tl_from_namespace'] = $namespace;
$conds['imagelinks']['il_from_namespace'] = $namespace;
$conds['pagelinks'][] = 'rd_from is NOT NULL';
}
- $queryFunc = function ( $dbr, $table, $fromCol ) use ( $conds, $target, $limit ) {
- global $wgUseLinkNamespaceDBFields;
+ $queryFunc = function ( $dbr, $table, $fromCol ) use ( $conds, $target, $limit, $useLinkNamespaceDBFields ) {
// Read an extra row as an at-end check
$queryLimit = $limit + 1;
$on = array(
'rd_title' => $target->getDBkey(),
'rd_interwiki = ' . $dbr->addQuotes( '' ) . ' OR rd_interwiki IS NULL'
);
- if ( $wgUseLinkNamespaceDBFields ) { // migration check
+ if ( $useLinkNamespaceDBFields ) { // migration check
$on['rd_namespace'] = $target->getNamespace();
}
// Inner LIMIT is 2X in case of stale backlinks with wrong namespaces
if ( $row->rd_from && $level < 2 ) {
$out->addHTML( $this->listItem( $row, $nt, $target, true ) );
- $this->showIndirectLinks( $level + 1, $nt, $wgMaxRedirectLinksRetrieved );
+ $this->showIndirectLinks( $level + 1, $nt, $this->getConfig()->get( 'MaxRedirectLinksRetrieved' ) );
$out->addHTML( Xml::closeElement( 'li' ) );
} else {
$out->addHTML( $this->listItem( $row, $nt, $target ) );
}
function whatlinkshereForm() {
- global $wgScript;
-
// We get nicer value from the title object
$this->opts->consumeValue( 'target' );
// Reset these for new requests
$namespace = $this->opts->consumeValue( 'namespace' );
# Build up the form
- $f = Xml::openElement( 'form', array( 'action' => $wgScript ) );
+ $f = Xml::openElement( 'form', array( 'action' => wfScript() ) );
# Values that should not be forgotten
$f .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
}
function getPageHeader() {
- global $wgScript;
-
# Do not show useless input form if special page is cached
if ( $this->isCached() ) {
return '';
$prefix = $this->prefix;
$t = $this->getPageTitle();
- return Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n" .
+ return Html::openElement( 'form', array( 'method' => 'get', 'action' => wfScript() ) ) . "\n" .
Html::openElement( 'fieldset' ) . "\n" .
Html::element( 'legend', null, $this->msg( 'withoutinterwiki-legend' )->text() ) . "\n" .
Html::hidden( 'title', $t->getPrefixedText() ) . "\n" .
<div class="mw-ui-vform-field">
<?php if ( $this->data['createemail'] ) { ?>
- <label class="mw-ui-checkbox-label">
+ <div class="mw-ui-checkbox">
<input name="wpCreateaccountMail" type="checkbox" value="1" id="wpCreateaccountMail" tabindex="2"
<?php if ( $this->data['createemailset'] ) {
echo 'checked="checked"';
} ?>
- >
- <?php $this->msg( 'createaccountmail' ); ?>
- </label>
+ ><label for="wpCreateaccountMail">
+ <?php $this->msg( 'createaccountmail' ); ?>
+ </label>
+ </div>
<?php } ?>
</div>
// If it's a checkbox, output the whole thing (assume it has a msg).
if ( $inputItem['type'] == 'checkbox' ) {
?>
- <label class="mw-ui-checkbox-label">
+ <div class="mw-ui-checkbox">
<input
name="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
id="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
<?php if ( !empty( $inputItem['value'] ) ) {
echo 'checked="checked"';
} ?>
- >
- <?php $this->msgHtml( $inputItem['msg'] ); ?>
- </label>
+ ><label for="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"></label>
+ </div><?php $this->msgHtml( $inputItem['msg'] ); ?>
<?php
} else {
// Not a checkbox.
<div class="mw-ui-vform-field">
<?php if ( $this->data['canremember'] ) { ?>
- <label class="mw-ui-checkbox-label">
+ <div class="mw-ui-checkbox">
<input name="wpRemember" type="checkbox" value="1" id="wpRemember" tabindex="4"
<?php if ( $this->data['remember'] ) {
echo 'checked="checked"';
} ?>
- >
- <?php echo $this->getMsg( 'userlogin-remembermypassword' )->numParams( $expirationDays )->escaped(); ?>
- </label>
+ ><label for="wpRemember">
+ <?php echo $this->getMsg( 'userlogin-remembermypassword' )->numParams( $expirationDays )->escaped(); ?></label>
+ </div>
<?php } ?>
</div>
# Initialisation
$parts = array(
'interwiki' => '',
+ 'local_interwiki' => false,
'fragment' => '',
'namespace' => $defaultNamespace,
'dbkey' => $dbkey,
$mainPage = Title::newMainPage();
return array(
'interwiki' => $mainPage->getInterwiki(),
+ 'local_interwiki' => true,
'fragment' => $mainPage->getFragment(),
'namespace' => $mainPage->getNamespace(),
'dbkey' => $mainPage->getDBkey(),
);
}
$parts['interwiki'] = '';
+ # local interwikis should behave like initial-colon links
+ $parts['local_interwiki'] = true;
# Do another namespace split...
continue 2;
return null;
}
+ /** @var UploadBase $handler */
$handler = new $className;
$handler->initializeFromRequest( $request );
}
/**
- * Verify the mime type.
+ * Verify the MIME type.
*
- * @note Only checks that it is not an evil mime. The "does it have
- * correct extension given its mime type?" check is in verifyFile.
- * @param string $mime Representing the mime
+ * @note Only checks that it is not an evil MIME. The "does it have
+ * correct extension given its MIME type?" check is in verifyFile.
+ * in `verifyFile()` that MIME type and file extension correlate.
+ * @param string $mime Representing the MIME
* @return mixed True if the file is verified, an array otherwise
*/
protected function verifyMimeType( $mime ) {
return array( 'filetype-badmime', $mime );
}
- # Check IE type
+ # Check what Internet Explorer would detect
$fp = fopen( $this->mTempPath, 'rb' );
$chunk = fread( $fp, 256 );
fclose( $fp );
$this->mFileProps = FSFile::getPropsFromPath( $this->mTempPath, $this->mFinalExtension );
- # check mime type, if desired
+ # check MIME type, if desired
$mime = $this->mFileProps['file-mime'];
$status = $this->verifyMimeType( $mime );
if ( $status !== true ) {
/**
* Return the local file and initializes if necessary.
*
- * @return LocalFile|null
+ * @return LocalFile|UploadStashFile|null
*/
public function getLocalFile() {
if ( is_null( $this->mLocalFile ) ) {
}
/**
- * Checks if the mime type of the uploaded file matches the file extension.
+ * Checks if the MIME type of the uploaded file matches the file extension.
*
- * @param string $mime The mime type of the uploaded file
+ * @param string $mime The MIME type of the uploaded file
* @param string $extension The filename extension that the file is to be served with
* @return bool
*/
* positives in some situations.
*
* @param string $file Pathname to the temporary upload file
- * @param string $mime The mime type of the file
+ * @param string $mime The MIME type of the file
* @param string $extension The extension of the file
* @return bool True if the file contains something looking like embedded scripts
*/
/**
* Divide the element name passed by the xml parser to the callback into URI and prifix.
- * @param string $name
+ * @param string $element
* @return array Containing the namespace URI and prefix
*/
private static function splitXmlNamespace( $element ) {
* Get the current status of a chunked upload (used for polling).
* The status will be read from the *current* user session.
* @param string $statusKey
- * @return array|bool
+ * @return Status[]|bool
*/
public static function getSessionStatus( $statusKey ) {
return isset( $_SESSION[self::SESSION_STATUS_KEY][$statusKey] )
protected $mChunkIndex;
protected $mFileKey;
protected $mVirtualTempPath;
+ /** @var LocalRepo */
+ private $repo;
/**
* Setup local pointers to stash, repo and user (similar to UploadFromStash)
}
/**
- * Find or guess extension -- ensuring that our extension matches our mime type.
+ * Find or guess extension -- ensuring that our extension matches our MIME type.
* Since these files are constructed from php tempnames they may not start off
* with an extension.
* XXX this is somewhat redundant with the checks that ApiUpload.php does with incoming
if ( $n !== false ) {
$extension = $n ? substr( $path, $n + 1 ) : '';
} else {
- // If not, assume that it should be related to the mime type of the original file.
+ // If not, assume that it should be related to the MIME type of the original file.
$magic = MimeMagic::singleton();
$mimeType = $magic->guessMimeType( $path );
$extensions = explode( ' ', MimeMagic::singleton()->getExtensionsForType( $mimeType ) );
* and the SKM (source key material) is the "data".
*
* @param string $hash The hashing function to use (e.g., sha256)
- * @param string $ikm The input keying material
* @param string $salt The salt to add to the ikm, to get the prk
+ * @param string $ikm The input keying material
* @return string Binary string (pseudorandm key) used as input to HKDFExpand
*/
private static function HKDFExtract( $hash, $salt, $ikm ) {
}
/**
- * @param array $time (UIDGenerator::millitime(), clock sequence)
+ * @param array $info (UIDGenerator::millitime(), clock sequence)
* @return string 88 bits
*/
protected function getTimestampedID88( array $info ) {
/**
* Returns true if a language code is an IETF tag known to MediaWiki.
*
- * @param string $code
+ * @param string $tag
*
* @since 1.21
* @return bool
* Get the formatted date and time for the given timestamp and formatted for
* the given user.
*
- * @param mixed $ts the time format which needs to be turned into a
+ * @param mixed $ts The time format which needs to be turned into a
* date('YmdHis') format with wfTimestamp(TS_MW,$ts)
* @param User $user User object used to get preferences for timezone and format
* @param array $options Array, can contain the following keys:
*
* @since 1.23
*
- * @param int $count non-localized number
- * @param array $forms different plural forms
+ * @param int $count Non-localized number
+ * @param array $forms Different plural forms
*
* @return array|string
*/
* Checks that convertPlural was given an array and pads it to requested
* amount of forms by copying the last one.
*
- * @param int $count How many forms should there be at least
* @param array $forms Array of forms given to convertPlural
+ * @param int $count How many forms should there be at least
* @return array Padded array of forms or an exception if not an array
*/
protected function preConvertPlural( /* Array */ $forms, $count ) {
* possible that non-existing link in one variant
* actually exists in another variant. this function
* tries to find it. See e.g. LanguageZh.php
+ * The input parameters may be modified upon return
*
- * @param string $link The name of the link
- * @param Title $nt The title object of the link
+ * @param string &$link The name of the link
+ * @param Title &$nt The title object of the link
* @param bool $ignoreOtherCond To disable other conditions when
* we need to transclude a template or update a category's link
- * @return null the input parameters may be modified upon return
*/
public function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
$this->mConverter->findVariantLink( $link, $nt, $ignoreOtherCond );
/**
* Find the index number of the plural rule appropriate for the given number
+ * @param int $number
* @return int The index number of the plural rule
*/
public function getPluralRuleIndexNumber( $number ) {
* For example, if the language is set to Arabic, getPluralType(5) should
* return 'few'.
* @since 1.22
+ * @param int $number
* @return string The name of the plural rule type, e.g. one, two, few, many
*/
public function getPluralRuleType( $number ) {
public $mManualLevel;
/**
- * @var string memcached key name
+ * @var string Memcached key name
*/
public $mCacheKey;
* If a language supports multiple variants, it is possible that
* non-existing link in one variant actually exists in another variant.
* This function tries to find it. See e.g. LanguageZh.php
+ * The input parameters may be modified upon return
*
- * @param string $link The name of the link
- * @param mixed $nt The title object of the link
+ * @param string &$link The name of the link
+ * @param Title &$nt The title object of the link
* @param bool $ignoreOtherCond To disable other conditions when
* we need to transclude a template or update a category's link
- * @return void Null, the input parameters may be modified upon return
*/
public function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
# If the article has already existed, there is no need to
'ar' => 'العربية', # Arabic
'arc' => 'ܐܪܡܝܐ', # Aramaic
'arn' => 'mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
- 'arq' => 'جزائرÙ\8a', # Algerian Spoken Arabic
+ 'arq' => 'جازاÙ\8aرÙ\8aØ©', # Algerian Spoken Arabic
'ary' => 'Maġribi', # Moroccan Spoken Arabic
'arz' => 'مصرى', # Egyptian Spoken Arabic
'as' => 'অসমীয়া', # Assamese
* names as they were
* - do not try to find variants for usernames
*
- * @param string $link
- * @param Title $nt
+ * @param string &$link
+ * @param Title &$nt
* @param bool $ignoreOtherCond
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
* names as they were
* - do not try to find variants for usernames
*
- * @param string $link
- * @param Title $nt
+ * @param string &$link
+ * @param Title &$nt
* @param bool $ignoreOtherCond
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
* names as they were
* - do not try to find variants for usernames
*
- * @param string $link
- * @param Title $nt
+ * @param string &$link
+ * @param Title &$nt
* @param bool $ignoreOtherCond
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
* names as they were
* - do not try to find variants for usernames
*
- * @param string $link
- * @param Title $nt
+ * @param string &$link
+ * @param Title &$nt
* @param bool $ignoreOtherCond
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
* names as they were
* - do not try to find variants for usernames
*
- * @param string $link
- * @param Title $nt
+ * @param string &$link
+ * @param Title &$nt
* @param bool $ignoreOtherCond
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
* auto convert to zh-hans and normalize special characters.
*
* @param string $string
- * @param string $autoVariant default to 'zh-hans'
+ * @param string $autoVariant Defaults to 'zh-hans'
* @return string
*/
function normalizeForSearch( $string, $autoVariant = 'zh-hans' ) {
"talkpagelinktext": "Marit",
"specialpage": "Laman kusuih",
"personaltools": "Peukakaih droë",
- "postcomment": "Beunagi barô",
"articlepage": "Eu asoë laman",
"talk": "Marit",
"views": "Seuneudeuih",
"externaldberror": "Na seunalah bak peusahèh basis data luwa atawa droëneuh hana geubri idin keu neupeubarô akun luwa droëneuh",
"login": "Tamöng",
"nav-login-createaccount": "Tamöng / dapeuta",
- "loginprompt": "Droëneuh suwah/payah neupeu’udép ''cookies'' mangat jeuët neutamong u {{SITENAME}}",
"userlogin": "Tamöng / dapeuta",
"userloginnocreate": "Tamöng",
"logout": "Teubiët",
"filetype-banned": "Jeunèh beureukaih nyoe geutheun.",
"illegal-filename": "Nan beureukaih han jeut lagèe nyoe.",
"savefile": "Kubah beureukaih",
- "uploadedimage": "peutamöng \"[[$1]]\"",
- "overwroteimage": "peutamöng vèrsi barô \"[[$1]]\"",
"upload-source": "Asai beureukaih",
"sourcefilename": "Asai nan beureukaih:",
"sourceurl": "Asai URL:",
"talkpagelinktext": "Ħdith",
"specialpage": "صفحة خاصة",
"personaltools": "Outils mteεek",
- "postcomment": "قسم جديد",
"articlepage": "عرض صفحة المحتوى",
"talk": "Ħdith",
"views": "Affichages",
"externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.",
"login": "ادخل",
"nav-login-createaccount": "Connecti / aεmel compte",
- "loginprompt": "يجب أن تكون الكوكيز لديك مفعلة لتسجل الدخول إلى {{SITENAME}}.",
"userlogin": "ادخل / أنشئ حسابا",
"userloginnocreate": "دخول",
"logout": "اخرج",
"upload": "Abεeth des fichiers l'esserveur",
"uploadlogpage": "سجل الرفع",
"filedesc": "ملخص:",
- "uploadedimage": "رفع \"[[$1]]\"",
"license": "ترخيص:",
"license-header": "licence",
"file-anchor-link": "milaf (Fichier)",
"searchprofile-advanced-tooltip": "Soek in spesifieke naamruimtes",
"search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorde}})",
"search-result-category-size": "{{PLURAL:$1|1 kategorielid|$1 kategorielede}} ({{PLURAL:$2|1 subkategorie|$2 subkategorieë}}, {{PLURAL:$3|1 lêer|$3 lêers}})",
- "search-result-score": "Relevansie: $1%",
"search-redirect": "(aanstuur $1)",
"search-section": "(afdeling $1)",
"search-suggest": "Het u $1 bedoel?",
"uploadwarning": "Laaiwaarskuwing",
"uploadwarning-text": "Verander die onderstaande lêerbeskrywing en probeer dan weer.",
"savefile": "Stoor lêer",
- "uploadedimage": "het \"[[$1]]\" gelaai",
- "overwroteimage": "het 'n nuwe weergawe van \"[[$1]]\" opgelaai",
"uploaddisabled": "Die oplaai van lêers is afgeskakel.",
"copyuploaddisabled": "Die oplaai van lêers per URL is afgeskakel.",
"uploaddisabledtext": "Die oplaai van lêers is afgeskakel.",
"talkpagelinktext": "Bisedo",
"specialpage": "Faqe speciale",
"personaltools": "Vegla vetjake",
- "postcomment": "Sekcion i ri",
"articlepage": "Shiko artikullin",
"talk": "Diskutimi",
"views": "Paraqitje",
"externaldberror": "Ose pat gabim në databazën e autentifikimit, ose nuk lejoheni me ndryshue llogarinë tuej të jashtme.",
"login": "Kyçu",
"nav-login-createaccount": "Kyçu / çel llogari",
- "loginprompt": "Shfletuesi duhet me pranue keksa (cookies) për me mujtë me u kyçë në {{SITENAME}}.",
"userlogin": "Kyçu / çel llogari",
"userloginnocreate": "Kyçu",
"logout": "Çkyçu",
"searchprofile-everything-tooltip": "Kërko krejt përmbajtjen (përfshi edhe faqet e diskutimit)",
"searchprofile-advanced-tooltip": "Kërkimi në hapësina",
"search-result-size": "$1 ({{PLURAL:$2|1 fjalë|$2 fjalë}})",
- "search-result-score": "Relevanca: $1%",
"search-redirect": "(përcjellje $1)",
"search-section": "(sekcioni $1)",
"search-suggest": "Mos menduet: $1",
"recentchangeslinked-to": "Trego ndryshimet në faqet që lidhen në këtë faqe",
"upload": "Ngarkoni skeda",
"uploadlogpage": "Regjistri i ngarkimeve",
- "uploadedimage": "ngarkue \"[[$1]]\"",
"file-anchor-link": "Figura",
"filehist": "Historiku i dosjes",
"filehist-help": "Kliko në datë/orë për me pa skedën si âsht dukë në atë kohë.",
"talkpagelinktext": "ውይይት",
"specialpage": "ልዩ ገጽ",
"personaltools": "የኔ መሣርያዎች",
- "postcomment": "አስተያየት ለማቅረብ",
"articlepage": "መጣጥፉን ለማየት",
"talk": "ውይይት",
"views": "ዕይታዎች",
"externaldberror": "ወይም አፍአዊ የማረጋገጫ መረጃ-ቤት ስኅተት ነበረ፣ ወይም አፍአዊ አባልነትዎን ማሳደስ አልተፈቀዱም።",
"login": "ለመግባት",
"nav-login-createaccount": "መግቢያ",
- "loginprompt": "(ወደ {{SITENAME}} በብዕር ስም ለመግባት በኮምፒዩተሮ ላይ ኩኪስ (cookies) እንዲቀመጡ መፍቀድ ይኖርቦታል።)",
"userlogin": "ግባ / ተመዝገብ",
"userloginnocreate": "ለመግባት",
"logout": "ከብዕር ስምዎ ለመውጣት",
"searchprofile-everything-tooltip": "ይዞታውን ሁሉ (ከነውይይት ገጾች) ለመፈለግ",
"searchprofile-advanced-tooltip": "በልዩ ክፍለ-ዊኪዎች ለመፈለግ",
"search-result-size": "$1 ({{PLURAL:$2|1 ቃል|$2 ቃላት}})",
- "search-result-score": "ተገቢነት፦ $1%",
"search-redirect": "(መምሪያ መንገድ $1)",
"search-section": "(ክፍል $1)",
"search-suggest": "ምናልባት $1 የፈለጉት ይሆን",
"uploadwarning": "የመላክ ማስጠንቀቂያ",
"uploadwarning-text": "እባክዎ፣ እታች ያለውን የፋይልን መግለጫ ቀይርና እንደገና ይሞክሩ።",
"savefile": "ፋይሉ ለመቆጠብ",
- "uploadedimage": "«[[$1]]» ላከ",
- "overwroteimage": "የ«[[$1]]» አዲስ ዕትም ላከ",
"uploaddisabled": "ፋይል መላክ አይቻልም",
"uploaddisabledtext": "ፋይል መላክ በዚህ ዊኪ አይቻልም።",
"uploadvirus": "ፋይሉ ቫይረስ አለበት! ዝርዝር፦ $1",
"watchlist-details": "አሁን {{PLURAL:$1|$1 ገፅ|$1 ገፆች}} በምትከታተላቸው ገፆች ላይ አሉ (የውይይት ገፅ ሳይጨመር)።",
"wlheader-enotif": "የ-ኢሜል ማስታወቂያ እንዲሠራ ተደርጓል።",
"wlheader-showupdated": "መጨረሻ ከጎበኟቸው ጀምሮ የተቀየሩት ገጾች በ'''ጉልህ ፊደላት''' ይታያሉ",
+ "wlnote": "ባለፉት <b>$2</b> ሰዓቶች የተደረጉት $1 መጨረሻ ለውጦች እታች ይገኛሉ።",
"wlshowlast": "ያለፉት $1 ሰዓት፤ $2 ቀን፤ $3 ይታዩ።",
"watchlist-options": "የዝርዝሩ ምርጫዎች",
"watching": "እየተጨመረ ነው...",
"talkpagelinktext": "Descutir",
"specialpage": "Pachina Especial",
"personaltools": "Ferramientas personals",
- "postcomment": "Nueva sección",
"articlepage": "Veyer l'articlo",
"talk": "Discusión",
"views": "Visualizacions",
"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.",
"login": "Encetar sesión",
"nav-login-createaccount": "Encetar una sesión / creyar cuenta",
- "loginprompt": "Ta rechistrar-se en {{SITENAME}} ha d'activar as cookies en o navegador.",
"userlogin": "Encetar una sesión / creyar cuenta",
"userloginnocreate": "Encetar una sesión",
"logout": "Salir d'a sesión",
"searchprofile-advanced-tooltip": "Mirar en os siguients espacios de nombres",
"search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})",
"search-result-category-size": "{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 fichero|$3 fichers}})",
- "search-result-score": "Relevancia: $1%",
"search-redirect": "(endrecera dende $1)",
"search-section": "(sección $1)",
"search-suggest": "Quereba dicir $1?",
"uploadwarning": "Alvertencia de carga de fichero",
"uploadwarning-text": "Por favor, modifique a descripción d'o fichero d'abaixo y torne a intentar-lo.",
"savefile": "Alzar fichero",
- "uploadedimage": "«[[$1]]» cargato.",
- "overwroteimage": "s'ha cargato una nueva versión de \"[[$1]]\"",
"uploaddisabled": "A carga de fichers ye desactivata",
"copyuploaddisabled": "Carga por URL desactivada.",
"uploaddisabledtext": "A carga de fichers ye desactivata.",
"watchlist-details": "{{PLURAL:$1|$1 pachina|$1 pachinas}} en a suya lista de seguimiento, sin contar-ie as pachinas de descusión.",
"wlheader-enotif": "A notificación por correu electronico ye activata",
"wlheader-showupdated": "Las pachinas cambiadas dende a suya zaguer vesita s'amuestran en '''negreta'''",
+ "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",
"watching": "Cosirando...",
"duplicate-defaultsort": "Pare cuenta: A clau d'ordenación por defecto «$2» anula l'anterior clau d'ordenación por defecto «$1».",
"version": "Versión",
"version-extensions": "Estensions instalatas",
+ "version-skins": "Aparencias",
"version-specialpages": "Pachinas especials",
"version-parserhooks": "Grifios d'o parser (parser hooks)",
"version-variables": "Variables",
"version-antispam": "Prevención de spam",
- "version-skins": "Aparencias",
"version-other": "Atros",
"version-mediahandlers": "Maneyador de fichers multimedia",
"version-hooks": "Grifios (Hooks)",
"talkpagelinktext": "Mōtung",
"specialpage": "Syndrig tramet",
"personaltools": "Āgne tōlas",
- "postcomment": "Nīwe dǣl",
"articlepage": "Sēon innunge tramet",
"talk": "Mōtung",
"views": "Sihþa",
"password-change-forbidden": "Þū ne canst awendan þafungword on þissum wiki.",
"login": "Inmeldian",
"nav-login-createaccount": "Inmeldian / wyrcan reccinge",
- "loginprompt": "Þū scealt þafian cȳþþu grētunga tō inmeldienne in {{SITENAME}}.",
"userlogin": "Inmeldian / wyrcan reccinge",
"userloginnocreate": "Inmeldian",
"logout": "Ūtmeldian",
"filesource": "Fruma:",
"badfilename": "Ymelan nama wearþ gewend tō \"$1\".",
"savefile": "Hordian ymelan",
- "uploadedimage": "forþhlōd \"[[$1]]\"",
"sourcefilename": "Fruman ymelan nama:",
"license": "Lēaf:",
"license-header": "Lēaf:",
"unwatch": "Ablinnan behealdunge",
"unwatchthispage": "Ablinnan behealdunge",
"watchlist-details": "{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum behealdunggetæle, nā sunderlīce arīmedum mōtunga trametum.",
+ "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",
"watching": "Behealdende...",
"@metadata": {
"authors": [
"Angpradesh",
- "Vinitutpal"
+ "Vinitutpal",
+ "아라"
]
},
"tog-underline": " कड़ी अधोरेखित करना:",
"tog-showtoolbar": "एडिट टूलबार दर्शाबॊ (जावास्क्रीप्ट)",
"tog-editondblclick": "दू-बार क्लीक करी कॆ पन्ना संपादित करॊ (जावास्क्रीप्ट)",
"tog-editsectiononrightclick": "विभाग शीर्षक पर दायाँ क्लीक करीकॆ संपादन करै के अनुमती दॆ (जावास्क्रीप्ट)",
- "tog-rememberpassword": "इ कंप्यूटर पर हमरॊ लॉग-इन सूचना याद रखॊ (अधिकतम $1 {{PLURAL:$1|दिन|दिन}} लेली)",
"tog-watchcreations": "हमरॊ तैयार करलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै",
"tog-watchdefault": "हमरॊ संपादित करलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै",
"tog-watchmoves": "हमरॊ हटैलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै",
"search-interwiki-more": "(आरू)",
"powersearch-legend": "उन्नत खोज",
"powersearch-ns": "नामस्थानॊ मॆ खोजॊ:",
- "powersearch-redir": "अनुप्रेषितॊ के सूची दर्शाबॊ.",
"preferences": "वरीयता",
"mypreferences": "हमरॊ वरीयता",
"group-sysop": "प्रचालक",
"recentchanges": "हाल मॆं होलॊ बदलाव",
"recentchanges-legend": "हाल केरॊ परिवर्तन संबंधी विकल्प",
"recentchanges-feed-description": "इ फ़ीड मॆ होय वाला विकि पर हाल मॆ होलॊ बदलाव देखियै.",
- "rclistfrom": "$1 सॆं नया बदलाव देखलाबॊ",
+ "rclistfrom": "$3 $2 सॆं नया बदलाव देखलाबॊ",
"rcshowhideminor": "छोटॊ बदलाव $1",
"rcshowhidebots": "बोट सीनी $1",
"rcshowhideliu": "लॉग्ड इन सदस्यॊ के बदलाव $1",
"recentchangeslinked-to": "ऐकरॊ बदला मॆं देलॊ पन्ना सीनी सॆं जुडलॊ पन्ना सीनी के बदलाव दिखलाबॊ",
"upload": "फाईल अपलोड",
"uploadlogpage": "अपलोड सूची",
- "uploadedimage": "\"[[$1]]\" कॆ अपलोड करलॊ गेलै",
"filehist": "फाइल के इतिहास",
"filehist-help": "संचिका पुरानॊ समय में कैन्हॊ दिखै रहै इ जानै लेली वांछित दिनांक/समय पर चटका लगाबॊ.",
"filehist-current": "मौजूदा",
"booksources-go": "जा",
"log": "लॉग सूची",
"allpages": "सब्भे पन्ना",
- "alphaindexline": "$1 सॆ $2 तलक",
"prevpage": "पिछला पन्ना ($1)",
"allpagesfrom": "देलॊ गेलॊ अक्षर सॆं आरंभ होयवाला लेख दर्शाबॊ:",
"allpagesto": "ऐना समाप्त होय वाला पन्ना दिखाबॊ:",
"searchprofile-advanced-tooltip": "ابحث في النطاقات المخصصة",
"search-result-size": "$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})",
"search-result-category-size": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})",
- "search-result-score": "الارتباط: $1%",
"search-redirect": "(تحويلة $1)",
"search-section": "(قسم $1)",
"search-file-match": "(يطابق محتوى الملف)",
"powersearch-togglelabel": "اختر:",
"powersearch-toggleall": "الكل",
"powersearch-togglenone": "لا شيء",
- "powersearch-remember": "تذÙ\83ر اÙ\84اختÙ\8aار Ù\84بØØ« اÙ\84Ù\85ستÙ\82بÙ\84",
+ "powersearch-remember": "تذÙ\83ر اÙ\84Ø®Ù\8aارات Ù\84Ù\84بØØ« Ù\85ستÙ\82بÙ\84ا",
"search-external": "بحث خارجي",
"searchdisabled": "البحث في {{SITENAME}} معطل.\nيمكنك البحث من خلال جوجل في الوقت الحالي.\nلاحظ أن فهارسه لمحتوى {{SITENAME}} ربما تكون غير محدثة.",
"search-error": "حدث خطأ ما أثناء البحث: $1",
"uploadwarning": "تحذير الرفع",
"uploadwarning-text": "من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.",
"savefile": "احفظ الملف",
- "uploadedimage": "رفع \"[[$1]]\"",
- "overwroteimage": "رفع نسخة جديدة من \"[[$1]]\"",
"uploaddisabled": "تم تعطيل الرفع",
"copyuploaddisabled": "الرفع من مسار معطل.",
"uploaddisabledtext": "رفع الملفات معطل.",
"talkpagelinktext": "ܡܡܠܠܐ",
"specialpage": "ܦܐܬܐ ܕܝܠܢܝܬܐ",
"personaltools": "ܡܐܢ̈ܐ ܦܪ̈ܨܘܦܝܐ",
- "postcomment": "ܡܢܬܐ ܚܕܬܐ",
"articlepage": "ܚܘܝܝܐ ܕܦܐܬܐ ܕܚܒܝܫܬ̈ܐ",
"talk": "ܡܡܠܠܐ",
"views": "ܚܙܝܬ̈ܐ",
"userlogin-signwithsecure": "ܐܚܫܚ ܕܒܝܩܘܬܐ ܡܫܝܢܢܬܐ",
"login": "ܥܘܠ",
"nav-login-createaccount": "ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ",
- "loginprompt": "ܐܠܨܐ ܠܡܦܐܬܢܐ ܕܝܠܟ ܕܣܡܟ ܠܩܘܩܝܙ (cookies) ܠܥܠܠܬܐ ܒ {{SITENAME}}.",
"userlogin": "ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ",
"userloginnocreate": "ܥܘܠ",
"logout": "ܦܠܘܛ",
"minlength1": "ܫܡܗ̈ܐ ܕܠܦܦܐ ܘܠܐ ܕܢܗܘܐ ܒܪܝܐ ܡܢ ܐܬܘܬܐ ܚܕܐ ܟܕ ܙܥܘܪ",
"uploadwarning": "ܐܣܩ ܙܘܗܪܐ",
"savefile": "ܠܒܘܟ ܠܦܦܐ",
- "uploadedimage": "ܐܣܩ \"[[$1]]\"",
- "overwroteimage": "ܐܣܩ ܨܚܚܐ ܚܕܬܐ ܡܢ \"[[$1]]\"",
"uploadvirus": "ܠܦܦܐ ܐܝܬ ܒܗ ܒܝܪܘܣ!\nܐܪ̈ܝܟܬܐ: $1",
"upload-source": "ܡܒܘܥܐ ܕܠܦܦܐ",
"sourcefilename": "ܫܡܐ ܕܠܦܦܐ ܡܒܘܥܐ",
"unwatchthispage": "ܟܠܝ ܪܗܝܐ",
"watchlist-details": "{{PLURAL:$1|$1 ܦܐܬܐ|$1 ܦܐܬܬ̈ܐ}} ܒܪ̈ܗܝܬܟ, ܫܒܘܩ ܡܢ ܦܐܬܬ̈ܐ ܕܡܡܠܠܐ.",
"wlheader-showupdated": "ܦܐܬܬ̈ܐ ܕܐܫܬܚܠܦܢ ܡܢ ܒܬܪ ܣܘܥܪܢܐ ܐܚܪܝܐ ܠܗܝܢ ܡܬܓܠܚܢ ܒܣܪܛܐ '''ܚܠܝܡܐ'''",
+ "wlnote": "ܠܬܚܬ {{PLURAL:$1|ܫܘܚܠܦܐ ܐܚܪܝܐ| '''$1''' ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ}} {{PLURAL:$2|ܒܫܥܬܐ ܐܚܪܝܬܐ|'''$2''' ܒܫܥܬ̈ܐ ܐܚܪ̈ܝܬܐ}}, ܠܦܘܬ $3, $4.",
"wlshowlast": "ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3",
"watchlist-options": "ܨܒܝܢܝܘܬ̈ܐ ܕܪ̈ܗܝܬܐ",
"watching": "ܪܗܝܐ...",
"remembermypassword": "Amulen tañi nülküwküleael tüfa mew (alürumechi $1 {{PLURAL:$1 antü}})",
"login": "Konkülen",
"nav-login-createaccount": "konkülen/dewman konün",
- "loginprompt": "Müley \"Cookies\" ñi püneleael wirintukuwam {{SITENAME}} mew.",
"userlogin": "Konkülen/dewman konün",
"userloginnocreate": "Konün",
"logout": "Tripan",
"uploadnologin": "Petu konlaymi",
"uploadlogpage": "Püramülu eltukawün ñi wirintukun",
"filedesc": "Pichi trokiñündungu",
- "uploadedimage": "Püramüngey \"[[$1]]\"",
"watchthisupload": "Llaytun tüfachi eltukawün",
"license": "Dungunentuwün:",
"license-header": "Dungunentuwün",
"authors": [
"Bachounda",
"Oldstoneage",
- "아라"
+ "아라",
+ "Amire80"
]
},
"tog-underline": "تسطار الوصيلات:",
"upload": "طلع فيشي",
"uploadlogpage": "ريجيستر رفع الفيشيات",
"filedesc": "ملخص",
- "uploadedimage": "راه طلع \"[[$1]]\"",
"license": "ترخيص:",
"license-header": "ترخيص:",
"file-anchor-link": "ملف",
"sharedupload-desc-here": "هاذ الملف جاي من $1. يمكن يكون مستعمل من بروجيات وحد أخرين.\nالتوصيف نتاعو في [$2 باجت الصفات] محطوطه هنا لتحت.",
"randompage": "باجة على الزهر",
"statistics": "إحصاويّات",
- "nbytes": "$1 اوكتي{{PLURAL:$1||s}}",
+ "nbytes": "{{PLURAL:$1|بايت 1|$1 بايت}}",
"nmembers": "$1 اعضاء{{PLURAL:$1||s}}",
"prefixindex": "كامل الباجات الباديه ب",
"usercreated": "{{GENDER:$3|صنعه|صنعته}} في $1 الساعة $2",
"talkpagelinktext": "Ṫnaqeċ",
"specialpage": "Ṣefḫa ĥaṣa",
"personaltools": "Adawaṫ ċeĥṣiya",
- "postcomment": "Seksyon jdida",
"articlepage": "Ċof l-li fe ṣ-ṣefḫa",
"talk": "Modakara",
"views": "Afiċaj",
"externaldberror": "kayn imma ċi ĥata' f-doĥol qaĝidaṫ l-bayanaṫ wlla rah ma msmoḫ-likċ baċ ṫḫddṫ l-ḫisab l-ĥariji taĝk.",
"login": "Dĥel",
"nav-login-createaccount": "Ṫkonékta / Ĥṫareĝ ċi konṫ",
- "loginprompt": "ĥask tkon mĥddm l-cookies baċ ṫdĥol l-{{SITENAME}}.",
"userlogin": "Ṫkonnékta / Ṣayeb ċi ḫsab",
"userloginnocreate": "Ṫkonékta",
"logout": "Ṫdékonékta",
"searchprofile-advanced-tooltip": "qlleb ġi f-ċi nitaqaṫ",
"search-result-size": "$1 ({{PLURAL:$2|kelma weḫda|$2 kelmaṫ}})",
"search-result-category-size": "{{PLURAL:$1|ĝoḍw 1|$1 dl-aĝḍa'}} ({{PLURAL:$2|ṫṣnif fṛĝi 1|$2 d-ṫṣnifaṫ l-fṛĝiyya}}, {{PLURAL:$3|milef 1|$3 dl-milffaṫ}})",
- "search-result-score": "lirtibat: $1%",
"search-redirect": "(Ṫeḫwil $1)",
"search-section": "(seksyon $1)",
"search-suggest": "Waċ konṫi baġi ṫqol : $1",
"uploadwarning": "tahdir rafaa",
"uploadwarning-text": "afak bdl description dyal lmilaf ltaht ohawl awtani",
"savefile": "sjjl had lfichier",
- "uploadedimage": "øplowda \"[[$1]]\"",
- "overwroteimage": "sift noskha jdida dyal \"[[$1]]\"",
"uploaddisabled": "upload maatl",
"copyuploaddisabled": "sift b URL makhdamch",
"uploaddisabledtext": "sift dyal lfichier makhdamch",
"duplicate-defaultsort": "'''ṫḫdir:''' saroṫ ṫrṫib fṫiṛaḍi \"$2\" faṫ saroṫ ṫrṫib fṫiṛaḍi \"$1\".",
"version": "Noskha",
"version-extensions": "limtidadat lmotabbata",
+ "version-skins": "skinat",
"version-specialpages": "Ṣefḫa ĥaṣa",
"version-parserhooks": "khatatif lmohllil",
"version-variables": "lmotaghayyirat",
"version-antispam": "wiqaya mn ṣ-ṣpam",
- "version-skins": "skinat",
"version-other": "okhra",
"version-mediahandlers": "motahakkimat lmedia",
"version-hooks": "lkhtatif",
"searchprofile-advanced-tooltip": "دور فى النطاقات المخصصة",
"search-result-size": "$1 ({{PLURAL:$2|1 كلمه|$2 كلام}})",
"search-result-category-size": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوين|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعى واحد|تصنيفين فرعيين|$2 تصنيفات فرعية|$2 تصنيف فرعى|$2 تصنيف فرعى}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفين|$3 ملفات|$3 ملف|$3 ملف}})",
- "search-result-score": "الارتباط: $1%",
"search-redirect": "(تحويله $1)",
"search-section": "(جزء $1)",
"search-suggest": "قصدك: $1",
"uploadwarning": "تحذير التحميل",
"uploadwarning-text": "لو سمحت عدل وصف الملف اللى تحت وحاول تانى.",
"savefile": "حفظ الملف",
- "uploadedimage": "اتحمل \"[[$1]]\"",
- "overwroteimage": "اتحملت نسخة جديدة من \"[[$1]]\"",
"uploaddisabled": "التحميل متعطل",
"uploaddisabledtext": "تحميل الملفات متعطل.",
"php-uploaddisabledtext": "تحميل ملفات PHP متعطل. لو سمحت اتأكدن من إعدادات تحميل الملفات.",
"watchlist-details": "{{PLURAL:$1|$1 صفحه|$1 صفحه}} فى قايمه مراقبتك، بدون عد صفحات المناقشه.",
"wlheader-enotif": "*خاصية الاعلام بالايميل متفعلة",
"wlheader-showupdated": "الصفحات اللى اتغيرت بعد زيارتك ليها اخر مرة معروضة بالخط '''العريض'''",
+ "wlnote": "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
"wlshowlast": "عرض اخر $1 ساعات $2 ايام $3",
"watchlist-options": "اختيارات قايمة المراقبة",
"watching": "بيراقب...",
"talkpagelinktext": "কথা-বতৰা",
"specialpage": "বিশেষ পৃষ্ঠা",
"personaltools": "ব্যক্তিগত সৰঞ্জাম",
- "postcomment": "নতুন অনুচ্ছেদ",
"articlepage": "সমল পৃষ্ঠা চাওক",
"talk": "আলোচনা",
"views": "দৰ্শন",
"externaldberror": "কোনো প্ৰামাণ্যকৰণ তথ্যকোষৰ ত্ৰুটি ঘটিছে নতুবা আপোনাৰ বৰ্হি-একাউণ্ট নৱীকৰণ কৰাৰ অনুমতি নাই ।",
"login": "প্ৰৱেশ",
"nav-login-createaccount": "প্ৰৱেশ/সদস্যভুক্তি",
- "loginprompt": "{{SITENAME}}ত প্ৰৱেশ কৰিবলৈ আপুনি কুকিজ্ সক্ৰিয় থাকিব লাগিব।",
"userlogin": "প্ৰৱেশ/সদস্যভুক্তি",
"userloginnocreate": "প্ৰৱেশ",
"logout": "প্ৰস্থান",
"searchprofile-advanced-tooltip": "স্বনিৰ্ধাৰিত নামস্থানত অনুসন্ধান কৰক",
"search-result-size": "$1 ({{PLURAL:$2|1 শব্দ|$2 শব্দসমূহ}})",
"search-result-category-size": "{{PLURAL:$1|১ জন সদস্য|$1 জন সদস্য}} ({{PLURAL:$2|এটা উপশ্ৰেণী|$2 টা উপশ্ৰেণী}}, {{PLURAL:$3|এটা ফাইল|$3 টা ফাইল}})",
- "search-result-score": "যথাৰ্থতা: $1%",
"search-redirect": "(পুনৰ্নিৰ্দেশনা $1)",
"search-section": "(অনুচ্ছেদ $1)",
"search-file-match": "(ফাইলৰ বিষয়বস্তুৰ লগত মিল পোৱা গৈছে)",
"uploadwarning": "আপল’ড সতৰ্কবাণী",
"uploadwarning-text": "অনুগ্ৰহ কৰি তলত ফাইলৰ বিৱৰণী পৰিৱৰ্তন কৰক আৰু পুনৰ চেষ্টা কৰক ।",
"savefile": "সংৰক্ষণ",
- "uploadedimage": "\"[[$1]]\" আপল’ড কৰা হ’ল",
- "overwroteimage": "\"[[$1]]\" ৰ এটা নতুন সংস্কৰণ আপল’ড কৰা হৈছে",
"uploaddisabled": "আপল’ড নিষ্ক্ৰিয় হৈ আছে",
"copyuploaddisabled": "ইউ.আৰ.এল.ৰ মাধ্যমেৰে আপল’ড নিষ্ক্ৰিয় হৈ আছে ।",
"uploaddisabledtext": "ফাইল আপল’ড নিষ্ক্ৰিয় হৈ আছে ।",
"watchlist-details": "আলোচনা পৃষ্ঠাসমূহ বেলেগকৈ লেখত নধৰি {{PLURAL:$1|$1 টা পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে।",
"wlheader-enotif": "ইমেইল জাননী সক্ৰিয় কৰা হৈছে।",
"wlheader-showupdated": "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
- "wlnote2": "$2, $3 অনুসাৰে শেষ {{PLURAL:$1|ঘণ্টাৰ|<strong>$1</strong> ঘণ্টাৰ}} সালসলনি তলত দিয়া হৈছে।",
+ "wlnote": "তলত {{PLURAL:$1| হ'ল সৰ্বশেষ পৰিৱৰ্তন|হ'ল সৰ্বশেষ '''$1''' পৰিৱৰ্তনসমূহ}} সৰ্বশেষ {{PLURAL:$2|ঘন্টা|'''$2''' ঘন্টা}}, $3, $4 -ৰ হিচাপে।",
"wlshowlast": "যোৱা $1 ঘণ্টা $2 দিন $3 চাওক",
"watchlist-options": "লক্ষ্য-তালিকা পছন্দসমূহ",
"watching": "চকু দিয়া হৈছে.....",
"tagline": "De {{SITENAME}}",
"help": "Ayuda",
"search": "Buscar",
- "searchbutton": "Buscar",
+ "searchbutton": "Guetar",
"go": "Dir",
"searcharticle": "Dir",
"history": "Historial de la páxina",
"hidetoc": "anubrir",
"collapsible-collapse": "Plegar",
"collapsible-expand": "Espander",
+ "confirmable-confirm": "¿Tas {{GENDER:$1|seguru|segura}}?",
+ "confirmable-yes": "Sí",
+ "confirmable-no": "Non",
"thisisdeleted": "¿Ver o restaurar $1?",
"viewdeleted": "¿Ver $1?",
"restorelink": "{{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}",
"invalidtitle-knownnamespace": "Títulu inválidu col espaciu de nomes «$2» ya'l testu «$3»",
"invalidtitle-unknownnamespace": "Títulu inválidu col númberu $1 d'espaciu de nomes desconocíu ya'l testu «$2»",
"exception-nologin": "Nun anició sesión",
- "exception-nologin-text": "Por favor, [[Special:Userlogin|anicie sesión]] pa tener accesu a esta páxina o aición.",
+ "exception-nologin-text": "Por favor, anicia sesión pa tener accesu a esta páxina o aición.",
"exception-nologin-text-manual": "Por favor, $1 pa tener accesu a esta páxina o aición.",
"virus-badscanner": "Fallu de configuración: Escáner de virus desconocíu: ''$1''",
"virus-scanfailed": "fallu d'escanéu (códigu $1)",
"parser-template-recursion-depth-warning": "Se pasó la llende de fondura recursiva de les plantíes ($1)",
"language-converter-depth-warning": "Se pasó la llende de fondura del convertidor de llingües ($1)",
"node-count-exceeded-category": "Páxines onde se pasó la cuenta de noyos",
- "node-count-exceeded-category-desc": "Una categoría pa les páxines onde se supera la cuenta de noyos.",
- "node-count-exceeded-warning": "La páxina pasó la cuenta de nodios",
+ "node-count-exceeded-category-desc": "La páxina supera la cuenta máxima de noyos.",
+ "node-count-exceeded-warning": "La páxina superó la cuenta de noyos",
"expansion-depth-exceeded-category": "Páxines onde se pasó la fondura d'espansión",
- "expansion-depth-exceeded-category-desc": "Esta ye una categoría pa les páxines onde se pasó la fondura d'espansión.",
+ "expansion-depth-exceeded-category-desc": "La páxina superó la fondura máxima d'espansión.",
"expansion-depth-exceeded-warning": "La páxina pasó la fondura d'espansión",
"parser-unstrip-loop-warning": "Deteutóse un bucle \"unstrip\"",
"parser-unstrip-recursion-limit": "Pasóse la llende de recursividá d'unstrip ($1)",
"searchprofile-advanced-tooltip": "Buscar nos espacios de nomes personalizaos",
"search-result-size": "$1 ({{PLURAL:$2|1 pallabra|$2 pallabres}})",
"search-result-category-size": "{{PLURAL:$1|1 miembru|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategories}}, {{PLURAL:$3|1 ficheru|$3 ficheros}})",
- "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)",
"preferences": "Preferencies",
"mypreferences": "Preferencies",
"prefs-edits": "Númberu d'ediciones:",
- "prefsnologintext2": "Por favor, $1 pa configurar les preferencies d'usuariu",
+ "prefsnologintext2": "Por favor, anicia sesión pa cambiar les tos preferencies.",
"prefs-skin": "Apariencia",
"skin-preview": "Vista previa",
"datedefault": "Ensin preferencia",
"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",
- "uploadedimage": "xubió \"[[$1]]\"",
- "overwroteimage": "xubió una versión nueva de \"[[$1]]\"",
"uploaddisabled": "Deshabilitaes les xubíes",
"copyuploaddisabled": "Xubir por URL ta desactivao.",
"uploaddisabledtext": "Les xubíes de ficheros tán desactivaes.",
"trackingcategories-desc": "Criterios d'inclusión de categoría",
"noindex-category-desc": "La páxina contién una pallabra máxica <code><nowiki>__NOINDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots nun la indexarán.",
"index-category-desc": "La páxina contién una pallabra máxica <code><nowiki>__INDEX__</nowiki></code> (y ta nun espaciu de nomes nel que se permite esta marca) y, poro, los robots la indexarán anque normalmente nun lo faigan.",
- "post-expand-template-inclusion-category-desc": "Después de espander toles plantíes, el tamañu de la páxina ye mayor que <code>$wgMaxArticleSize</code>; de mou qu'algunes plantíes nun s'espandieron.",
- "post-expand-template-argument-category-desc": "Después d'espander l'argumentu d'una plantía (daqué ente llaves triples, como <code>{{{Daqué}}}</code>), la páxina ye mayor que <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Hai demasiaes funciones analítiques costoses (como <code>#ifexist</code>) incluíes nuna páxina. Vea [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Categoría amestada si la páxina contién un enllaz de ficheru frañáu (un enllaz pa incrustar un ficheru cuando'l ficheru nun esiste).",
- "hidden-category-category-desc": "Esta ye una categoría que contién la pallabra máxica <code><nowiki>__HIDDENCAT__</nowiki></code>, que torga que s'amuese de mou predetermináu nel cuadru d'enllaces de categoría de les páxines.",
+ "post-expand-template-inclusion-category-desc": "El tamañu de la páxina ye mayor que <code>$wgMaxArticleSize</code> después de espander toles plantíes, de mou qu'algunes plantíes nun s'espandieron.",
+ "post-expand-template-argument-category-desc": "La páxina ye mayor que <code>$wgMaxArticleSize</code> después d'espander l'argumentu d'una plantía (daqué ente llaves triples, como <code>{{{Daqué}}}</code>).",
+ "expensive-parserfunction-category-desc": "La páxina usa demasiaes funciones analítiques costoses (como <code>#ifexist</code>). Llei [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "La páxina contién un enllaz frañáu a un ficheru (un enllaz pa incrustar un ficheru cuando'l ficheru nun esiste).",
+ "hidden-category-category-desc": "La categoría contién <code><nowiki>__HIDDENCAT__</nowiki></code> nel conteníu de páxina, que torga de mou predetermináu que s'amuese nel cuadru d'enllaces de categoría de les páxines.",
"trackingcategories-nodesc": "Nun hai una descripción disponible.",
"trackingcategories-disabled": "La categoría ta desactivada",
"mailnologin": "Ensin direición d'unviu",
"mywatchlist": "Llista de siguimientu",
"watchlistfor2": "Pa $1 $2",
"nowatchlist": "La to llista de siguimientu ta vacia.",
- "watchlistanontext": "Tienes d'$1 pa ver o editar entraes de la to llista de siguimientu.",
+ "watchlistanontext": "Por favor, anicia sesión pa ver o editar entraes de la to llista de siguimientu.",
"watchnologin": "Non identificáu",
"addwatch": "Amestar a la llista de siguimientu",
"addedwatchtext": "La páxina \"[[:$1]]\" s'amestó a la to [[Special:Watchlist|llista de llista de siguimientu]].\nLos cambeos futuros nesta páxina y na so páxina d'alderique asociada apaecerán allí.",
"delete-edit-reasonlist": "Editar los motivos d'esborráu",
"delete-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nRestrinxóse l'esborráu d'estes páxines pa evitar perturbaciones accidentales de {{SITENAME}}.",
"delete-warning-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nEsborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};\nobra con precaución.",
+ "delete-cantedit": "Nun pues desaniciar esta páxina porque nun tienes permisu pa editala.",
"deleting-backlinks-warning": "'''Avisu:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otres páxines]] enllacen a, o trescluyen de, la páxina que ta a piques de desaniciar.",
"rollback": "Revertir ediciones",
"rollback_short": "Revertir",
"undelete-search-title": "Buscar páxines desaniciaes",
"undelete-search-box": "Buscar páxines desaniciaes",
"undelete-search-prefix": "Amosar páxines qu'empecipien por:",
- "undelete-search-submit": "Buscar",
+ "undelete-search-submit": "Guetar",
"undelete-no-results": "Nun s'atoparon páxines afechisques a la busca nel archivu d'esborraos.",
"undelete-filename-mismatch": "Nun se pue restaurar la revisión del archivu con fecha $1: el nome d'archivu nun concuaya",
"undelete-bad-store-key": "Nun se pue restaurar la revisión del archivu con fecha $1: yá nun esistía l'archivu nel momentu d'esborralu.",
"autoblockid": "Autobloquiar #$1",
"block": "Bloquiar usuariu",
"unblock": "Desbloquiar usuariu",
- "blockip": "Bloquiar usuariu",
+ "blockip": "Bloquiar {{GENDER:$1|al usuariu|a la usuaria}}",
"blockip-legend": "Bloquiar usuariu",
"blockiptext": "Usa'l siguiente formulariu pa bloquiar el permisu d'escritura a una IP o a un usuariu concretu.\nEsto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWiki:Policy-url}}|polítiques]]. Da un motivu específicu (como por exemplu citar páxines que fueron vandalizaes).",
"ipaddressorusername": "Direición IP o nome d'usuariu:",
"ipb-unblock-addr": "Desbloquiar $1",
"ipb-unblock": "Desbloquiar un nome d'usuariu o direición IP",
"ipb-blocklist": "Ver los bloqueos esistentes",
- "ipb-blocklist-contribs": "Contribuciones de $1",
+ "ipb-blocklist-contribs": "Collaboraciones de {{GENDER:$1|$1}}",
"unblockip": "Desbloquiar usuariu",
"unblockiptext": "Usa'l formulariu d'abaxo pa restablecer l'accesu d'escritura a una direicion IP o a un nome d'usuariu previamente bloquiáu.",
"ipusubmit": "Desaniciar esti bloquéu",
"newimages-label": "Nome d'archivu (o una parte d'él):",
"newimages-showbots": "Ver les xubíes de los bots",
"noimages": "Nun hai nada que ver.",
- "ilsubmit": "Buscar",
+ "ilsubmit": "Guetar",
"bydate": "por fecha",
"sp-newimages-showfrom": "Amosar los archivos nuevos emprimando dende'l $1 a les $2",
"seconds": "{{PLURAL:$1|$1 segundu|$1 segundos}}",
"logentry-rights-rights": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de $3 dende $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|camudó}} la pertenencia a grupos de $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|promocionó}} automáticamente de $4 a $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|xubió}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|xubió}} una versión nueva de $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|xubió}} $3",
"rightsnone": "(nengún)",
"feedback-bugornote": "Si tas preparáu pa describir un problema técnicu en detalle, [$1 informa del fallu].\nD'otra miente, pues usar el formulariu cenciellu d'abaxo. El to comentariu apaecerá na páxina \"[$3 $2]\" xunto col to nome d'usuariu y el restolador qu'uses.",
"feedback-subject": "Asuntu:",
"action-pagelang": "cambiar la llingua de la páxina",
"log-name-pagelang": "Rexistru de cambios de llingua",
"log-description-pagelang": "Esti ye un rexistru de los cambios de llingua de les páxines.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} la llingua de la páxina $3 del $4 al $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} la llingua de la páxina $3 del $4 al $5.",
+ "default-skin-not-found": "¡Coime! L'aspeutu predetermináu pa la to wiki (<code>$wgDefaultSkin</code>), <code>$1</code> nun ta disponible.\n\nLa to instalación paez qu'incluye los siguientes aspeutos. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activalos y escoyer el predetermináu.\n\n$2\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org's], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Clonando unu de los direutorios <code>mediawiki/skins/*</code> via git nel direutoriu <code>skins/</code> de la to instalación de MediaWiki.\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki.\n\n; Si acabes d'anovar MediaWiki:\n: MediaWiki 1.24 y más nuevu yá nun activa automáticamente los aspeutos instalaos (llei [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Pues apegar les llinies siguientes en <code>LocalSettings.php</code> p'activar tolos aspeutos instalaos actualmente:\n\n<pre>$3</pre>\n\n; Si acabes d'editar <code>LocalSettings.php</code>:\n: Vuelvi a comprobar los nomes de los aspeutos por si hai errores d'escritura.",
+ "default-skin-not-found-no-skins": "¡Coime! L'aspeutu predetermináu pa la to wiki (<code>$wgDefaultSkin</code>), <code>$1</code> nun ta disponible.\n\nNun tienes aspeutos instalaos.\n\n; Si acabes d'instalar MediaWiki:\n: Probablemente instalasti dende git, o'l códigu fonte direutamente usando algún otru métodu. Esto ye d'esperar. MediaWiki 1.24 y más nuevu nun incluye nengún aspeutu nel repositoriu principal. Intenta instalar dellos aspeutos dende'l [https://www.mediawiki.org/wiki/Category:All_skins direutoriu d'aspeutos de mediawiki.org], asina:\n:* Descargando [https://www.mediawiki.org/wiki/Download l'instalador tarball], que vien con dellos aspeutos y estensiones. Pues copiar y apegar el direutoriu <code>skins/</code> d'ehí.\n:* Clonando unu de los direutorios <code>mediawiki/skins/*</code> via git nel direutoriu <code>skins/</code> de la to instalación de MediaWiki.\n: Facer esto nun tendría d'interferir col to repositoriu git si yes un desendolcador de MediaWiki. Llei [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pa más información sobro cómo activar los aspeutos y escoyer el predetermináu.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activáu)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactiváu''')"
}
"talkpagelinktext": "Keyaksera",
"specialpage": "Aptafu bu",
"personaltools": "Weltafa xeka",
- "postcomment": "Warzaf gabot",
"articlepage": "Telizwira",
"talk": "Keyaksera",
"views": "Wira",
"externaldberror": "Ont divefa origakrokla va pilkomodara ont va rinafa divefa pata me ronuskel.",
"login": "Pilkomodá",
"nav-login-createaccount": "Pataredú oke va int dogluyá",
- "loginprompt": "Ta dogluyara va {{SITENAME}} va koti \"cookie\" talpeyki gotutegiral.",
"userlogin": "Va int dogluyá / pataredú",
"userloginnocreate": "Dogluyara",
"logout": "Dimgluyá",
"searchprofile-advanced-tooltip": "Aneyara ko pilkovafo yoltxo",
"search-result-size": "$1 ({{PLURAL:$2|1 trogarn|$2 trogarn}})",
"search-result-category-size": "{{PLURAL:$1|1 bewik|$1 bewik}} ({{PLURAL:$2|1 volveyloma|$2 volveyloma}}, {{PLURAL:$3|1 iyeltak|$3 iyeltak}})",
- "search-result-score": "Vadjereka : $1%",
"search-redirect": "(graskara va $1)",
"search-section": "($1 gabot)",
"search-suggest": "Va $1 sugdalayal ?",
"file-exists-duplicate": "Bat iyeltak tir jontolaca ke {{PLURAL:$1|iyeltak|iyeltak}}:",
"uploadwarning": "Obral !",
"savefile": "Giwara va iyeltak",
- "uploadedimage": "« [[$1]] » ksudayan mo zanisiko",
- "overwroteimage": "kalvajayan siatos ke \"[[$1]]\"",
"uploaddisabled": "Skalev, staksera va iyeltak tir gritegirayan.",
"uploaddisabledtext": "Iyeltakkalvajara tir gritegirayana.",
"uploadscripted": "Bat iyeltak va HTML ok Script beksa rotir narujutuna gan web exulesiki ruldar.",
"watchlist-details": "{{PLURAL:$1|$1 bu|$1 bu}} koe rinafi suzdasiki rade prilarabueem.",
"wlheader-enotif": "Email walzera tir tegisa.",
"wlheader-showupdated": "Bu betayanu vielu rin ironokon worayal tir '''sulatcalakorafu'''.",
+ "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",
"watching": "Nedis...",
"mainpage": "Ana Səhifə",
"mainpage-description": "Ana Səhifə",
"policy-url": "Project:Qaydalar",
- "portal": "Kənd meydanı",
+ "portal": "İctimai portal",
"portal-url": "Project:Kənd meydanı",
"privacy": "Məxfilik siyasəti",
"privacypage": "Project:Gizlilik prinsipi",
"searchprofile-advanced-tooltip": "Ad aralığında axtar",
"search-result-size": "$1 ({{PLURAL:$2|1 söz|$2 söz}})",
"search-result-category-size": "{{PLURAL:$1|$1 element|$1 elementlər}} ({{PLURAL:$2|$2 alt kateqoriya|$2 alt kateqoriyalar}}, {{PLURAL:$3|$3 fayl|$3 fayllar}})",
- "search-result-score": "Uyğunluq: $1%",
"search-redirect": "(yönləndirmə $1)",
"search-section": "(bölmə $1)",
"search-suggest": "Bəlkə, bunu nəzərdə tuturdunuz: $1",
"fileexists-extension": "Bu adda başqa bir fayl mövcuddur: [[$2|thumb]]\n* Yüklənilən faylın adı: <strong>[[:$1]]</strong>\n* Mövcud faylın adı: <strong>[[:$2]]</strong>\nXahiş edirik, başqa ad seçin.",
"uploadwarning": "Yükləmə xəbərdarlığı",
"savefile": "Faylı qeyd et",
- "uploadedimage": "\"[[$1]]\" yükləndi",
- "overwroteimage": "\"[[$1]]\"-in yeni versiyası yükləndi",
"uploaddisabled": "Yükləmə baş tutmadı",
"copyuploaddisabled": "URL-dən yükləmə baş tutmadı.",
"uploaddisabledtext": "Fayl yüklənməsi baş tutmadı.",
"talkpagelinktext": "دانیشیق",
"specialpage": "اؤزل صحیفه",
"personaltools": "شخصی آراجلار",
- "postcomment": "يئنی بؤلوم",
"articlepage": "ایچریلی صحیفهیه باخ",
"talk": "دانیشیق",
"views": "گؤرونوشلر",
"externaldberror": "بیر دیتابیس دوغرولاما خطاسی اولدو، یوخسا سیزین ائشیک حسابینیزی گونجللدمگه ایجازهنیز یوخدور.",
"login": "گیریش",
"nav-login-createaccount": "گیریش / حساب یاراد",
- "loginprompt": "{{SITENAME}} سایتینا گیریش اوچون، کوکیلره ایجازه وئرمک لازیمدیر.",
"userlogin": "گیریش / حساب یاراد",
"userloginnocreate": "گیریش",
"logout": "چیخیش",
"searchprofile-advanced-tooltip": "تاپشیریلان آدفضالاریندا آختار",
"search-result-size": "$1 ({{PLURAL:$2|۱ سؤزجوک|$2 سؤزجوک}})",
"search-result-category-size": "{{PLURAL:$1|بیر|$1}} عوضو ({{PLURAL:$2|بیر|$}} آلتبؤلمه، {{PLURAL:$3|بیر|$3}} فایل)",
- "search-result-score": "اویغونلوق: $1٪",
"search-redirect": "یوللاندیرما $1",
"search-section": "(بؤلوم $1)",
"search-suggest": "بونو نظرده توتوردونوزمو: $1",
"uploadwarning": "يوکلهمه خبردارلیغی",
"uploadwarning-text": "خاهیش ائدیریک آشاغیداکی فایل شرحینی دییشدیرین و یئنیدن جهد ائدین.",
"savefile": "فايلی قئيد ائت",
- "uploadedimage": "«[[$1]]» یوکلندی",
- "overwroteimage": "\"[[$1]]\"-این یئنی نوسخه سی یوکلندی",
"uploaddisabled": "يوکلهمه باش توتمادی",
"copyuploaddisabled": "اینترنت آدرسی ایله یوکلمه باش توتمادی.",
"uploaddisabledtext": "فايل يوکلنمهسی باش توتمادی.",
"watchlist-details": "دانیشیق صفحهلرینی سایمایاراق، {{PLURAL:$1|$1 صفحهنی}} ایزلهییرسینیز.",
"wlheader-enotif": "ایمیل ایله بیلدیریش آچیلیبدیر.",
"wlheader-showupdated": "سون گؤروشونوزدن سونرا ائدیلن دییشیکلیکلر '''قالین''' گؤستریلیبدیلر.",
+ "wlnote": "آشاغیداکی {{PLURAL:$1|'''$1''' ديَیشیکلیک|'''$1'''ديَیشیکلیک}} سون {{PLURAL:$2|ساعتدا|'''$2''' ساعتدا}} ائدیلمیشدیر.$3، $4",
"wlshowlast": "سون $1 ساعات $2 گون گؤستر $3",
"watchlist-options": "ایزلهدیکلر سئچمهلری",
"watching": "ایزلهنیلیر...",
"duplicate-defaultsort": "'''دیقت:''' احتیمال ائدیلن «$2» دفالت آچاری، قاباقکی «$1» دفالت آچارینی گئچرسیز ائدیر.",
"version": "نوسخه",
"version-extensions": "قورولموش گنیشلندیرمهلر",
+ "version-skins": "قابیقلار",
"version-specialpages": "اؤزل صحیفهلر",
"version-parserhooks": "آیریشدیران چنگللری",
"version-variables": "دَییشینلر",
"version-antispam": "اِسپم اؤنلهمه",
- "version-skins": "قابیقلار",
"version-other": "آیری",
"version-mediahandlers": "مئدیا ایشلدنلری",
"version-hooks": "چنگللر",
"searchprofile-advanced-tooltip": "Махсус исем арауыҡтарында эҙләргә",
"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 бүлеге)",
"search-suggest": "Бәлки, ошоно эҙләйһегеҙҙер: $1",
"uploadwarning": "Киҫәтеү",
"uploadwarning-text": "Зинһар, түбәндәге файл тасуирламаһын үҙгәртегеҙ һәм яңынан ҡабатлап ҡарағыҙ.",
"savefile": "Һөҙгөстө яҙҙырып ҡуйырға",
- "uploadedimage": "«[[$1]]» тейәлгән",
- "overwroteimage": "\"[[$1]]\" файлының яңы өлгөһө тейәлде",
"uploaddisabled": "Тейәү рөхсәт ителмәй",
"copyuploaddisabled": "URL адрес аша тейәү рөхсәт ителмәй.",
"uploaddisabledtext": "Файлдар тейәү рөхсәт ителмәй.",
"watchlist-details": "Һеҙҙең күҙәтеү исемлегегеҙҙә, фекерләшеү биттәрен һанамағанда, {{PLURAL:$1|$1 бит}} бар.",
"wlheader-enotif": "Электрон почта аша белдереү индерелгән.",
"wlheader-showupdated": "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
+ "wlnote": "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|1=сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|1=үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
"wlshowlast": "Һуңғы $1 сәғәт $2 көн өсөн күрһәт $3",
"watchlist-options": "Күҙәтеү исемлеге көйләүҙәре",
"watching": "Күҙәтеү исемлегенә өҫтәү...",
"emptyfile": "Dé aufféglooderne Daatei is laar. Da Grund kauh a Tippfeeler im Daateinaum seih. Bittscheh kóntróllier, ób du dé Daatei wirklé aufféloon wüst.",
"uploadwarning": "Ówocht",
"savefile": "Daatei speichern",
- "uploadedimage": "hod „[[$1]]“ affeglodn",
"uploaddisabled": "'s aufféloon is deaktivierd",
"uploadscripted": "Dé Datei enthoit HTML- óder Scriptcode, der wos irrtymlicherweis voram Webbrowser ausgfyrd wern kunnterd.",
"uploadvirus": "Dé Daatei do enthoitt a Virus! Details: $1",
"watchlist-details": "Du beoochst {{PLURAL:$1|$1 Seitn}}, Dischkriaseitn ned mitgrechnad",
"wlheader-enotif": "Da E-Mail-Benoochrichtigungsdeanst is aktivierd.",
"wlheader-showupdated": "Seiten mid noh néd gseengne Änderrungen wern '''fett''' dorgstöd.",
+ "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",
"watching": "Beówochten ...",
"WBT003Bugari",
"WBT004Togu",
"WBT006Hendra",
- "WBT009Anju"
+ "WBT009Anju",
+ "아라"
]
},
"tog-underline": "Ondolhon panait",
"qbmyoptions": "Alaman niiba",
"faq": "FAQ",
"faqpage": "Project:FAQ",
- "vector-action-addsection": "Bagian na imbaru",
- "vector-action-delete": "Sesa",
- "vector-action-move": "Pahusor",
- "vector-action-protect": "Ramoti",
- "vector-action-undelete": "unang sesa",
- "vector-action-unprotect": "Uba parlindungan",
- "vector-view-create": "Tompa",
- "vector-view-edit": "Paubah",
- "vector-view-history": "Patudu andorang na",
- "vector-view-view": "Jaha",
- "vector-view-viewsource": "Ida haroanna",
"actions": "Pangulahonon",
"namespaces": "Inganan ni goar",
"variants": "Angka ragam",
"talkpage": "Hatahon alaman on",
"talkpagelinktext": "Pangkataion",
"personaltools": "Ula-ula ni sasahalak",
- "postcomment": "Bagian imbaru",
"talk": "Panghataion",
"views": "Hataridaan",
"toolbox": "Poti ulaula",
"nstab-help": "Alaman pangurupion",
"nstab-category": "Kategori",
"error": "Hasesega",
- "fileappenderror": "Ndang boi pamasuhon \"$1\" tu \"$2\".",
"badarticleerror": "Ulaon on dang boi i ulahon di alaman on",
"cannotdelete-title": "Ndang boi manesa alaman \"$1\"",
"badtitle": "Ulu ni surat na rumar",
"password-change-forbidden": "Ndang boi ubaonmu hata hincu di wiki on",
"login": "Bongot tu log",
"nav-login-createaccount": "Bongot tu log/ bahen akun",
- "loginprompt": "Ikkon dipangolu do \"cookies\" laho bongot log tu {{SINTENAME}}.",
"userlogin": "Bongot tu log/ bahen akun",
"userlogout": "Haruar log",
"userlogin-noaccount": "Ndang adong akun",
"searchmenu-exists": "'''Adong sada alaman na digoari \"[[:$1]]\" di wiki on.'''",
"searchmenu-new": "'''Bahen alaman \"[[:$1]]\" di wiki on!'''",
"searchprofile-articles": "Alaman isi",
- "searchprofile-project": "Alaman pangurupion dohot proyek",
"searchprofile-images": "Akat na godang gunana",
"searchprofile-everything": "Sasude",
"searchprofile-advanced": "Timbul",
"searchprofile-articles-tooltip": "Mandiori di $1",
- "searchprofile-project-tooltip": "Mandiori di $1",
"searchprofile-images-tooltip": "Mandiori berkas",
"searchprofile-everything-tooltip": "Mandiori di sude inganan (dohot di alaman panghataion)",
"searchprofile-advanced-tooltip": "Mandiori pake inganan ni goar",
"recentchanges-label-minor": "Sada panotaan na metmet",
"recentchanges-label-bot": "Panotaan on diulahon bot",
"recentchanges-label-unpatrolled": "Panotaan on ndang dipamanat dope",
- "rclistfrom": "Patuduhon parubaan na imbaru mamungka sian $1",
+ "rclistfrom": "Patuduhon parubaan na imbaru mamungka sian $3 $2",
"rcshowhideminor": "$1 panotaan na metmet",
"rcshowhidebots": "$1 bot",
"rcshowhideliu": "$1 pamarhaseang bongot tu log",
"booksources-go": "Torushon",
"log": "Angka log",
"allpages": "Sude alaman",
- "alphaindexline": "$1 tu $2",
"allarticles": "Sude alaman",
"allpagessubmit": "Torushon",
"categories": "Angka horong",
"ZxxZxxZ",
"아라",
"RigiMahnoor",
- "Oldstoneage"
+ "Oldstoneage",
+ "Baloch Afghanistan"
]
},
"tog-underline": ":لینکانآ خط کش",
"hidetoc": "پناه کن",
"collapsible-collapse": "چیر داتن",
"collapsible-expand": "تچک کتن",
+ "confirmable-confirm": "آیا {{GENDER:$1|شما}} مطمعین ویت?",
+ "confirmable-yes": "هان",
+ "confirmable-no": "نه",
"thisisdeleted": "به گند یا پچ ترین $1?",
"viewdeleted": "به گند $1?",
"restorelink": "{{PLURAL:$1|یک حذف اصلاح|$1 حذف اصلاح}}",
"searchprofile-advanced-tooltip": "گردگ ته نام فضایان دل واه",
"search-result-size": "$1 ({{PLURAL:$2|1کلمه|$2 کلمات}})",
"search-result-category-size": "{{PLURAL:$1|یک عضو|$1 عضو}} ({{PLURAL:$2|یک جهلرده|$2 جهلرده}}، {{PLURAL:$3|یک فایل|$3 فایل}})",
- "search-result-score": "ربط: $1%",
"search-redirect": "(غیر مستقیم $1 )",
"search-section": "(بخش $1 )",
"search-file-match": "(فایلء محتواء همجندی)",
"file-deleted-duplicate": "یک فایلی په داب ای فایل ([[:$1]]) پیسرتر حذف بوتگت. شما بایدن تاریح حذف آ فایلء دگه بچاریت",
"uploadwarning": "هوژاری آپلود",
"savefile": "ذخیره فایل",
- "uploadedimage": "اپلود بوت \"[[$1]]\"",
- "overwroteimage": "یک نوکین نسخه چه \"[[$1]]\" آپلود بیتت",
"uploaddisabled": "آپ.د غبر فعال انت",
"uploaddisabledtext": "آپلود فایل غیر فعال انت.",
"php-uploaddisabledtext": "آپلود کتن فایل ته پیاچپی فعال نهنت. تنظیم file_uploads کنترل کنیت.",
"watchlist-details": "{{PLURAL:$1|$1 صفحه|$1 صفحات}} چارتگ بیت صفحات گپ حساب نه بیگن",
"wlheader-enotif": "اخطار ایمیل فعالنت.",
"wlheader-showupdated": "صفحات که عوض بوتگنت چه شمی آهری چارتن '''پررنگ''' پیش دراگ بنت.",
+ "wlnote": "جهلء {{PLURAL:$1|آهرین تغییر هست|آهرین هست'''$1''' تغییرات}} ته آهرین {{PLURAL:$2|ساعت|'''$2''' ساعات}}.",
"wlshowlast": "پیش دار آهرین $1 ساعات $2 روچان $3",
"watchlist-options": "گزینه یان لیست چارگ",
"watching": "چارگ بین",
"delete-edit-reasonlist": "اصلاح کن دلایل حذفء",
"delete-toobig": "صفحهء یک مزنین تاریح اصلاحی هست گیشتر چه $1 {{PLURAL:$1|بازبینی|بازبینی}}.\nحذف چوشین صفحات په خاظر جلو گر چه ناگهانی اتفاق ته سایت {{SITENAME}} ممنوع بوتت.",
"delete-warning-toobig": "ای صفحه مزنین تاریح اصلاح هست، گیش چه $1 {{PLURAL:$1|بازبینی|بازبینی}}.\nحذف آی شاید کار دیتابیس {{SITENAME}} قطع کنت؛\nگون اخطار پیش روت.",
+ "delete-cantedit": "شما نه توانیت ای صپحا پاک کنیت بی خاطیریکه شما اجازه نداریت آیرا ایڈیت کنیت.",
"rollback": "پشت ترگ اصلاحات",
"rollback_short": "پشتررگ",
"rollbacklink": "عقب ترگ",
"expand_templates_ok": "هوبنت",
"expand_templates_remove_comments": "بزور نظرات",
"expand_templates_generate_xml": "پیش دار درچک تجزیه XMLء",
- "expand_templates_preview": "بازبین"
+ "expand_templates_preview": "بازبین",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (پعال)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''غیر پعال''')"
}
"searchprofile-advanced-tooltip": "Maghanap nin pankustombreng espasyong-ngaran",
"search-result-size": "$1 ({{PLURAL:$2|1 tatarámon|$2 mga tatarámon}})",
"search-result-category-size": "{{PLURAL:$1|1 miyembro|$1 mga miyembro}} ({{PLURAL:$2|1 subkategorya|$2 mga subkategorya}}, {{PLURAL:$3|1 sagunson|$3 mga sagunson}})",
- "search-result-score": "Relebansiya: $1%",
"search-redirect": "(Panukdong otro $1)",
"search-section": "(Seksyon $1)",
"search-suggest": "Boot mong ipakahulugan: $1",
"uploadwarning": "Patanid sa pagkarga",
"uploadwarning-text": "Pakibaguha tabi an deskripsyon kan sagunson sa ibaba asin paki-otroha giraray.",
"savefile": "Itagama an ''file''",
- "uploadedimage": "ipinagkarga na \"[[$1]]\"",
- "overwroteimage": "kinarga an bagong bersión kan \"[[$1]]\"",
"uploaddisabled": "Pigpopondó an mga pagkargá",
"copyuploaddisabled": "An pagkarga sa paagi kan kilyawan pinagpondo.",
"uploaddisabledtext": "An pagkarga kan mga sagunson pinagpondo tabi.",
"watchlist-details": "{{PLURAL:$1|$1 pahina|$1 mga pahina}} sa saimong bantay-listahan, dae binibilang an mga pahina nin orolayan.",
"wlheader-enotif": "E-surat na paisi pinagpaandar na.",
"wlheader-showupdated": "Mga pahina na pinagriliwat poon kaidtong huri kang nagbisita sainda ipinapatanaw na '''mahîbog'''",
+ "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",
"watching": "Pigbabantayan...",
"hidetoc": "схаваць",
"collapsible-collapse": "Згарнуць",
"collapsible-expand": "Разгарнуць",
+ "confirmable-confirm": "Вы ўпэўненыя?",
+ "confirmable-yes": "Так",
+ "confirmable-no": "Не",
"thisisdeleted": "Праглядзець ці аднавіць $1?",
"viewdeleted": "Паказаць $1?",
"restorelink": "$1 {{PLURAL:$1|выдаленую зьмену|выдаленыя зьмены|выдаленых зьменаў}}",
"invalidtitle-knownnamespace": "Няслушная назва ў прасторы «$2»: «$3»",
"invalidtitle-unknownnamespace": "Няслушная назва ў невядомай прасторы $1: «$2»",
"exception-nologin": "Вы не ўвайшлі ў сыстэму",
- "exception-nologin-text": "Неабходна [[Special:Userlogin|ўвайсьці]], каб атрымаць доступ да гэтай старонкі або дзеяньня.",
+ "exception-nologin-text": "Неабходна ўвайсьці, каб атрымаць доступ да гэтай старонкі або дзеяньня.",
"exception-nologin-text-manual": "Неабходна $1, каб мець доступ да гэтай старонкі або дзеяньня.",
"virus-badscanner": "Няслушная канфігурацыя: невядомы антывірусны сканэр: ''$1''",
"virus-scanfailed": "памылка сканаваньня (код $1)",
"parser-template-recursion-depth-warning": "Перавышана мяжа глыбіні рэкурсіі шаблёнаў ($1)",
"language-converter-depth-warning": "Перавышанае абмежаваньне глыбіні канвэртару варыянтаў мовы ($1)",
"node-count-exceeded-category": "Старонкі зь перавышанай колькасьцю вузлоў",
- "node-count-exceeded-category-desc": "Ð\9aаÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f длÑ\8f Ñ\81Ñ\82аÑ\80онак, на Ñ\8fкÑ\96Ñ\85 пеÑ\80авÑ\8bÑ\88аная колькасьць вузлоў.",
+ "node-count-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b пеÑ\80авÑ\8bÑ\88анаÑ\8f макÑ\81Ñ\8bмалÑ\8cная колькасьць вузлоў.",
"node-count-exceeded-warning": "Старонка перавысіла дазволеную колькасьць вузлоў",
"expansion-depth-exceeded-category": "Старонкі зь перавышанай глыбінёй уключэньня",
- "expansion-depth-exceeded-category-desc": "Ð\93Ñ\8dÑ\82а каÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f длÑ\8f Ñ\81Ñ\82аÑ\80онак, дзе пеÑ\80авÑ\8bÑ\88анаÑ\8f глÑ\8bбÑ\96нÑ\8f раскрыцьця.",
+ "expansion-depth-exceeded-category-desc": "СÑ\82аÑ\80онка пеÑ\80авÑ\8bÑ\88ае макÑ\81Ñ\8bмалÑ\8cнÑ\83Ñ\8e глÑ\8bбÑ\96нÑ\8e раскрыцьця.",
"expansion-depth-exceeded-warning": "Старонка перавысіла дазволеную глыбіню ўключэньняў",
"parser-unstrip-loop-warning": "Вызначаная незачыненая пятля",
"parser-unstrip-recursion-limit": "Перавышанае абмежаваньне глыбіні рэкурсіі ($1)",
"searchprofile-advanced-tooltip": "Шукаць у дадатковых прасторах назваў",
"search-result-size": "$1 ($2 {{PLURAL:$2|слова|словы|словаў}})",
"search-result-category-size": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}} ($2 {{PLURAL:$2|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}, $3 {{PLURAL:|файл|файлы|файлаў}})",
- "search-result-score": "Адпаведнасьць: $1%",
"search-redirect": "(перанакіраваньне $1)",
"search-section": "(сэкцыя $1)",
"search-file-match": "(супадае зь зьмесьцівам файла)",
"preferences": "Налады",
"mypreferences": "Налады",
"prefs-edits": "Колькасьць рэдагаваньняў:",
- "prefsnologintext2": "Ð\9dеабÑ\85одна $1, каб зьмяніць вашыя налады.",
+ "prefsnologintext2": "Ð\9aалÑ\96 лаÑ\81ка, Ñ\83вайдзÑ\96Ñ\86е Ñ\9e Ñ\81Ñ\8bÑ\81Ñ\82Ñ\8dмÑ\83, каб зьмяніць вашыя налады.",
"prefs-skin": "Афармленьне",
"skin-preview": "Папярэдні прагляд",
"datedefault": "Па змоўчаньні",
"uploadwarning": "Папярэджаньне",
"uploadwarning-text": "Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.",
"savefile": "Захаваць файл",
- "uploadedimage": "загружаная «[[$1]]»",
- "overwroteimage": "загружаная новая вэрсія «[[$1]]»",
"uploaddisabled": "Загрузка файлаў забароненая",
"copyuploaddisabled": "Загрузка праз URL-адрас адключаная.",
"uploaddisabledtext": "Загрузка файлаў забароненая.",
"trackingcategories-desc": "Крытэр уключэньня ў катэгорыю",
"noindex-category-desc": "Гэтая старонка не індэксуецца пошукавымі робатамі, таму што на ёй маецца магічнае слова <code><nowiki>__NOINDEX__</nowiki></code>, а старонка знаходзіцца ў прасторы назваў, дзе дазволны гэты сьцяг.",
"index-category-desc": "На старонцы знаходзіцца магічнае слова <code><nowiki>__INDEX__</nowiki></code> (пры гэтым старонка знаходзіцца ў прасторы назваў, дзе дазволены гэты сьцяг), таму яна індэксуецца пошукавымі робатамі ў тых выпадках, калі звычайна гэтага не адбываецца.",
- "post-expand-template-inclusion-category-desc": "Пасьля разгортваньня ўсіх шаблёнаў, памер старонкі перавысіў <code>$wgMaxArticleSize</code>, таму некаторыя шаблёны не былі паказаныя цалкам.",
- "post-expand-template-argument-category-desc": "Ð\9fаÑ\81Ñ\8cлÑ\8f Ñ\80аÑ\81кÑ\80Ñ\8bÑ\86Ñ\8cÑ\86Ñ\8f аÑ\80гÑ\83мÑ\8dнÑ\82Ñ\83 Ñ\88аблÑ\91нÑ\83 (неÑ\88Ñ\82а Ñ\9e Ñ\82Ñ\80айнÑ\8bÑ\85 дÑ\83жкаÑ\85, напÑ\80Ñ\8bклад, <code>{{{Foo}}}</code>), Ñ\81Ñ\82аÑ\80онка пеÑ\80авÑ\8bÑ\88ае памеÑ\80 <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "На старонцы ўжываецца зашмат рэсурсаёмістых функцыяў парсэру (такіх, як <code>#ifexist</code>). Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "post-expand-template-inclusion-category-desc": "Памер старонкі перавысіў <code>$wgMaxArticleSize</code> пасьля разгортваньня ўсіх шаблёнаў, таму некаторыя шаблёны не былі паказаныя цалкам.",
+ "post-expand-template-argument-category-desc": "СÑ\82аÑ\80онка пеÑ\80авÑ\8bÑ\88ае памеÑ\80 <code>$wgMaxArticleSize</code> паÑ\81Ñ\8cлÑ\8f Ñ\80аÑ\81кÑ\80Ñ\8bÑ\86Ñ\8cÑ\86Ñ\8f аÑ\80гÑ\83мÑ\8dнÑ\82Ñ\83 Ñ\88аблÑ\91нÑ\83 (неÑ\88Ñ\82а Ñ\9e Ñ\82Ñ\80айнÑ\8bÑ\85 дÑ\83жкаÑ\85, напÑ\80Ñ\8bклад, <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "На старонцы ўжываецца зашмат рэсурсаёмістых функцыяў парсэру (такіх, як <code>#ifexist</code>). Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Інструкцыя:$wgExpensiveParserFunctionLimit].",
"broken-file-category-desc": "Катэгорыя дадаецца, калі старонка ўтрымлівае няслушную спасылку на файл (спасылку на файл, які не існуе).",
"hidden-category-category-desc": "Гэта катэгорыя з дададзенай меткай <code><nowiki>__HIDDENCAT__</nowiki></code> у ёй, што па змоўчаньні не адлюстроўвае яе на старонках у сьпісе катэгорыяў.",
"trackingcategories-nodesc": "Апісаньне адсутнічае.",
"delete-edit-reasonlist": "Рэдагаваць прычыны выдаленьня",
"delete-toobig": "Гэтая старонка мае доўгую гісторыю рэдагаваньняў, болей за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.\nВыдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.",
"delete-warning-toobig": "Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.\nЯе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.",
+ "delete-cantedit": "Вы ня можаце выдаліць гэтую старонку, таму што ня маеце правоў на яе рэдагаваньне.",
"deleting-backlinks-warning": "'''Увага:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|іншыя старонкі]] ўключаюць або спасылаюцца на старонку, якую вы зьбіраецеся выдаліць.",
"rollback": "Адкаціць рэдагаваньні",
"rollback_short": "Адкат",
"importlogpage": "Журнал імпартаваньняў",
"importlogpagetext": "Імпартаваньне адміністратарамі старонак з гісторыяй зьменаў зь іншых вікі.",
"import-logentry-upload": "імпартавана [[$1]] праз загрузку файла",
- "import-logentry-upload-detail": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
+ "import-logentry-upload-detail": "$1 {{PLURAL:$1|вэрсія імпартаваная|вэрсіі імпартаваныя|вэрсіяў імпартаваныя}}",
"import-logentry-interwiki": "імпартавана зь іншай вікі $1",
- "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}} з $2",
+ "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|вэрсія імпартаваная|вэрсіі імпартаваныя|вэрсіяў імпартаваныя}} з $2",
"javascripttest": "Тэставаньне JavaScript",
"javascripttest-title": "Праводзіцца тэставаньне $1",
"javascripttest-pagetext-noframework": "Гэтая старонка трымаецца для правядзеньня тэстаў JavaScript.",
"logentry-rights-rights": "$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групы з $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$1|зьмяніў|зьмяніла}} прыналежнасьць $3 да групаў",
"logentry-rights-autopromote": "$1 {{GENDER:$1|быў аўтаматычна пераведзены|была аўтаматычна пераведзеная}} з групы $4 ў $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|загрузіў|загрузіла}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|загрузіў|загрузіла}} новую вэрсію $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|загрузіў|загрузіла}} $3",
"rightsnone": "(няма)",
"feedback-bugornote": "Калі Вы гатовы падрабязна апісаць тэхнічную праблему, калі ласка [$1 паведаміце пра памылку]. \nУ адваротным выпадку, Вы можаце выкарыстоўваць простую форму пададзеную ніжэй. Ваш камэнтар будзе дададзены на старонку «[$3 $2]», разам з Вашым іменем удзельніка і выкарыстоўваемым браўзэрам.",
"feedback-subject": "Тэма:",
"action-pagelang": "зьмену мовы старонкі",
"log-name-pagelang": "Журнал зьменаў мовы",
"log-description-pagelang": "Гэта журнал зьменаў мовы старонак.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|зьмяніў|зьмяніла}} мову старонкі $3 з $4 на $5.",
+ "default-skin-not-found": "Упс! Тэма афармленьня па змоўчаньні для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code> недаступная.\n\nВашае ўсталяваньне, падобна, уключае наступныя тэмы афармленьня. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.\n\n$2\n\n; Калі вы толькі што ўсталявалі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's каталёгу тэмаў]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code>skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча.\n\n; Калі вы толькі што абнавілі MediaWiki:\n: MediaWiki вэрсіі 1.24 і навейшыя больш не падключаюць тэмы афармленьня аўтаматычна (глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Інструкцыя:Аўтаматычнае выяўленьне тэмаў афармленьня]). Вы можаце дадаць наступныя радкі ў <code>LocalSettings.php</code>, каб падключыць усе ўсталяваныя тэмы афармленьня:\n\n<pre>$3</pre>\n\n; Калі вы толькі што зьмянілі <code>LocalSettings.php</code>:\n: Пераправерце назвы тэмаў афармленьня на наяўнасьць памылак.",
+ "default-skin-not-found-no-skins": "Упс! Тэма афармленьня па змоўчаньня для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступная.\n\nВы ня маеце ўсталяваных тэмаў афармленьня.\n\n; Калі вы толькі што ўсталявалі або абнавілі MediaWiki:\n: Напэўна вы ўсталявалі з git або наўпрост з крынічнага коду з ужываньнем іншага мэтаду. Гэта чакана. MediaWiki вэрсіі 1.24 і навейшыя ня ўтрымліваюць тэмы афармленьня ў галоўным сховішчы. Паспрабуйце ўсталяваць некалькі тэмаў афармленьня з [https://www.mediawiki.org/wiki/Category:All_skins каталёгу тэмаў mediawiki.org]:\n:* Спампуйце [https://www.mediawiki.org/wiki/Download tarball-усталёўнік], які ўтрымлівае некалькі тэмаў і пашырэньняў. Вы можаце скапіяваць каталёг <code>skins/</code> зь яго.\n:* Зрабіце клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталёг <code>skins/</code> вашай усталёўкі MediaWiki.\n: Калі вы распрацоўнік MediaWiki, гэта не павінна ўплываць на вашае git-сховішча. Глядзіце [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя:Наладка тэмаў афармленьня] дзеля інфармацыі, як падключыць іх і абраць тэму па змоўчаньні.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''адключана''')"
}
"hidetoc": "не паказваць",
"collapsible-collapse": "Схаваць",
"collapsible-expand": "Паказаць",
+ "confirmable-confirm": "{{GENDER:$1|Вы}} ўпэўнены?",
+ "confirmable-yes": "Так",
+ "confirmable-no": "Не",
"thisisdeleted": "Паказаць ці аднавіць $1?",
"viewdeleted": "Ці паказаць $1?",
"restorelink": "$1 {{PLURAL:$1|сцёртая праўка|сцёртыя праўкі|сцёртых правак}}",
"invalidtitle-knownnamespace": "Недапушчальны загаловак з прасторай імёнаў \"$2\" і тэкстам \"$3\"",
"invalidtitle-unknownnamespace": "Недапушчальны загаловак з невядомым лікам прасторы імён $1 і тэкстам \"$2\"",
"exception-nologin": "Вы не ўвайшлі ў сістэму",
- "exception-nologin-text": "Належыць [[Special:Userlogin|прадставіцца сістэме]], каб мець доступ да гэтай старонкі ці дзеяння.",
+ "exception-nologin-text": "Належыць прадставіцца сістэме, каб мець доступ да гэтай старонкі ці дзеяння.",
"exception-nologin-text-manual": "Належыць $1, каб мець доступ да гэтай старонкі ці дзеяння.",
"virus-badscanner": "Некарэктная канфігурацыя: невядомы антывірусны сканер: ''$1''",
"virus-scanfailed": "не ўдалося праверыць (код $1)",
"parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)",
"language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)",
"node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць вузлоў",
- "node-count-exceeded-category-desc": "Ð\9aаÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f длÑ\8f Ñ\81Ñ\82аÑ\80онак, Ñ\83 Ñ\8fкÑ\96Ñ\85 пеÑ\80авÑ\8bÑ\88ана колькасць вузлоў.",
+ "node-count-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b пеÑ\80авÑ\8bÑ\88ана макÑ\81Ñ\96малÑ\8cнаÑ\8f колькасць вузлоў.",
"node-count-exceeded-warning": "Старонка перасягнула колькасць вузлоў",
"expansion-depth-exceeded-category": "Старонкі, якія перасягнулі глыбіню разгортвання",
- "expansion-depth-exceeded-category-desc": "Ð\93Ñ\8dÑ\82а каÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f длÑ\8f Ñ\81Ñ\82аÑ\80онак, Ñ\83 Ñ\8fкÑ\96Ñ\85 пеÑ\80аÑ\81Ñ\8fгнÑ\83Ñ\82а глыбіня разгортвання.",
+ "expansion-depth-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b пеÑ\80аÑ\81Ñ\8fгнÑ\83Ñ\82а макÑ\81Ñ\96малÑ\8cнаÑ\8f глыбіня разгортвання.",
"expansion-depth-exceeded-warning": "Старонка перасягнула глыбіню разгортвання",
"parser-unstrip-loop-warning": "Выяўлены закальцаваны unstrip",
"parser-unstrip-recursion-limit": "Перавышаны ліміт рэкурсіі unstrip ($1)",
"searchprofile-advanced-tooltip": "Шукаць у дадатковых прасторах назваў",
"search-result-size": "$1 ({{PLURAL:$2|1 слова|$2 словы|$2 словаў}})",
"search-result-category-size": "{{PLURAL:$1|$1 элемент|$1 элемента|$1 элементаў}} ({{PLURAL:$2|$2 падкатэгорыя|$2 падкатэгорыі|$2 падкатэгорый}}, {{PLURAL:$3|$3 файл|$3 файла|$3 файлаў}})",
- "search-result-score": "Адпаведнасць: $1%",
"search-redirect": "(перасылка $1)",
"search-section": "(падраздзел $1)",
"search-file-match": "(адпавядае змесціву файла)",
"preferences": "Настройкі",
"mypreferences": "Настройкі",
"prefs-edits": "Колькасць правак:",
- "prefsnologintext2": "Трэба $1, каб мяняць свае настройкі.",
+ "prefsnologintext2": "Трэба прадставіцца сістэме, каб мяняць свае настройкі.",
"prefs-skin": "Вокладка",
"skin-preview": "Перадпаказ",
"datedefault": "Не вызначана",
"uploadwarning": "Папярэджанне пра ўкладанне",
"uploadwarning-text": "Калі ласка, змяніце апісанне файла ніжэй і паўтарыце спробу.",
"savefile": "Запісаць файл",
- "uploadedimage": "укладзена \"[[$1]]\"",
- "overwroteimage": "укладзена новая версія \"[[$1]]\"",
"uploaddisabled": "Укладанні не дазваляюцца",
"copyuploaddisabled": "Даданне па URL адключана.",
"uploaddisabledtext": "Не дазваляюцца ўкладанні файлаў.",
"index-category-desc": "На старонцы ёсць магічнае слова <code><nowiki>__INDEX__</nowiki></code> (і старонка знаходзіцца ў прасторы назваў, дзе гэты сцяг дазволены), таму яна індэксуецца пошукавымі робатамі у выпадках, калі гэтага звычайна не адбываецца.",
"post-expand-template-inclusion-category-desc": "Пасля разгортвання ўсіх шаблонаў памер старонкі перавышае <code>$wgMaxArticleSize</code>, таму некаторыя шаблоны пакінуты неразгорнутымі.",
"post-expand-template-argument-category-desc": "Пасля разгортвання аргумента шаблона (штосьці ў патройных фігурных дужках, напрыклад, <code>{{{Foo}}}</code>), памер старонкі перавышае <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Ð\97анадÑ\82а Ñ\88маÑ\82 пÑ\80аÑ\86аÑ\91мкÑ\96Ñ\85 зваÑ\80оÑ\82аÑ\9e да Ñ\84Ñ\83нкÑ\86Ñ\8bй паÑ\80Ñ\81еÑ\80а (напÑ\80Ñ\8bклад, <code>#ifexist</code>) Ñ\83клÑ\8eÑ\87ана Ñ\9e Ñ\81Ñ\82аÑ\80онкÑ\83. Гл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Ð\9aаÑ\82Ñ\8dгоÑ\80Ñ\8bÑ\8f дадаеÑ\86Ñ\86а, калÑ\96 Ñ\81таронка ўтрымлівае няспраўную спасылку на файл (спасылку на ўкладзены файл, якога няма).",
- "hidden-category-category-desc": "Гэта катэгорыя змяшчае <code><nowiki>__HIDDENCAT__</nowiki></code>, што паводле прадвызначэння засцерагае яе ад паказу ў спісе катэгорый на старонках.",
+ "expensive-parserfunction-category-desc": "У Ñ\81Ñ\82аÑ\80онкÑ\83 Ñ\9eклÑ\8eÑ\87ана занадÑ\82а Ñ\88маÑ\82 пÑ\80аÑ\86аÑ\91мкÑ\96Ñ\85 зваÑ\80оÑ\82аÑ\9e да Ñ\84Ñ\83нкÑ\86Ñ\8bй паÑ\80Ñ\81еÑ\80а (напÑ\80Ñ\8bклад, <code>#ifexist</code>). Гл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "Старонка ўтрымлівае няспраўную спасылку на файл (спасылку на ўкладзены файл, якога няма).",
+ "hidden-category-category-desc": "Гэта катэгорыя ўтрымлівае <code><nowiki>__HIDDENCAT__</nowiki></code> на старонцы змесціва, што паводле прадвызначэння засцерагае яе ад паказу ў спісе катэгорый на старонках.",
"trackingcategories-nodesc": "Апісанне адсутнічае.",
"trackingcategories-disabled": "Катэгорыя адключана",
"mailnologin": "Няма эл.адрасу",
"mywatchlist": "Спіс назірання",
"watchlistfor2": "Для $1 $2",
"nowatchlist": "Ваш спіс назірання зараз пусты.",
- "watchlistanontext": "Каб паглядзець ці змяніць спіс назірання, трэба $1.",
+ "watchlistanontext": "Каб паглядзець ці змяніць спіс назірання, трэба прадставіцца сістэме.",
"watchnologin": "Без прадстаўлення",
"addwatch": "Дадаць у спіс назірання",
"addedwatchtext": "Старонка \"[[:$1]]\" была дададзена да [[Special:Watchlist|назіраных]] вамі.\nЗмяненні, якія адбудуцца з гэтай старонкай і з размовамі пра яе, будуць паказвацца ў спісе назірання.",
"delete-edit-reasonlist": "Правіць прычыны сцірання",
"delete-toobig": "Старонка мае вялікую гісторыю правак, больш за $1 {{PLURAL:$1|версію|версій}}. Сціранне такіх старонак было абмежавана, каб пазбегчы ўтварэння выпадковых перашкод працы {{SITENAME}}.",
"delete-warning-toobig": "Старонка мае вялікую гісторыю правак, больш за $1 {{PLURAL:$1|версію|версій}}. Сціранне такіх старонак можа перашкодзіць працы базы даных {{SITENAME}}; будзьце асцярожнымі.",
+ "delete-cantedit": "Вы не можаце сцерці гэту старонку, таму што не маеце дазволу правіць яе.",
"deleting-backlinks-warning": "'''Увага:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Іншыя старонкі]] спасылаюцца на ці ўключаюць старонку, якую вы збіраецеся сцерці.",
"rollback": "Адкаціць праўкі",
"rollback_short": "Адкат",
"autoblockid": "Аўтаблакіроўка #$1",
"block": "Заблакаваць удзельніка",
"unblock": "Разблакаваць удзельніка",
- "blockip": "Заблакаваць удзельніка",
+ "blockip": "Заблакаваць {{GENDER:$1|удзельніка|удзельніцу}}",
"blockip-legend": "Заблакаваць удзельніка",
"blockiptext": "Гэты фармуляр дазваляе заблакаваць магчымасць запісу для пэўнага адрасу IP ці імя ўдзельніка.\nГэта трэба рабіць толькі дзеля засцерагання ад вандалізму і ў адпаведнасці з [[{{MediaWiki:Policy-url}}|правіламі]].\nНіжэй трэба ўпісаць канкрэтную прычыну (напрыклад, пералічваючы канкрэтныя старонкі, якія былі вандалізаваныя).",
"ipaddressorusername": "IP-адрас ці імя ўдзельніка:",
"ipb-unblock-addr": "Зняць блок з $1",
"ipb-unblock": "Зняць блок з імя ўдзельніка або адрасу IP",
"ipb-blocklist": "Паказаць наяўныя блокі",
- "ipb-blocklist-contribs": "Уклад $1",
+ "ipb-blocklist-contribs": "Уклад {{GENDER:$1|$1}}",
"unblockip": "Зняць блок з удзельніка",
"unblockiptext": "У форме, што ніжэй, можна вярнуць дазвол на запіс для раней заблакаванага адрасу IP або ўдзельніка.",
"ipusubmit": "Зняць гэты блок",
"logentry-rights-rights": "$1 {{GENDER:$2|змяніў|змяніла}} прыналежнасць $3 да групы з $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|змяніў|змяніла}} прыналежнасць $3 да групы",
"logentry-rights-autopromote": "$1 аўтаматычна {{GENDER:$2|пераведзены|пераведзена}} з $4 у $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|уклаў|уклала}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|уклаў|уклала}} новую версію $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|уклаў|уклала}} $3",
"rightsnone": "(няма)",
"feedback-bugornote": "Калі вы гатовыя падрабязна апісаць тэхнічную праблему, калі ласка, [$1 паведаміце пра памылку].\nУ адваротным выпадку вы можаце выкарыстоўваць гэтую простую форму. Ваш каментар будзе дададзены на старонку «[$3 $2]» разам з вашым імем удзельніка і выкарыстоўваемым браўзерам.",
"feedback-subject": "Тэма:",
"action-pagelang": "змяняць мову старонкі",
"log-name-pagelang": "Журнал змянення мовы",
"log-description-pagelang": "Гэта журнал змяненняў у мовах старонкі.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змяніў|змяніла}} мову старонкі $3 з $4 на $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змяніў|змяніла}} мову старонкі $3 з $4 на $5.",
+ "default-skin-not-found": "Упс! Прадвызначаная вокладка для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступна.\n\nВыглядае на тое, што ваша інсталяцыя ўключае наступныя вокладкі. Гл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя: Устаноўка вокладак] дзеля інфармацыі па ўключэнні і выбару прадвызначанай вокладкі.\n\n$2\n\n; Калі вы толькі што ўстанавілі MediaWiki:\n: Магчыма, вы ўстанавілі з git, ці наўпрост з зыходнага коду, выкарыстаўшы іншы метад. Гэта нармальна. Паспрабуйце ўстанавіць некалькі вокладак з [https://www.mediawiki.org/wiki/Category:All_skins каталога вокладак mediawiki.org], такім чынам:\n:* Узяўшы [https://www.mediawiki.org/wiki/Download tarball-інсталятар], які ўтрымлівае некалькі вокладак і прыставак. Вы можаце скапіяваць і ўставіць каталог <code>skins/</code> з яго.\n:* Зрабіўшы клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталог <code>skins/</code> вашай інсталяцыі MediaWiki.\n: Калі вы распрацоўшчык MediaWiki, гэта не павінна ўплываць на ваша git-сховішча.\n\n; Калі вы толькі што абнавілі MediaWiki:\n: MediaWiki 1.24 і навейшыя больш не падключаюць вокладкі аўтаматычна (гл. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Інструкцыя: Аўтавызначэнне вокладак]). Вы можаце ўставіць наступныя радкі ў <code>LocalSettings.php</code>, каб падключыць усе ўстаноўленыя вокладкі:\n\n<pre>$3</pre>\n\n; Калі вы толькі што змянілі <code>LocalSettings.php</code>:\n: Пераправерце назвы вокладак на прадмет памылак.",
+ "default-skin-not-found-no-skins": "Упс! Прадвызначаная вокладка для вашай вікі (<code>$wgDefaultSkin</code>), <code>$1</code>, недаступна.\n\nВы не ўстанавілі вокладкі.\n\n; Калі вы толькі што ўстанавілі ці абнавілі MediaWiki:\n: Магчыма, вы ўстанавілі з git, ці наўпрост з зыходнага коду, выкарыстаўшы іншы метад. Гэта нармальна. MediaWiki 1.24 і навейшыя не ўключаюць вокладкі ў асноўнае сховішча. Паспрабуйце ўстанавіць некалькі вокладак з [https://www.mediawiki.org/wiki/Category:All_skins каталога вокладак mediawiki.org], такім чынам:\n:* Узяўшы [https://www.mediawiki.org/wiki/Download tarball-інсталятар], які ўтрымлівае некалькі вокладак і прыставак. Вы можаце скапіяваць і ўставіць каталог <code>skins/</code> адтуль.\n:* Зрабіўшы клон аднаго з сховішчаў <code>mediawiki/skins/*</code> праз git у каталог <code>skins/</code> вашай інсталяцыі MediaWiki.\n: Калі вы распрацоўшчык MediaWiki, гэта не павінна адбіцца на вашым git-сховішчы. Гл. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Інструкцыя: Настройка вокладак] дзеля інфармацыі па ўключэнні вокладак і выбары прадвызначэння.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (уключана)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''выключана''')"
}
"Vladimir Penov",
"Петър Петров",
"לערי ריינהארט",
- "아라"
+ "아라",
+ "Gazimagomedov"
]
},
"tog-underline": "Подчертаване на препратките:",
"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-score": "Релевантност: $1%",
"search-redirect": "(пренасочване $1)",
"search-section": "(раздел $1)",
"search-suggest": "Вероятно имахте предвид: $1",
"searchdisabled": "Търсенето в {{SITENAME}} е временно изключено. Междувременно можете да търсите чрез Google. Обърнете внимание, че съхранените при тях страници най-вероятно са остарели.",
"search-error": "Възникна грешка при търсене: $1",
"preferences": "Настройки",
- "mypreferences": "Ð\9dаÑ\81Ñ\82Ñ\80ойки",
+ "mypreferences": "РекÑ\8aезаби",
"prefs-edits": "Брой редакции:",
"prefs-skin": "Облик",
"skin-preview": "предварителен преглед",
"uploadwarning": "Предупреждение при качване",
"uploadwarning-text": "Необходимо е да промените описанието на файла по-долу и да опитате отново.",
"savefile": "Съхраняване на файл",
- "uploadedimage": "качи „[[$1]]“",
- "overwroteimage": "качи нова версия на „[[$1]]“",
"uploaddisabled": "Качванията са забранени.",
"copyuploaddisabled": "Спряно е качването на файлове чрез URL.",
"uploaddisabledtext": "Качването на файлове е забранено.",
"searchprofile-everything-tooltip": "सभन सामग्री में खोजीं (वार्ता पन्ना सहित)",
"searchprofile-advanced-tooltip": "विशेष नामस्थान में खोजीं",
"search-result-size": "$1 ({{PLURAL:$2|1 शब्द|$2 शब्द}})",
- "search-result-score": "प्रासंगिकता: $1%",
"search-redirect": "(पुन: निर्देशण $1)",
"search-section": "(खंड $1)",
"search-suggest": "का राउर मतलब बा: $1",
"talkpagelinktext": "Pandir",
"specialpage": "Tungkaran istimiwa",
"personaltools": "Pakakas surang",
- "postcomment": "Palih hanyar",
"articlepage": "Tiringi isi tungkaran",
"talk": "Pamandiran",
"views": "Titiringan",
"externaldberror": "Ada kasalahan apakah kacucukan basis data atawa Pian kada bulih mamutakhirakan akun luar.",
"login": "Babuat",
"nav-login-createaccount": "Babuat log / ulah akun",
- "loginprompt": "Pian harus mangaktipakan ''cookies'' hagan kawa babuat log ka {{SITENAME}}.",
"userlogin": "Babuat log / ulah akun",
"userloginnocreate": "Babuat log",
"logout": "Kaluar",
"searchprofile-advanced-tooltip": "Panggagaian pada ragam ngaran kakamar",
"search-result-size": "$1 ({{PLURAL:$2|1 ujar|$2 uujar}})",
"search-result-category-size": "{{PLURAL:$1|1 angguta|$1 aangguta}} ({{PLURAL:$2|1 subtumbung|$2 subtutumbung}}, {{PLURAL:$3|1 barakas|$3 babarakas}})",
- "search-result-score": "Kacucukan: $1%",
"search-redirect": "(Paugahan $1)",
"search-section": "(hagian $1)",
"search-suggest": "Nginikah maksud Pian: $1",
"uploadwarning": "Paringatan hunggah",
"uploadwarning-text": "Muhun mangganti katarangan barakas di bawah wan cubai pulang.",
"savefile": "Simpan barakas",
- "uploadedimage": "mamuat \"[[$1]]\"",
- "overwroteimage": "mahunggah sabuah pérsi hanyar matan \"[[$1]]\"",
"uploaddisabled": "Pahunggahan dipajahakan.",
"copyuploaddisabled": "Hunggah lawan URL pajah.",
"uploaddisabledtext": "Hunggah barakas kada kawa.",
"watchlist-details": "{{PLURAL:$1|$1 tungkaran|$1 tungkaran}} dalam daptar itihan Pian, kada mahitung tungkaran pamandiran.",
"wlheader-enotif": "Suril pamadahan dipajahi.",
"wlheader-showupdated": "Tutungkaran nang ba-ubah tumatan ilangan tauncit Pian ditampaiakan dalam '''hurup kandal'''",
+ "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",
"watching": "Maitihi...",
"duplicate-defaultsort": "Paringatan: Sunduk pangurutan baku \"$2\" mangabaikan sunduk pangurutan baku \"$1\" sabalumnya.",
"version": "Virsi",
"version-extensions": "Ekstensi tapasang",
+ "version-skins": "Kukulimbit",
"version-specialpages": "Tungkaran istimiwa",
"version-parserhooks": "Kait parser",
"version-variables": "Pariabal",
"version-antispam": "Pancagahan spam",
- "version-skins": "Kukulimbit",
"version-other": "Lain-lain",
"version-mediahandlers": "Pananganan madia",
"version-hooks": "Kait",
"pool-timeout": "সময় উত্তির্ণ লক-এর জন্য অপেক্ষারত",
"pool-queuefull": "পুলের লাইন পূর্ণ",
"pool-errorunknown": "অজানা ত্রুটি",
+ "pool-servererror": "পুল কাউন্টার সার্ভিস নিষ্ক্রিয় ($1)।",
"aboutsite": "{{SITENAME}} বৃত্তান্ত",
"aboutpage": "Project:বৃত্তান্ত",
"copyright": "বিষয়বস্তু $1-এর আওতায় প্রকাশিত যদি না অন্য কিছু নির্ধারিত থাকে।",
"hidetoc": "আড়ালে রাখো",
"collapsible-collapse": "সংকোচন",
"collapsible-expand": "প্রসারণ",
+ "confirmable-confirm": "{{GENDER:$1|আপনি}} কি নিশ্চিত?",
+ "confirmable-yes": "হ্যাঁ",
+ "confirmable-no": "না",
"thisisdeleted": "$1 দেখানো বা পুনঃসৃষ্টি করা হোক?",
"viewdeleted": "$1 দেখানো হোক?",
"restorelink": "{{PLURAL:$1|একটি মুছে ফেলা সম্পাদনা|$1টি মুছে ফেলা সম্পাদনা}}",
"invalidtitle-knownnamespace": "অবৈধ শিরোনাম, যেখানে নামস্থান \"$2\" এবং লেখা হয়েছে \"$3\"",
"invalidtitle-unknownnamespace": "অবৈধ শিরোনাম, যেখানে ব্যবহৃত হয়েছে অপরিচিত নামস্থান সংখ্যা $1 এবং লেখা হয়েছে \"$2\"",
"exception-nologin": "লগইন করা হয়নি",
- "exception-nologin-text": "এই কাজটি করার জন্য উইকিতে [[Special:Userlogin|লগইন]] করা প্রয়োজন।",
+ "exception-nologin-text": "এই কাজ করা বা পাতাটি দেখার জন্য অনুগ্রহ করে প্রবেশ করুন।",
"exception-nologin-text-manual": "অনুগ্রহ করে এই পাতা দেখতে অথবা পরিবর্তন করতে $1 করুন।",
"virus-badscanner": "ভুল কনফিগারেশন: অজ্ঞাত ভাইরাস স্কেনার: ''$1''",
"virus-scanfailed": "স্ক্যান করা যাচ্ছে না (কোড $1)",
"welcomecreation-msg": "আপনার অ্যাকাউন্ট তৈরী হয়েছে।\nআপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]] পরিবর্তন করে নিতে ভুলবেন না।",
"yourname": "ব্যবহারকারী নাম:",
"userlogin-yourname": "ব্যবহারকারী নাম",
- "userlogin-yourname-ph": "à¦\86পনার বà§\8dযবহাà¦\95ারà§\80 নাম পà§\8dরবà§\87শ à¦\95রান",
+ "userlogin-yourname-ph": "à¦\86পনার বà§\8dযবহাà¦\95ারà§\80 নাম লিà¦\96à§\81ন",
"createacct-another-username-ph": "আপনার ব্যবহাকারী নাম প্রবেশ করান",
- "yourpassword": "শবà§\8dদà¦\9aাবি:",
- "userlogin-yourpassword": "শবà§\8dদà¦\9aাবি (Password)",
- "userlogin-yourpassword-ph": "à¦\86পনার শবà§\8dদà¦\9aাবি (পাসà¦\93য়ারà§\8dড) লিখুন",
- "createacct-yourpassword-ph": "শবà§\8dদà¦\9aাবি পà§\8dরদান à¦\95রুন",
- "yourpasswordagain": "শবà§\8dদà¦\9aাবিà¦\9fি (password) à¦\86বার লিà¦\96à§\81ন",
- "createacct-yourpasswordagain": "শবà§\8dদà¦\9aাবি নিশ্চিত করুন",
- "createacct-yourpasswordagain-ph": "à¦\86বারà¦\93 শবà§\8dদà¦\9aাবি পà§\8dরদান à¦\95রুন",
- "remembermypassword": "à¦\8fà¦\95াধিà¦\95 সà§\87শনà§\87র à¦\9cনà§\8dয শবà§\8dদà¦\9aাবি মনà§\87 রাà¦\96া হà§\8bà¦\95 (সরà§\8dবà§\8bà¦\9aà§\8dà¦\9a $1 {{PLURAL:$1|দিনà§\87র|দিনের}} জন্য)",
+ "yourpassword": "পাসà¦\93য়ারà§\8dড:",
+ "userlogin-yourpassword": "পাসà¦\93য়ারà§\8dড",
+ "userlogin-yourpassword-ph": "à¦\86পনার পাসà¦\93য়ারà§\8dড লিখুন",
+ "createacct-yourpassword-ph": "পাসà¦\93য়ারà§\8dড লিà¦\96ুন",
+ "yourpasswordagain": "পাসà¦\93য়ারà§\8dড à¦\86বার লিà¦\96à§\81ন:",
+ "createacct-yourpasswordagain": "পাসà¦\93য়ারà§\8dড নিশ্চিত করুন",
+ "createacct-yourpasswordagain-ph": "à¦\86বারà¦\93 পাসà¦\93য়ারà§\8dড লিà¦\96ুন",
+ "remembermypassword": "à¦\8fà¦\87 বà§\8dরাà¦\89à¦\9cারà§\87 à¦\86মার পà§\8dরবà§\87শ মনà§\87 রাà¦\96া হà§\8bà¦\95 (সরà§\8dবà§\8bà¦\9aà§\8dà¦\9a $1 {{PLURAL:$1|দিনের}} জন্য)",
"userlogin-remembermypassword": "আমাকে প্রবেশ অবস্থায় রাখো",
"userlogin-signwithsecure": "নিরাপদ সংযোগ ব্যবহার করুন",
"yourdomainname": "আপনার ডোমেইন",
"gotaccount": "আপনার কি ইতিমধ্যে একটি অ্যাকাউন্ট তৈরি করা আছে? '''$1''' করুন।",
"gotaccountlink": "প্রবেশ",
"userlogin-resetlink": "আপনার লগইনের বিস্তারিত তথ্যাদি ভুলে গেছেন?",
- "userlogin-resetpassword-link": "শবà§\8dদà¦\9aাবি ভুলে গেছেন?",
+ "userlogin-resetpassword-link": "পাসà¦\93য়ারà§\8dড ভুলে গেছেন?",
"userlogin-helplink2": "লগইন সংক্রান্ত সাহায্য",
"userlogin-loggedin": "আপনি বর্তমানে {{GENDER:$1|$1}} হিসাবে লগইন আছেন।\nঅন্য ব্যবহারকারী নামে লগইন করতে চাইলে নিচের ফর্মটি ব্যবহার করুন।",
"userlogin-createanother": "আরেকটি অ্যাকাউন্ট তৈরি করুন",
"createacct-benefit-body1": "{{PLURAL:$1|টি সম্পাদনা}}",
"createacct-benefit-body2": "{{PLURAL:$1|টি পাতা}}",
"createacct-benefit-body3": "জন সাম্প্রতিক {{PLURAL:$1|অবদানকারী}}",
- "badretype": "à¦\86পনার পà§\8dরবà§\87শ à¦\95রানà§\8b শবà§\8dদà¦\9aাবি'à¦\9fি মিলà¦\9bà§\87না।",
+ "badretype": "à¦\86পনার পà§\8dরবà§\87শ à¦\95রানà§\8b পাসà¦\93য়ারà§\8dডà¦\9fি মিলà¦\9bà§\87 না।",
"userexists": "এই ব্যবহারকারী নামটি ইতমধ্যে ব্যবহার করা হয়েছে।\nঅনুগ্রহ করে অন্য নাম বেছে নিন।",
"loginerror": "প্রবেশ করতে সমস্যা হয়েছে",
"createacct-error": "অ্যাকাউন্ট তৈরি ত্রুটি",
"createaccounterror": "অ্যাকাউন্ট তৈরি হয়নি: $1",
- "nocookiesnew": "বà§\8dযবহারà¦\95ারà§\80র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà¦\9fি সà§\83ষà§\8dà¦\9fি à¦\95রা হয়à§\87à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\86পনি à¦\8fà¦\96নà¦\93 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রà§\87ননি। {{SITENAME}}-তà§\87 à¦\95à§\81à¦\95ি বà§\8dযবহার à¦\95রà§\87 বà§\8dযবহারà¦\95ারà§\80দà§\87র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রানà§\8b হয়। à¦\86পনার বà§\8dরাà¦\89à¦\9cারà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি নিষà§\8dà¦\95à§\8dরিয় à¦\95রা à¦\86à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dরহ à¦\95রà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি সà¦\95à§\8dরিয় à¦\95রà§\81ন à¦\8fবà¦\82 à¦\86পনার নতà§\81ন বà§\8dযবহারà¦\95ারà§\80 নাম à¦\93 শবà§\8dদà¦\9aাবি ব্যবহার করে অ্যাকাউন্টে প্রবেশ করুন।",
+ "nocookiesnew": "বà§\8dযবহারà¦\95ারà§\80র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà¦\9fি সà§\83ষà§\8dà¦\9fি à¦\95রা হয়à§\87à¦\9bà§\87, à¦\95িনà§\8dতà§\81 à¦\86পনি à¦\8fà¦\96নà¦\93 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রà§\87ননি। {{SITENAME}}-তà§\87 à¦\95à§\81à¦\95ি বà§\8dযবহার à¦\95রà§\87 বà§\8dযবহারà¦\95ারà§\80দà§\87র à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রানà§\8b হয়। à¦\86পনার বà§\8dরাà¦\89à¦\9cারà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি নিষà§\8dà¦\95à§\8dরিয় à¦\95রা à¦\86à¦\9bà§\87। à¦\85নà§\81à¦\97à§\8dরহ à¦\95রà§\87 à¦\95à§\81à¦\95িà¦\97à§\81লি সà¦\95à§\8dরিয় à¦\95রà§\81ন à¦\8fবà¦\82 à¦\86পনার নতà§\81ন বà§\8dযবহারà¦\95ারà§\80 নাম à¦\93 পাসà¦\93য়ারà§\8dড ব্যবহার করে অ্যাকাউন্টে প্রবেশ করুন।",
"nocookieslogin": "{{SITENAME}} এ কুকি (cookies) এর মাধ্যমে ব্যবহারকারীদের লগ-ইন সম্পন্ন করা হয়। আপনার ব্রাঊজারে কুকি বন্ধ করে দেওয়া আছে। কুকি চালু করে আবার চেষ্টা করুন।",
"nocookiesfornew": "ব্যবহারকারীর অ্যাকাউন্ট তৈরি হয়নি, কারণ এর উৎস সম্পর্কে আমরা নিশ্চিত নই।\nনিশ্চিত করুন আপনার কুকি সক্রিয় রয়েছে, পাতাটি পুনরায় লোড করে আবার চেষ্টা করুন।",
"noname": "আপনি সঠিক ব্যবহারকারী নাম নির্দিষ্ট করেননি।",
"nosuchusershort": "\"$1\" নামের কোন ব্যবহারকারী নেই। নামের বানান পরীক্ষা করুন।",
"nouserspecified": "আপনাকে অবশ্যই ব্যবহারকারী নাম নির্দিষ্ট করতে হবে।",
"login-userblocked": "এই ব্যবহারকারীকে বাধা দেওয়া হয়েছে। লগ-ইন সম্ভব নয়।",
- "wrongpassword": "à¦\86পনি à¦à§\81ল শবà§\8dদà¦\9aাবি ব্যবহার করেছেন। অনুগ্রহ করে আবার চেষ্টা করুন।",
- "wrongpasswordempty": "শবà§\8dদà¦\9aাবি (password) প্রবেশের ঘরটি খালি ছিল। দয়া করে আবার চেষ্টা করুন।",
- "passwordtooshort": "শবà§\8dদà¦\9aাবি অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।",
- "password-name-match": "à¦\86পনার শবà§\8dদà¦\9aাবি আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।",
- "password-login-forbidden": "à¦\8fà¦\87 বà§\8dযবহারà¦\95ারà§\80র নাম à¦\8fবà¦\82 শবà§\8dদà¦\9aাবিটি ব্যবহার নিষিদ্ধ করা হয়েছে।",
- "mailmypassword": "শবà§\8dদà¦\9aাবি রিসেট",
- "passwordremindertitle": "{{SITENAME}}-à¦\8fর à¦\9cনà§\8dয নতà§\81ন সাময়িà¦\95 শবà§\8dদà¦\9aাবি",
- "passwordremindertext": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন ($1 à¦\86à¦\87পি ঠিà¦\95ানাà¦\9fি থà§\87à¦\95à§\87 সমà§\8dà¦à¦¬à¦¤ à¦\86পনি) à¦\85নà§\81রà§\8bধ à¦\95রà§\87à¦\9bà§\87ন যà§\87ন à¦\86মরা à¦\86পনাà¦\95à§\87 {{SITENAME}} ($4) à¦\8fর à¦\9cনà§\8dয à¦\8fà¦\95à¦\9fি নতà§\81ন শবà§\8dদà¦\9aাবি পাঠাà¦\87।\n\"$2\" নামà§\87 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦\96à§\8bলা হয়à§\87à¦\9bà§\87 à¦\8fবà¦\82 à¦\8fর শবà§\8dদà¦\9aাবি \"$3\"। à¦\86পনি যদি à¦\8fà¦\9fাà¦\87 à¦\9aà§\87য়à§\87 থাà¦\95à§\87ন, তাহলà§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রতà§\87 হবà§\87 à¦\93 নতà§\81ন à¦\8fà¦\95à¦\9fি শবà§\8dদà¦\9aাবি পà¦\9bনà§\8dদ à¦\95রতà§\87 হবà§\87।\n{{PLURAL:$5|à¦\8fà¦\95 দিন|$5 দিন}} পরà§\87 à¦\86পনার à¦\8fà¦\87 à¦\85সà§\8dথায়à§\80 শবà§\8dদà¦\9aাবির মà§\87য়াদ à¦\89তà§\8dতà§\80রà§\8dণ হয়à§\87 যাবà§\87।\n\nযদি à¦\86পনি à¦\9bাড়া à¦\85নà§\8dয à¦\95à§\87à¦\89 à¦\8fà¦\87 à¦\85নà§\81রà§\8bধ à¦\95রà§\87 থাà¦\95à§\87, à¦\95িà¦\82বা যদি à¦\86পনার পà§\81রনà§\8b শবà§\8dদà¦\9aাবিà¦\9fি মনà§\87 পড়à§\87 à¦\97িয়à§\87 থাà¦\95à§\87 à¦\93 সà§\87à¦\9fি à¦\86র বদলাবার à¦\87à¦\9aà§\8dà¦\9bা না থাà¦\95à§\87, তাহলà§\87 à¦\8fà¦\87 বারà§\8dতাà¦\9fি à¦\89পà§\87à¦\95à§\8dষা à¦\95রতà§\87 পারà§\87ন à¦\8fবà¦\82 পà§\81রনà§\8b শবà§\8dদà¦\9aাবিটিই ব্যবহার করে যেতে পারেন।",
+ "wrongpassword": "à¦\86পনি à¦à§\81ল পাসà¦\93য়ারà§\8dড ব্যবহার করেছেন। অনুগ্রহ করে আবার চেষ্টা করুন।",
+ "wrongpasswordempty": "পাসà¦\93য়ারà§\8dড প্রবেশের ঘরটি খালি ছিল। দয়া করে আবার চেষ্টা করুন।",
+ "passwordtooshort": "পাসà¦\93য়ারà§\8dড অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।",
+ "password-name-match": "à¦\86পনার পাসà¦\93য়ারà§\8dড আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।",
+ "password-login-forbidden": "à¦\8fà¦\87 বà§\8dযবহারà¦\95ারà§\80র নাম à¦\8fবà¦\82 পাসà¦\93য়ারà§\8dডটি ব্যবহার নিষিদ্ধ করা হয়েছে।",
+ "mailmypassword": "পাসà¦\93য়ারà§\8dড রিসেট",
+ "passwordremindertitle": "{{SITENAME}}-à¦\8fর à¦\9cনà§\8dয নতà§\81ন সাময়িà¦\95 পাসà¦\93য়ারà§\8dড",
+ "passwordremindertext": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন ($1 à¦\86à¦\87পি ঠিà¦\95ানাà¦\9fি থà§\87à¦\95à§\87 সমà§\8dà¦à¦¬à¦¤ à¦\86পনি) à¦\85নà§\81রà§\8bধ à¦\95রà§\87à¦\9bà§\87ন যà§\87ন à¦\86মরা à¦\86পনাà¦\95à§\87 {{SITENAME}} ($4) à¦\8fর à¦\9cনà§\8dয à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড পাঠাà¦\87।\n\"$2\" নামà§\87 à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f à¦\96à§\8bলা হয়à§\87à¦\9bà§\87 à¦\8fবà¦\82 à¦\8fর পাসà¦\93য়ারà§\8dড \"$3\"। à¦\86পনি যদি à¦\8fà¦\9fাà¦\87 à¦\9aà§\87য়à§\87 থাà¦\95à§\87ন, তাহলà§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রতà§\87 হবà§\87 à¦\93 নতà§\81ন à¦\8fà¦\95à¦\9fি পাসà¦\93য়ারà§\8dড পà¦\9bনà§\8dদ à¦\95রতà§\87 হবà§\87।\n{{PLURAL:$5|à¦\8fà¦\95 দিন|$5 দিন}} পরà§\87 à¦\86পনার à¦\8fà¦\87 à¦\85সà§\8dথায়à§\80 পাসà¦\93য়ারà§\8dডà§\87র মà§\87য়াদ à¦\89তà§\8dতà§\80রà§\8dণ হয়à§\87 যাবà§\87।\n\nযদি à¦\86পনি à¦\9bাড়া à¦\85নà§\8dয à¦\95à§\87à¦\89 à¦\8fà¦\87 à¦\85নà§\81রà§\8bধ à¦\95রà§\87 থাà¦\95à§\87, à¦\95িà¦\82বা যদি à¦\86পনার পà§\81রনà§\8b পাসà¦\93য়ারà§\8dড মনà§\87 পড়à§\87 à¦\97িয়à§\87 থাà¦\95à§\87 à¦\93 সà§\87à¦\9fি à¦\86র বদলাবার à¦\87à¦\9aà§\8dà¦\9bা না থাà¦\95à§\87, তাহলà§\87 à¦\8fà¦\87 বারà§\8dতাà¦\9fি à¦\89পà§\87à¦\95à§\8dষা à¦\95রতà§\87 পারà§\87ন à¦\8fবà¦\82 পà§\81রনà§\8b পাসà¦\93য়ারà§\8dডটিই ব্যবহার করে যেতে পারেন।",
"noemail": "\"$1\" ব্যবহারকারীর জন্য কোন ই-মেইল ঠিকানা সংরক্ষিত নেই।",
"noemailcreate": "আপনাকে অবশ্যই একটি সঠিক ইমেইল ঠিকানা দিতে হবে",
- "passwordsent": "à¦\8fà¦\95à¦\9fি নতà§\81ন শবà§\8dদà¦\9aাবি \"$1\" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়াকরে তা পাওয়ার পর আবার লগ-ইন করুন।",
- "blocked-mailpassword": "à¦\86পনার à¦\86à¦\87পি ঠিà¦\95ানাà¦\9fি থà§\87à¦\95à§\87 সমà§\8dপাদনা à¦\95রতà§\87 বাধা à¦\86à¦\9bà§\87, তাà¦\87 à¦\8fà¦\87 ঠিà¦\95ানার à¦\85পবà§\8dযবহার à¦\95রà§\87 শবà§\8dদà¦\9aাবি ফেরত আনতে দেয়া যাবে না।",
+ "passwordsent": "à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড \"$1\" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়াকরে তা পাওয়ার পর আবার লগ-ইন করুন।",
+ "blocked-mailpassword": "à¦\86পনার à¦\86à¦\87পি ঠিà¦\95ানাà¦\9fি থà§\87à¦\95à§\87 সমà§\8dপাদনা à¦\95রতà§\87 বাধা à¦\86à¦\9bà§\87, তাà¦\87 à¦\8fà¦\87 ঠিà¦\95ানার à¦\85পবà§\8dযবহার à¦\95রà§\87 পাসà¦\93য়ারà§\8dড ফেরত আনতে দেয়া যাবে না।",
"eauthentsent": "মনোনীত ই-মেইল ঠিকানায় একটি নিশ্চিতকরণ ই-মেইল পাঠানো হয়েছে।\nঐ অ্যাকাউন্টটে অন্য কোন ই-মেইল পাঠানোর আগে আপনাকে ই-মেইলের নির্দেশগুলি অনুসরণ করতে হবে, যাতে অ্যাকাউন্টটি যে আসলেই আপনার, তা নিশ্চিত হয়।",
- "throttled-mailpassword": "বিà¦\97ত {{PLURAL:$1|à¦\98ণà§\8dà¦\9fার|$1 à¦\98ণà§\8dà¦\9fার}} মধà§\8dযà§\87 à¦\87তিমধà§\8dযà§\87à¦\87 à¦\8fà¦\95বার শবà§\8dদà¦\9aাবি বদলà§\87র তথà§\8dয পাঠানà§\8b হয়à§\87à¦\9bà§\87। à¦\85পবà§\8dযবহার রà§\8bধà§\87 পà§\8dরতি {{PLURAL:$1|à¦\98ণà§\8dà¦\9fায়|$1 à¦\98ণà§\8dà¦\9fায়}} à¦\95à§\87বল à¦\8fà¦\95বার শবà§\8dদà¦\9aাবি বদলের তথ্য পাঠানো যাবে।",
+ "throttled-mailpassword": "বিà¦\97ত {{PLURAL:$1|à¦\98ণà§\8dà¦\9fার|$1 à¦\98ণà§\8dà¦\9fার}} মধà§\8dযà§\87 à¦\87তিমধà§\8dযà§\87à¦\87 à¦\8fà¦\95বার পাসà¦\93য়ারà§\8dড বদলà§\87র তথà§\8dয পাঠানà§\8b হয়à§\87à¦\9bà§\87। à¦\85পবà§\8dযবহার রà§\8bধà§\87 পà§\8dরতি {{PLURAL:$1|à¦\98ণà§\8dà¦\9fায়|$1 à¦\98ণà§\8dà¦\9fায়}} à¦\95à§\87বল à¦\8fà¦\95বার পাসà¦\93য়ারà§\8dড বদলের তথ্য পাঠানো যাবে।",
"mailerror": "ইমেইল পাঠাতে সমস্যা: $1",
"acct_creation_throttle_hit": "এই উইকির দর্শক আপনার IP থেকে বিগত সময়ে {{PLURAL:$1|1 টি অ্যাকাউন্ট|$1 গুলো অ্যাকাউন্ট}} তৈরি করেছেন, যা এই সময়ের জন্য সর্বোচ্চ অনুমোদনকৃত।\nফলে, এই IP থেকে দর্শক এই সময়ে নতুন অ্যাকাউন্ট তৈরি করতে পারবেন না।",
"emailauthenticated": "আপনার ইমেইল ঠিকানাটি $2 তারিখের $3 এ নিশ্চিত করা হয়েছে।",
"accountcreated": "অ্যাকাউন্ট তৈরি করা হয়েছে",
"accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|আলাপ]]) এর জন্য ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয়েছে।",
"createaccount-title": "{{SITENAME}}-এর জন্য অ্যাকাউন্ট সৃষ্টি",
- "createaccount-text": "à¦\95à§\87à¦\89 $2-à¦\8fর à¦\9cনà§\8dয {{SITENAME}}-à¦\8f à¦\8fà¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f সà§\83ষà§\8dà¦\9fি à¦\95রà§\87à¦\9bà§\87ন ($4)। \"$2\"-à¦\8fর à¦\9cনà§\8dয শবà§\8dদà¦\9aাবি হল \"$3\"। à¦\86পনার à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রà§\87 শবà§\8dদà¦\9aাবি পরিবর্তন করা উচিত।\n\nযদি ভুল করে অ্যাকাউন্টটি সৃষ্টি হয়ে থাকে, তাহলে এই বার্তাটি উপেক্ষা করুন।",
+ "createaccount-text": "à¦\95à§\87à¦\89 $2-à¦\8fর à¦\9cনà§\8dয {{SITENAME}}-à¦\8f à¦\8fà¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f সà§\83ষà§\8dà¦\9fি à¦\95রà§\87à¦\9bà§\87ন ($4)। \"$2\"-à¦\8fর à¦\9cনà§\8dয পাসà¦\93য়ারà§\8dড হল \"$3\"। à¦\86পনার à¦\8fà¦\96ন à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9fà§\87 পà§\8dরবà§\87শ à¦\95রà§\87 পাসà¦\93য়ারà§\8dড পরিবর্তন করা উচিত।\n\nযদি ভুল করে অ্যাকাউন্টটি সৃষ্টি হয়ে থাকে, তাহলে এই বার্তাটি উপেক্ষা করুন।",
"login-throttled": "আপনি সাম্প্রতিক সময়ে পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন।\nপুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
"login-abort-generic": "আপনার লগইন সফল ছিলো না - বাতিল করা হয়েছে",
"loginlanguagelabel": "ভাষা: $1",
"php-mail-error-unknown": "পিএইচপি এর মেইল () কার্যে অজ্ঞাত ভুল",
"user-mail-no-addy": "কোনো ইমেইল ঠিকানা ছাড়াই ইমেইল করার চেষ্টা করা হয়েছে।",
"user-mail-no-body": "অত্যান্ত সংক্ষিপ্ত অথবা কোনো তথ্য ছাড়াই ইমেইল পাঠানোর চেষ্টা করা হয়েছিল।",
- "changepassword": "শবà§\8dদà¦\9aাবি পরিবর্তন",
+ "changepassword": "পাসà¦\93য়ারà§\8dড পরিবর্তন",
"resetpass_announce": "লগইন করার জন্য আপনাকে অবশ্যই এনটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে।",
"resetpass_text": "<!-- এখানে লেখা যোগ করুন -->",
- "resetpass_header": "শবà§\8dদà¦\9aাবি পরিবর্তন করো",
- "oldpassword": "পà§\81রনà§\8b শবà§\8dদà¦\9aাবি",
- "newpassword": "নতà§\81ন শবà§\8dদà¦\9aাবি:",
- "retypenew": "নতà§\81ন শবà§\8dদà¦\9aাবি আবার লিখুন:",
- "resetpass_submit": "শবà§\8dদà¦\9aাবি দাও এবং লগ-ইন করো",
- "changepassword-success": "à¦\86পনার শবà§\8dদà¦\9aাবি সাফলভাবে পরিবর্তীত হয়েছে।",
+ "resetpass_header": "পাসà¦\93য়ারà§\8dড পরিবর্তন করো",
+ "oldpassword": "পà§\81রনà§\8b পাসà¦\93য়ারà§\8dড:",
+ "newpassword": "নতà§\81ন পাসà¦\93য়ারà§\8dড:",
+ "retypenew": "নতà§\81ন পাসà¦\93য়ারà§\8dড আবার লিখুন:",
+ "resetpass_submit": "পাসà¦\93য়ারà§\8dড দাও এবং লগ-ইন করো",
+ "changepassword-success": "à¦\86পনার পাসà¦\93য়ারà§\8dড সাফলভাবে পরিবর্তীত হয়েছে।",
"changepassword-throttled": "আপনি সম্প্রতি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
- "resetpass_forbidden": "শবà§\8dদà¦\9aাবি পরিবর্তন করা সম্ভব নয়",
+ "resetpass_forbidden": "পাসà¦\93য়ারà§\8dড পরিবর্তন করা সম্ভব নয়",
"resetpass-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।",
- "resetpass-submit-loggedin": "শবà§\8dদà¦\9aাবি পরিবর্তন",
+ "resetpass-submit-loggedin": "পাসà¦\93য়ারà§\8dড পরিবর্তন",
"resetpass-submit-cancel": "বাতিল",
- "resetpass-wrong-oldpass": "à¦à§\81ল à¦\85সà§\8dথায়à§\80 à¦\85থবা বরà§\8dতমান শবà§\8dদà¦\9aাবি।\nসমà§\8dà¦à¦¬à¦¤à¦\83 à¦\86পনি à¦\87তà§\8bমধà§\8dযà§\87à¦\87 সফলà¦à¦¾à¦¬à§\87 à¦\86পনার শবà§\8dদà¦\9aাবিà¦\9fি পরিবরà§\8dতন à¦\95রà§\87à¦\9bà§\87ন à¦\85থবা à¦\8fà¦\95à¦\9fি নতà§\81ন à¦\85সà§\8dথায়à§\80 শবà§\8dদà¦\9aাবির জন্য অনুরোধ করেছেন।",
+ "resetpass-wrong-oldpass": "à¦à§\81ল à¦\85সà§\8dথায়à§\80 à¦\85থবা বরà§\8dতমান পাসà¦\93য়ারà§\8dড।\nসমà§\8dà¦à¦¬à¦¤à¦\83 à¦\86পনি à¦\87তà§\8bমধà§\8dযà§\87à¦\87 সফলà¦à¦¾à¦¬à§\87 à¦\86পনার পাসà¦\93য়ারà§\8dডà¦\9fি পরিবরà§\8dতন à¦\95রà§\87à¦\9bà§\87ন à¦\85থবা à¦\8fà¦\95à¦\9fি নতà§\81ন à¦\85সà§\8dথায়à§\80 পাসà¦\93য়ারà§\8dডà§\87র জন্য অনুরোধ করেছেন।",
"resetpass-recycled": "অনুগ্রহ করে বর্তমানে ব্যবহার করছেন এমন পাসওয়ার্ডের পরিবর্তে নতুন একটি পাসওয়ার্ড নির্ধারণ করুন।",
"resetpass-temp-emailed": "সাময়িকভাবে ব্যবহার করার কোড দিয়ে আপনি লগইন করেছেন।\nলগইন করার জন্য আপনাকে অবশ্যই একটি নতুন পাসওয়ার্ড নির্ধারন করতে হবে:",
- "resetpass-temp-password": "à¦\85সà§\8dথায়à§\80 শবà§\8dদà¦\9aাবি:",
- "resetpass-abort-generic": "শবà§\8dদà¦\9aাবি পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।",
+ "resetpass-temp-password": "à¦\85সà§\8dথায়à§\80 পাসà¦\93য়ারà§\8dড:",
+ "resetpass-abort-generic": "পাসà¦\93য়ারà§\8dড পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।",
"resetpass-expired": "আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে। অনুগ্রহ করে নতুন পাসওয়ার্ড নির্ধারণ করুন।",
"resetpass-expired-soft": "আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে এবং আপনাকে একটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে। অনুগ্রহ করে এখনই একটি নতুন পাসওয়ার্ড নির্ধারণ করুন অথবা পরে পরিবর্তন করতে চাইলে \"{{int:resetpass-submit-cancel}}\" বাটনে ক্লিক করুন।",
- "resetpass-validity-soft": "দয়া à¦\95রà§\87 à¦\8fà¦\95à¦\9fি নতà§\81ন শবà§\8dদà¦\9aাবি নির্ধারণ করুন অথবা পরে করার জন্য \"{{int:resetpass-submit-cancel}}\" ক্লিক করুন।",
- "passwordreset": "শবà§\8dদà¦\9aাবি রিসেট",
+ "resetpass-validity-soft": "দয়া à¦\95রà§\87 à¦\8fà¦\95à¦\9fি নতà§\81ন পাসà¦\93য়ারà§\8dড নির্ধারণ করুন অথবা পরে করার জন্য \"{{int:resetpass-submit-cancel}}\" ক্লিক করুন।",
+ "passwordreset": "পাসà¦\93য়ারà§\8dড রিসেট",
"passwordreset-text-one": "আপনার পাসওয়ার্ড পুনরায় সেট করতে এই ফর্মটি পূরণ করুন।",
- "passwordreset-text-many": "{{PLURAL:$1|à¦\87মà§\87à¦\87লà§\87র মাধà§\8dযমà§\87 à¦\8fà¦\95à¦\9fি à¦\85সà§\8dথায়à§\80 শবà§\8dদà¦\9aাবি পেতে ঘরগুলির একটি পূরণ করুন।}}",
- "passwordreset-legend": "শবà§\8dদà¦\9aাবি রিসেট",
- "passwordreset-disabled": "à¦\8fà¦\87 à¦\89à¦\87à¦\95িতà§\87 শবà§\8dদà¦\9aাবি রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।",
+ "passwordreset-text-many": "{{PLURAL:$1|à¦\87মà§\87à¦\87লà§\87র মাধà§\8dযমà§\87 à¦\8fà¦\95à¦\9fি à¦\85সà§\8dথায়à§\80 পাসà¦\93য়ারà§\8dড পেতে ঘরগুলির একটি পূরণ করুন।}}",
+ "passwordreset-legend": "পাসà¦\93য়ারà§\8dড রিসেট",
+ "passwordreset-disabled": "à¦\8fà¦\87 à¦\89à¦\87à¦\95িতà§\87 পাসà¦\93য়ারà§\8dড রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।",
"passwordreset-emaildisabled": "এই উইকিতে ইমেইল অপশনটি বন্ধ করা হয়েছে।",
"passwordreset-username": "ব্যবহারকারী নাম:",
"passwordreset-domain": "ডোমেইন:",
"passwordreset-capture": "অনুসন্ধানের ফলাফলের ইমেইল দেখুন?",
- "passwordreset-capture-help": "à¦\86পনি যদি à¦\8fà¦\87 পরà§\80à¦\95à§\8dষা বà¦\95à§\8dসà§\87 à¦\95à§\8dলিà¦\95 à¦\95রà§\87ন, তবà§\87 à¦\85সà§\8dথায়à§\80 শবà§\8dদà¦\9aাবিসহ একটি ইমেইল আপনাকে দেখানো হবে ও সেইসাথে ব্যবহারকারীকে তা পাঠানো হবে।",
+ "passwordreset-capture-help": "à¦\86পনি যদি à¦\8fà¦\87 পরà§\80à¦\95à§\8dষা বà¦\95à§\8dসà§\87 à¦\95à§\8dলিà¦\95 à¦\95রà§\87ন, তবà§\87 à¦\85সà§\8dথায়à§\80 পাসà¦\93য়ারà§\8dডসহ একটি ইমেইল আপনাকে দেখানো হবে ও সেইসাথে ব্যবহারকারীকে তা পাঠানো হবে।",
"passwordreset-email": "ইমেইল ঠিকানা:",
"passwordreset-emailtitle": "{{SITENAME}} সাইটে ব্যবহারকারীর বিস্তারিত তথ্যাদি",
- "passwordreset-emailtext-ip": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন (সমà§\8dà¦à¦¬à¦¤ à¦\86পনি, $1 à¦\86à¦\87পি ঠিà¦\95ানা থà§\87à¦\95à§\87) {{SITENAME}} ($4) সাà¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার\nশবà§\8dদà¦\9aাবি বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
- "passwordreset-emailtext-user": "বà§\8dযবহারà¦\95ারà§\80 $1 {{SITENAME}} ($4) সাà¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার শবà§\8dদà¦\9aাবি বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
- "passwordreset-emailelement": "বà§\8dযবহারà¦\95ারà§\80 নাম: $1\nà¦\85সà§\8dথায়à§\80 শবà§\8dদà¦\9aাবি: $2",
- "passwordreset-emailsent": "শবà§\8dদà¦\9aাবি বদলের একটি ই-মেইল পাঠানো হয়েছে।",
+ "passwordreset-emailtext-ip": "à¦\95à§\87à¦\89 à¦\8fà¦\95à¦\9cন (সমà§\8dà¦à¦¬à¦¤ à¦\86পনি, $1 à¦\86à¦\87পি ঠিà¦\95ানা থà§\87à¦\95à§\87) {{SITENAME}} ($4) সাà¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার\nপাসà¦\93য়ারà§\8dড বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
+ "passwordreset-emailtext-user": "বà§\8dযবহারà¦\95ারà§\80 $1 {{SITENAME}} ($4) সাà¦\87à¦\9fà§\87র à¦\9cনà§\8dয à¦\86পনার পাসà¦\93য়ারà§\8dড বদলের জন্য অনুরোধ করেছে। নিচের ব্যবহারকারী {{PLURAL:$3|অ্যাকাউন্টটি|অ্যাকাউন্টগুলো}}\nএই ই-মেইল ঠিকানার সাথে সংযুক্ত:\n\n$2\n\n{{PLURAL:$3|এই অস্থায়ী পাসওয়ার্ডটি|এই অস্থায়ী পাসওয়ার্ডগুলো}} আগামী {{PLURAL:$5|এক দিন|$5 দিন}} পর মেয়াদোত্তীর্ণ হয়ে যাবে।\nআপনার অবশ্যই লগ-ইন করে একটি নতুন পাসওয়ার্ড পছন্দ করা উচিত। যদি অন্য কেউ এই অনুরোধ করে থাকে,\nঅথবা আপনি যদি পুরোনো পাসওয়ার্ড মনে করতে পারেন, এবং আপনার সেটি পরিবর্তন করার কোনো ইচ্ছা না থাকে, তবে\nআপনি এই বার্তাটি উপেক্ষা করতে পারে, এবং আপনার পুরোনো পাসওয়ার্ড ব্যবহার করা চালিয়ে যেতে পারেন।",
+ "passwordreset-emailelement": "বà§\8dযবহারà¦\95ারà§\80 নাম: $1\nà¦\85সà§\8dথায়à§\80 পাসà¦\93য়ারà§\8dড: $2",
+ "passwordreset-emailsent": "পাসà¦\93য়ারà§\8dড বদলের একটি ই-মেইল পাঠানো হয়েছে।",
"passwordreset-emailsent-capture": "স্মরণ করিয়ে দেয়ার জন্য একটি ইমেইল করা হয়েছে, যা নিচে দেখানো হচ্ছে।",
"passwordreset-emailerror-capture": "স্মরণ করিয়ে দেয়ার জন্য একটি ইমেইল তৈরী করা হয়েছিল, যা নিচে দেখানো হচ্ছে, তবে $1 {{GENDER:$2|ব্যবহারকারীকে}} এটি পাঠানো যায়নি!",
"changeemail": "ই-মেইল ঠিকানা পরিবর্তন",
"changeemail-header": "অ্যাকাউন্ট ই-মেইল ঠিকানা পরিবর্তন",
- "changeemail-text": "à¦\87-মà§\87à¦\87ল ঠিà¦\95ানা পরিবরà§\8dতন à¦\95রতà§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\87 ফরমà¦\9fি পà§\82রণ à¦\95রতà§\87 হবà§\87। à¦\8fà¦\87 পরিবরà§\8dতনà¦\9fি নিশà§\8dà¦\9aিত à¦\95রতà§\87 à¦\86পনার শবà§\8dদà¦\9aাবি (পাসà¦\93য়ারà§\8dড) প্রদানের প্রয়োজন হবে।",
+ "changeemail-text": "à¦\87-মà§\87à¦\87ল ঠিà¦\95ানা পরিবরà§\8dতন à¦\95রতà§\87 à¦\86পনাà¦\95à§\87 à¦\8fà¦\87 ফরমà¦\9fি পà§\82রণ à¦\95রতà§\87 হবà§\87। à¦\8fà¦\87 পরিবরà§\8dতনà¦\9fি নিশà§\8dà¦\9aিত à¦\95রতà§\87 à¦\86পনার পাসà¦\93য়ারà§\8dড প্রদানের প্রয়োজন হবে।",
"changeemail-no-info": "এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।",
"changeemail-oldemail": "বর্তমান ই-মেইল ঠিকানা:",
"changeemail-newemail": "নতুন ই-মেইল ঠিকানা:",
"changeemail-none": "(কিছু নাই)",
- "changeemail-password": "à¦\86পনার {{SITENAME}} শবà§\8dদà¦\9aাবি:",
+ "changeemail-password": "à¦\86পনার {{SITENAME}} পাসà¦\93য়ারà§\8dড:",
"changeemail-submit": "ই-মেইল পরিবর্তন",
"changeemail-cancel": "বাতিল",
"changeemail-throttled": "আপনি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
"preview": "প্রাকদর্শন",
"showpreview": "প্রাকদর্শন",
"showdiff": "পরিবর্তনসমূহ",
+ "blankarticle": "<strong>সতর্ক বার্তা:</strong> আপনি একটি খালি পাতা তৈরী করতে যাচ্ছেন।\nআপনি যদি পুনরায় \"{{int:savearticle}}\" বাটন ক্লিক করেন তাহলে, পাতাটি তৈরী হবে যেখানে কোনো তথ্য লেখা নেই।",
"anoneditwarning": "আপনি লগ ইন করেননি। এই পাতার সম্পাদনার ইতিহাসে আপনার আইপি সংখ্যা সংরক্ষিত হবে।",
"anonpreviewwarning": "আপনি লগ ইন করেননি। এই পাতার সম্পাদনার ইতিহাসে আপনার আইপি সংখ্যা সংরক্ষিত হবে।",
"missingsummary": "'''খেয়াল করুন''': আপনি কিন্তু সম্পাদনার সারাংশ দেননি। আবার যদি \"সংরক্ষণ\" বোতামে ক্লিক করেন, তাহলে ঐ সারাংশ বাক্যটি ছাড়াই আপনার সম্পাদনা সংরক্ষিত হবে।",
"loginreqtitle": "লগ-ইন প্রয়োজন",
"loginreqlink": "লগ-ইন",
"loginreqpagetext": "অন্যান্য পাতা দেখতে হলে আপনাকে অবশ্যই $1 হতে হবে।",
- "accmailtitle": "শবà§\8dদà¦\9aাবি পাঠানà§\8b হয়à§\87à¦\9bà§\87৷",
+ "accmailtitle": "পাসà¦\93য়ারà§\8dড পাঠানà§\8b হয়à§\87à¦\9bà§\87",
"accmailtext": "[[User talk:$1|$1]] এর জন্য দৈব ভাবে উৎপন্ন শব্দ চাবি $2 এ পাঠানো হয়েছে।\nলগ-ইন করার পর ''[[Special:ChangePassword|পাসওয়ার্ড পরিবর্তন]]'' পাতা থেকে এটি পরিবর্তন করা যাব।",
"newarticle": "(নতুন)",
"newarticletext": "আপনি এমন একটি লিংক অনুসরণ করছেন, যা নেই।\nপাতাটি তৈরি করতে, নিচের বাক্সে তা টাইপ করা শুরু করুন (আরও তথ্য জানতে [$1 সহায়িকা পাতা] দেখুন)।\nআপনি যদি ভুল করে এখানে এসে থাকেন, তাহলে আপনার ব্রাউজারের '''back''' বোতাম ক্লিক করুন।",
"parser-template-recursion-depth-warning": "টেমপ্লেট পুনরাবৃত্তি (রিকার্শন) ডেপথ্ সীমা অতক্রম করেছে ($1)",
"language-converter-depth-warning": "ভাষা পরিবর্তন ডেপথ্ সীমা অতক্রম করেছে ($1)",
"node-count-exceeded-category": "যে সকল পাতার নোড কাউন্ট সীমানা পার হয়েছে",
+ "node-count-exceeded-category-desc": "পাতার সর্বোচ্চ নোড কাউন্ট সীমানা অতিক্রম করেছে।",
"node-count-exceeded-warning": "পাতাটি নোড কাউন্ট সীমানা পার করেছে",
"expansion-depth-exceeded-category": "যে সকল পাতার এক্সেপশন সীমানা অতিক্রম করেছে",
+ "expansion-depth-exceeded-category-desc": "পাতাটি সর্বোচ্চ এক্সপশন সীমানা অতিক্রম করেছে।",
"expansion-depth-exceeded-warning": "পাতাটি এক্সেপশন সীমানা অতিক্রম করেছে",
"parser-unstrip-loop-warning": "ত্রুটিপূর্ণ লুপ খুঁজে পাওয়া গিয়েছে",
"parser-unstrip-recursion-limit": "লুপ রিকারশন সীমানা অতিক্রম করেছে ($1)",
"rev-deleted-event": "(লগ অ্যাকশন সরানো হয়েছে)",
"rev-deleted-user-contribs": "ব্যবহারকারীর নাম অথবা আইপি ঠিকানা অপসারিত হয়েছে - অবদান থেকে সম্পাদনা আড়াল করা হয়েছে",
"rev-deleted-text-permission": "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।\nবিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।",
+ "rev-suppressed-text-permission": "পাতার সংশোধনটি <strong>গোপন</strong> করা হয়েছে।\nবিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} গোপনকার্যের লগে] থাকতে পারে।",
"rev-deleted-text-unhide": "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।\nবিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।\nআপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
"rev-suppressed-text-unhide": "পাতার এই সংস্করণটি '''অপসারিত''' হয়েছে।\nবিস্তারিত কারণ এর [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} অপসারণ লগে] পাওয়া যেতে পারে।\nআপনি ইচ্ছা পোষণ করলে [$1 এই সংস্করণটি দেখতে পারেন]।",
"rev-deleted-text-view": "পাতার এই সংশোধনটি অপসারণ করা হয়েছে।\nআপনি এটি দেখতে পারেন; এ সংক্রাস্ত বিস্তারিত বিবরণ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} অবলুপ্তি লগে] থাকতে পারে।",
"searchprofile-advanced-tooltip": "স্বনির্ধারিত নামস্থানে অনুসন্ধান করো",
"search-result-size": "$1 ({{PLURAL:$2|১টি শব্দ|$2টি শব্দ}})",
"search-result-category-size": "{{PLURAL:$1 |১টি সদস্য |$1টি সদস্য}} ({{PLURAL:$2 |১টি উপবিষয়শ্রেণী|$2টি উপবিষয়শ্রেণী}}, {{PLURAL:$3 |১টি ফাইল |$3টি ফাইল}})",
- "search-result-score": "মিলেছে: $1%",
"search-redirect": "(পুনর্নিদেশনা $1)",
"search-section": "(অনুচ্ছেদ $1)",
"search-file-match": "(নথির বিষয়বস্তু মিলে যায়)",
"powersearch-togglelabel": "পরীক্ষা:",
"powersearch-toggleall": "সকল",
"powersearch-togglenone": "কিছু নয়",
+ "powersearch-remember": "ভবিষ্যত অনুসন্ধানগুলির জন্য নির্বাচন মনে রাখুন",
"search-external": "বহিঃস্থ অনুসন্ধান",
"searchdisabled": "{{SITENAME}} অনুসন্ধান এখন নিষ্ক্রিয় আছে। আপনি গুগলের মাধ্যমে অনুসন্ধান চালাতে পারেন। লক্ষ্য করুন যে {{SITENAME}}-এর বিষয়বস্তুর উপর গুগলের ইন্ডেক্সগুলি হালনাগাদ না-ও করা থাকতে পারে।",
"search-error": "অনুসন্ধানের সময় একটি ত্রুটি হয়েছে: $1",
"preferences": "আমার পছন্দ",
"mypreferences": "পছন্দসমূহ",
"prefs-edits": "সম্পাদনা সংখ্যা:",
- "prefsnologintext2": "বà§\8dযবহারà¦\95ারà§\80 পà¦\9bনà§\8dদসমà§\82হ নিরà§\8dধারনà§\87র à¦\9cনà§\8dয $1 করুন।",
+ "prefsnologintext2": "à¦\86পনার পà¦\9bনà§\8dদসমà§\82হ পরিবরà§\8dতন à¦\95রতà§\87 পà§\8dরবà§\87শ করুন।",
"prefs-skin": "আবরণ (Skin)",
"skin-preview": "প্রাকদর্শন",
"datedefault": "কোন পছন্দ নেই",
"prefs-watchlist-edits-max": "সর্বোচ্চ নাম্বার: ১০০০",
"prefs-watchlist-token": "নজরতালিকা টোকেন:",
"prefs-misc": "বিবিধ",
- "prefs-resetpass": "শবà§\8dদà¦\9aাবি পরিবর্তন",
+ "prefs-resetpass": "পাসà¦\93য়ারà§\8dড পরিবর্তন",
"prefs-changeemail": "ই-মেইল পরিবর্তন",
"prefs-setemail": "একটি ই-মেইল ঠিকানা নির্ধারণ করুন",
"prefs-email": "ই-মেইল অপশন",
"prefs-help-gender": "সেটিংসের এই পরিবর্তন ঐচ্ছিক।\nসফটওয়্যারে মাধ্যমে লিঙ্গ অনুযায়ী সম্বধনের ক্ষেত্রে এটি ব্যবহৃত হয়।\nএই তথ্য সকলের জন্য উন্মুক্ত থাকেবে।",
"email": "ই-মেইল",
"prefs-help-realname": "আসল নাম দেওয়া অনাবশ্যক। যদি আসল নাম দেন, তবে আপনার কাজের স্বীকৃতি দানে তা ব্যবহার করা হবে।",
- "prefs-help-email": "ই-মেইল ঠিকানা ঐচ্ছিক, তবে শব্দচাবি ভুলে গেলে নতুন করে শব্দচাবি নিতে এটির প্রয়োজন হবে।",
+ "prefs-help-email": "ইমেইল ঠিকানা ঐচ্ছিক, তবে পাসওয়ার্ড ভুলে গেলে নতুন করে পাসওয়ার্ড নিতে এটির প্রয়োজন হবে।",
"prefs-help-email-others": "আপনি আপনার পরিচয় প্রকাশ না করেও আপনার ব্যবহারকারী অথবা আলাপ পাতাটির মাধ্যমে অন্যদেরকে আপনার সাথে যোগাযোগ করতে দিতে পারেন।",
"prefs-help-email-required": "ই-মেইল ঠিকানা আবশ্যক।",
"prefs-info": "সাধারণ তথ্য",
"recentchanges-legend-heading": "'''ব্যাখ্যামূলক বর্ণনা:'''",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])",
"recentchanges-legend-plusminus": "(''±১২৩'')",
- "rcnotefrom": "<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)",
+ "rcnotefrom": "<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)।",
"rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও",
"rcshowhideminor": "অনুল্লেখ্য পরিবর্তনগুলো $1",
"rcshowhideminor-show": "দেখাও",
"uploadwarning": "আপলোড সতর্কবাণী",
"uploadwarning-text": "অনুগ্রহ করে নিচে ফাইলের বর্ণনা পরিবর্তন করে আবার চেষ্টা করুন।",
"savefile": "সংরক্ষণ",
- "uploadedimage": "\"[[$1]]\" আপলোড করা হয়েছে।",
- "overwroteimage": "\"[[$1]]\"-এর একটি নতুন সংস্করণ আপলোড করা হয়েছে",
"uploaddisabled": "আপলোড নিষ্ক্রিয় আছে",
"copyuploaddisabled": "ইউআরএল এর মাধ্যমে আপলোড নিস্ক্রিয় রয়েছে।",
"uploaddisabledtext": "ফাইল আপলোড নিষ্ক্রিয়।",
"license": "লাইসেন্সকরণ:",
"license-header": "লাইসেন্স প্রদান",
"nolicense": "কিছুই নির্বাচন করা হয়নি",
+ "licenses-edit": "লাইসেন্স অপশন সম্পাদনা করুন",
"license-nopreview": "(প্রাকদর্শন লভ্য নয়)",
"upload_source_url": " (একটি বৈধ, উন্মুক্ত URL)",
"upload_source_file": " (আপনার কম্পিউটারের একটি ফাইল)",
"wantedtemplates": "আবশ্যিক টেম্পলেটগুলো",
"mostlinked": "যেসব পাতার প্রতি সবচেয়ে বেশি সংযোগ আছে",
"mostlinkedcategories": "যেসব বিষয়শ্রেণীর প্রতি সবচেয়ে বেশি সংযোগ আছে",
- "mostlinkedtemplates": "যà§\87সব à¦\9fà§\87মপà§\8dলà§\87à¦\9fà§\87 সবà¦\9aà§\87য়à§\87 বà§\87শি সà¦\82যà§\8bà¦\97 à¦\86à¦\9bà§\87",
+ "mostlinkedtemplates": "সবà¦\9aà§\87য়à§\87 বà§\87শি à¦\85নà§\8dতরà§\8dà¦à§\81à¦\95à§\8dত পাতা",
"mostcategories": "সবচেয়ে বেশী বিষয়শ্রেণী-সমৃদ্ধ নিবন্ধসমূহ",
"mostimages": "যেসব ফাইলের দিকে সবচেয়ে বেশি সংযোগ আছে",
"mostinterwikis": "সবচেয়ে বেশী ইন্টারউইকি লিংক-সমৃদ্ধ নিবন্ধসমূহ",
"mywatchlist": "নজর তালিকা",
"watchlistfor2": "$1 ($2)-এর জন্য",
"nowatchlist": "আপনার নজরতালিকা খালি।",
- "watchlistanontext": "আপনার নজরতালিকার আইটেমগুলি দেখতে বা সম্পাদনা করতে অনুগ্রহ করে $1।",
+ "watchlistanontext": "আপনার নজরতালিকার আইটেমগুলি দেখতে বা সম্পাদনা করতে অনুগ্রহ করে প্রবেশ করুন।",
"watchnologin": "আপনি এখনও লগ-ইন করেননি।",
"addwatch": "নজরতালিকায় যোগ করো",
"addedwatchtext": "\"[[:$1]]\" পাতাটি আপনার [[Special:Watchlist|নজরতালিকাতে]] যোগ করা হয়েছে।\nভবিষ্যতে এই পাতা ও এই পাতার সাথে সম্পর্কিত আলোচনা পাতায় সংঘটিত যাবতীয় পরিবর্তন এখানে তালিকাভুক্ত হবে।",
"watchlist-details": "আপনার নজরতালিকাতে {{PLURAL:$1|$1টি পাতা}} আছে (আলাপ পাতাগুলি গণনায় না ধরে)।",
"wlheader-enotif": "ইমেল বিজ্ঞপ্তি সক্রিয় করা আছে।",
"wlheader-showupdated": "আপনার শেষ আগমনের পর থেকে যেসব পাতায় পরিবর্তন হয়েছে সেগুলি '''গাঢ়''' করে দেখানো হয়েছে।",
- "wlnote": "নিচে $3, $4 তারিখ থেকে বিগত {{PLURAL:$2|১ ঘন্টায়|'''$2''' ঘন্টায়}} সংঘটিত {{PLURAL:$1|শেষ ১টি পরিবর্তন|শেষ '''$1'''টি পরিবর্তন}} দেখানো হল।",
+ "wlnote": "নিচে $3, $4 তারিখ থেকে বিগত {{PLURAL:$2|১ ঘন্টায়|<strong>$2</strong> ঘন্টায়}} সংঘটিত {{PLURAL:$1|শেষ ১টি পরিবর্তন|শেষ <strong>$1টি</strong> পরিবর্তন}} দেখানো হল।",
"wlshowlast": "দেখাও সর্বশেষ $1 ঘণ্টা $2 দিন $3",
"watchlist-options": "নজর তালিকা পছন্দসমূহ",
"watching": "নজর রাখা হচ্ছে...",
"autoblockid": "স্বয়ংক্রিয় বাধা #$1",
"block": "ব্যবহারকারীকে বাধা দাও",
"unblock": "ব্যবহারকারীর উপর থেকে বাধা অপসারণ",
- "blockip": "ব্যবহারকারীকে বাধা দাও",
+ "blockip": "{{GENDER:$1|ব্যবহারকারীকে}} বাধা দাও",
"blockip-legend": "ব্যবহারকারীকে বাধা দেওয়া হোক",
"blockiptext": "কোন নির্দিষ্ট আইপি ঠিকানা বা ব্যবহারকারীর লেখার অধিকারে বাধা দিতে নিচের ফর্মটি ব্যবহার করুন।\nএটি কেবলমাত্র ধ্বংসপ্রবণতা প্রতিরোধে ও [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে সম্পাদন করা উচিত।\nনিচে একটি নির্দিষ্ট কারণ দিন (উদাহরণস্বরূপ, যেসব পাতার ধ্বংসসাধন করা হয়েছে, সেগুলি উল্লেখ করতে পারেন)।",
"ipaddressorusername": "আইপি ঠিকানা বা ব্যবহারকারীর নাম:",
"ipb-unblock-addr": "$1-এর উপর থেকে বাধা তুলে নেওয়া হোক",
"ipb-unblock": "ব্যবহারকারী বা আইপি ঠিকানার উপর থেকে বাধা তুলে নেওয়া হোক",
"ipb-blocklist": "বিদ্যমান বাধাগুলি দেখুন",
- "ipb-blocklist-contribs": "$1 এর অবদানসমূহ",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}}-এর অবদানসমূহ",
"unblockip": "ব্যবহারকারীর উপর থেকে বাধা তুলে নেওয়া হোক",
"unblockiptext": "নিচের ফর্মটি ব্যবহার করে পূর্বে বাধা দেওয়া কোন আইপি ঠিকানা বা ব্যবহারকারীর সাইটে লেখার অধিকার পুনঃপ্রতিষ্ঠা করুন।",
"ipusubmit": "বাধা তুলে নেওয়া হোক",
"logentry-rights-rights": "$1 ব্যবহারকারী, $3 এর দলগত সদস্যপদ $4 থেকে $5 এ {{GENDER:$2|পরিবর্তন}} করেছেন",
"logentry-rights-rights-legacy": "$1 দলের সদস্যপদ পরিবর্তন করেছেন {{GENDER:$2|changed}} এর জন্য $3",
"logentry-rights-autopromote": "$1 সয়ংক্রিয়ভাবে $4 থেকে $5 এ {{GENDER:$2|উন্নীত}} হয়েছে",
+ "logentry-upload-upload": "$1 $3 {{GENDER:$2|আপলোড করেছেন}}",
+ "logentry-upload-overwrite": "$1 $3-এর একটি নতুন সংস্করণ {{GENDER:$2|আপলোড করেছেন}}",
+ "logentry-upload-revert": "$1 $3 {{GENDER:$2|আপলোড করেছেন}}",
"rightsnone": "(কিছু নাই)",
"feedback-bugornote": "কারিগরী ত্রুটির বিস্তারিত বর্ণনা জানতে [$1 বাগ রিপোর্ট করুন]।\nঅথবা নিচের এই সরল ফর্মটি ব্যবহার করতে পারেন। \"[$3 $2]\" পাতায় আপনার ব্যবহারকারী নাম সহ মন্তব্যটি প্রকাশিত হবে।",
"feedback-subject": "বিষয়:",
"action-pagelang": "পাতার ভাষা পরিবর্তন করুন",
"log-name-pagelang": "ভাষা পরিবর্তন লগ",
"log-description-pagelang": "এটি পাতার ভাষা পরিবর্তনের লগ।",
- "logentry-pagelang-pagelang": "$1 পাতার ভাষা $3 এর জন্য $4 থেকে $5 এ {{GENDER:$2|পরিবর্তন}} করেছেন।"
+ "logentry-pagelang-pagelang": "$1 পাতার ভাষা $3 এর জন্য $4 থেকে $5 এ {{GENDER:$2|পরিবর্তন}} করেছেন।",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (সক্রিয় করা)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''নিষ্ক্রিয় করা''')"
}
"talkpagelinktext": "གཏམ་གླེང།",
"specialpage": "དམིགས་གསལ་ཤོག་ངོས།",
"personaltools": "སྒེར་ཀྱི་ལག་ཆ།",
- "postcomment": "སྡེ་ཚན་གསར་བ།",
"articlepage": "ནང་དོན་ཤོག་ངོས་ལ་ལྟ་བ།",
"talk": "གྲོས་བསྡུར།",
"views": "ལྟ་ཞིབ།",
"illegal-filename": "ཡིག་ཆའི་མིང་འདི་ལ་ཆོག་མཆན་མི་འདུག",
"uploadwarning": "ཡར་འཇུག་སྔོན་བརྡ།",
"savefile": "ཡིག་ཆ་ཉོར་ཅིག",
- "uploadedimage": "\"[[$1]]\"ཡར་འཇུག་བྱས་ཟིན།",
"uploaddisabled": "ཡར་འཇུག་ནུས་མེད་བཟོས་འདུག",
"watchthisupload": "ཡིག་ཆ་འདི་ལ་གཟིགས།",
"license": "གན་རྒྱ་ནང་ཞུགས་པ།",
"talkpagelinktext": "য়্যারি",
"specialpage": "বিশেষ পাতাহান",
"personaltools": "নিজস্ব আতিয়ার",
- "postcomment": "নুৱা অনুচ্ছেদহান",
"articlepage": "নিবন্ধ চেইক",
"talk": "য়্যারী",
"views": "চা",
"externaldberror": "ডাটেবেজর মা বেসেপ আহান ইসে নাইলে তরতা বারেদের একাউন্ট বদালানির য়্যাথাং নেই।",
"login": "হমানি",
"nav-login-createaccount": "লগইন / একাউন্ট খুল",
- "loginprompt": "তি যেসাদেউ হমাসি {{SITENAME}} পাতা এহানর কুকিসর য়্যাথাঙ দে।",
"userlogin": "হমানি / নৱা একাউন্ট খুলানি",
"userloginnocreate": "লগইন",
"logout": "নিকুলানি",
"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-suggest": "তি হয়ত মাতানি চারতা: $1",
"illegalfilename": "\"$1\" ফাইলর নাঙহাত থকনেই মেয়েক মিহিসে যেতা পাতাহার চিঙনাঙে বরানি নাকরব।\nআরাক নুৱা নাঙ আহান দিয়া কাকর।",
"badfilename": "ফাইলগর নাঙহান পতিয়া $1\" করানি ইল।",
"savefile": "ফাইল ইতু",
- "uploadedimage": "আপলোডকরানি অইল \"[[$1]]\"",
"upload-source": "ফাইলর উৎস",
"upload-options": "আপলোডর পছনহানি",
"watchthisupload": "ফাইলগ খিয়ালে থ",
"GerardM",
"Huji",
"Meno25",
- "Mogoeilor"
+ "Mogoeilor",
+ "아라"
]
},
"tog-underline": "لینکهای خط به زیر",
"tog-hideminor": "من ته نبیدن تغییرات کوچیک",
- "tog-extendwatchlist": "Ú¯Ù¾ کردÙ\86 Ù\84Û\8cستÙ\87اÛ\8c Ù\85Ù\86 تÙ\87 سÛ\8c دÛ\8cدÙ\86 Ù\87Ù\85Ù\87 تغÛ\8cÛ\8cراتÛ\8c Ú©Ù\87 ابÙ\88Ù\87",
+ "tog-extendwatchlist": "Ú¯Ù¾ کردÙ\86 Ù\86Ù\88Ù\85 Ú¯Ù\87 Ø¢ Ù\85Ù\88 سÛ\8c دÛ\8cئÙ\86 Ù\87Ù\85Ù\87 Ø¢Ù\84شتا Ù\86Ù\87 Ù\81Ù\82Ø· Ù\87Ù\88Ù\86Ù\88 Ú©Ù\87 بÛ\8cشتر ز Ù\87Ù\85Ù\87 اÙ\86جÙ\88Ù\85 ابÙ\88Ù\86.",
"tog-usenewrc": "گپ کردن تغییرات آخری - جاوااسکریپت",
"tog-numberheadings": "شماره وندن خودکار سی سرخط ها",
"tog-showtoolbar": "نشو دادن تغییرات تولبار یا جای نشودادن ابزارها- جاوااسکریپت",
"tog-editondblclick": "اصلاح صفحات با دوبار کلیک - جاوااسکریپت",
"tog-editsectiononrightclick": "امکان اصلاح یه قسمت زه راه راست کلیک کردن رو عنوان اوقسمت- جاوااسکریپت",
- "tog-rememberpassword": "به حافظه کامپیوتر دادن نحوه ورودی خوم (for a maximum of $1 {{PLURAL:$1|day|days}})",
"tog-watchcreations": "اضاف کردن اوصفحاتی که خوم درست کردم به فهرست نمایشی",
"tog-watchdefault": "اضاف کردن اوصفحاتی که خوم اصلاح کردم به فهرست نمایشی",
"tog-watchmoves": "اضاف کردن صفحاتی که خوم جابجا کردم به فهرست نمایشی",
"talkpagelinktext": "صحبت",
"specialpage": "صفحه مخصوص",
"personaltools": "ابزارهای شخصی",
- "postcomment": "ارسال یک توضیح",
"articlepage": "دیدن صفحه محتوا",
"talk": "بحث",
"views": "مشاهدات",
"remembermypassword": "رمز اویدن به سیستم را دراین رایانه به خاطر بسپار (for a maximum of $1 {{PLURAL:$1|day|days}})",
"login": "اویدن به سیستم",
"nav-login-createaccount": "اویدن به سیستم",
- "loginprompt": "ایسا وا کوکی ها رافعال کنین سی اویدن به {{SITENAME}}.",
"userlogin": "اویدن به سیستم / درست کردن حساب کاربری",
"logout": "رهدن زه سیستم",
"userlogout": "رهدن زه سیستم",
"recentchanges": "تغییرات اخیر",
"recentchanges-feed-description": "ردیابی آخرین تغییرات ویکی در ای خورد",
"rcnotefrom": "در زیر تغییرات زه تاریخ <b>$2</b> آمدهاند (تا <b>$1</b> مورد نشو داده ابوه).",
- "rclistfrom": "نشودادن تغییرات تازه با شروع زه $1",
+ "rclistfrom": "نشودادن تغییرات تازه با شروع زه $3 $2",
"rcshowhideminor": "اصلاحات کوچیک $1",
"rcshowhidebots": "$1 رباتها یا بوتها",
"rcshowhideliu": "$1 کاربران داخل وابیده",
"upload": "آپلود فایل",
"uploadbtn": "آپلود فایل",
"uploadlogpage": "نمایه آپلود",
- "uploadedimage": "آپلود وابید \"[[$1]]\"",
"listfiles": "لیست فایل",
"file-anchor-link": "فایل",
"filehist": "گزارش تاریخی فایل",
"log": "نمایه ها",
"all-logs-page": "همه نمایه ها",
"allpages": "همه صفحات",
- "alphaindexline": "$1 به\n$2",
"nextpage": "صفحه بعدی ($1)",
"prevpage": "صفحه قبلی($1)",
"allpagesfrom": "نمایش دادن صفحات با شروع زه:",
"hidden-category-category": "Rummadoù kuzhet",
"category-subcat-count": "{{PLURAL:$2|N'eus er rummad-mañ nemet an isrummad da-heul.|{{PLURAL:$1|isrummad|$1 isrummad}} zo d'ar rummad-mañ diwar un hollad a $2.}}",
"category-subcat-count-limited": "Er rummad-mañ e kaver an {{PLURAL:$1|isrummad-se|$1 isrummadoù-se}}.",
- "category-article-count": "{{PLURAL:$2|N'eus er rummad-mañ nemet ar bajenn da-heul.|Emañ ar {{PLURAL:$1|bajenn da-heul|$1 pajenn da-heul}} er rummad-mañ, diwar un hollad a $2.}}",
- "category-article-count-limited": "{{PLURAL:$1|Emañ ar bajenn|Emañ an $1 pajenn}} da-heul er rummad-mañ.",
+ "category-article-count": "{{PLURAL:$2|N'eus er rummad-mañ nemet ar bajenn da-heul.|Emañ {{PLURAL:$1|ar bajenn da-heul|an/ar $1 pajenn da-heul}} er rummad-mañ, diwar un hollad a $2.}}",
+ "category-article-count-limited": "{{PLURAL:$1|Emañ ar bajenn|Emañ an/ar $1 pajenn}} da-heul er rummad-mañ.",
"category-file-count": "{{PLURAL:$2|N'eus er rummad-mañ nemet ar restr da-heul.|Emañ ar {{PLURAL:$1|restr|$1 restr}} da-heul er rummad-mañ, diwar un hollad a $2.}}",
"category-file-count-limited": "{{PLURAL:$1|Emañ ar restr|Emañ an $1 restr}} da-heul er rummad-mañ.",
"listingcontinuesabbrev": "(war-lerc'h)",
"otherlanguages": "Yezhoù all",
"redirectedfrom": "(Adkaset eus $1)",
"redirectpagesub": "Pajenn adkas",
- "lastmodifiedat": "Kemmoù diwezhañ degaset d'ar bajenn-mañ, d'an $1 da $2.",
+ "lastmodifiedat": "Kemmoù diwezhañ degaset d'ar bajenn-mañ, d'an/ar $1 da $2.",
"viewcount": "Sellet ez eus bet {{PLURAL:$1|$1 wezh|$1 gwezh}} ouzh ar bajenn-mañ.",
"protectedpage": "Pajenn warezet",
"jumpto": "Mont da :",
"hidetoc": "kuzhat",
"collapsible-collapse": "Pakañ",
"collapsible-expand": "Dispakañ",
+ "confirmable-confirm": "Ha sur {{GENDER:$1|hoc'h}} ?",
+ "confirmable-yes": "Ya",
+ "confirmable-no": "Ket",
"thisisdeleted": "Diskouez pe diziverkañ $1 ?",
"viewdeleted": "Gwelet $1?",
"restorelink": "{{PLURAL:$1|ur c'hemm diverket|$1 kemm diverket}}",
"searchprofile-advanced-tooltip": "Klask en esaouennoù anv personelaet",
"search-result-size": "$1 ({{PLURAL:$2|1 ger|$2 ger}})",
"search-result-category-size": "{{PLURAL:$1|1|$1}} ezel ({{PLURAL:$2|1|$2}} is-rummad, {{PLURAL:$3|1|$3}} restr)",
- "search-result-score": "Klotadusted : $1%",
"search-redirect": "(adkas $1)",
"search-section": "(rann $1)",
"search-file-match": "(klotañ a ra gant endalc'had ar restr)",
"recentchanges-legend-heading": "'''Alc'hwez :'''",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])",
"rcnotefrom": "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an <strong>$2</strong> (<strong>$1</strong> d'ar muiañ).",
- "rclistfrom": "Diskouez ar c'hemmoù diwezhañ abaoe an $3 $2",
+ "rclistfrom": "Diskouez ar c'hemmoù diwezhañ abaoe an/ar $3 $2",
"rcshowhideminor": "$1 ar c'hemmoù dister",
"rcshowhideminor-show": "Diskouez",
"rcshowhideminor-hide": "Kuzhat",
"rcshowhidemine": "$1 ma c'hemmoù",
"rcshowhidemine-show": "Diskouez",
"rcshowhidemine-hide": "Kuzhat",
- "rclinks": "Diskouez an $1 kemm diwezhañ c'hoarvezet e-pad an $2 devezh diwezhañ<br />$3",
+ "rclinks": "Diskouez an/ar $1 kemm diwezhañ c'hoarvezet e-pad an/ar $2 devezh diwezhañ.<br />$3",
"diff": "diforc'h",
"hist": "ist",
"hide": "Kuzhat",
"uploadwarning": "Kemenn diwall en ur ezporzhiañ",
"uploadwarning-text": "Cheñchit deskrivadur ar restr a-is ha klaskit en-dro.",
"savefile": "Enrollañ ar restr",
- "uploadedimage": "\"[[$1]]\" enporzhiet",
- "overwroteimage": "enporzhiet ur stumm nevez eus \"[[$1]]\"",
"uploaddisabled": "Ho tigarez, diweredekaet eo bet kas ar restr-mañ.",
"copyuploaddisabled": "Diweredekaet eo bet ar pellgargañ dre URL.",
"uploaddisabledtext": "Diweredekaet eo an enporzhiañ restroù.",
"pagelang-use-default": "Implijout ar yezh dre ziouer",
"pagelang-select-lang": "Dibab ar yezh",
"right-pagelang": "Cheñch yezh ar bajenn",
- "action-pagelang": "cheñch yezh ar bajenn"
+ "action-pagelang": "cheñch yezh ar bajenn",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (gweredekaet)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''diweredekaet''')"
}
"@metadata": {
"authors": [
"Imdadb",
- "Southparkfan"
+ "Southparkfan",
+ "아라"
]
},
"sunday": "Yakşambe",
"mytalk": "Kaná ítgap",
"navigation": "Kasarşoní",
"qbfind": "Paŧŧa",
- "vector-action-addsection": "Púskun sarhál",
- "vector-action-delete": "Mesa",
- "vector-action-move": "Surif",
- "vector-action-protect": "Rakk",
- "vector-view-create": "Biná",
- "vector-view-edit": "Radbadal",
- "vector-view-history": "Lekav e ur",
- "vector-view-view": "Xuán",
- "vector-view-viewsource": "Bumpad e ur",
"actions": "Amal ák",
"namespaces": "Pin-jága ģák",
"variants": "Badaldroşumk",
"viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) e ur",
"searchmenu-new": "'''Dá Vikí ŧí \"[[:$1]]\" panna ná biná kar!'''",
"searchprofile-articles": "Nivişt panna ģák",
- "searchprofile-project": "Ráhşon o bunkárem panna ģák",
"searchprofile-images": "Multimedia",
"searchprofile-everything": "Ar giŕá",
"searchprofile-advanced": "Xúŕt",
"searchprofile-articles-tooltip": "$1 ŧí paŧŧa",
- "searchprofile-project-tooltip": "$1 ŧí paŧŧa",
"searchprofile-images-tooltip": "Fáil átekin paŧŧpol",
"searchprofile-everything-tooltip": "Ģuŧŧ nivişt áteŧí paŧŧpol (ítgap ná panna ģáteton avár)",
"search-result-size": "$1 ({{PLURAL:$2|1 laoz|$2 laoz}})",
"search-nonefound": "Just aná icc kaŧŧiá allav",
"powersearch-legend": "Xúŕt paŧŧopol",
"powersearch-ns": "Pin-jága ģáteŧí paŧŧopol:",
- "powersearch-redir": "Aŕsoká panna ģátá cirr e nişán et",
"preferences": "Gicenk",
"mypreferences": "Kaná gicenk",
"yourrealname": "Aslí pin",
"recentchanges-label-minor": "Dá cunko radbadal as e",
"recentchanges-label-bot": "Dá xudkár asená dú án maroko radbadal as e",
"rcnotefrom": "Şefko raddobadal ák '''$2''' án maroko ('''$1''' iskán páş o)",
- "rclistfrom": "$1 án púskuná radbadal áke nişán et",
+ "rclistfrom": "$3 $2 án púskuná radbadal áke nişán et",
"rcshowhideminor": "Cunká radbadal áte $1",
"rcshowhidebots": "Boŧ áte $1",
"rcshowhideliu": "Drustírástí kárband áte $1",
"upload": "Fáil laggif",
"uploadlogpage": "Laggifing ná hisáb",
"filedesc": "Bungapp",
- "uploadedimage": "\"[[$1]]\" laggifingá",
"license": "Muxtárnáma",
"license-header": "Muxtárnáma",
"file-anchor-link": "Fáil",
"booksources-go": "Ráím",
"log": "Lekav",
"allpages": "Ģuŧŧ panna ģák",
- "alphaindexline": "$1 án $2 iskán",
"prevpage": "Mustko panna ($1)",
"allpagesfrom": "Dáŕaŧ biná maroká panna ģáte nişán et:",
"allpagesto": "Dáŕaŧ esar maroká panna ģáte nişán et:",
"searchprofile-advanced-tooltip": "Traži u ostalim imenskim prostorima",
"search-result-size": "$1 ({{PLURAL:$2|$2 riječ|$2 riječi}})",
"search-result-category-size": "{{PLURAL:$1|1 član|$1 člana|$1 članova}} ({{PLURAL:$2|1 podkategorija|$2 podkategorije|$2 podkategorija}}, {{PLURAL:$3|1 datoteka|$3 datoteke|$3 datoteka}})",
- "search-result-score": "Relevantnost: $1%",
"search-redirect": "(preusmjeravanje $1)",
"search-section": "(sekcija $1)",
"search-suggest": "Da li ste mislili: $1",
"uploadwarning": "Upozorenje pri slanju",
"uploadwarning-text": "Molimo izmijeniti opis datoteke ispod i pokušajte kasnije.",
"savefile": "Sačuvaj datoteku",
- "uploadedimage": "poslato \"[[$1]]\"",
- "overwroteimage": "postavljena nova verzija datoteke \"[[$1]]\"",
"uploaddisabled": "Slanje fajlova je isključeno",
"copyuploaddisabled": "Postavljanje putem URL nije omogućeno.",
"uploaddisabledtext": "Postavljanje datoteka je onemogućeno.",
"Àlex",
"לערי ריינהארט",
"아라",
- "Calak"
+ "Calak",
+ "F3RaN"
]
},
"tog-underline": "Subratlla els enllaços:",
"badaccess-groups": "L'acció que heu soŀlicitat es limita als usuaris {{PLURAL:$2|del grup|dels grups}}: $1.",
"versionrequired": "Cal la versió $1 del MediaWiki",
"versionrequiredtext": "Cal la versió $1 del MediaWiki per a utilitzar aquesta pàgina. Vegeu [[Special:Version]]",
- "ok": "OK",
+ "ok": "D’acord",
"retrievedfrom": "Obtingut de «$1»",
"youhavenewmessages": "Tens $1 ($2).",
"youhavenewmessagesfromusers": "Tens $1 {{PLURAL:$3|d'un altre usuari|de $3 usuaris}} ($2).",
"hidetoc": "amaga",
"collapsible-collapse": "Tanca",
"collapsible-expand": "Amplia",
+ "confirmable-confirm": "Esteu {{GENDER:$1|segur|segura}}?",
+ "confirmable-yes": "Sí",
+ "confirmable-no": "No",
"thisisdeleted": "Voleu mostrar o restaurar $1?",
"viewdeleted": "Voleu mostrar $1?",
"restorelink": "{{PLURAL:$1|una versió esborrada|$1 versions esborrades}}",
"invalidtitle-knownnamespace": "El títol amb l'espai de noms «$2» i text «$3» no és vàlid",
"invalidtitle-unknownnamespace": "Títol no vàlid amb espai de noms desconegut de número «$1» i text «$2»",
"exception-nologin": "No has iniciat sessió",
- "exception-nologin-text": "[[Special:Userlogin|Inicieu sessió]] per poder accedir a aquesta pàgina o acció.",
+ "exception-nologin-text": "Cal que inicieu una sessió per accedir a aquesta pàgina o acció.",
"exception-nologin-text-manual": "Si us plau, $1 per poder accedir a aquesta pàgina o acció.",
"virus-badscanner": "Mala configuració: antivirus desconegut: ''$1''",
"virus-scanfailed": "escaneig fallit (codi $1)",
"preview": "Previsualització",
"showpreview": "Mostra una previsualització",
"showdiff": "Mostra els canvis",
+ "blankarticle": "<strong>Avís:</strong> La pàgina que esteu creant és en blanc.\nSi feu clic a «{{int:savearticle}}» un altre cop, la pàgina es crearà sense cap contingut.",
"anoneditwarning": "'''Avís:''' No esteu identificats amb un compte d'usuari. Es mostrarà la vostra adreça IP en l'historial d'aquesta pàgina.",
"anonpreviewwarning": "''No us heu identificat amb un compte d'usuari. La vostra adreça IP quedarà registrada a l'historial d'aquesta pàgina.''",
"missingsummary": "'''Recordatori''': Heu deixat en blanc el resum de l'edició. Si torneu a clicar al botó de desar, l'edició es guardarà sense resum.",
"parser-template-recursion-depth-warning": "S'ha excedit el límit de recursivitat de plantilles ($1)",
"language-converter-depth-warning": "El límit de la profunditat del conversor d'idiomes ha excedit ($1)",
"node-count-exceeded-category": "Pàgines on s'ha excedit el recompte de nodes",
- "node-count-exceeded-category-desc": "Una categoria de les pàgines on s'ha excedit el recompte de nodes.",
+ "node-count-exceeded-category-desc": "La pàgina ha excedit el compte màxim de nodes.",
"node-count-exceeded-warning": "La pàgina ha excedit el recompte de nodes",
"expansion-depth-exceeded-category": "Pàgines on s'ha excedit la profunditat d'expansió",
- "expansion-depth-exceeded-category-desc": "Aquesta és una categoria de les pàgines on s'ha s'excedit la profunditat d'expansió.",
+ "expansion-depth-exceeded-category-desc": "La pàgina ha excedit la profunditat màxima d'expansió.",
"expansion-depth-exceeded-warning": "La pàgina ha excedit la profunditat d'expansió",
"parser-unstrip-loop-warning": "S'ha detectat un bucle no desmuntable",
"parser-unstrip-recursion-limit": "S'ha excedit el límit ($1) de recursivitat no desmuntable",
"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": "S'ha '''suprimit''' aquesta versió de la pàgina.\nVegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
+ "rev-suppressed-text-permission": "S'ha '''suprimit''' aquesta versió de la pàgina.\nVegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
"rev-deleted-text-unhide": "S'ha '''suprimit''' la revisió d'aquesta pàgina.\nHi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].\nEncara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
"rev-suppressed-text-unhide": "S'ha '''suprimit''' aquesta versió de la pàgina.\nHi poden haver més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].\nEncara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
"rev-deleted-text-view": "S'ha '''suprimit''' aquesta versió de la pàgina.\nPodeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
"revdelete-text-text": "Les versions suprimides encara apareixeran en la pàgina d'historial, però part del seu contingut serà inaccessible al públic.",
"revdelete-text-file": "Les versions suprimides encara apareixeran en l'historial del fitxer, però part del seu contingut serà inaccessible al públic.",
"logdelete-text": "Els esdeveniments suprimits encara apareixeran en els registres, però part del seu contingut serà inaccessible al públic.",
- "revdelete-text-others": "Altres administradors del projecte {{SITENAME}} podran accedir al contingut ocult i podran restaurar-lo amb aquesta mateixa interfície, llevat que s'estableixin restriccions addicionals.",
+ "revdelete-text-others": "Altres administradors podran accedir al contingut ocult i restaurar-lo, llevat que s'estableixin restriccions addicionals.",
"revdelete-confirm": "Si us plau, confirmeu que és això el que desitgeu fer, que enteneu les conseqüències, i que esteu fent-ho d'acord amb [[{{MediaWiki:Policy-url}}|les polítiques acordades]].",
"revdelete-suppress-text": "Les supressions '''només''' han de ser portades a terme en els següents casos:\n* Informació potencialment difamatòria\n* Informació personal inapropiada\n*: ''adreces personals, números de telèfon, números d'identificació nacional, etc.''",
"revdelete-legend": "Defineix restriccions en la visibilitat",
"searchprofile-advanced-tooltip": "Cerca als espais de noms predefinits",
"search-result-size": "$1 ({{PLURAL:$2|1 paraula|$2 paraules}})",
"search-result-category-size": "{{PLURAL:$1|1 membre|$1 membres}} ({{PLURAL:$2|1 subcategoria|$2 subcategories}}, {{PLURAL:$3|1 fitxer|$3 fitxers}})",
- "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)",
"preferences": "Preferències",
"mypreferences": "Preferències",
"prefs-edits": "Nombre d'edicions:",
- "prefsnologintext2": "Useu $1 per configurar preferències d'usuari.",
+ "prefsnologintext2": "Inicieu una sessió per canviar les vostres preferències.",
"prefs-skin": "Aparença",
"skin-preview": "prova",
"datedefault": "Cap preferència",
"right-deletedtext": "Veure el text esborrat i els canvis entre revisions esborrades",
"right-browsearchive": "Cercar pàgines esborrades",
"right-undelete": "Restaurar pàgines esborrades",
- "right-suppressrevision": "Revisar i restaurar les versions amagades als administradors",
+ "right-suppressrevision": "Mostra, amaga i revela revisions específiques de pàgines d'un usuari",
"right-viewsuppressed": "Mostra les revisions amagades de qualsevol usuari",
"right-suppressionlog": "Veure registres privats",
"right-block": "Blocar altres usuaris per a impedir-los l'edició",
"recentchanges-legend-heading": "'''Llegenda:'''",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vegeu també la [[Special:NewPages|llista de pàgines noves]])",
"recentchanges-legend-plusminus": "(''±123'')",
- "rcnotefrom": "A sota hi ha els canvis des de <strong>$2</strong> (es mostren fins <strong>$1</strong>).",
+ "rcnotefrom": "A sota hi ha {{PLURAL:$5|el canvi|els canvis}} a partir de <strong>$3, $4</strong> (fins a <strong>$1</strong>).",
"rclistfrom": "Mostra els canvis nous des de $3 $2",
"rcshowhideminor": "$1 edicions menors",
"rcshowhideminor-show": "Mostra",
"uploadwarning": "Avís de càrrega",
"uploadwarning-text": "Modifiqueu la descripció de la imatge i torneu a intentar-ho.",
"savefile": "Desa el fitxer",
- "uploadedimage": "ha carregat [[$1]]",
- "overwroteimage": "ha carregat una nova versió de «[[$1]]»",
"uploaddisabled": "S'ha inhabilitat la càrrega",
"copyuploaddisabled": "Càrrega per URL deshabilitada.",
"uploaddisabledtext": "S'ha inhabilitat la càrrega de fitxers.",
"nolicense": "No se n'ha seleccionat cap",
"licenses-edit": "Modifica les opcions de llicència",
"license-nopreview": "(Previsualització no disponible)",
- "upload_source_url": " (un URL vàlid i accessible públicament)",
+ "upload_source_url": " (el fitxer que heu seleccionat des d'un URL vàlid i accessible públicament)",
"upload_source_file": " (un fitxer triat del vostre ordinador)",
"listfiles-delete": "elimina",
"listfiles-summary": "Aquesta pàgina especial mostra tots els fitxers carregats.\nSi filtreu per usuari només es mostraran els fitxers la versió més recent dels quals hagi estat carregada per aquell.",
"trackingcategories-desc": "Criteris d'inclusió de categoria",
"noindex-category-desc": "La pàgina conté una paraula màgica <code><nowiki>__NOINDEX__</nowiki></code> (i és en un espai de noms on està permesa) i per tant no està indexada per robots.",
"index-category-desc": "La pàgina conté un <code><nowiki>__INDEX__</nowiki></code> (i és en un espai de noms on està permès) i per tant està indexat per robots quan normalment no ho seria.",
- "post-expand-template-inclusion-category-desc": "Després d'expandir totes les plantilles, la mida de la pàgina és més gran que <code>$wgMaxArticleSize</code>, per tant algunes plantilles no s'han expandit.",
+ "post-expand-template-inclusion-category-desc": "La mida de la pàgina és més gran que <code>$wgMaxArticleSize</code> un cop expandides totes les plantilles, per tant algunes plantilles no s'han expandit.",
"post-expand-template-argument-category-desc": "Després d'expandir un argument de plantilla (alguna cosa entre claus triples, com <code>{{{Això}}}</code>), la pàgina és més gran que <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Massa funcions d'analitzador costoses (com <code>#ifexist</code>) incloses en una pàgina. Vegeu [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Categoria afegida si la pàgina conté un enllaç de fitxer trencat (un enllaç per inserir un fitxer quan aquest fitxer no existeix).",
+ "expensive-parserfunction-category-desc": "La pàgina utilitza massa funcions d'analitzador costoses (com <code>#ifexist</code>). Vegeu [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "La pàgina conté un enllaç de fitxer trencat (un enllaç per inserir un fitxer quan aquest fitxer no existeix).",
"hidden-category-category-desc": "Aquesta és una categoria que conté <code><nowiki>__HIDDENCAT__</nowiki></code>, que impedeix que aparegui en la caixa d'enllaços de categoria a les pàgines, per defecte.",
"trackingcategories-nodesc": "Sense descripció disponible.",
"trackingcategories-disabled": "La categoria està inhabilitada",
"mywatchlist": "Llista de seguiment",
"watchlistfor2": "Per $1 $2",
"nowatchlist": "No teniu cap element en la vostra llista de seguiment.",
- "watchlistanontext": "Premeu $1 per a visualitzar o modificar elements de la vostra llista de seguiment.",
+ "watchlistanontext": "Inicieu una sessió per a visualitzar o modificar elements de la vostra llista de seguiment.",
"watchnologin": "No heu iniciat la sessió",
"addwatch": "Afegeix a llista de seguiment",
"addedwatchtext": "S'ha afegit la pàgina \"[[:$1]]\" a la vostra [[Special:Watchlist|llista de seguiment]].\nS'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió.",
"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ó.",
+ "delete-cantedit": "No podeu suprimir la pàgina perquè no teniu permís per a editar-la.",
"deleting-backlinks-warning": "'''Avís:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Altres pàgines]] enllacen o transclouen de la pàgina que esteu a punt de suprimir.",
"rollback": "Reverteix edicions",
"rollback_short": "Revoca",
"import-invalid-interwiki": "No es pot importar des del wiki especificat.",
"import-error-edit": "La pàgina «$1» no s'ha importat perquè no teniu permís per modificar-la.",
"import-error-create": "La pàgina «$1» no s'ha importat perquè no teniu permís per crear-la.",
- "import-error-interwiki": "No s'importa la pàgina «$1» perquè el seu nom està reservat a l'enllaçament extern (interwiki).",
+ "import-error-interwiki": "No s'ha importat la pàgina «$1» perquè el seu nom està reservat per a enllaços externs (interwiki).",
"import-error-special": "No s'importa la pàgina «$1» perquè el seu nom pertany a l'espai de noms especial que no permet pàgines.",
"import-error-invalid": "No s'importa la pàgina «$1» perquè el seu nom no és vàlid.",
"import-error-unserialize": "La revisió $2 de la pàgina \"$1\" no pot ser desserialitzada. La revisió indica que utilitza el model de contingut $3 serialitzat com a $4.",
"importlogpage": "Registre d'importació",
"importlogpagetext": "Importacions administratives de pàgines amb l'historial des d'altres wikis.",
"import-logentry-upload": "ha importat [[$1]] per càrrega de fitxers",
- "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisió|revisions}}",
+ "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisió|revisions}} importades",
"import-logentry-interwiki": "s'ha importat $1 via interwiki",
- "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisió|revisions}} de $2",
+ "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisió|revisions}} importades de $2",
"javascripttest": "Proves de JavaScript",
"javascripttest-title": "S'estan executant $1 proves",
"javascripttest-pagetext-noframework": "Es reserva la pàgina per a l'execució de tests amb JavaScript.",
"expand_templates_output": "Resultat:",
"expand_templates_xml_output": "Sortida XML",
"expand_templates_html_output": "Sortida en HTML sense filtrar",
- "expand_templates_ok": "OK",
+ "expand_templates_ok": "D’acord",
"expand_templates_remove_comments": "Elimina els comentaris",
"expand_templates_remove_nowiki": "Suprimeix l'etiqueta <nowiki> en el resultat",
"expand_templates_generate_xml": "Mostra l'arbre XML",
"action-pagelang": "canvia l'idioma de la pàgina",
"log-name-pagelang": "Canvia el registre de llengua",
"log-description-pagelang": "Aquest és un registre dels canvis en les llengües de les pàgines.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de la pàgina per a $3 de $4 a $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ha canviat}} la llengua de la pàgina per a $3 de $4 a $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (habilitat)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''inhabilitat''')"
}
"아라",
"Mywood",
"Impersonator 1",
- "LNDDYL"
+ "LNDDYL",
+ "唐吉訶德的侍從"
]
},
"tog-underline": "下劃綫鏈接",
"editfont-monospace": "蜀様寬其字體",
"editfont-sansserif": "無襯線其字體",
"editfont-serif": "有襯線其字體",
- "sunday": "禮拜",
- "monday": "拜一",
- "tuesday": "拜二",
- "wednesday": "拜三",
- "thursday": "拜四",
- "friday": "拜五",
- "saturday": "拜六",
- "sun": "禮拜",
- "mon": "拜一",
- "tue": "拜二",
- "wed": "拜三",
- "thu": "拜四",
- "fri": "拜五",
- "sat": "拜六",
+ "sunday": "Lā̤ buái/禮拜",
+ "monday": "Buái ék/拜一",
+ "tuesday": "Buái nê/拜二",
+ "wednesday": "Buái săng / 拜三",
+ "thursday": "Buái sé/拜四",
+ "friday": "Buái ngô/拜五",
+ "saturday": "Buái lĕ̤k/拜六",
+ "sun": "Lā̤ buái/禮拜",
+ "mon": "Buái ék/拜一",
+ "tue": "Buái nê/拜二",
+ "wed": "Buái săng/拜三",
+ "thu": "Buái sé/拜四",
+ "fri": "Buái ngô/拜五",
+ "sat": "Buái lĕ̤k/拜六",
"january": "一月",
"february": "二月",
"march": "三月",
"rclinks": "顯示$2日以內產生其$1回改變<br />$3",
"diff": "差",
"hist": "史",
- "hide": "藏起",
- "show": "顯示",
+ "hide": "掩",
+ "show": "現",
"minoreditletter": "~",
"newpageletter": "!",
"boteditletter": "^",
"fileexists": "名字蜀樣其文件已經存在去了。如果汝𣍐確定汝是伓是卜想刪掉伊,起動檢查蜀下<strong>[[:$1]]</strong>。\n[[$1|thumb]]",
"uploadwarning": "上傳警告",
"savefile": "保存文件",
- "uploadedimage": "已經上傳其「[[$1]]」",
"uploadvirus": "茲文件有病毒!\n細底:$1",
"sourcefilename": "源文件名:",
"destfilename": "目標文件名:",
"tog-ccmeonemails": "Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.",
"tog-diffonly": "Ма гайта агlон чулацам шина башхонца цхьатерра йолуш",
"tog-showhiddencats": "Гайта къайлаха йолу категореш",
- "tog-norollbackdiff": "ЮÑ\85а Ñ\8fккÑ\85инаÑ\87Ñ\83л Ñ\82Ó\80аÑ\8cÑ\85Ñ\8cа ма гайÑ\82а веÑ\80Ñ\81еÑ\88ан башхо",
+ "tog-norollbackdiff": "ЮÑ\85а Ñ\8fккÑ\85инаÑ\87Ñ\83л Ñ\82Ó\80аÑ\8cÑ\85Ñ\8cа ма гайÑ\82а веÑ\80Ñ\81ийн башхо",
"tog-useeditwarning": "Хаамбе бина хийцамаш дӀаязцабеш аса болх дӀатосучу хенахь",
"tog-prefershttps": "Даима лела йе лардина системин чудалар",
"underline-always": "Даимна",
"copyrightpage": "{{ns:project}}:Авторан бакъонаш",
"currentevents": "ХӀинцлера хилларш",
"currentevents-url": "Project:ХӀинцлера хилларш",
- "disclaimers": "Бехк тӀе ца эцар",
- "disclaimerpage": "Project:Бяхк тӀецалацар",
+ "disclaimers": "Бехк тӀецалацар",
+ "disclaimerpage": "Project:Бехк тӀецалацар",
"edithelp": "ГӀо оцу тадарна",
"mainpage": "Коьрта агӀо",
"mainpage-description": "Коьрта агӀо",
"hidetoc": "къайлаяккха",
"collapsible-collapse": "къайлаяккха",
"collapsible-expand": "схьаяста",
+ "confirmable-confirm": "Лаьий {{GENDER:$1|хьуна}}?",
+ "confirmable-yes": "ХӀаъ",
+ "confirmable-no": "ХӀахӀа",
"thisisdeleted": "Хьажа я меттахӀоттайé $1?",
"viewdeleted": "Хьожий $1?",
"restorelink": "{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}",
"databaseerror-error": "ГӀалат: $1",
"laggedslavemode": "Тергам бе: агӀона чохь керла йаьхинарш ца хила мега.",
"readonly": "Блоктоьхна дӀайаздар хаамийн бухе",
- "enterlockreason": "Билгал де блоктохаран бахьна а и чекх йолу хан а.",
+ "enterlockreason": "Билгалде блоктохаран бахьна а и чекх йолу хан а.",
"readonlytext": "АгӀонаш тӀетохар а кхин хийцамаш барна а блоктоьхна:\nБлокоьхначо биттина хаам: $1.",
"missing-article": "ХӀокху чохь кароезаш йолу хьан дехарца йозан агӀонаш цакарийна «$1» $2.\n\nИштнарг наггахь хуьлу хьажораг дӀаяьккхина елахь я хийцам бина тиша хьажорагца дехьа гӀо гӀоьртича.\n\nНагахьсан гӀулкх цуьнах доьзна дацахь, хьуна карийна гӀирс латточехь гӀалат.\nДехар до, хаам бе оцуьнах [[Special:ListUsers/sysop|куьйгалхога]], гойтуш URL.",
"missingarticle-rev": "(верси № $1)",
"userlogin-yourpassword-ph": "Язъе хьай пароль",
"createacct-yourpassword-ph": "Язъе пароль",
"yourpasswordagain": "Юха язъе пароль:",
- "createacct-yourpasswordagain": "Бакъ йе пароль",
+ "createacct-yourpasswordagain": "Бакъе пароль",
"createacct-yourpasswordagain-ph": "Кхин цкъа язъе пароль",
"remembermypassword": "Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|дийнахь}})",
"userlogin-remembermypassword": "Дагахь латт ве/е со",
"changeemail-password": "Хьан пароль «{{SITENAME}}» проектан:",
"changeemail-submit": "Хийца email",
"changeemail-cancel": "Цаоьшу",
+ "changeemail-throttled": "Хьо дукха гӀиртира.\nДехар до, собар де $1 юха гӀортале.",
"resettokens": "Токенаш кхоссар",
"resettokens-text": "Хьан йиш ю токенаш кхосса, цара йиш хуьлуьйту цхьаболу долара хаамашна тӀекхача, уьш ю хьан дӀаяздар ца вовшахтесна. \n\nХьона иза оьшу, ахьа хьай токенаш цхьам гучу яьхна елахь я хьан аккаунт йохийна елахь.",
"resettokens-no-tokens": "Кхосса токенаш яц.",
"blankarticle": "<strong>ДӀахьедар:</strong> Ахьа кхуллуш йолу агӀо еса ю.\nЮху кнопка «{{int:savearticle}}» тӀетаӀаяхь, агӀо цхьа чулацам боцуш кхуллур ю.",
"anoneditwarning": "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
"anonpreviewwarning": "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
+ "missingsummary": "'''Дагадаийтар.''' Ахьа хийцамаш лаьцна доца яздина дац. Кнопка «{{int:savearticle}}» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
"missingcommenttext": "Дехар до дӀаязбе хайн хаам лахахь.",
+ "missingcommentheader": "'''Дагадаийтар.''' Ахьа хӀокху къамелан дӀахьедар/корта билгал бина бац. Кнопка «{{int:savearticle}}» юху тӀетаӀича хийцамах лаьцна хӀума доцуш Ӏалашбира бу.",
"summary-preview": "Цуьнах лаьцна хирду:",
"subject-preview": "Коьрта могӀа хира бу:",
"blockedtitle": "Декъашхочун блоктоьхана",
+ "blockedtext": "'''Хьан декъашхочун дӀаяздар я IP-адрес блоктоьхна ду.'''\n\nБлоктоьхна куьйгалхочо $1.\nБилгалдина бахьна: «''$2''».\n\n* Блоктохар доладелла: $8\n* Блоктохар чекхдолу: $6\n* Блоктохаран Ӏалашо: $7\n\nХьа йиш ю $1 декъашхочуьнга дехардан я кхечу муьлха [[{{MediaWiki:Grouppage-sysop}}|куьйгалхочуьнга]].\nТергам бе, хьа таро яц «декъашхочунга кехат» олу функци лелаян, хьан [[Special:Preferences|гӀирс нисбар чохь]] нийса электронан почтан адрес яздина дацахь, я кехаташ кхехӀитарна а блоктоьхна елахь.\nХьан IP-адрес — $3, блоктохаран идентификатор — $5.\nДехар до, хьайн хаам чохь билгалде и.",
"blockednoreason": "бахьана билгалдина дац",
"whitelistedittext": "Ахьа да деза $1 агӀона хийцамаш бан.",
"nosuchsectiontitle": "Дакъа каро йиш яц.",
"missing-revision": "АгӀона «{{FULLPAGENAME}}» верси $1 яц.\n\nИшта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.\nМа-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.",
"userpage-userdoesnotexist": "Ишта декъашхочун дӀаяздар «<nowiki>$1</nowiki>» хӀинца дац. Хьажа билгал, хьуна бакъалла лаьий кхолла я хийцам ба хӀокху агӀон.",
"userpage-userdoesnotexist-view": "«$1» ишта декъашхочун дӀаяздар дац.",
- "blocked-notice-logextract": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:",
+ "blocked-notice-logextract": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохарийн тептар чура тӀаьхьарлера дӀаяздар:",
"clearyourcache": "'''Билгалдаккхар.''' Ӏалашйинчул тӀехьа хийцамаш га браузеран кэш цӀанъян езаш хила мега.\n* '''Firefox / Safari:''' ''Shift'' цӀе йолу пиллиг лаьцна битна, гӀирсийн панелан тӀера тӀетаӀе ''Карлаяккха'' я ''Ctrl-F5'' я ''Ctrl-R'' (''⌘-R'' Mac тӀехь)\n* '''Google Chrome:''' ТӀетаӀе ''Ctrl-Shift-R'' (''⌘-Shift-R'' Mac тӀехь)\n* '''Internet Explorer:''' ''Ctrl'' лаьцна йитан, тӀетаӀе ''Карлаяккха'' я тӀетаӀе ''Ctrl-F5''\n* '''Opera:''' Кэш цӀанъяр харжа меню ''Инструменты → Настройки'' чохь",
"usercssyoucanpreview": "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла CSS-файл Ӏалаш яле.",
"userjsyoucanpreview": "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла JS-файл Ӏалаш яле.",
"protectedpagewarning": "'''Дlахьедар. Хlара агlо гlаролла дина ю хийцам цабайта, иза хийца йа нисйа а бакъо йолуш адаманкуьйгалла лелош болу декъашхой бе бац.'''\nЛахахьа гойту хаамаш тlаьхьара бина болу хийцамна тептар чура:",
"semiprotectedpagewarning": "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.\nЛахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
"cascadeprotectedwarning": "<div id=\"cascadeprotectedwarning\" style=\"border:1px solid #ee0; padding:10px; background:#ffa; margin-bottom:1em\">[[file:Padlock.svg|left|25px|ДовгӀа|link=]]\nХӀара агӀо тада бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча и агӀо латийна кхечу агӀонашца хӀоттделлачу гӀаролле:</div>",
- "templatesused": "{{PLURAL:$1|1=Ð\9aеп, лелийна|Ð\9aепаÑ\88, лелоÑ\88 Ñ\8e}} Ñ\85Ó\80окÑ\85Ñ\83 агон башхонца:",
+ "templatesused": "{{PLURAL:$1|1=Ð\9aеп, лелоÑ\88 Ñ\8e|Ð\9aепаÑ\88, лелоÑ\88 Ñ\8e}} Ñ\85Ó\80окÑ\85Ñ\83 агÓ\80он башхонца:",
"templatesusedpreview": "{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелойлу}} оцу хьалх хьожучу агӀонца:",
"templatesusedsection": "ХӀокху декъан чохь {{PLURAL:$1|1=лелош йолу кеп|лелош йолу кепаш}}:",
"template-protected": "(гlароллийца)",
"revdelete-radio-set": "Къайлаяьккхина",
"revdelete-radio-unset": "Гуш ерг",
"revdelete-suppress": "Къайлабаха хаамаш куьйгалхойх а",
- "revdelete-unsuppress": "Ð\9cеÑ\82Ñ\82аÑ\85Ó\80оÑ\8cÑ\82Ñ\82ина веÑ\80Ñ\81еÑ\88ан дихкар къайладаккха",
+ "revdelete-unsuppress": "Ð\9cеÑ\82Ñ\82аÑ\85Ó\80оÑ\8cÑ\82Ñ\82ина веÑ\80Ñ\81ийн дихкар къайладаккха",
"revdelete-log": "Бахьна:",
"revdelete-submit": "Кхочушде {{PLURAL:$1|1=къастина версин|къастина версийн}}",
"revdelete-success": "'''Версеш гуш хилар кхиамца хийцина.'''",
"revertmerge": "Йекъа",
"mergelogpagetext": "Лахахь гойту тӀеххьара вовшахтоьхна агӀонийн могӀам.",
"history-title": "$1 — хийцаман истори",
- "difference-title": "$1 â\80\94 Ð\92еÑ\80Ñ\81еÑ\88ан башхалла",
+ "difference-title": "$1 â\80\94 Ð\92еÑ\80Ñ\81ийн башхалла",
"difference-title-multipage": "АгӀонийн башхалла «$1» а «$2» а",
"difference-multipage": "(АгӀонийн башхалла)",
"lineno": "МогӀа $1:",
"shown-title": "АгӀона чохь $1 {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}} гайта",
"viewprevnext": "Хьажа ($1 {{int:pipe-separator}} $2) ($3)",
"searchmenu-exists": "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
- "searchmenu-new": "'''Кхолла ишта агӀо «[[:$1]]» хӀокху {{PLURAL:$2|0=|вики-проектехь.}}'''",
+ "searchmenu-new": "<strong>Кхолла «[[:$1]]» агӀо хӀокху вики-проектехь!</strong>\n{{PLURAL:$2|0=|Хьан лахарца карина.}}",
"searchprofile-articles": "Къаьстина агlонаш",
"searchprofile-images": "Мультимедиа",
"searchprofile-everything": "Массанхьа",
"searchprofile-advanced-tooltip": "Лаха дехарца хlокху ана цlерашкахь",
"search-result-size": "$1 ({{PLURAL:$2|$2 дош|$2 дешнаш}})",
"search-result-category-size": "$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|1=бухара категори|бухара категореш}}, $3 {{PLURAL:$3|1=файл|файлаш}}).",
- "search-result-score": "Релевант: $1%.",
"search-redirect": "(дlасахьажийна $1)",
"search-section": "(дакъа $1)",
"search-file-match": "(файлан чулацаме тера хилар)",
"prefs-watchlist": "Тергаме могӀам",
"prefs-watchlist-days": "Денойн дукхалла:",
"prefs-watchlist-days-max": "Къезиг $1 {{PLURAL:$1|дена}}",
- "prefs-watchlist-edits": "Тергаме могӀам чохь гойтучу нисдаршан максимальни дукхалла:",
+ "prefs-watchlist-edits": "Тергаме могӀам чохь гойтучу нисдарийн максимальни дукхалла:",
"prefs-watchlist-edits-max": "Уггар дукха: 1000",
"prefs-watchlist-token": "Тергаме могӀанан токен:",
"prefs-misc": "Кхин гlирсаш",
"stub-threshold-disabled": "ДӀадайина",
"recentchangesdays": "Керла нисдар гайта динахь:",
"recentchangesdays-max": "Къезиг $1 {{PLURAL:$1|дена}}",
- "recentchangescount": "Iад йитарца гойтуш долу нисдаршан дукхалла",
+ "recentchangescount": "Iад йитарца гойтуш долу нисдарийн дукхалла",
"prefs-help-recentchangescount": "Гойту керла нисдарш, агӀонашан истори, тептарш.",
"prefs-help-watchlist-token2": "Иза хьан тергаме могӀан къайла догӀа ду.\nМуьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].",
"savedprefs": "Хьан гӀирс Ӏалашбина.",
"right-editmyprivateinfo": "Хьан долара хаамаш нисбар (масала, электронан адрес, бакъ цӀе)",
"right-editmyoptions": "Тае хьайн гӀоли хетарг",
"right-rollback": "билгала агӀона тӀехьарчу декъашхочо дина нисдарш сиха юхадахар",
- "right-markbotedits": "юхудохучу нисдаршан шаболх бечунна нисдарш аьлла билгало ян",
+ "right-markbotedits": "юхудохучу нисдарийн ботан нисдарш санна билгало ян",
"right-noratelimit": "чехкалин доза дац",
"right-import": "кхечу википедешкара агӀонаш импорт ян",
"right-importupload": "файлаш чуяхарца агӀонаш импорт ян",
"recentchanges-label-plusminus": "байташкахь барам хийцар",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])",
"rcnotefrom": "Лахахь гайтина тӀера <strong>$2</strong> (хийцамаш <strong>$1</strong> кӀезиг).",
- "rclistfrom": "Гайта хийцам оцу $3 $2",
+ "rclistfrom": "Гайта хийцам $3 $2 хан",
"rcshowhideminor": "$1 кегийра нисдарш",
"rcshowhideminor-show": "Гайта",
"rcshowhideminor-hide": "Къайладаха",
"rcshowhidemine": "$1 айхьа нисдинарш",
"rcshowhidemine-show": "Гайта",
"rcshowhidemine-hide": "Къайладаха",
- "rclinks": "Гайта тlаьхьара $1 хийцамаш оцу $2 ден<br />$3",
+ "rclinks": "Гайта тӀаьхьара $1 хийцамаш $2 ден<br />$3",
"diff": "тейп тайпнара",
"hist": "истори",
"hide": "Къайлаяккха",
"file-deleted-duplicate": "Иштта файл ([[:$1]]) хӀинцале дӀаяьккхина хилла. Дехар до, юху файл чуяккхале файл дӀаяккхаран историга хьажа.",
"uploadwarning": "Дlахьедар",
"uploadwarning-text": "Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.",
- "savefile": "ДӀаязе йе файл",
- "uploadedimage": "чуяьккхина «[[$1]]»",
- "overwroteimage": "Чуяьккхина файлан керла верси «[[$1]]»",
+ "savefile": "ДӀаязъе файл",
"uploaddisabled": "Чуяккхар магийна дац",
"copyuploaddisabled": "URL тӀера чуяккхар дӀадайина ду.",
"uploaddisabledtext": "Файлаш чуяхар дӀадайина ду.",
"watchlist-options": "Тергаме могlаман гlирс нисбар",
"watching": "Тергаме мlогаман юкъаяккха…",
"unwatching": "Тергаме могӀанан чура дӀаяккхар…",
- "enotif_reset": "Билгал йаь ерриге агӀонаш хьаьжна санна",
+ "enotif_reset": "Билгалъе ерриге агӀонаш хьаьжна санна",
"enotif_impersonal_salutation": "Декъашхо {{grammar:genitive|{{SITENAME}}}}",
"enotif_subject_deleted": "Проектан «{{SITENAME}}» агӀо «$1» {{gender:$2|декъашхочо}} $2 дӀаяьккхина",
"enotif_subject_created": "Проектан «{{SITENAME}}» агӀо «$1» {{gender:$2|декъашхочо}} $2 кхоьллина",
"protect_expiry_old": "Хан чаккхе — хьалхалера.",
"protect-unchain-permissions": "Схьабелла кхин гӀорралин гӀирс",
"protect-text": "Кхузéхь хьо хьажало хийцалуш гӀароллин локхалла оцу агӀонашна '''$1'''.",
- "protect-locked-access": "Хьан дlаязваларéхь тоъал бакъо яц гlароллийн локхаллéхь агlон хийцам бá. Дlадоьлху хlоттийнарш оцу агlонна '''$1''':",
+ "protect-locked-access": "Хьан дӀаяздаран тоъал бакъо яц гӀароллийн локхаллéхь агӀон хийцам бá. ДӀадоьлху хӀоттийнарш агӀонна '''$1''':",
"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-othertime-op": "кхин хан",
"protect-otherreason": "Кхин бахьна/тӀетохар:",
"protect-otherreason-op": "Кхин бахьна",
- "protect-dropdown": "* ГӀоралла дарна баьхьаш \n** сих-сиха зулам дар \n** дуккха спам хилар\n** нисдаршан тӀом \n** гӀараялл агӀо",
+ "protect-dropdown": "* ГӀоралла дарна баьхьаш \n** сих-сиха зулам дар \n** дуккха спам хилар\n** нисдарийн тӀом \n** гӀараялл агӀо",
"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": "Бакъонаш:",
"sp-contributions-logs": "тéптарш",
"sp-contributions-talk": "дийцаре",
"sp-contributions-userrights": "декъашхочун бакъона урхалладар",
- "sp-contributions-blocked-notice": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:",
- "sp-contributions-blocked-notice-anon": "ХӀара IP-адрес хӀинца блоктоьхна ду.\nЛахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:",
+ "sp-contributions-blocked-notice": "ХӀара декъашхочун дӀаяздар блоктоьхна ду.\nЛахахь гойту блоктохарийн тептар чура тӀаьхьарлера дӀаяздар:",
+ "sp-contributions-blocked-notice-anon": "ХӀара IP-адрес хӀинца блоктоьхна ду.\nЛахахь гойту блоктохарийн тептар чура тӀаьхьарлера дӀаяздар:",
"sp-contributions-search": "Къинхьегам лахар",
"sp-contributions-username": "IP-адрес я декъашхочун цӀе:",
"sp-contributions-toponly": "ТӀаьхьара бина хийцамаш гайта",
"blocklist": "Блоктоьхна декъашхой",
"ipblocklist": "Блоктоьхна декъашхой",
"ipblocklist-legend": "Блоктоьхна декъашхо лахар",
- "blocklist-userblocks": "ДӀахьулян дӀаяздаршан блоктохарш",
+ "blocklist-userblocks": "ДӀахьулян дӀаяздарийн блоктохарш",
"blocklist-tempblocks": "ДӀахьулян цхьан ханна йолу блоктохарш",
"blocklist-addressblocks": "ДӀахулдан цхьайолу IP адресан блоктохарш",
"blocklist-rangeblocks": "ДӀахьулян блоктоьхна йолу диапазонаш",
"exif-licenseurl": "Авторийн лицензин URL",
"exif-morepermissionsurl": "Альтернативан лицензин хаам",
"exif-pngfilecomment": "PNG-файлан билгалдаккхар",
- "exif-disclaimer": "Бехк тӀе ца эцар",
+ "exif-disclaimer": "Бехк тӀецалацар",
"exif-contentwarning": "Чулацамах лаьцна дӀахьедар",
"exif-giffilecomment": "GIF-файлан билгалдаккхар",
"exif-intellectualgenre": "ХӀуман тайп",
"logentry-rights-rights": "$1 {{GENDER:$2|хийцина}} $3 бакъо $4 → $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|хийцина}} хӏокхуна $3 бакъо",
"logentry-rights-autopromote": "$1 {{GENDER:$2|вара|яра}} автоматически {{GENDER:$2|сихьа ваьлла|сихьа яьлла}} $4 $5 чу",
+ "logentry-upload-revert": "$1 {{GENDER:$2|чуяьккхина}} $3",
"rightsnone": "(яц)",
"feedback-bugornote": "Хьайн техникин халонах лаьцна яздан хӀума делахь, дехар до, [$1 хаам бе тхоьга].\nДацахь хьан йиш ю хӀокху атта кепаца «[$3 $2]» агӀонг къамел тӀетоха хьан декъашхочун цӀарца, кхин лелош йолу браузер билгал еш.",
"feedback-subject": "Къамел:",
"action-pagelang": "агӀона мотт хийца",
"log-name-pagelang": "Мотт хийцаран тептар",
"log-description-pagelang": "ХӀара агӀонашкахь мотт хийцаран тептар ду.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|хийцина}} агӀона мотт $3 $4 → $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|хийцина}} агӀона мотт $3 $4 → $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (латина)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''дӀаяйина''')"
}
"talkpagelinktext": "Hisgot",
"specialpage": "Espesyal nga panid",
"personaltools": "Personal nga galamiton",
- "postcomment": "Pagbilin og komento",
"articlepage": "Tan-awa ang panid sa sulod",
"talk": "Panaghisgot-hisgot",
"views": "Mga pagtan-aw",
"externaldberror": "May nahitabong authentication database error o kaha wala ka tugoti nga mag-update sa imong eksternal nga akawnt.",
"login": "Sulod",
"nav-login-createaccount": "Rehistro / Dayon",
- "loginprompt": "Kinahanglang naka-enable ang mga koki aron ikaw maka-log-in sa {{SITENAME}}.",
"userlogin": "Rehistro / Dayon",
"logout": "Biya",
"userlogout": "Bıveciye",
"recentchangeslinked-to": "Ipakita na lang ang mga pag-usab sa mga panid nga nakasumpay sa nahatag nga panid",
"upload": "Pagsumiter og payl",
"uploadlogpage": "Log sa upload",
- "uploadedimage": "na-upload ang \"[[$1]]\"",
"license": "Paglilisensya:",
"license-header": "Paglilisensya",
"file-anchor-link": "Payl",
"talkpagelinktext": "Kuentusi",
"specialpage": "Påhina espesiat",
"personaltools": "Ramientan petsonat",
- "postcomment": "Fa'tinas un komentu",
"articlepage": "Atan i guinaha i påhina",
"talk": "Diskuti",
"views": "Mali'e'-ña",
"yourdomainname": "Lugat-mu:",
"login": "Log in",
"nav-login-createaccount": "Hålom / fa'tinas kuenta-mu",
- "loginprompt": "Un nesita muna'sedi cookies para un log in gi {{SITENAME}}.",
"userlogin": "Hålom / fa'tinas kuenta-mu",
"logout": "Log out",
"userlogout": "Log out",
"nextn": "{{PLURAL:$1|$1}} ni manmamaila'",
"viewprevnext": "Atan i ($1 {{int:pipe-separator}} $2) ($3)",
"search-result-size": "$1 ({{PLURAL:$2|1 na palabra|$2 na palabra siha}})",
- "search-result-score": "Prinisisu: $1%",
"search-redirect": "(na'dirihi $1)",
"search-section": "(påtte $1)",
"search-suggest": "Kao kumekeilek-mu: $1",
"upload": "Na'kåtga hulu' i atkibu",
"uploadbtn": "Na'kåtga hulu' atkibu",
"uploadlogpage": "Na'kåtga i log",
- "uploadedimage": "mana'kåtga hulu' \"[[$1]]\"",
"listfiles": "Listan atkibu",
"file-anchor-link": "Atkibu",
"filehist": "Historian atkibu",
"morenotlisted": "ئەم لیستەیە تەواو نییە",
"mypage": "پەڕه",
"mytalk": "لێدوان",
- "anontalk": "Ù\88تÙ\88Ù\88Û\8eÚ\98 بÛ\86 ئÛ\95Ù\85 ئاÛ\8câ\80\8cÙ¾Û\8c یە",
+ "anontalk": "Ù\84Û\8eدÙ\88اÙ\86 بÛ\86 ئÛ\95Ù\85 ئاÛ\8cÙ¾Û\8cیە",
"navigation": "ڕێدۆزی",
"and": " و",
"qbfind": "بدۆزەرەوە",
"undo-success": "دەکرێ دەستکاریەکە پووچەڵبکرێتەوە.\nتکایە چاو لەو هەڵسەنگاندنەی خوارەوە بکە تا دڵنیا بیت ئەمە ئەوەیە کە دەتویست بیکەی و دواتر گۆڕانکارییەکانی خوارەوە پاشەکەوت بکە بۆ تەواوکردنی پووچەڵکردنەوەکە.",
"undo-failure": "لەبەر کێشەی دەستتێوەردان، ناتوانی دەستکاریەکە ئەنجامنەدراو بکەیت.",
"undo-norev": "ناتوانی دەستکاریەکە ئەنجامنەدراو بکەی لەبەر ئەوەی بوونی نیە یا سڕدراوەتەوە.",
- "undo-summary": "Ú¯Û\95Ú\95اÙ\86دÙ\86Û\95Ù\88Û\95Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95Û\8c $1 Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[Special:Contributions/$2|$2]] ([[User talk:$2|Ù\88تÙ\88Ù\88Û\8eÚ\98]])",
+ "undo-summary": "Ú¯Û\95Ú\95اÙ\86دÙ\86Û\95Ù\88Û\95Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88Û\95Û\8c $1 Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[Special:Contributions/$2|$2]] ([[User talk:$2|Ù\84Û\8eدÙ\88اÙ\86]])",
"cantcreateaccounttitle": "ناتوانرێت هەژمار دروست بکرێت",
"cantcreateaccount-text": "درووستکردنی هەژمارە بۆ ناونیشانی ئایپی ('''$1''') لە لایەن [[User:$3|$3]] داخراوە.<br /><br />\n$3 هۆکاری \"$2\" خستوەتەڕوو",
"viewpagelogs": "لۆگەکانی ئەم پەڕەیە ببینە",
"searchprofile-advanced-tooltip": "گەڕان لەناو بۆشاییناوە دڵخوازەکان",
"search-result-size": "$1 ({{PLURAL:$2|یەک وشە|$2 وشە}})",
"search-result-category-size": "{{PLURAL:$1|١ ئەندام|$1 ئەندام}} ({{PLURAL:$2|١ ژێرپۆل|$2 ژێرپۆل}}, {{PLURAL:$3|١ پەڕگە|$3 پەڕگە}})",
- "search-result-score": "پەیوەندی: $1%",
"search-redirect": "(ڕەوانەکەر $1)",
"search-section": "(بەشی $1)",
"search-suggest": "ئایا مەبەستت ئەمە بوو: $1",
"file-deleted-duplicate": "ئەم پەڕگەیە ڕێک وەک ئەم پەڕگە ([[:$1]]) دەچێت کە لەم دواییانەدا سڕاوەتەوە.\nپێش دەستپێکردنی دیسان بارکردنەوەی، تکایە چاو لە مێژووی سڕینەوەی ئەو پەڕگە بکە.",
"uploadwarning": "ئاگادارییەکانی بارکردن",
"savefile": "پەڕگە پاشەکەوت بکە",
- "uploadedimage": "«[[$1]]»ی بارکرد",
- "overwroteimage": "وەشانێکی نوێی «[[$1]]» بار کرد",
"uploaddisabled": "بارکردن قەدەخە کراوە",
"uploaddisabledtext": "بارکردنی پەڕگەکان لە کار خستراوە.",
"php-uploaddisabledtext": "بارکردنی پەڕگەکان لە PHPدا لە کار خستراوە.\nتکایە چاو لە هەڵبژاردەکانی بارکردنی_پەڕگەکان بکە.",
"license-nopreview": "(پێشبینین ئامادەی کەڵک وەرگرتن نییە)",
"upload_source_url": " (URLـی بەکار، بۆ دەستپێگەیشتنی گشتی)",
"upload_source_file": " (پەڕگەیەک لەسەر کۆمپیوتەرەکەت)",
+ "listfiles-delete": "بیسڕەوە",
"listfiles-summary": "ئەم پەڕە تایبەتە ھەموو پەڕگە بارکراوەکان نیشان دەدات.",
"listfiles_search_for": "بگەڕێ بۆ ناوی میدیای:",
"imgfile": "پەڕگە",
"watchlist-details": "{{PLURAL:$1|$1 پەڕە|$1 پەڕە}} لە لیستی چاودێریەکەتدایە، بێجگە پەڕەکانی لێدوان.",
"wlheader-enotif": "ئاگاداری بە ئیمەیل چالاکە.",
"wlheader-showupdated": "ئەو پەڕانە کە لە پاش دواین سەردانت دەستکاری کراون بە '''ئەستوور''' نیشان دراون",
+ "wlnote": "خوارەوە {{PLURAL:$1|دوایین گۆڕانکارییە|دوایین '''$1''' گۆڕانکارییە}} لە دوایین {{PLURAL:$2|کاتژمێر|'''$2''' کاتژمێر}}دا ھەتا $4 لە $3.",
"wlshowlast": "دوایین $1 کاتژمێر $2 ڕۆژی $3 نیشان بدە",
"watchlist-options": "ھەڵبژاردەکانی لیستی چاودێری",
"watching": "چاودێری...",
"rollbacklinkcount-morethan": "گەڕاندنەوەی زۆرتر لە $1 {{PLURAL:$1|دەستکاری}}",
"rollbackfailed": "گەڕاندنەوە سەرکەوتوو نەبوو",
"cantrollback": "دەستکاریەکان ناگەڕێندرێتەوە؛\nدوایین هاوبەش تەنها ڕێکخەری ئەم لاپەڕەیە.",
- "alreadyrolled": "دÙ\88اÛ\8cÛ\8cÙ\86 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\95کاÙ\86Û\8c Ù\84Û\95سÛ\95ر [[:$1]] Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[User:$2|$2]] Ù\86اگÛ\95Ú\95Û\8eÙ\86درÛ\8eÙ\86Û\95Ù\88Û\95 ([[User talk:$2|Ù\88تÙ\88Ù\88Û\8eÚ\98]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])Ø\9b Ú©Û\95سÛ\8eÚ©Û\8c دÛ\8cÚ©Û\95 Ù\84Û\95 Ù¾Û\8eØ´â\80\8cدا دÛ\95ستکارÛ\8c کردÙ\88Ù\88Û\95 Û\8cاÙ\86 Ú¯Û\95Ú\95اÙ\86دÙ\88Ù\88Û\8cÛ\95تÛ\95Ù\88Û\95.\n\nدÙ\88اÛ\8cÛ\8cÙ\86 دÛ\95ستکارÛ\8c ئÛ\95Ù\85 Ù\84اپÛ\95Ú\95Û\95 [[User:$3|$3]] کردÙ\88Ù\88Û\8cÛ\95 ([[User talk:$3|Ù\88تÙ\88Ù\88Û\8eÚ\98]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
+ "alreadyrolled": "دÙ\88اÛ\8cÛ\8cÙ\86 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\8cÛ\95کاÙ\86 Ù\84Û\95سÛ\95ر [[:$1]] Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 [[User:$2|$2]] Ù\86اگÛ\95Ú\95Û\8eÙ\86درÛ\8eÙ\86Û\95Ù\88Û\95 ([[User talk:$2|Ù\84Û\8eدÙ\88اÙ\86]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])Ø\9b Ú©Û\95سÛ\8eÚ©Û\8c تر Ù\84Û\95 Ù¾Û\8eشدا دÛ\95ستکارÛ\8cÛ\8c کردÙ\88Ù\88Û\95 Û\8cاÙ\86 Ú¯Û\95Ú\95اÙ\86دÙ\88Ù\88Û\8cÛ\95تÛ\95Ù\88Û\95.\n\nدÙ\88اÛ\8cÛ\8cÙ\86 دÛ\95ستکارÛ\8c ئÛ\95Ù\85 Ù¾Û\95Ú\95Û\95 [[User:$3|$3]] کردÙ\88Ù\88Û\8cÛ\95 ([[User talk:$3|Ù\84Û\8eدÙ\88اÙ\86]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
"editcomment": "پوختەی دەستکاری \"''$1''\" بوو.",
"revertpage": "گەڕاندنەوەی دەستکارییەکانی [[Special:Contributions/$2|$2]] ([[User talk:$2|لێدوان]]) بۆ دوایین پێداچوونەوەی [[User:$1|$1]]",
"revertpage-nouser": "دەستکارییەکانی بەکارھێنەرێکی شاڕدراوە بۆ دوایین پێداچوونەوەی {{GENDER:$1|[[User:$1|$1]]}} گەڕێنرایەوە.",
"noautoblockblock": "بەربەستنی خۆگەڕ ناچالاکە",
"createaccountblock": "دروستکردنی ھەژمار ناچالاکە",
"emailblock": "ئیمەیل ناچالاکە",
- "blocklist-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ی خۆی ناچالاکە",
+ "blocklist-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ی خۆی ناچالاکە",
"ipblocklist-empty": "لیستی بەربەستەکان بەتاڵە",
"ipblocklist-no-results": "ئایپی ئەدرەس یان ناوی بەکارهێنەری داواکراو بەربەست نەکراوە.",
"blocklink": "بەربەستن",
"block-log-flags-nocreate": "دروستکردنی ھەژمار ناچالاک کرا",
"block-log-flags-noautoblock": "بەربەستنی خۆگەڕ ناچالاک کرا",
"block-log-flags-noemail": "ئیمەیل ناچالاک کرا",
- "block-log-flags-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ی خۆی ناچالاک کرا",
+ "block-log-flags-nousertalk": "دÛ\95ستکارÛ\8cکردÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ی خۆی ناچالاک کرا",
"block-log-flags-angry-autoblock": "بەربەستکردنی خۆگەڕی پێشکەوتوو چالاک کرا",
"block-log-flags-hiddenname": "ناوی بەکارھێنەری شاراوە",
"range_block_disabled": "تایبەتمەندی بەڕێوەبەر بۆ بەربەستکردنی زنجیرە لە کارخستراوە.",
"movepage-moved-noredirect": "لە دانانی ڕەوانەکەر بەرگری کرا.",
"articleexists": "پەڕەیەک بەم ناوە ھەیە یان ئەو ناوەی تۆ ھەڵتبژاردووە ڕێگەی پێنەدراوە.\nتکایە ناوێکی دیکە ھەڵبژێرە.",
"cantmove-titleprotected": "ناتوانی لاپەڕەیەک بگوێزیتەوە بۆ ئەم شوێنە، لەبەر ئەوەی سەردێڕی نوێ لە درووستکردن پارێزراوە.",
- "movetalk": "Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98ی پەیوەندیدار بگوازەوە",
+ "movetalk": "Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86ی پەیوەندیدار بگوازەوە",
"move-subpages": "ژێرپەڕەکانی بگوازەوە (ھەتا $1 پەڕە)",
- "move-talk-subpages": "Ú\98Û\8eرپÛ\95Ú\95Û\95کاÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\88تÙ\88Ù\88Û\8eÚ\98 بگوازەوە (ھەتا $1 پەڕە)",
+ "move-talk-subpages": "Ú\98Û\8eرپÛ\95Ú\95Û\95کاÙ\86Û\8c Ù¾Û\95Ú\95Û\95Û\8c Ù\84Û\8eدÙ\88اÙ\86 بگوازەوە (ھەتا $1 پەڕە)",
"movepage-page-exists": "پەڕەی $1 هەیە و ناتوانرێت خۆکار بخرێتە جێی.",
"movepage-page-moved": "پەڕەی $1 گۆزرایەوە بۆ $2.",
"movepage-page-unmoved": "ناکرێ پەڕەی $1 بگوێزرێتەوە بۆ $2.",
"talkpagelinktext": "discussione",
"specialpage": "Pagina speciale",
"personaltools": "Strumenti persunali",
- "postcomment": "Nova sezione",
"articlepage": "Vede l'articulu",
"talk": "Discussione",
"toolbox": "Stuvigli",
"talkpagelinktext": "Istoryahanay",
"specialpage": "Pinasahi nga pahina",
"personaltools": "Mga pangkaugalingon nga galamiton",
- "postcomment": "Bag-o nga seksyon",
"articlepage": "Ipakita ang pahina sang ka-undan",
"talk": "Diskusyon",
"views": "Mga dagway",
"yourdomainname": "Imo domain:",
"login": "Mag sulod",
"nav-login-createaccount": "Magsulod / mag-ubra sang account",
- "loginprompt": "Dapat nakabukas ang cookies para makasulod sa {{SITENAME}}.",
"userlogin": "Mag sulod / mag-ubra account",
"userloginnocreate": "Magsulod",
"logout": "Maggwa",
"upload": "Magkarga sang akta",
"uploadlogpage": "Lista sang upload",
"filedesc": "Kasumahan",
- "uploadedimage": "na-upload ang \"[[$1]]\"",
"license": "Paglaong:",
"file-anchor-link": "Akta",
"filehist": "Kasaysayan sang akta",
"talkpagelinktext": "Музакере",
"specialpage": "Махсус Саифе",
"personaltools": "Шахсий алетлер",
- "postcomment": "Янъы болюк",
"articlepage": "Саифеге бар",
"talk": "Музакере",
"views": "Корюнишлер",
"externaldberror": "Сайткъа киргенде бир хата олды. Бу тыш эсабынъызны денъиштирмек акъкъынъыз олмагъанындан себеп мейдангъа келип ола.",
"login": "Кириш",
"nav-login-createaccount": "Кириш / Къайд олув",
- "loginprompt": "Отурым ачмакъ ичюн «cookies»ге изин бермелисинъиз.",
"userlogin": "Кириш / Къайд олув",
"userloginnocreate": "Кириш",
"logout": "Чыкъыш",
"searchprofile-everything-tooltip": "Бутюн саифелерде (музакере саифелеринде де) къыдыр",
"searchprofile-advanced-tooltip": "Бельгиленген исим фезаларында къыдыр",
"search-result-size": "$1 ({{PLURAL:$2|1=1|$2}} сёз)",
- "search-result-score": "Уйгъунлыкъ: $1 %",
"search-redirect": "(ёллама $1)",
"search-section": "(болюк $1)",
"search-suggest": "Бунымы демеге истединъиз: $1",
"file-exists-duplicate": "Бу файл ашагъыдаки {{PLURAL:$1|1=файлнынъ|файлларнынъ}} дубликаты ола:",
"uploadwarning": "Тенби",
"savefile": "Файлны сакъла",
- "uploadedimage": "Юкленген: \"[[$1]]\"",
- "overwroteimage": "\"[[$1]]\" янъы версиясы юкленди",
"uploaddisabled": "Юклеме ясакълыдыр.",
"uploaddisabledtext": "Файл юклеме ясакълыдыр.",
"uploadscripted": "Бу файлда браузер тарафындан янълышнен ишленип олур HTML коду я да скрипт бар.",
"watchlist-details": "Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.",
"wlheader-enotif": "E-mail иле хабер берюв ачылды.",
"wlheader-showupdated": "Сонъки зияретинъизден сонъ денъиштирильген саифелер '''къалын арифлернен''' косьтерильди.",
+ "wlnote": "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|1=саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|1=денъиштирме|'''$1''' денъиштирме}} косьтериле.",
"wlshowlast": "Сонъки $1 саат ичюн, $2 кунь ичюн я да $3 косьтер",
"watchlist-options": "Козетюв джедвели сазламалары",
"watching": "Козетюв джедвелине кирсетильмекте...",
"talkpagelinktext": "Muzakere",
"specialpage": "Mahsus Saife",
"personaltools": "Şahsiy aletler",
- "postcomment": "Yañı bölük",
"articlepage": "Saifege bar",
"talk": "Muzakere",
"views": "Körünişler",
"externaldberror": "Saytqa kirgende bir hata oldı. Bu tış esabıñıznı deñiştirmek aqqıñız olmağanından sebep meydanğa kelip ola.",
"login": "Kiriş",
"nav-login-createaccount": "Kiriş / Qayd oluv",
- "loginprompt": "Oturım açmaq içün \"cookies\"ge izin bermelisiñiz.",
"userlogin": "Kiriş / Qayd oluv",
"userloginnocreate": "Kiriş",
"logout": "Çıqış",
"searchprofile-everything-tooltip": "Bütün saifelerde (muzakere saifelerinde de) qıdır",
"searchprofile-advanced-tooltip": "Belgilengen isim fezalarında qıdır",
"search-result-size": "$1 ({{PLURAL:$2|1|$2}} söz)",
- "search-result-score": "Uyğunlıq: $1%",
"search-redirect": "(yollama $1)",
"search-section": "(bölük $1)",
"search-suggest": "Bunımı demege istediñiz: $1",
"file-exists-duplicate": "Bu fayl aşağıdaki {{PLURAL:$1|faylnıñ|fayllarnıñ}} dublikatı ola:",
"uploadwarning": "Tenbi",
"savefile": "Faylnı saqla",
- "uploadedimage": "Yüklengen: \"[[$1]]\"",
- "overwroteimage": "\"[[$1]]\" yañı versiyası yüklendi",
"uploaddisabled": "Yükleme yasaqlıdır.",
"uploaddisabledtext": "Fayl yükleme yasaqlıdır.",
"uploadscripted": "Bu faylda brauzer tarafından yañlışnen işlenip olur HTML kodu ya da skript bar.",
"watchlist-details": "Muzakere saifelerini esapqa almayıp, közetüv cedveliñizde {{PLURAL:$1|1|$1}} saife bar.",
"wlheader-enotif": "E-mail ile haber berüv açıldı.",
"wlheader-showupdated": "Soñki ziyaretiñizden soñ deñiştirilgen saifeler '''qalın ariflernen''' kösterildi.",
+ "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ı",
"watching": "Közetüv cedveline kirsetilmekte...",
"hidetoc": "skrýt",
"collapsible-collapse": "Sbalit",
"collapsible-expand": "Rozbalit",
+ "confirmable-confirm": "Jste si {{GENDER:$1|jist|jista|jisti}}?",
+ "confirmable-yes": "Ano",
+ "confirmable-no": "Ne",
"thisisdeleted": "Prohlédnout nebo obnovit $1?",
"viewdeleted": "Zobrazit $1?",
"restorelink": "{{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}",
"invalidtitle-knownnamespace": "Neplatný název se jmenným prostorem „$2“ a textem „$3“",
"invalidtitle-unknownnamespace": "Neplatný název s neznámým číslem jmenného prostoru $1 a textem „$2“",
"exception-nologin": "Nejste přihlášen(a)",
- "exception-nologin-text": "Pro přístup na tuto stránku nebo k této akci se prosím [[Special:Userlogin|přihlaste]].",
+ "exception-nologin-text": "Pro přístup na tuto stránku nebo k této akci se musíte přihlásit.",
"exception-nologin-text-manual": "Pro přístup na tuto stránku nebo k této akci se musíte $1.",
"virus-badscanner": "Špatná konfigurace: neznámý antivirový program: ''$1''",
"virus-scanfailed": "prověřování selhalo (kód $1)",
"parser-template-recursion-depth-warning": "Překročen limit hloubky rekurzivního vkládání šablon ($1)",
"language-converter-depth-warning": "Překročen limit vnoření u jazykové konverze ($1)",
"node-count-exceeded-category": "Stránky překračující počet uzlů",
- "node-count-exceeded-category-desc": "Kategorie pro stránky, kde je překročen počet uzlů.",
+ "node-count-exceeded-category-desc": "Tato stránka překračuje maximální počet uzlů.",
"node-count-exceeded-warning": "Stránka překročila počet uzlů",
"expansion-depth-exceeded-category": "Stránky překračující hloubku expanze",
- "expansion-depth-exceeded-category-desc": "Toto je kategorie pro stránky, ve kterých je překročena hloubka expanze.",
+ "expansion-depth-exceeded-category-desc": "Stránka překročila maximální hloubku expanze.",
"expansion-depth-exceeded-warning": "Stránka překročila hloubku expanze",
"parser-unstrip-loop-warning": "Detekováno zacyklení unstrip",
"parser-unstrip-recursion-limit": "Překročen limit rekurze unstrip ($1)",
"searchprofile-advanced-tooltip": "Nastavit jmenné prostory, ve kterých se má hledat",
"search-result-size": "$1 ({{PLURAL:$2|1 slovo|$2 slova|$2 slov}})",
"search-result-category-size": "{{PLURAL:$1|1 položka|$1 položky|$1 položek}} ({{PLURAL:$2|1 podkategorie|$2 podkategorie|$2 podkategorií}}, {{PLURAL:$3|1 soubor|$3 soubory|$3 souborů}})",
- "search-result-score": "Relevantnost: $1 %",
"search-redirect": "(přesměrování $1)",
"search-section": "(část $1)",
"search-file-match": "(odpovídá obsahu souboru)",
"preferences": "Nastavení",
"mypreferences": "Nastavení",
"prefs-edits": "Počet editací:",
- "prefsnologintext2": "Pro změnu uživatelských nastavení se musíte $1.",
+ "prefsnologintext2": "Pro změnu uživatelských nastavení se musíte přihlásit.",
"prefs-skin": "Vzhled",
"skin-preview": "Náhled",
"datedefault": "Implicitní",
"uploadwarning": "Upozornění k načítání",
"uploadwarning-text": "Prosíme, upravte popis souboru níže a zkuste to znovu.",
"savefile": "Uložit soubor",
- "uploadedimage": "načítá „[[$1]]“",
- "overwroteimage": "načtena nová verze \"[[$1]]\"",
"uploaddisabled": "Načítání souborů vypnuto.",
"copyuploaddisabled": "Načítání souborů prostřednictvím URL je vypnuto.",
"uploaddisabledtext": "Načítání souborů je vypnuto.",
"trackingcategories-desc": "Kritéria pro vložení do kategorie",
"noindex-category-desc": "Stránka není indexována roboty, protože obsahuje kouzelné slovo <code><nowiki>__NOINDEX__</nowiki></code> a je ve jmenném prostoru, ve kterém je tento příznak dovolen.",
"index-category-desc": "Stránka obsahuje kouzelné slovo <code><nowiki>__INDEX__</nowiki></code> (a je ve jmenném prostoru, ve kterém je tento příznak dovolen), takže je indexována roboty, přestože by normálně nebyla.",
- "post-expand-template-inclusion-category-desc": "Po rozbalení všech šablon je stránka větší než <code>$wgMaxArticleSize</code>, takže některé šablony rozbaleny nebyly.",
- "post-expand-template-argument-category-desc": "Po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}})</code> je stránka větší než <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Na stránce je použito příliš mnoho náročných funkcí syntaktického analyzátoru (jako <code>#ifexist</code>). Vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Kategorie přidaná pokud stránka obsahuje nefunkční odkaz na soubor (odkaz pro vložení souboru, který neexistuje).",
- "hidden-category-category-desc": "Toto je kategorie, která obsahuje <code><nowiki>__HIDDENCAT__</nowiki></code>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
+ "post-expand-template-inclusion-category-desc": "Stránka je po rozbalení všech šablon větší než <code>$wgMaxArticleSize</code>, takže některé šablony rozbaleny nebyly.",
+ "post-expand-template-argument-category-desc": "Stránka je po rozbalení argumentu šablony (něco v trojitých závorkách, např. <code>{{{Foo}}})</code> větší než <code>$wgMaxArticleSize</code>.",
+ "expensive-parserfunction-category-desc": "Stránka používá příliš mnoho náročných funkcí syntaktického analyzátoru (jako <code>#ifexist</code>). Vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "Stránka obsahuje nefunkční odkaz na soubor (odkaz pro vložení souboru, který neexistuje).",
+ "hidden-category-category-desc": "Kategorie ve svém textu obsahuje <code><nowiki>__HIDDENCAT__</nowiki></code>, což způsobuje, že se na stránkách implicitně nezobrazuje v rámečku odkazů na kategorie.",
"trackingcategories-nodesc": "Popis není k dispozici.",
"trackingcategories-disabled": "Kategorie je vypnuta",
"mailnologin": "Bez odesílací adresy",
"mywatchlist": "Sledované stránky",
"watchlistfor2": "{{GENDER:$1|Uživatele|Uživatelky|Uživatele}} $1 $2",
"nowatchlist": "Na svém seznamu sledovaných stránek nemáte žádné položky.",
- "watchlistanontext": "Pro prohlížení či úpravu seznamu sledovaných stránek se musíte $1.",
+ "watchlistanontext": "Pro prohlížení či úpravu seznamu sledovaných stránek se musíte přihlásit.",
"watchnologin": "Nejste přihlášen(a)",
"addwatch": "Přidat do sledovaných stránek",
"addedwatchtext": "Stránka „[[:$1]]“ byla přidána mezi stránky, které sledujete.\nVe [[Special:Watchlist|sledovaných stránkách]] se tak budou objevovat budoucí změny této stránky a přidružené diskuse.",
"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-cantedit": "Tuto stránku nemůžete smazat, protože nemáte oprávnění ji editovat.",
"deleting-backlinks-warning": "'''Upozornění:''' Stránka, kterou se chystáte smazat, je [[Special:WhatLinksHere/{{FULLPAGENAME}}|na jiných stránkách]] odkazována nebo je do nich vložena.",
"rollback": "Vrátit zpět editace",
"rollback_short": "Vrátit zpět",
"autoblockid": "Autoblok #$1",
"block": "Zablokovat uživatele",
"unblock": "Odblokovat uživatele",
- "blockip": "Zablokovat uživatele",
+ "blockip": "Zablokovat {{GENDER:$1|uživatele|uživatelku}}",
"blockip-legend": "Zablokovat uživatele",
"blockiptext": "Tento formulář slouží k zablokování editací z konkrétní IP adresy nebo uživatelského jména.\nToto by mělo být používáno jen v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].\nUdejte přesný důvod níže (například ocitujte, které stránky byly poškozeny).",
"ipaddressorusername": "IP adresa nebo uživatelské jméno:",
"ipb-unblock-addr": "Odblokovat {{GENDER:$1|uživatele|uživatelku|uživatele nebo IP adresu}} $1",
"ipb-unblock": "Odblokovat uživatele nebo IP adresu",
"ipb-blocklist": "Zobrazit probíhající bloky",
- "ipb-blocklist-contribs": "Příspěvky uživatele $1",
+ "ipb-blocklist-contribs": "Příspěvky {{GENDER:$1|uživatele|uživatelky}} $1",
"unblockip": "Odblokovat uživatele",
"unblockiptext": "Tímto formulářem je možno obnovit právo blokované IP adresy či uživatele opět přispívat do {{grammar:2sg|{{SITENAME}}}}.",
"ipusubmit": "Odblokovat",
"logentry-rights-rights": "$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách z $4 na $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|změnil|změnila}} členství $3 ve skupinách",
"logentry-rights-autopromote": "$1 {{GENDER:$2|byl automaticky povýšen|byla automaticky povýšena}} z $4 na $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|načetl|načetla}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|načetl|načetla}} novou verzi $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|načetl|načetla}} $3",
"rightsnone": "(žádné)",
"feedback-bugornote": "Pokud dokážete podrobně popsat technický problém, můžete [$1 nahlásit chybu].\nJinak můžete využít jednoduchý formulář níže. Váš komentář bude přidán na stránku „[$3 $2]“ spolu s vaším uživatelským jménem a informací o tom, jaký prohlížeč používáte.",
"feedback-subject": "Předmět:",
"action-pagelang": "měnit jazyk stránky",
"log-name-pagelang": "Kniha změn jazyků",
"log-description-pagelang": "Toto je protokol změn jazyků stránek.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|změnil|změnila}} jazyk stránky $3 z $4 na $5.",
+ "default-skin-not-found": "Jejda! Výchozí vzhled vaší wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, není dostupný.\n\nVaše instalace zřejmě obsahuje následující vzhledy. Informace o tom, jak je povolit a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].\n\n$2\n\n; Pokud jste právě nainstalovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code>skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code>skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář.\n\n; Pokud jste právě aktualizovali MediaWiki:\n: MediaWiki 1.24 a novější již automaticky nepovolují nainstalované vzhledy (vizte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_autodiscovery/cs Manual:Skin autodiscovery]). Pro povolení všech právě nainstalovaných vzhledů vlepte následující řádky do <code>LocalSettings.php</code>:\n\n<pre>$3</pre>\n\n; Pokud jste právě upravili <code>LocalSettings.php</code>:\n: Překontrolujte případné překlepy v názvech vzhledů.",
+ "default-skin-not-found-no-skins": "Jejda! Výchozí vzhled vaší wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, není dostupný.\n\nNemáte nainstalovány žádné vzhledy.\n\n; Pokud jste právě nainstalovali nebo aktualizovali MediaWiki:\n: Zřejmě jste instalovali z gitu nebo nějakým jiným způsobem přímo ze zdrojového kódu. Tak to má fungovat. MediaWiki 1.24 a novější již v hlavním repozitáři neobsahují žádné vzhledy. Zkuste nainstalovat některé vzhledy ze [https://www.mediawiki.org/wiki/Category:All_skins seznamu vzhledů na mediawiki.org] buď:\n:* Můžete si stáhnout [https://www.mediawiki.org/wiki/Download/cs instalace v tarballu], která zahrnuje několik vzhledů a rozšíření, a vykopírovat si z ní adresář <code>skins/</code>, nebo\n:* Nebo si můžete gitem naklonovat jeden z repozitářů <code>mediawiki/skins/*</code> do adresáře <code>skins/</code> ve vaší instalaci MediaWiki.\n: Pokud jste vývojářem MediaWiki, nemělo by to nijak narušit váš gitový repozitář. Informace o tom, jak povolit vzhledy a vybrat výchozí, najdete na stránce [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Skin_configuration/cs Manual:Skin configuration].",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (povolený)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''zakázaný''')"
}
"talkpagelinktext": "Diskùsëjô",
"specialpage": "Specjalnô starna",
"personaltools": "Priwatné przërëchtënczi",
- "postcomment": "Nowi dzél",
"articlepage": "Starna artikla",
"talk": "Diskùsëjô",
"views": "Pòdzérków",
"yourdomainname": "Twòjô domena",
"login": "Wlogùjë mie",
"nav-login-createaccount": "Logòwanié",
- "loginprompt": "Brëkùjesz miec ''cookies'' (kùszczi) włączoné bë sã wlogòwac do {{SITENAME}}.",
"userlogin": "Logòwanié",
"userloginnocreate": "Wlogùjë mie",
"logout": "Wëlogùjë mie",
"badfilename": "Miono òbrôzka zmienioné na \"$1\".",
"uploadwarning": "Òstrzega ò wladënkù",
"savefile": "Zapiszë lôpk",
- "uploadedimage": "wladënk: \"$1\"",
"uploaddisabled": "Przeprôszómë! Mòżlëwòta wladënkù lopków na nen serwer òsta wëłączonô.",
"upload-success-subj": "Wladënk darzëł sã",
"listfiles": "Lësta òbrôzków",
"notanarticle": "To nie je artikel",
"watchlist-details": "Ùzérôsz {{PLURAL:$1|$1 artikel|$1 artikle/-ów}}, nie rechùjąc diskùsëjów.",
"wlheader-showupdated": "Artiklë jakczé òsta zmienioné òd Twòji slédny wizytë są wëapratnioné '''pògrëbieniém'''",
+ "wlnote": "Niżi môsz wëskrzënioné {{PLURAL:$1|slédną zmianã|'''$1''' slédnëch zmianów}} zrobioné òb {{PLURAL:$2|gòdzënã|'''$2''' gòdzënë/gòdzënów}}.",
"wlshowlast": "Wëskrzëni zjinaczi z $1 gòdzënów $2 dni $3",
"watchlist-options": "Òptacëje ùzérónych",
"watching": "Ùzéróm...",
"talkpagelinktext": "бєсѣда",
"specialpage": "нарочьна страница",
"personaltools": "моꙗ орѫдиꙗ",
- "postcomment": "нова чѧсть",
"talk": "бєсѣда",
"toolbox": "орѫдиꙗ",
"otherlanguages": "дроугꙑ ѩꙁꙑкꙑ",
"filedesc": "опьсаниѥ",
"fileuploadsummary": "опьсаниѥ:",
"savefile": "дѣла съхранѥниѥ",
- "uploadedimage": "⁖ [[$1]] ⁖ положєнъ ѥстъ",
- "overwroteimage": "новъ обраꙁъ ⁖ [[$1]] ⁖ положєнъ ѥстъ",
"upload-source": "источьно дѣло",
"sourcefilename": "источьна дѣла имꙗ :",
"watchthisupload": "си дѣла блюдєниѥ",
"talkpagelinktext": "Сӳтсе явни",
"specialpage": "Ятарлă страницă",
"personaltools": "Ман хатĕрсем",
- "postcomment": "Хуравла",
"articlepage": "Статьяна пăх",
"talk": "Сӳтсе явни",
"views": "Пурĕ пăхнă",
"yourdomainname": "Сирĕн домен",
"login": "Сайта кĕр",
"nav-login-createaccount": "Сайта кĕр / регистрацилен",
- "loginprompt": "Сайта кĕрес тесен сирĕн «cookies»-па усă курма ирĕк памалла.",
"userlogin": "Сайта кĕр",
"logout": "Сайтран тухас",
"userlogout": "Сайтран тух",
"largefileserver": "Файл пысăкăшĕ юрăхлинчен пысăкрах (пĕчĕклетĕр).",
"uploadwarning": "Асăрхаттару",
"savefile": "Файла çырса хур",
- "uploadedimage": "«[[$1]]» кĕртрĕмĕр",
"uploaddisabled": "Каçарăр та сайта халĕ нимĕн те кĕртме юрамаст.",
"uploaddisabledtext": "Ку вики-сайтра файлсене кĕртме чарнă.",
"uploadvirus": "Файл ăшĕнче вирус пур! $1 пăхăр.",
"externaldberror": "Naill ai: cafwyd gwall dilysu allanol ar databas neu: ar y llaw arall efallai nad oes hawl gennych chi i ddiwygio'ch cyfrif allanol.",
"login": "Mewngofnodi",
"nav-login-createaccount": "Mewngofnodi",
- "loginprompt": "Mae'n rhaid galluogi cwcis er mwyn mewngofnodi i {{SITENAME}}.",
"userlogin": "Mewngofnodi / creu cyfrif",
"userloginnocreate": "Mewngofnodi",
"logout": "Allgofnoder",
"searchprofile-advanced-tooltip": "Chwilio drwy parthau dewisol",
"search-result-size": "$1 ({{PLURAL:$2|dim geiriau|$2 gair|$2 air|$2 gair|$2 gair|$2 gair|}})",
"search-result-category-size": "{{PLURAL:$1|$1 aelod}} ({{PLURAL:$2|$2 is-gategori}}, {{PLURAL:$3|$3 ffeil}})",
- "search-result-score": "Perthnasedd: $1%",
"search-redirect": "(ailgyfeiriad $1)",
"search-section": "(adran $1)",
"search-file-match": "(yn cyfateb i gynnwys y ffeil)",
"uploadwarning": "Rhybudd uwchlwytho",
"uploadwarning-text": "Newidiwch ddisgrifiad y ffeil isod ac yna ceisiwch ei huwchlwytho eto, os gwelwch yn dda.",
"savefile": "Cadw'r ffeil",
- "uploadedimage": "wedi llwytho \"[[$1]]\"",
- "overwroteimage": "wedi uwchlwytho fersiwn newydd o \"[[$1]]\"",
"uploaddisabled": "Ymddiheurwn; mae uwchlwytho wedi'i analluogi.",
"copyuploaddisabled": "Analluogwyd uwchlwytho gan URL.",
"uploaddisabledtext": "Analluogwyd uwchlwytho ffeiliau ar y wefan hon.",
"watchlist-details": "{{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, heb gynnwys tudalennau sgwrs ar wahan.",
"wlheader-enotif": "Galluogwyd hysbysiadau trwy e-bost.",
"wlheader-showupdated": "Mae tudalennau sydd wedi newid ers i chi eu gweld ddiwethaf wedi'u '''hamlygu'''.",
- "wlnote2": "Isod, fe welwch y newidiadau yn ystod {{PLURAL:$1|yr awr|yr awr|y ddwyawr ddiwethaf|teirawr diwethaf|<strong>$1</strong> awr diwethaf}}, hyd at $2, $3.",
+ "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",
"watching": "Wrthi'n ychwanegu...",
"Søren Løvborg",
"Tjernobyl",
"Urhixidur",
- "아라"
+ "아라",
+ "Thomsen"
]
},
"tog-underline": "Understreg henvisninger:",
"hidetoc": "skjul",
"collapsible-collapse": "Fold sammen",
"collapsible-expand": "Fold ud",
+ "confirmable-confirm": "Er {{GENDER:$1|du}} sikker?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nej",
"thisisdeleted": "Se eller gendan $1?",
"viewdeleted": "Vis $1?",
"restorelink": "{{PLURAL:$1|en slettet ændring|$1 slettede ændringer}}",
"preview": "Forhåndsvisning",
"showpreview": "Forhåndsvisning",
"showdiff": "Vis ændringer",
+ "blankarticle": "<strong>Advarsel:</strong> Siden du opretter er tom.\nHvis du klikker på \"{{int:savearticle}}\" igen, vil siden blive oprettet uden indhold.",
"anoneditwarning": "'''Advarsel:''' Du er ikke logget på. I stedet for brugernavn vises din IP-adresse i versionshistorikken.",
"anonpreviewwarning": "''Du er ikke logget på. Hvis du gemmer, registreres din IP-adresse i versionshistorikken.''",
"missingsummary": "'''Bemærk:''' Du har ikke angivet en redigeringsbeskrivelse. Hvis du igen trykker på \"{{int:savearticle}}\", gemmes ændringerne uden en beskrivelse.",
"edit-gone-missing": "Kunne ikke opdatere siden.\nDen ser du til at være slettet.",
"edit-conflict": "Redigeringskonflikt.",
"edit-no-change": "Din ændring ignoreredes, fordi der ikke var ændring af teksten.",
+ "postedit-confirmation-created": "Siden er blevet oprettet.",
+ "postedit-confirmation-restored": "Siden er blevet genoprettet.",
"postedit-confirmation-saved": "Din redigering er gemt.",
"edit-already-exists": "En ny side kunne ikke oprettes, fordi den allerede findes.",
"defaultmessagetext": "Standardtekst",
"parser-template-recursion-depth-warning": "En skabelon er rekursivt inkluderet for mange gange ($1)",
"language-converter-depth-warning": "Dybdegrænse for sprogkonvertering overskredet ($1)",
"node-count-exceeded-category": "Sider hvor antal noder er overskredet",
- "node-count-exceeded-warning": "Sider der har overskredet antallet af noder",
+ "node-count-exceeded-category-desc": "Siden overstiger det maksimale antal af noder.",
+ "node-count-exceeded-warning": "Siden har overskredet antallet af noder",
"expansion-depth-exceeded-category": "Sider, der overskrider ekspansionsdybden",
"expansion-depth-exceeded-warning": "Siden overskred ekspansionsdybden",
"parser-unstrip-loop-warning": "Unstrip-loop opdaget",
"currentrev": "Nuværende version",
"currentrev-asof": "Nuværende version fra $1",
"revisionasof": "Versionen fra $1",
- "revision-info": "Version fra $1 af $2",
+ "revision-info": "Version fra $1 af $2 {{GENDER:$6|$2}}$7",
"previousrevision": "←Ældre version",
"nextrevision": "Nyere version→",
"currentrevisionlink": "se nuværende version",
"searchprofile-advanced-tooltip": "Søg i bestemte navnerum",
"search-result-size": "$1 ({{PLURAL:$2|et ord|$2 ord}})",
"search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})",
- "search-result-score": "Relevans: $1%",
"search-redirect": "(omdirigering $1)",
"search-section": "(afsnit $1)",
"search-suggest": "Mente du: $1",
"preferences": "Indstillinger",
"mypreferences": "Indstillinger",
"prefs-edits": "Antal redigeringer:",
- "prefsnologintext2": "Du skal $1 for at ændre brugerindstillinger.",
+ "prefsnologintext2": "Du skal logge på for at ændre dine brugerindstillinger.",
"prefs-skin": "Udseende",
"skin-preview": "Forhåndsvisning",
"datedefault": "Standard",
"right-deletedtext": "Vise slettet tekst og ændringer i slettede revisioner",
"right-browsearchive": "Søge i slettede sider",
"right-undelete": "Gendanne en side",
- "right-suppressrevision": "Skjule og synliggøre sletninger for administratorer",
+ "right-suppressrevision": "Se, skjule og vise specifikke versioner af sider fra enhver bruger",
+ "right-viewsuppressed": "Se versioner skjult fra enhver bruger",
"right-suppressionlog": "Se skjulte loglister",
"right-block": "Blokere brugere",
"right-blockemail": "Blokere en brugers mulighed for at sende mail",
"action-createpage": "oprette sider",
"action-createtalk": "oprette diskussionssider",
"action-createaccount": "Oprette denne brugerkonto",
+ "action-history": "se historik for denne side",
"action-minoredit": "markere denne redigering som mindre",
"action-move": "flytte denne side",
"action-move-subpages": "flytte denne side og dens undersider",
"recentchanges-legend-heading": "'''Forklaring:'''",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|listen over nye sider]])",
"recentchanges-legend-plusminus": "(''±123'')",
- "rcnotefrom": "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
+ "rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.",
"rclistfrom": "Vis nye ændringer startende fra $3 $2",
"rcshowhideminor": "$1 mindre ændringer",
"rcshowhideminor-show": "Vis",
"largefileserver": "Filen er større end den på serveren indstillede maksimale størrelse.",
"emptyfile": "Filen du lagde op lader til at være tom. Det kan skyldes en slåfejl i filnavnet. Kontroller om du virkelig ønsker at lægge denne fil op.",
"windows-nonascii-filename": "Denne wiki understøtter ikke filnavne, der indeholder specialtegn.",
- "fileexists": "En fil med det navn findes allerede, tjek venligst <strong>[[:$1]]</strong> om du er sikker på du vil ændre den.\n[[$1|thumb]]",
+ "fileexists": "En fil med det navn findes allerede, tjek venligst <strong>[[:$1]]</strong> hvis du ikke er sikker på om du vil ændre den.\n[[$1|thumb]]",
"filepageexists": "Siden med beskrivelse af denne fil er allerede oprettet på <strong>[[:$1]]</strong>, men der eksisterer ikke en fil med dette navn.\nDen beskrivelse du kan angive nedenfor vil derfor ikke blive brugt.\nFor at få din beskrivelse vist, skal du selv redigere beskrivelsessiden.\n[[$1|thumb]]",
- "fileexists-extension": "En fil med lignende navn findes allerede: [[$2|thumb]]\n* Navnet på den valgte fil: <strong>[[:$1]]</strong>\n* Navnet på den eksisterende fil: <strong>[[:$2]]</strong>\nVælg venligst et andet navn.",
+ "fileexists-extension": "En fil med lignende navn findes allerede: [[$2|thumb]]\n* Navnet på den valgte fil: <strong>[[:$1]]</strong>\n* Navnet på den eksisterende fil: <strong>[[:$2]]</strong>\nVil du måske bruge et mere karakteristisk navn?",
"fileexists-thumbnail-yes": "Det ser ud som om filen indeholder et billede i reduceret størrelse ''(thumbnail)''. [[$1|thumb]]\nKontroller filen <strong>[[:$1]]</strong>.\nHvis det er billedet i original størrelse, er det ikke nødvendigt at uploade et separat forhåndsvisningsbillede.",
"file-thumbnail-no": "Filnavnet begynder med <strong>$1</strong>.\nDet tyder på et billede i reduceret format ''(thumbnail)''.\nHvis du har billedet i fuld størrelse, så brug det i stedet. Ellers bedes du venligst ændre filnavnet.",
"fileexists-forbidden": "En fil med dette navn findes allerede, og den kan ikke overskrives.\nHvis du fortsat vil lægge filen op, bedes du gå tilbage og bruge et nyt navn.\n[[File:$1|thumb|center|$1]]",
"uploadwarning": "Advarsel",
"uploadwarning-text": "Vær venlig at ændre filbeskrivelsen nedenfor og prøv igen.",
"savefile": "Gem fil",
- "uploadedimage": "lagde \"[[$1]]\" op",
- "overwroteimage": "lagde en ny version af \"[[$1]]\" op",
"uploaddisabled": "Desværre er funktionen til at lægge filer op afbrudt på denne server.",
"copyuploaddisabled": "Upload via URL er slået fra.",
"uploaddisabledtext": "Oplægning af filer er deaktiveret.",
"license": "Licens",
"license-header": "Licensering",
"nolicense": "intet forvalg",
+ "licenses-edit": "Rediger licensvalg",
"license-nopreview": "(forhåndsvisning ikke mulig)",
- "upload_source_url": " (gyldig, offentligt tillgængelig URL)",
- "upload_source_file": " (en fil på din computer)",
+ "upload_source_url": "(din valgte fil fra en gyldig, offentligt tilgængelige URL)",
+ "upload_source_file": "(din valgte fil fra din computer)",
+ "listfiles-delete": "slet",
"listfiles-summary": "Denne specialside viser alle oplagte filer.",
"listfiles_search_for": "Søge efter fil:",
"imgfile": "Fil",
"pageswithprop-prophidden-binary": "binær værdi for egenskaben skjult ($1)",
"doubleredirects": "Dobbelte omdirigeringer",
"doubleredirectstext": "Dette er en liste over sider som omdirigerer til andre omdirigeringssider.\nHver linje indeholder henvisninger til den første og den anden omdirigering, såvel som til målet for den anden omdirigering som sædvanligvis er den \"rigtige\" målside som den første omdirigering burde henvise til.\n<del>Overstregede</del> poster er rettede.",
- "double-redirect-fixed-move": "[[$1]] blev flyttet og er nu en omdirigering til [[$2]]",
- "double-redirect-fixed-maintenance": "Rettelse af dobbelt omdirigering fra [[$1]] til [[$2]].",
+ "double-redirect-fixed-move": "[[$1]] blev flyttet.\nDen blev automatisk opdateret og er nu en omdirigering til [[$2]].",
+ "double-redirect-fixed-maintenance": "Automatisk rettelse af dobbelt omdirigering fra [[$1]] til [[$2]] som en del af en vedligeholdelsesopgave.",
"double-redirect-fixer": "Omdirigerings-retter",
"brokenredirects": "Defekte omdirigeringer",
"brokenredirectstext": "Følgende omdirigeringer peger på en side der ikke eksisterer:",
"listgrouprights-removegroup-self": "Kan fjerne {{PLURAL:$2|gruppe|grupper}} fra egen konto: $1",
"listgrouprights-addgroup-self-all": "Kan tilføje alle grupper til egen konto",
"listgrouprights-removegroup-self-all": "Kan fjerne alle grupper fra egen konto",
+ "listgrouprights-namespaceprotection-header": "Navnerumsbegrænsninger",
+ "listgrouprights-namespaceprotection-namespace": "Navnerum",
+ "listgrouprights-namespaceprotection-restrictedto": "Rettighed(er) der giver brugeren mulighed for at redigere",
"mailnologin": "Du er ikke logget på",
"mailnologintext": "Du skal være [[Special:UserLogin|logget på]] og have en gyldig e-mailadresse sat i dine [[Special:Preferences|indstillinger]] for at sende e-mail til andre brugere.",
"emailuser": "E-mail til denne bruger",
"mywatchlist": "Overvågningsliste",
"watchlistfor2": "For $1 $2",
"nowatchlist": "Du har ingenting i din overvågningsliste.",
- "watchlistanontext": "Du skal $1, for at se din overvågningsliste eller ændre indholdet af den.",
+ "watchlistanontext": "Du skal logge på, for at se din overvågningsliste eller ændre indholdet af den.",
"watchnologin": "Ikke logget på",
"addwatch": "Tilføj til overvågningsliste",
"addedwatchtext": "Siden \"[[:$1]]\" er blevet tilføjet til din [[Special:Watchlist|overvågningsliste]].\nFremtidige ændringer af denne side og dens tilknyttede diskussionsside vil blive vist der.",
+ "addedwatchtext-short": "Siden \"$1\" er blevet tilføjet til din overvågningsliste.",
"removewatch": "Fjern fra overvågningsliste",
"removedwatchtext": "Siden \"[[:$1]]\" er blevet fjernet fra [[Special:Watchlist||din overvågningsliste]].",
+ "removedwatchtext-short": "Siden \"$1\" er blevet fjernet fra din overvågningsliste.",
"watch": "Overvåg",
"watchthispage": "Overvåg side",
"unwatch": "Fjern overvågning",
"watchlist-details": "Du har $1 {{PLURAL:$1|side|sider}} på din overvågningsliste (ekskl. diskussionssider).",
"wlheader-enotif": "E-mail-underretning er slået til.",
"wlheader-showupdated": "Sider, der er ændret siden dit sidste besøg, er vist med '''fed skrift'''.",
- "wlnote2": "Nedenfor ses ændringerne i {{PLURAL:$1|den sidste time|de sidste <strong>$1</strong> timer}} op til den $2 kl. $3.",
+ "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",
"watching": "Tilføjer overvågning …",
"expand_templates_remove_nowiki": "Undertryk <nowiki>-tags i resultatet",
"expand_templates_generate_xml": "Vis analysetræ som XML",
"expand_templates_generate_rawhtml": "Vis rå HTML",
- "expand_templates_preview": "Forhåndsvisning"
+ "expand_templates_preview": "Forhåndsvisning",
+ "pagelanguage": "Valg af sidesprog",
+ "pagelang-name": "Side",
+ "pagelang-language": "Sprog",
+ "pagelang-use-default": "Brug standardsprog",
+ "pagelang-select-lang": "Vælg sprog",
+ "right-pagelang": "Ændre sidesproget"
}
"Zylbath",
"לערי ריינהארט",
"✓",
- "XenonX3"
+ "XenonX3",
+ "Brackenheim"
]
},
"tog-underline": "Links unterstreichen:",
"hidetoc": "Verbergen",
"collapsible-collapse": "Einklappen",
"collapsible-expand": "Ausklappen",
+ "confirmable-confirm": "Bist {{GENDER:$1|du}} sicher?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nein",
"thisisdeleted": "$1 ansehen oder wiederherstellen?",
"viewdeleted": "$1 anzeigen?",
"restorelink": "$1 {{PLURAL:$1|gelöschte Version|gelöschte Versionen}}",
"invalidtitle-knownnamespace": "Ungültiger Titel mit Namensraum „$2“ und Text „$3“",
"invalidtitle-unknownnamespace": "Ungültiger Titel mit unbekannter Namensraumnummer $1 und Text „$2“",
"exception-nologin": "Nicht angemeldet",
- "exception-nologin-text": "Du musst dich [[Special:Userlogin|anmelden]], um auf diese Seite oder Aktion zugreifen zu können.",
+ "exception-nologin-text": "Du musst dich anmelden, um auf diese Seite oder Aktion zugreifen zu können.",
"exception-nologin-text-manual": "Du musst dich $1, um auf diese Seite oder Aktion zugreifen zu können.",
"virus-badscanner": "Fehlerhafte Konfiguration: unbekannter Virenscanner: <em>$1</em>",
"virus-scanfailed": "Scan fehlgeschlagen (code $1)",
"parser-template-recursion-depth-warning": "Vorlagenrekursionstiefengrenze überschritten ($1)",
"language-converter-depth-warning": "Sprachkonvertertiefenlimit überschritten ($1)",
"node-count-exceeded-category": "Seiten, die die Knotenanzahl überschritten haben",
- "node-count-exceeded-category-desc": "Eine Kategorie für Seiten, bei denen die Knotenzahl überschritten wurde.",
+ "node-count-exceeded-category-desc": "Die Seite überschreitet die maximale Knotenanzahl.",
"node-count-exceeded-warning": "Die Seite hat die Knotenpunktanzahl überschritten.",
"expansion-depth-exceeded-category": "Seiten, die die Expansionstiefe überschritten haben",
- "expansion-depth-exceeded-category-desc": "Dies ist eine Kategorie für Seiten, bei denen die Expandierungstiefe überschritten wurde.",
+ "expansion-depth-exceeded-category-desc": "Die Seite überschreitet die maximale Expandierungstiefe.",
"expansion-depth-exceeded-warning": "Die Seite hat die Expansionstiefe überschritten.",
"parser-unstrip-loop-warning": "Zirkelbezug festgestellt",
"parser-unstrip-recursion-limit": "Rekursionsgrenze beim Auflösen überschritten ($1)",
"searchprofile-advanced-tooltip": "Suche in weiteren Namensräumen",
"search-result-size": "$1 ({{PLURAL:$2|1 Wort|$2 Wörter}})",
"search-result-category-size": "{{PLURAL:$1|1 Seite|$1 Seiten}} ({{PLURAL:$2|1 Unterkategorie|$2 Unterkategorien}}, {{PLURAL:$3|1 Datei|$3 Dateien}})",
- "search-result-score": "Relevanz: $1 %",
"search-redirect": "(Weiterleitung von „$1“)",
"search-section": "(Abschnitt $1)",
"search-file-match": "(treffende Dateiinhalte)",
"preferences": "Einstellungen",
"mypreferences": "Einstellungen",
"prefs-edits": "Anzahl der Bearbeitungen:",
- "prefsnologintext2": "$1, um deine Benutzereinstellungen festzulegen.",
+ "prefsnologintext2": "Bitte anmelden, um deine Benutzereinstellungen festzulegen.",
"prefs-skin": "Benutzeroberfläche",
"skin-preview": "Vorschau",
"datedefault": "Standard",
"uploadwarning": "Warnung",
"uploadwarning-text": "Bitte ändere unten die Dateibeschreibung und versuche es erneut.",
"savefile": "Datei speichern",
- "uploadedimage": "lud „[[$1]]“ hoch",
- "overwroteimage": "lud eine neue Version von „[[$1]]“ hoch",
"uploaddisabled": "Hochladen deaktiviert",
"copyuploaddisabled": "Das Hochladen von URLs ist deaktiviert",
"uploaddisabledtext": "Das Hochladen von Dateien ist deaktiviert.",
"trackingcategories-desc": "Kategorieeinbindungskriterien",
"noindex-category-desc": "Die Seite wird nicht von Bots indexiert, da sie das magische Wort <code><nowiki>__NOINDEX__</nowiki></code> enthält und sich in einem Namensraum befindet, wo dieses Flag erlaubt ist.",
"index-category-desc": "Die Seite enthält ein <code><nowiki>__INDEX__</nowiki></code> und befindet sich in einem Namensraum, in dem dieses Flag nicht erlaubt ist und wird daher von Bots ausnahmsweise indexiert.",
- "post-expand-template-inclusion-category-desc": "Nach dem Expandieren aller Vorlagen ist die Seitengröße größer als <code>$wgMaxArticleSize</code>, sodass einige Vorlagen nicht expandiert werden.",
- "post-expand-template-argument-category-desc": "Nach dem Expandieren eines Vorlagenargumentes (etwas in dreifach geschweiften Klammern, z. B. <code>{{{Foo}}})</code> ist die Seite größer als <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Zu viele aufwändige Parserfunktionen (wie <code>#ifexist</code>) sind in der Seite eingebunden. Siehe das [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Benutzerhandbuch].",
- "broken-file-category-desc": "Kategorie, die hinzugefügt wird, falls die Seite einen defekten Dateilink enthält (einen Link zu einer eingebetteten Datei, die nicht vorhanden ist).",
- "hidden-category-category-desc": "Dies ist eine Kategorie mit <code><nowiki>__HIDDENCAT__</nowiki></code>, die standardmäßig nicht auf Seiten im Kategorienbereich angezeigt wird.",
+ "post-expand-template-inclusion-category-desc": "Die Seitengröße ist nach dem Expandieren aller Vorlagen größer als <code>$wgMaxArticleSize</code>, so dass einige Vorlagen nicht expandiert wurden.",
+ "post-expand-template-argument-category-desc": "Die Seite ist nach dem Expandieren eines Vorlagenargumentes größer als <code>$wgMaxArticleSize</code> (etwas in dreifachen Klammern, wie <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "Die Seite verwendet zu viele aufwändige Parserfunktionen (wie <code>#ifexist</code>). Siehe das [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Benutzerhandbuch].",
+ "broken-file-category-desc": "Die Seite enthält einen defekten Dateilink (einen Link zu einer eingebetteten Datei, die nicht vorhanden ist).",
+ "hidden-category-category-desc": "Die Kategorie enthält <code><nowiki>__HIDDENCAT__</nowiki></code> in ihrem Seiteninhalt, was verhindert, dass sie standardmäßig auf Seiten im Kategorielinkkasten angezeigt wird.",
"trackingcategories-nodesc": "Keine Beschreibung verfügbar.",
"trackingcategories-disabled": "Kategorie ist deaktiviert",
"mailnologin": "Fehler beim E-Mail-Versand",
"mywatchlist": "Beobachtungsliste",
"watchlistfor2": "Von $1 $2",
"nowatchlist": "Es befinden sich keine Einträge auf deiner Beobachtungsliste.",
- "watchlistanontext": "Du musst dich $1, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.",
+ "watchlistanontext": "Du musst dich anmelden, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.",
"watchnologin": "Du bist nicht angemeldet",
"addwatch": "Zur Beobachtungsliste hinzufügen",
"addedwatchtext": "Die Seite „[[:$1]]“ wurde zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.\nSpätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werden dort gelistet.",
"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.",
+ "delete-cantedit": "Du kannst diese Seite nicht löschen, da du nicht über das Recht verfügst, diese Seite zu bearbeiten.",
"deleting-backlinks-warning": "'''Warnung:''' Es verweisen noch [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere Seiten]] auf die zu löschende Seite oder diese Seite ist noch woanders eingebunden.",
"rollback": "Zurücksetzen der Änderungen",
"rollback_short": "Zurücksetzen",
"autoblockid": "Automatische Sperrung #$1",
"block": "Benutzer sperren",
"unblock": "Benutzer freigeben",
- "blockip": "IP-Adresse/Benutzer sperren",
+ "blockip": "IP-Adresse/{{GENDER:$1|Benutzer|Benutzerin}} sperren",
"blockip-legend": "IP-Adresse/Benutzer sperren",
"blockiptext": "Mit diesem Formular sperrst du eine IP-Adresse oder einen Benutzernamen, so dass von dort keine Änderungen mehr vorgenommen werden können.\nDies sollte nur erfolgen, um Vandalismus zu verhindern und in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]].\nBitte gib den Grund für die Sperre an.",
"ipaddressorusername": "IP-Adresse oder Benutzername:",
"ipb-unblock-addr": "„$1“ freigeben",
"ipb-unblock": "IP-Adresse/Benutzer freigeben",
"ipb-blocklist": "Alle aktuellen Sperren anzeigen",
- "ipb-blocklist-contribs": "Benutzerbeiträge von „$1“",
+ "ipb-blocklist-contribs": "Benutzerbeiträge von „{{GENDER:$1|$1}}“",
"unblockip": "Benutzer freigeben",
"unblockiptext": "Mit diesem Formular kannst du eine IP-Adresse oder einen Benutzer freigeben.",
"ipusubmit": "Freigeben",
"logentry-rights-rights": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3 von $4 zu $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|änderte}} die Gruppenzugehörigkeit für $3",
"logentry-rights-autopromote": "$1 wurde automatisch von $4 zu $5 {{GENDER:$2|zugeordnet}}",
+ "logentry-upload-upload": "$1 {{GENDER:$2|lud}} $3 hoch",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|lud}} eine neue Version von $3 hoch",
+ "logentry-upload-revert": "$1 {{GENDER:$2|lud}} $3 hoch",
"rightsnone": "(–)",
"feedback-bugornote": "Sofern du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].\nAnderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kommentar wird, zusammen mit deinem Benutzernamen und der Version des von dir verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.",
"feedback-subject": "Betreff:",
"action-pagelang": "die Seitensprache zu ändern",
"log-name-pagelang": "Sprachenänderungs-Logbuch",
"log-description-pagelang": "Dies ist ein Logbuch mit Änderungen an Seitensprachen.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|änderte}} die Seitensprache für $3 von $4 nach $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|änderte}} die Seitensprache für $3 von $4 nach $5.",
+ "default-skin-not-found": "Hoppla! Die Standard-Benutzeroberfläche für dein Wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, ist nicht verfügbar.\n\nDeine Installation scheint die folgenden Benutzeroberflächen zu enthalten. Siehe das [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Benutzerhandbuch] für Informationen zur Aktivierung dieser und Auswahl des Standards.\n\n$2\n\n; Falls du gerade MediaWiki installiert hast:\n: Du hast vermutlich von Git oder direkt vom Quellcode mithilfe einer anderen Methode installiert. Dies wird erwartet.\n:* Versuche, einige Benutzeroberflächen aus dem [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Benutzeroberflächenverzeichnis] zu installieren.\n:* Lade den [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] herunter, der einige Benutzeroberflächen und Erweiterungen enthält. Du kannst das Verzeichnis <code>skins/</code> kopieren und einfügen.\n: Dies sollte nicht dein Git-Repositorium beeinträchtigen, falls du ein MediaWiki-Entwickler bist.\n\n; Falls du gerade MediaWiki aktualisiert hast:\n: MediaWiki 1.24 und neuere Versionen aktivieren installierte Benutzeroberflächen nicht mehr automatisch (siehe das [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Benutzerhandbuch]). Du kannst die folgenden Zeilen in die Datei <code>LocalSettings.php</code> einfügen, um alle derzeit installierten Benutzeroberflächen zu aktivieren:\n\n<pre>$3</pre>\n\n; Falls du gerade <code>LocalSettings.php</code> geändert hast:\n: Überprüfe die Namen der Benutzeroberflächen auf Tippfehler.",
+ "default-skin-not-found-no-skins": "Hoppla! Die Standard-Benutzeroberfläche für dein Wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, ist nicht verfügbar.\n\nDu hast keine installierten Benutzeroberflächen.\n\n; Falls du gerade MediaWiki installiert hast:\n: Du hast vermutlich von Git oder direkt vom Quellcode mithilfe einer anderen Methode installiert. Dies wird erwartet.\n:* Versuche, einige Benutzeroberflächen aus dem [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Benutzeroberflächenverzeichnis] zu installieren.\n:* Lade den [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] herunter, das mehrere Benutzeroberflächen und Erweiterungen enthält. Du kannst das Verzeichnis <code>skins/</code> kopieren und einfügen.\n: Dies sollte nicht dein Git-Repositorium beeinträchtigen, falls du ein MediaWiki-Entwickler bist. Siehe das [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de Benutzerhandbuch] für Informationen zur Aktivierung von Benutzeroberflächen und Auswahl des Standards.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiviert)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''deaktiviert''')"
}
"searchprofile-advanced-tooltip": "qe cayê nimeyî bigêre",
"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": "($1 ra ardış)",
"search-section": "(qısmê $1)",
"search-file-match": "(zerreyê dosya yewbini gêno)",
"uploadwarning": "Îkazê bar kerdişî",
"uploadwarning-text": "Bînê de deskripyonê dosyayî bivurne u reyna qeyd bike.",
"savefile": "Dosya qeyd ke",
- "uploadedimage": "\"[[$1]]\" bar bi",
- "overwroteimage": "yew versiyonê \"$1\" newe bar bi",
"uploaddisabled": "bar kerdişî iptal biyo",
"copyuploaddisabled": "URL bar kerdiş kefiliyeyo.",
"uploaddisabledtext": "Barkerdışê dosya dewre ra veta.",
"Shirayuki",
"Tlustulimu",
"Tlustulimu Nepl1",
- "아라"
+ "아라",
+ "TMg"
]
},
"tog-underline": "Wótkaze pódšmarnuś:",
"april": "apryl",
"may_long": "maj",
"june": "junij",
- "july": " julij",
+ "july": "julij",
"august": "awgust",
"september": "september",
"october": "oktober",
"talkpagelinktext": "diskusija",
"specialpage": "Specialny bok",
"personaltools": "Wósobinske pomocne srědki",
- "postcomment": "Nowy wótrězk",
"articlepage": "Nastawk",
"talk": "Diskusija",
"views": "Naglědy",
"externaldberror": "Abo jo wustupiła eksterna zmólka awtentifikacije datoweje banki, abo njesmějoš swójo eksterne wužywarske konto aktualizěrowaś.",
"login": "Pśizjawiś se",
"nav-login-createaccount": "Pśizjawiś se/Konto załožyś",
- "loginprompt": "Za pśizjawjenje do boka {{SITENAME}} muse cookije dowólone byś.",
"userlogin": "Pśizjawiś se/Konto załožyś",
"userloginnocreate": "Pśizjawiś",
"logout": "wótzjawiś se",
"searchprofile-advanced-tooltip": "W swójskich mjenjowych rumach pytaś",
"search-result-size": "$1 ({{PLURAL:$2|1 słowow|$2 słowje|$2 słowa|$2 słowow}})",
"search-result-category-size": "{{PLURAL:$1|1 cłonk|$1 cłonka|$1 cłonki|$1 cłonkow}} ({{PLURAL:$2|1 pódkategorija|$2 pódkategoriji|$2 pódkategorije|$2 pódkategorijow}}, {{PLURAL:$3|1 dataja|$3 dataji|$3 dataje|$3 datajow}})",
- "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)",
"uploadwarning": "Warnowanje",
"uploadwarning-text": "Pšosym změń slědujuce datajowe wopisanje a wopytaj hyšći raz.",
"savefile": "Dataju składowaś",
- "uploadedimage": "jo \"[[$1]]\" nagrał.",
- "overwroteimage": "Jo nowu wersiju \"[[$1]]\" nagrał.",
"uploaddisabled": "Nagrawanje jo se znjemóžniło.",
"copyuploaddisabled": "Nagraśe pśez URL znjemóžnjone.",
"uploaddisabledtext": "Nagraśa datajow su znjemóžnjone.",
"watchlist-details": "Wobglědujoš {{PLURAL:$1|$1 bok|$1 boka|$1 boki|$1 bokow}}, bźez diskusijnych bokow.",
"wlheader-enotif": "E-mailowa zdźěleńska słužba jo zmóžnjona.",
"wlheader-showupdated": "Boki, kótarež su wót twójogo slědnego woglěda se změnili, pokazuju se '''tucnje'''.",
- "wlnote2": "Slěduju změny {{PLURAL:$1|zachadneje góźiny|zachadneju <strong>$1</strong> góźinowu|zachadnych <strong>$1</strong> góźinow}} Staw: $2, $3.",
+ "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",
"watching": "Wobglědowaś …",
"duplicate-defaultsort": "Glědaj: Standardny sortěrowański kluc (DEFAULT SORT KEY) \"$2\" pśepišo pjerwjej wužyty kluc \"$1\".",
"version": "Wersija",
"version-extensions": "Instalowane rozšyrjenja",
+ "version-skins": "Suknje",
"version-specialpages": "Specialne boki",
"version-parserhooks": "Parserowe kokule",
"version-variables": "Wariable",
"version-antispam": "Šćit pśeśiwo spamoju",
- "version-skins": "Suknje",
"version-other": "Druge",
"version-mediahandlers": "Pśeźěłaki medijow",
"version-hooks": "Kokule",
"talkpagelinktext": "Boroson",
"specialpage": "Bolikon suaikowokon",
"personaltools": "Kakamot minsosondiri",
- "postcomment": "Bogian wagu",
"articlepage": "Intaai suang bolikon",
"talk": "Pogigibarasan",
"views": "Pongintangan",
"externaldberror": "Haro nokosilap pongintutunan bingdata toi awu ko pasagaon monginwagu takaun poinsoliwannu.",
"login": "Sumuang log",
"nav-login-createaccount": "Sumuang log / pomonsoi do takaun",
- "loginprompt": "Suhuonko do poposikit pongongonsok do sumuang log id {{SITENAME}}.",
"userlogin": "Sumuang log / pomonsoi do takaun",
"userloginnocreate": "Sumuang log",
"logout": "Lumabus log",
"uploadnologintext": "Pinatantu ko do [[Special:UserLogin|lumoog sumuang]] do mangaplod tangapail-pail.",
"uploadlogpage": "Log poposuang",
"filedesc": "Koinibaan",
- "uploadedimage": "poposuang \"[[$1]]\"",
"license": "Pongolisinan:",
"license-header": "Pongolisinan",
"listfiles_search_for": "Mogihum ngaran modia:",
"talkpagelinktext": "ޚިޔާލު ސަފްޙާ",
"specialpage": "ހާއްސަ ޞަފްޙާ",
"personaltools": "އަމިއްލަ",
- "postcomment": "އާ ބައެއް",
"articlepage": "ފިހުރިސްތު ޞަފްޙާ ބައްލަވާ",
"talk": "ބަހުސް",
"views": "ހިޔާލުފުޅުތައް",
"yourpasswordagain": "ސިއްރުބަސް އަލުންލިޔުއްވާ",
"login": "ވަދެވަޑައިގަންނަވާ",
"nav-login-createaccount": "ވަންނަވާ / މެންބަރަކަށް ވެވަޑައިގަންނަވާ",
- "loginprompt": "{{SITENAME}}އަށް ވަންނަވަން ކުކީޒް ބޭނުންވާނެއެވެ.",
"userlogin": "ވަންނަވާ / މެންބަރަކަށް ވެ ވަޑައިގަންނަވާ",
"userloginnocreate": "ވަދެވަޑައިގަންނަވާ",
"logout": "ބޭރަށް ވަޑައިގަންނަވާ",
"watch": "ނަޒަރުބަހައްޓަވާ",
"watchthispage": "މި ޞަފްޙާއަށް ނަޒަރުބަހައްޓަވާ",
"unwatch": "ހާއްސަ ނަޒަރުން އުނިކުރޭ",
+ "wlnote": "ތިރީގައި މިވަނީ އެއީ ފާއިތުވި <b>$2</b> ގަޑި އިރުގެ ތެރޭގައިގެނެވިފައިވާ ފަހު $1 ބަދަލެވެ.",
"changed": "ބަދަލުކުރެވިއްޖެ",
"deletepage": "ޞަފްޙާ ފޮހެލައްވާ",
"confirm": "ޔަގީން",
"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-watchrollback": "Zûta al pàgini in dóv' ó fât al ritōren a la pàgina 'd préma a 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",
"hidetoc": "Lōga",
"collapsible-collapse": "Stréca",
"collapsible-expand": "Şlêrga",
+ "confirmable-yes": "Sé",
+ "confirmable-no": "No",
"thisisdeleted": "Guêrda e tōrna a mèter $1?",
"viewdeleted": "Guêrda $1?",
"restorelink": "{{PLURAL:$1|'na mudéfica scanşlêda|$1 mudéfichi scanşlêdi}}",
"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": "Per andêr dèinter a cla pàgina ché o fêr còl ch'ét pèins ét gh'ê da 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-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)",
"preview": "Guêrda préma",
"showpreview": "Guêrda préma 'd salvêr",
"showdiff": "Guêrda i cambiamèint",
+ "blankarticle": "<strong>Atèinti:</strong>la pàgina che t'é drē fêr la gh'à gnînto dèinter. S' ét tōren a schisêr in sém a \"{{int:savearticle}}\", la pàgina la srà fât sèinsa gnînto dèinter.",
"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.\"",
"missingsummary": "'''Atensiòun:''' an n'é mìa stê precişê al mutîv de sté mudéfica. S'es tōrna a clichêr insém a \"{{int:savearticle}}\" la mudéfica la gnirà salvêda cun al mutîv vōd.",
"rev-deleted-event": "(asiòun dal log armôsa)",
"rev-deleted-user-contribs": "(nòm utèint o indirés IP armôs - mudéfica lughêda da la stòria)",
"rev-deleted-text-permission": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. \nConsultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.",
+ "rev-suppressed-text-permission": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/ suppress |page={{ FULLPAGENAMEE }}}} log dal canşladûri] per nōv particulêr.",
"rev-deleted-text-unhide": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.\nS' l' é necesâri a j aministradōr a gh'é incòra permés [$1 ed guardêr cla versiòun ché].",
"rev-suppressed-text-unhide": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. Consultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.\nS' l' é necesâri a j aministradōr a gh'é incòra permés [$1 ed guardêr cla versiòun ché].",
"rev-deleted-text-view": "Cla versiòun ché 'd la pàgina l'é stêda <strong> scanşlêda </strong>. J aministradōr a pōlen incòra guardêrla; \nconsultêr al [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log dal canşladûri] per nōv particulêr.",
"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-result-score": "Impurtânsa: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(sesiòun $1)",
"search-file-match": "(relasiòun dèinter al file)",
"powersearch-togglenone": "Nisûn",
"powersearch-remember": "Arcôrda la siēlta per êtri sèirchi ch'é vō fêr",
"search-external": "Sèirca fâta fōra",
+ "searchdisabled": "La sèirca intêrna ed {{SITENAME}} l'a funsiòuna mìa; int al mèinter a s' pōl pruvêr a druvêr un mutōr ed sèirca d'ed fōra cme Google. (A gh' è da nutêr però che còl che gh'é dèinter in {{SITENAME}} che es câten in chi mutōr a prém èser mìa arnuvê.)",
+ "search-error": "É sucès un erōr mèinter a's fêva la sèirca:$1",
"preferences": "Preferèinsa",
"mypreferences": "Preferèinsi",
"prefs-edits": "Mudéfichi fâti:",
+ "prefsnologintext2": "Es prèiga ed l'ingres per impustêr al tō preferèinsi 'd utèint.",
"prefs-skin": "Aspèt grâfich (skin)",
"skin-preview": "Guêrda préma",
"datedefault": "Nisóna preferèinsa",
+ "prefs-labs": "Funsiòun adâti in sperimèint",
+ "prefs-user-pages": "Pàgini utèint",
+ "prefs-personal": "Prufîl utèint",
+ "prefs-rc": "Ûltmi mudéfichi",
+ "prefs-watchlist": "Tgnîr sòt ôc",
+ "prefs-watchlist-days": "Nómer ed dé da fêr vèder int i tgnû 'd ôc specêl:",
+ "prefs-watchlist-days-max": "Mâsim $1 {{PLURAL:$1|dé}}",
+ "prefs-watchlist-edits": "Nómer 'd mudéfichi da fêr vèder cun al funsiòun pió şvilupêdi:",
+ "prefs-watchlist-edits-max": "Nómer mâsim:1000",
+ "prefs-watchlist-token": "Token tgnî d'ôc specêl:",
+ "prefs-misc": "Divêrs",
+ "prefs-resetpass": "Câmbia la cêva 'd ingrès",
+ "prefs-changeemail": "Câmbia l'indirés ed la pôsta eletrônica",
+ "prefs-setemail": "Impôsta un indirés ed pôsta eletrônica",
+ "prefs-email": "Siēlta pôsta eletrônica",
+ "prefs-rendering": "Aspèt",
"saveprefs": "Sêlva",
+ "restoreprefs": "Turnêr a mèter al j impustasiòun ed partèinsa (in tót al sesiòun)",
"prefs-editing": "Caşèla 'd mudéfica",
"rows": "Rîghi",
+ "columns": "Clòuni:",
"searchresultshead": "Sērca",
+ "stub-threshold": "Valōr ménim per i <a href=\"#\" class=\"stub\">colegamèint a i stub</a>, in byte:",
+ "stub-threshold-disabled": "Bluchê",
+ "recentchangesdays": "Nómer di dé da fêr vèder int al j ûltmi mudéfichi:",
+ "recentchangesdays-max": "Mâsim $1 {{PLURAL:$1|dé}}",
+ "recentchangescount": "Nómer ed mudéfichi da fêr vèder per default:",
"timezoneregion-africa": "Âfrica",
"timezoneregion-america": "Amèrica",
"timezoneregion-antarctica": "Antârtide",
"upload": "Cârga un 'file'",
"uploadlogpage": "Fil carghê",
"filedesc": "Sûnt.",
- "uploadedimage": "l'à carghê \"[[$1]]\"",
"license": "Licèinsa:",
"license-header": "Licèinsa",
"nolicense": "Nisóna licèinsa sgnêda",
"whatlinkshere-filters": "Fîlter",
"block": "Blôca l'utèint",
"unblock": "Şblôcä l'utèint",
- "blockip": "Blôcä l'utèint",
+ "blockip": "Blôcä {{GENDER:$1|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",
"Kolega2357",
"아라",
"Calak",
- "Auslaender"
+ "Auslaender",
+ "Milicevic01"
]
},
"tog-underline": "Υπογράμμιση συνδέσμων:",
"tog-watchdefault": "Προσθήκη σελίδων που επεξεργάζομαι στη λίστα παρακολούθησης.",
"tog-watchmoves": "Προσθήκη σελίδων που μετακινώ στη λίστα παρακολούθησής μου",
"tog-watchdeletion": "Προσθήκη σελίδων και αρχείων που διαγράφω στη λίστα παρακολούθησής μου",
+ "tog-watchrollback": "Προσθήκη σελίδων όπου έχω κάνει μια επαναφορά στη λίστα παρακολούθησής μου",
"tog-minordefault": "Σήμανση εκ προεπιλογής όλων των αλλαγών ως μικρής κλίμακας",
"tog-previewontop": "Εμφάνιση προεπισκόπησης πριν από το πλαίσιο επεξεργασίας",
"tog-previewonfirst": "Εμφάνιση προεπισκόπησης κατά την πρώτη επεξεργασία",
"view": "Προβολή",
"view-foreign": "Δείτε στο $1",
"edit": "Επεξεργασία",
+ "edit-local": "Επεξεργασία τοπικής περιγραφής",
"create": "Δημιουργία",
"create-local": "Προσθέστε τοπική περιγραφή",
"editthispage": "Επεξεργασία αυτής της σελίδας",
"jumptonavigation": "πλοήγηση",
"jumptosearch": "αναζήτηση",
"view-pool-error": "Λυπούμαστε, οι εξυπηρετητές είναι υπερφορτωμένοι αυτή τη στιγμή.\nΠάρα πολλοί χρήστες προσπαθούν να προβάλουν αυτή τη σελίδα.\nΠαρακαλούμε περιμένετε λίγο πριν ξαναπροσπαθήσετε να προσπελάσετε αυτή τη σελίδα.\n\n$1",
+ "generic-pool-error": "Λυπούμαστε, οι εξυπηρετητές είναι υπερφορτωμένοι αυτή τη στιγμή.\nΠάρα πολλοί χρήστες προσπαθούν να προβάλουν αυτό τον πόρο.\nΠαρακαλούμε περιμένετε λίγο πριν ξαναπροσπαθήσετε να προσπελάσετε αυτό τον πόρο ξανά.",
"pool-timeout": "Χρόνος αναμονής για το κλείδωμα",
"pool-queuefull": "Η ουρά της δεξαμενής διεργασιών είναι πλήρης",
"pool-errorunknown": "Άγνωστο σφάλμα",
"hidetoc": "απόκρυψη",
"collapsible-collapse": "Σύμπτυξη",
"collapsible-expand": "Ανάπτυξη",
+ "confirmable-confirm": "Είστε {{GENDER:$1|σίγουρος|σίγουρη}};",
+ "confirmable-yes": "Ναι",
+ "confirmable-no": "Όχι",
"thisisdeleted": "Προβολή ή αποκατάσταση $1;",
"viewdeleted": "Προβολή $1;",
"restorelink": "{{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}",
"cannotdelete": "Η σελίδα ή το αρχείο «$1» δεν μπόρεσε να διαγραφεί.\nΕνδεχομένως να έχει ήδη διαγραφεί από κάποιον άλλον.",
"cannotdelete-title": "Αδύνατη η διαγραφή της σελίδας «$1»",
"delete-hook-aborted": "Η επεξεργασία ματαιώθηκε από το άγκιστρο του συντακτικού αναλυτή.\nΔεν έδωσε εξήγηση.",
+ "no-null-revision": "Δεν μπορούσε να δημιουργηθεί νέα μηδενική αναθεώρηση για τη σελίδα \"$1\"",
"badtitle": "Ακατάλληλος τίτλος",
"badtitletext": "Ο τίτλος της σελίδας που ζητήσατε δεν είναι έγκυρος ή είναι κενός ή πρόκειται για έναν εσφαλμένα συνδεδεμένο διαγλωσσικό τίτλο ή εσφαλμένα συνδεδεμένο τίτλο ανάμεσα σε διαφορετικά wiki.",
"perfcached": "Τα δεδομένα που ακολουθούν είναι cached και είναι πιθανόν να μην είναι επικαιροποιημένα. Ένα μέγιστο των {{PLURAL:$1|one result is|$1 results are}} διαθέσιμο στην cache.",
"invalidtitle-knownnamespace": "Μη έγκυρος τίτλος με χώρο ονομάτων «$2» και κείμενο «$3»",
"invalidtitle-unknownnamespace": "Μη έγκυρος τίτλος με άγνωστο αριθμό χώρου ονομάτων $1 και κείμενο «$2»",
"exception-nologin": "Δεν έχετε συνδεθεί.",
- "exception-nologin-text": "Παρακαλούμε να [[Special:Userlogin|συνδεθείτε]] για να μπορείτε να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα ή την ενέργεια.",
+ "exception-nologin-text": "Παρακαλούμε να συνδεθείτε για να μπορείτε να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα ή την ενέργεια.",
"exception-nologin-text-manual": "Παρακαλούμε $1 για να μπορείτε να έχετε πρόσβαση σε αυτή τη σελίδα ή ενέργεια.",
"virus-badscanner": "Λάθος ρύθμιση: άγνωστος ανιχνευτής ιών: ''$1''",
"virus-scanfailed": "Η σάρωση απέτυχε (κώδικας $1)",
"gotaccountlink": "Είσοδος",
"userlogin-resetlink": "Ξεχάσατε τα στοιχεία εισόδου σας;",
"userlogin-resetpassword-link": "Ξεχάσατε τον κωδικό πρόσβασης;",
+ "userlogin-helplink2": "Βοήθεια για τη σύνδεση",
"userlogin-loggedin": "Είστε ήδη {{GENDER:$1|συνδεδεμένος|συνδεδεμένη}} ως $1.\nΧρησιμοποιήστε την παρακάτω φόρμα για να συνδεθείτε ως άλλος χρήστης.",
"userlogin-createanother": "Δημιουργήσετε έναν άλλο λογαριασμό",
"createacct-emailrequired": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
"resetpass-submit-cancel": "Ακύρωση",
"resetpass-wrong-oldpass": "Λάθος προσωρινός ή κανονικός κωδικός.\nΜπορεί να έχετε ήδη αλλάξει επιτυχώς τον κωδικό σας ή να έχετε ζητήσει έναν νέο προσωρινό κωδικό.",
"resetpass-recycled": "Παρακαλούμε επαναφέρετε τον κωδικό πρόσβασής σας σε κάτι διαφορετικό από τον τρέχοντα κωδικό πρόσβασης.",
+ "resetpass-temp-emailed": "Έχετε συνδεθεί με ένα προσωρινό κωδικό μέσω ηλεκτρονικού ταχυδρομείου.\nΓια να ολοκληρώσετε τη σύνδεση, πρέπει να ορίσετε ένα νέο κωδικό εδώ:",
"resetpass-temp-password": "Προσωρινός κωδικός:",
"resetpass-abort-generic": "Η αλλαγή του κωδικού έχει απορριφθεί από μια προέκταση.",
"resetpass-expired": "Τον κωδικό πρόσβασής σας έχει λήξει. Ορίστε ένα νέο κωδικό πρόσβασης για να συνδεθείτε.",
+ "resetpass-expired-soft": "Ο κωδικός πρόσβασής σας έχει λήξει και πρέπει να γίνει επαναφορά του. Παρακαλούμε γράψτε ένα νέο κωδικό πρόσβασης ή κάντε κλικ στο \"{{int:resetpass-submit-cancel}}\" για τον επαναφέρετε αργότερα.",
"resetpass-validity-soft": "Τον κωδικό πρόσβασής σας δεν είναι έγκυρος: $1 \nΠαρακαλώ επιλέξτε ένα νέο κωδικό πρόσβασης τώρα, ή κάντε κλικ στο κουμπί \"{{int:resetpass-submit-cancel}}\" για να το επαναφέρετε αργότερα.",
"passwordreset": "Κωδικός επαναφοράς",
"passwordreset-text-one": "Συμπληρώστε την παρακάτω φόρμα για να επαναφέρετε τον κωδικό πρόσβασής σας.",
"preview": "Προεπισκόπηση",
"showpreview": "Εμφάνιση προεπισκόπησης",
"showdiff": "Εμφάνιση αλλαγών",
+ "blankarticle": "<strong>Προειδοποίηση:</strong> Η σελίδα που δημιουργείτε είναι κενή.\nΕάν κάνετε κλικ στο κουμπί \"{{int:savearticle}}\" και πάλι, η σελίδα θα δημιουργηθεί χωρίς κανένα περιεχόμενο.",
"anoneditwarning": "'''Προειδοποίηση:''' Δεν έχετε συνδεθεί. Η διεύθυνση IP σας θα καταγραφεί στο ιστορικό επεξεργασίας αυτής της σελίδας.",
"anonpreviewwarning": "''Δεν έχετε συνδεθεί. Η αποθήκευση θα καταγράψει την διεύθυνσή IP σας στο ιστορικό επεξεργασίας αυτής της σελίδας.''",
"missingsummary": "'''Υπενθύμιση:''' Δεν έχετε συμπληρώσει τη σύνοψη επεξεργασίας. Αν κάνετε κλικ στο κουμπί Αποθήκευση πάλι, η επεξεργασία σας θα αποθηκευτεί χωρίς σύνοψη.",
"edit-gone-missing": "Δεν ήταν εφικτό να ενημερωθεί η σελίδα.\nΦαίνεται πως έχει διαγραφεί.",
"edit-conflict": "Σύγκρουση επεξεργασιών.",
"edit-no-change": "Η επεξεργασία σας αγνοήθηκε, επειδή δεν έγινε καμία αλλαγή στο κείμενο.",
+ "postedit-confirmation-created": "Η σελίδα έχει δημιουργηθεί.",
+ "postedit-confirmation-restored": "Η σελίδα έχει αποκατασταθεί.",
"postedit-confirmation-saved": "H επεξεργασία σας αποθηκεύτηκε.",
"edit-already-exists": "Δεν ήταν εφικτό να δημιουργηθεί η νέα σελίδα.\nΥπάρχει ήδη.",
"defaultmessagetext": "Προεπιλεγμένο κείμενο μηνύματος",
"parser-template-recursion-depth-warning": "Το όριο του μάκρους της αναδρομής του πρότυπου έχει ξεπεραστεί ($1)",
"language-converter-depth-warning": "Το όριο βάθους του μετατροπέα γλώσσας έχει ξεπεραστεί ($1)",
"node-count-exceeded-category": "Σελίδες υπέρβασης του αριθμού κόμβων",
+ "node-count-exceeded-category-desc": "Η σελίδα υπερβαίνει το μέγιστο αριθμό κόμβων.",
"node-count-exceeded-warning": "Η σελίδα έχει υπερβεί τον αριθμό κόμβων",
"expansion-depth-exceeded-category": "Σελίδες υπέρβασης της επέκτασης σε βάθος",
+ "expansion-depth-exceeded-category-desc": "Η σελίδα υπερβαίνει το μέγιστο βάθος επέκτασης.",
"expansion-depth-exceeded-warning": "Η σελίδα υπερέβη το βάθος επέκτασης",
"parser-unstrip-loop-warning": "εντοπίστηκε ένας βρόχος unstrip",
"parser-unstrip-recursion-limit": "Υπέρβαση του ορίου αναδρομής Unstrip ($1)",
"undo-failure": "Η επεξεργασία δεν μπορούσε να αναστραφεί λόγω αντικρουόμενων ενδιάμεσων επεξεργασιών.",
"undo-norev": "Η ανάκληση αυτής της επεξεργασίας δεν ηταν δυνατό να πραγματοποιηθεί επειδή δεν υπάρχει ή επειδή έχει διαγραφεί.",
"undo-nochange": "Η επεξεργασία φαίνεται να έχει ήδη αναιρεθεί.",
- "undo-summary": "Αναίρεση αναθεώρησης $1 υπό τον/την [[Special:Contributions/$2|$2]] ([[User talk:$2|Συζήτηση]])",
+ "undo-summary": "Αναίρεση αναθεώρησης $1 υπό τον/την [[Special:Contribs/$2|$2]] ([[User talk:$2|Συζήτηση]])",
"undo-summary-username-hidden": "Αναίρεση αναθεώρησης $1 από ένα κρυμμένο χρήστη",
"cantcreateaccounttitle": "Ο λογαριασμός δεν μπορεί να δημιουργηθεί",
"cantcreateaccount-text": "Η δημιουργία λογαριασμού από αυτή τη διεύθυνση IP ('''$1''') έχει αποτραπεί από τον [[User:$3|$3]].\n\nΟ λόγος που δόθηκε από τον $3 είναι ''$2''",
"currentrev": "Τρέχουσα αναθεώρηση",
"currentrev-asof": "Τελευταία αναθεώρηση της $1",
"revisionasof": "Αναθεώρηση της $1",
- "revision-info": "Î\91ναθεÏ\8eÏ\81ηÏ\83η Ï\84ηÏ\82 $1 Ï\85Ï\80Ï\8c {{GENDER:$6|Ï\84ον|Ï\84ην}} $2",
+ "revision-info": "Î\91ναθεÏ\8eÏ\81ηÏ\83η Ï\89Ï\82 Ï\80Ï\81οÏ\82 $1 αÏ\80Ï\8c {{GENDER:$6|Ï\84ον|Ï\84ην}} $2 $7",
"previousrevision": "←Παλαιότερη αναθεώρηση",
"nextrevision": "Νεώτερη αναθεώρηση →",
"currentrevisionlink": "Τελευταία αναθεώρηση",
"rev-deleted-event": "(η καταγραφή στο αρχείο αφαιρέθηκε)",
"rev-deleted-user-contribs": "[όνομα χρήστη ή διεύθυνση ΙΡ έχουν αφαιρεθεί - η επεξεργασία έχει αποκρυφθεί από τις συνεισφορές]",
"rev-deleted-text-permission": "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.\nΜπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
+ "rev-suppressed-text-permission": "Αυτή η έκδοση της σελίδας έχει '''κατασταλεί'''.\nΛεπτομέρειες μπορούν να βρεθούν στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο καταστολής].",
"rev-deleted-text-unhide": "Αυτή η έκδοση σελίδας '''διεγράφη'''.\nΠερισσότερες λεπτομέρειες μπορούν να βρεθούν στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ιστορικό διαγραφών].\nΜπορείτε ακόμη να [$1 δείτε αυτήν την αναθεώρηση] αν επιθυμείτε να συνεχίσετε.",
"rev-suppressed-text-unhide": "Αυτή η έκδοση της σελίδας έχει '''αποκρυφθεί'''.\nΜπορεί να υπάρχουν λεπτομέρειες στο [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} αρχείο απόκρυψης].\nΜπορείτε ακόμα [$1 να δείτε την έκδοση] αν επιθυμείτε να συνεχίσετε.",
"rev-deleted-text-view": "Αυτή η αναθεώρηση της σελίδας έχει '''διαγραφεί'''.\nΜπορείτε να την δείτε. Λεπτομέρειες μπορούν να βρεθούν στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} αρχείο καταγραφής διαγραφών].",
"revdelete-no-file": "Το αρχείο που καθορίσατε δεν υπάρχει.",
"revdelete-show-file-confirm": "Είστε σίγουροι ότι θέλετε να δείτε μία διεγραμμένη αναθεώρηση του αρχείου \"<nowiki>$1</nowiki>\" από τις $2 στις $3;",
"revdelete-show-file-submit": "Ναι",
- "revdelete-selected-text": "'''{{PLURAL:$2|Επιλεγμένη έκδοση|Επιλεγμένες εκδόσεις}} της [[:$1]]:'''",
+ "revdelete-selected-text": "{{PLURAL:$1|Επιλεγμένη έκδοση|Επιλεγμένες εκδόσεις}} της [[:$2]]:",
"logdelete-selected": "{{PLURAL:$1|Επιλεγμένο γεγονός αρχείου καταγραφής|Επιλεγμένα γεγονότα αρχείου καταγραφής}}:",
"revdelete-confirm": "Παρακαλούμε επιβεβαιώστε ότι σκοπεύετε να το κάνετε αυτό, ότι αντιλαμβάνεσθε τις συνέπειες, και ότι το κάνετε σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].",
"revdelete-suppress-text": "Η καταστολή μπορεί να χρησιμοποιηθεί <strong> μόνο </strong> για τις ακόλουθες περιπτώσεις:\n* Ενδεχόμενη συκοφαντική δυσφήμιση\n* Ακατάλληλες προσωπικές πληροφορίες\n*: <em>διευθύνσεις κατοικίας και αριθμοί τηλεφώνου, αριθμοί ταυτότητας, κλπ. </em>",
"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": "(ταιριάζει με το περιεχόμενο του αρχείου)",
"uploadwarning": "Προειδοποίηση φόρτωσης",
"uploadwarning-text": "Παρακαλώ αλλάξτε την περιγραφή του αρχείου παρακάτω και προσπαθήστε ξανά.",
"savefile": "Αποθήκευση αρχείου",
- "uploadedimage": "ανέβασε το «[[$1]]»",
- "overwroteimage": "ανέβασμα νέας έκδοσης του \"[[$1]]\"",
"uploaddisabled": "Το ανέβασμα αρχείων είναι απενεργοποιημένο.",
"copyuploaddisabled": "Το ανέβασμα μέσω URL έχει απενεργοποιηθεί.",
"uploaddisabledtext": "Το ανέβασμα αρχείων είναι απενεργοποιημένο.",
"listgrouprights-removegroup-self": "Μπορεί να αφαιρέσει {{PLURAL:$2|ομάδα|ομάδες}} από το δικό σας λογαριασμό: $1",
"listgrouprights-addgroup-self-all": "Μπορεί να προσθέσει όλες τις ομάδες στο δικό σας λογαριασμό",
"listgrouprights-removegroup-self-all": "Μπορεί να αφαιρέσει όλες τις ομάδες από το δικό σας λογαριασμό",
+ "post-expand-template-inclusion-category-desc": "Το μέγεθος της σελίδας είναι μεγαλύτερο από <code>$wgMaxArticleSize</code> μετά την επέκταση όλων των προτύπων, έτσι ώστε ορισμένα πρότυπα δεν έχουν αναπτυχθεί.",
"mailnologin": "Δεν υπάρχει διεύθυνση παραλήπτη.",
"mailnologintext": "Πρέπει να έχετε [[Special:UserLogin|συνδεθεί]] και να έχετε δηλώσει\nμια έγκυρη ηλεκτρονική διεύθυνση στις [[Special:Preferences|Προτιμήσεις]]\nγια να στείλετε e-mail σε άλλους χρήστες.",
"emailuser": "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε αυτόν τον χρήστη",
"mywatchlist": "Λίστα παρακολούθησης",
"watchlistfor2": "Για $1 $2",
"nowatchlist": "Δεν υπάρχουν εγγραφές στη λίστα παρακολούθησης.",
- "watchlistanontext": "Παρακαλώ $1 για να δείτε ή να επεξεργαστείτε στοιχεία στη λίστα παρακολούθησής σας.",
+ "watchlistanontext": "Παρακαλούμε συνδεθείτε για να δείτε ή να επεξεργαστείτε αντικείμενα στη λίστα παρακολούθησής σας.",
"watchnologin": "Δεν έχετε συνδεθεί.",
"addwatch": "Προσθήκη στη λίστα παρακολούθησης",
"addedwatchtext": "Η σελίδα «[[:$1]]» έχει προστεθεί στη [[Special:Watchlist|λίστα παρακολούθησής σας]].\nΜελλοντικές αλλαγές σε αυτή τη σελίδα και στη συσχετισμένη σελίδα συζήτησής της θα εμφανίζονται εδώ.",
"watchlist-details": "{{PLURAL:$1|$1 σελίδα|$1 σελίδες}} στη λίστα παρακολούθησης σας, χωρίς να προσμετρούνται οι σελίδες συζήτησης.",
"wlheader-enotif": "Η ειδοποίηση ηλεκτρονικού ταχυδρομείου ενεργοποιήθηκε.",
"wlheader-showupdated": "Σελίδες που έχουν υποστεί αλλαγές από την τελευταία φορά που τις επισκεφθήκατε εμφανίζονται με '''έντονους χαρακτήρες'''.",
+ "wlnote": "Παρακάτω είναι {{PLURAL:$1|η πιο πρόσφατη αλλαγή|οι '''$1''' πιο πρόσφατες αλλαγές}} κατά τη διάρκεια {{PLURAL:$2|της τελευταίας ώρας|των '''$2''' τελευταίων ωρών}} ως προς την $3, $4.",
"wlshowlast": "Εμφάνιση των τελευταίων $1 ωρών $2 ημερών $3",
"watchlist-options": "Επιλογές λίστας παρακολούθησης",
"watching": "Παρακολούθηση...",
"delete-edit-reasonlist": "Επεξεργασία λόγων διαγραφής",
"delete-toobig": "Αυτή η σελίδα έχει μεγάλο ιστορικό τροποποιήσεων, πάνω από $1 {{PLURAL:$1|τροποποίηση|τροποποιήσεις}}.\nΗ διαγραφή τέτοιων σελίδων έχει περιοριστεί για την αποφυγή τυχαίας αναστάτωσης του {{SITENAME}}.",
"delete-warning-toobig": "Αυτή η σελίδα έχει μεγάλο ιστορικό τροποποιήσεων, πάνω από $1 {{PLURAL:$1|τροποποίηση|τροποποιήσεις}}.\nΗ διαγραφή της μπορεί να αναστατώσει τη λειτουργία της βάσης δεδομένων του {{SITENAME}}. Συνιστούμε μεγάλη προσοχή.",
+ "delete-cantedit": "Δεν μπορείτε να διαγράψετε αυτή τη σελίδα, επειδή δεν έχετε δικαίωμα να την επεξεργαστείτε.",
"rollback": "Επαναφορά επεξεργασιών",
"rollback_short": "Επαναφορά",
"rollbacklink": "αναστροφή",
"autoblockid": "Autoblock #$1",
"block": "Φραγή χρήστη",
"unblock": "Κατάργηση αποκλεισμού χρήστη",
- "blockip": "Φραγή χρήστη ή διεύθυνσης IP",
+ "blockip": "Φραγή {{GENDER:$1|χρήστη|χρήστριας}}",
"blockip-legend": "Φραγή του χρήστη",
"blockiptext": "Χρησιμοποιήστε την παρακάτω φόρμα για να εμποδίσετε παρεμβάσεις στο κείμενο από μια συγκεκριμένη διεύθυνση IP ή όνομα χρήστη.\nΤο μέτρο αυτό πρέπει να λαμβάνεται μόνο σε περιπτώσεις βανδαλισμού σελίδων και πάντα σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].\nΠαρακαλούμε να αιτιολογήσετε την ενέργειά σας (παραπέμποντας π.χ. σε συγκεκριμένες σελίδες που υπέστησαν βανδαλισμό).",
"ipaddressorusername": "Διεύθυνση IP ή όνομα χρήστη",
"ipb-unblock-addr": "Τερμάτισε τη φραγή του/της $1",
"ipb-unblock": "Τερμάτισε τη φραγή για ένα όνομα χρήστη ή μια διεύθυνση IP",
"ipb-blocklist": "Δες τις υπάρχουσες φραγές",
- "ipb-blocklist-contribs": "Συνεισφορές για τον/την $1",
+ "ipb-blocklist-contribs": "Συνεισφορές {{GENDER:$1|του $1|της $1}}",
"unblockip": "Άρση φραγής χρήστη",
"unblockiptext": "Χρησιμοποιήστε την παρακάτω φόρμα για να αποκαταστήσετε την πρόσβαση σε επεξεργασία, σε μια διεύθυνση IP ή σε ένα χρήστη που είχε αποκλειστεί με φραγή.",
"ipusubmit": "Άρση φραγής",
"svg-long-desc": "Αρχείο SVG, ονομαστικό μέγεθος $1 × $2 εικονοστοιχεία, μέγεθος αρχείου: $3",
"svg-long-desc-animated": "Κινούμενο αρχείο SVG, ονομαστικό μέγεθος σε pixels: $1 × $2, μέγεθος αρχείου: $3",
"svg-long-error": "Μη έγκυρο αρχείο SVG: $1",
- "show-big-image": "Î\91Ï\81Ï\87ικÏ\8c αρχείο",
+ "show-big-image": "Î Ï\81Ï\89Ï\84Ï\8cÏ\84Ï\85Ï\80ο αρχείο",
"show-big-image-preview": "Μέγεθος αυτής της προεπισκόπησης: $1 .",
"show-big-image-other": "Άλλες {{PLURAL:$2|ανάλυση|αναλύσεις}}: $1.",
"show-big-image-size": "$1 × $2 εικονοστοιχεία",
"expand_templates_remove_nowiki": "Απόκρυψη της ετικέτας <nowiki> στο αποτέλεσμα",
"expand_templates_generate_xml": "Εμφάνιση δέντρου συντακτικής ανάλυσης XML",
"expand_templates_generate_rawhtml": "Εμφάνιση ανεπεξέργαστης HTML",
- "expand_templates_preview": "Προεπισκόπηση"
+ "expand_templates_preview": "Προεπισκόπηση",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> /$2 (ενεργοποιημένο)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''απενεργοποιημένο''')"
}
"hidetoc": "hide",
"collapsible-collapse": "Collapse",
"collapsible-expand": "Expand",
+ "confirmable-confirm": "Are {{GENDER:$1|you}} sure?",
+ "confirmable-yes": "Yes",
+ "confirmable-no": "No",
"thisisdeleted": "View or restore $1?",
"viewdeleted": "View $1?",
"restorelink": "{{PLURAL:$1|one deleted edit|$1 deleted edits}}",
"invalidtitle-knownnamespace": "Invalid title with namespace \"$2\" and text \"$3\"",
"invalidtitle-unknownnamespace": "Invalid title with unknown namespace number $1 and text \"$2\"",
"exception-nologin": "Not logged in",
- "exception-nologin-text": "Please [[Special:Userlogin|log in]] to be able to access this page or action.",
+ "exception-nologin-text": "Please log in to be able to access this page or action.",
"exception-nologin-text-manual": "Please $1 to be able to access this page or action.",
"virus-badscanner": "Bad configuration: Unknown virus scanner: <em>$1</em>",
"virus-scanfailed": "scan failed (code $1)",
"parser-template-loop-warning": "Template loop detected: [[$1]]",
"parser-template-recursion-depth-warning": "Template recursion depth limit exceeded ($1)",
"language-converter-depth-warning": "Language converter depth limit exceeded ($1)",
- "node-count-exceeded-category": "Pages where node-count is exceeded",
- "node-count-exceeded-category-desc": "A category for pages where the node-count is exceeded.",
- "node-count-exceeded-warning": "Page exceeded the node-count",
+ "node-count-exceeded-category": "Pages where node count is exceeded",
+ "node-count-exceeded-category-desc": "The page exceeds the maximum node count.",
+ "node-count-exceeded-warning": "Page exceeded the node count",
"expansion-depth-exceeded-category": "Pages where expansion depth is exceeded",
- "expansion-depth-exceeded-category-desc": "This is a category for pages where the expansion depth is exceeded.",
+ "expansion-depth-exceeded-category-desc": "The page exceeds the maximum expansion depth.",
"expansion-depth-exceeded-warning": "Page exceeded the expansion depth",
"parser-unstrip-loop-warning": "Unstrip loop detected",
"parser-unstrip-recursion-limit": "Unstrip recursion limit exceeded ($1)",
"searchprofile-advanced-tooltip": "Search in custom namespaces",
"search-result-size": "$1 ({{PLURAL:$2|1 word|$2 words}})",
"search-result-category-size": "{{PLURAL:$1|1 member|$1 members}} ({{PLURAL:$2|1 subcategory|$2 subcategories}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Relevance: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(section $1)",
"search-file-match": "(matches file content)",
"preferences-summary": "",
"mypreferences": "Preferences",
"prefs-edits": "Number of edits:",
- "prefsnologintext2": "Please $1 to change your preferences.",
+ "prefsnologintext2": "Please login to change your preferences.",
"prefs-skin": "Skin",
"skin-preview": "Preview",
"datedefault": "No preference",
"trackingcategories-desc": "Category inclusion criteria",
"noindex-category-desc": "The page is not indexed by robots because it has the magic word <code><nowiki>__NOINDEX__</nowiki></code> on it and is in a namespace where that flag is allowed.",
"index-category-desc": "The page has a <code><nowiki>__INDEX__</nowiki></code> on it (and is in a namespace where that flag is allowed), and hence is indexed by robots where it normally wouldn't be.",
- "post-expand-template-inclusion-category-desc": "After expanding all the templates, the page size is bigger than <code>$wgMaxArticleSize</code>, so some templates weren't expanded.",
- "post-expand-template-argument-category-desc": "After expanding a template argument (something in triple braces, like <code>{{{Foo}}}</code>), the page is bigger than <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Too many expensive parser functions (like <code>#ifexist</code>) included on a page. See [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Category added if the page contains a broken file link (a link to embed a file when the file does not exist).",
- "hidden-category-category-desc": "This is a category with <code><nowiki>__HIDDENCAT__</nowiki></code> on it, which prevents it from showing up in the category links box on pages, by default.",
+ "post-expand-template-inclusion-category-desc": "The page size is bigger than <code>$wgMaxArticleSize</code> after expanding all the templates, so some templates were not expanded.",
+ "post-expand-template-argument-category-desc": "The page is bigger than <code>$wgMaxArticleSize</code> after expanding a template argument (something in triple braces, like <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "The page uses too many expensive parser functions (like <code>#ifexist</code>). See [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "The page contains a broken file link (a link to embed a file when the file does not exist).",
+ "hidden-category-category-desc": "The category contains <code><nowiki>__HIDDENCAT__</nowiki></code> in its page content, which prevents it from showing up in the category links box on pages by default.",
"trackingcategories-nodesc": "No description available.",
"trackingcategories-disabled": "Category is disabled",
"mailnologin": "No send address",
"mywatchlist": "Watchlist",
"watchlistfor2": "For $1 $2",
"nowatchlist": "You have no items on your watchlist.",
- "watchlistanontext": "Please $1 to view or edit items on your watchlist.",
+ "watchlistanontext": "Please login to view or edit items on your watchlist.",
"watchnologin": "Not logged in",
"addwatch": "Add to watchlist",
"addedwatchtext": "The page \"[[:$1]]\" has been added to your [[Special:Watchlist|watchlist]].\nFuture changes to this page and its associated talk page will be listed there.",
"delete-edit-reasonlist": "Edit deletion reasons",
"delete-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeletion of such pages has been restricted to prevent accidental disruption of {{SITENAME}}.",
"delete-warning-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeleting it may disrupt database operations of {{SITENAME}};\nproceed with caution.",
+ "delete-cantedit": "You cannot delete this page because you do not have permission to edit it.",
"deleting-backlinks-warning": "'''Warning:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Other pages]] link to or transclude the page you are about to delete.",
"rollback": "Roll back edits",
"rollback_short": "Rollback",
"block": "Block user",
"unblock": "Unblock user",
"unblock-summary": "",
- "blockip": "Block user",
+ "blockip": "Block {{GENDER:$1|user}}",
"blockip-legend": "Block user",
"blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).",
"ipaddressorusername": "IP address or username:",
"ipb-unblock-addr": "Unblock $1",
"ipb-unblock": "Unblock a username or IP address",
"ipb-blocklist": "View existing blocks",
- "ipb-blocklist-contribs": "Contributions for $1",
+ "ipb-blocklist-contribs": "Contributions for {{GENDER:$1|$1}}",
"unblockip": "Unblock user",
"unblockiptext": "Use the form below to restore write access to a previously blocked IP address or username.",
"ipusubmit": "Remove this block",
"version-software": "Installed software",
"version-software-product": "Product",
"version-software-version": "Version",
- "version-db-mysql-url": "http://www.mysql.com/",
- "version-db-mariadb-url": "http://mariadb.org/",
+ "version-db-mysql-url": "https://www.mysql.com/",
+ "version-db-mariadb-url": "https://mariadb.org/",
"version-db-percona-url": "http://www.percona.com/software/percona-server",
"version-db-postgres-url": "http://www.postgresql.org/",
"version-db-oracle-url": "http://www.oracle.com/database/",
- "version-db-sqlite-url": "http://www.sqlite.org/",
- "version-db-mssql-url": "http://www.microsoft.com/sql/",
+ "version-db-sqlite-url": "https://www.sqlite.org/",
+ "version-db-mssql-url": "https://www.microsoft.com/sql/",
"version-entrypoints": "Entry point URLs",
"version-entrypoints-header-entrypoint": "Entry point",
"version-entrypoints-header-url": "URL",
"logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group membership for $3",
"logentry-rights-autopromote": "$1 was automatically {{GENDER:$2|promoted}} from $4 to $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|uploaded}} a new version of $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|uploaded}} $3",
"rightsnone": "(none)",
"revdelete-logentry": "changed revision visibility of \"[[$1]]\"",
"logdelete-logentry": "changed event visibility of \"[[$1]]\"",
"action-pagelang": "change the page language",
"log-name-pagelang": "Change language log",
"log-description-pagelang": "This is a log of changes in page languages.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} page language for $3 from $4 to $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} page language for $3 from $4 to $5.",
+ "default-skin-not-found": "Whoops! The default skin for your wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, is not available.\n\nYour installation seems to include the following skins. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable them and choose the default.\n\n$2\n\n; If you have just installed MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Cloning one of the <code>mediawiki/skins/*</code> repositories via git into the <code>skins/</code> directory of your MediaWiki installation.\n: Doing this should not interfere with your git repository if you're a MediaWiki developer.\n\n; If you have just upgraded MediaWiki:\n: MediaWiki 1.24 and newer no longer automatically enables installed skins (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). You can paste the following lines into <code>LocalSettings.php</code> to enable all currently installed skins:\n\n<pre>$3</pre>\n\n; If you have just modified <code>LocalSettings.php</code>:\n: Double-check the skin names for typos.",
+ "default-skin-not-found-no-skins": "Whoops! The default skin for your wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, is not available.\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Cloning one of the <code>mediawiki/skins/*</code> repositories via git into the <code>skins/</code> directory of your MediaWiki installation.\n: Doing this should not interfere with your git repository if you're a MediaWiki developer. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.\n",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enabled)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disabled''')"
}
"Yekrats",
"Александр Сигачёв",
"לערי ריינהארט",
- "아라"
+ "아라",
+ "Fitoschido"
]
},
"tog-underline": "Substreki ligilojn",
"hidetoc": "kaŝi",
"collapsible-collapse": "kaŝi",
"collapsible-expand": "Montri",
+ "confirmable-yes": "Jes",
+ "confirmable-no": "Ne",
"thisisdeleted": "Vidi aŭ restarigi $1?",
"viewdeleted": "Ĉu rigardi $1?",
"restorelink": "{{PLURAL:$1|unu forigitan version|$1 forigitajn versiojn}}",
"searchprofile-advanced-tooltip": "Serĉi en specialaj nomspacoj",
"search-result-size": "$1 ({{PLURAL:$2|1 vorto|$2 vortoj}})",
"search-result-category-size": "{{PLURAL:$1|1 membro|$1 membroj}} ({{PLURAL:$2|1 subkategorio|$2 subkategorioj}}, {{PLURAL:$3|1 dosiero|$3 dosieroj}})",
- "search-result-score": "Trafeco: $1%",
"search-redirect": "(alidirektilo $1)",
"search-section": "(sekcio $1)",
"search-suggest": "Ĉu vi intenciis: $1",
"uploadwarning": "Alŝuta averto",
"uploadwarning-text": "Bonvolu ŝanĝi la dosieran priskribon kaj reprovi.",
"savefile": "Konservi dosieron",
- "uploadedimage": "alŝutis \"[[$1]]\"",
- "overwroteimage": "alŝutis novan version de \"[[$1]]\"",
"uploaddisabled": "Alŝutado estas malŝaltita",
"copyuploaddisabled": "Alŝuto de URL malfunkciigita.",
"uploaddisabledtext": "Alŝutado de dosieroj estas malebligita.",
"Macofe",
"Koavf",
"Themasterriot",
- "AVIADOR"
+ "AVIADOR",
+ "F3RaN",
+ "Amitie 10g"
]
},
"tog-underline": "Subrayar los enlaces:",
"otherlanguages": "Otros idiomas",
"redirectedfrom": "(Redirigido desde «$1»)",
"redirectpagesub": "Página de redirección",
- "lastmodifiedat": "Esta página fue modificada por última vez el $1, a las $2.",
+ "lastmodifiedat": "Esta página fue modificada por última vez el $1 a las $2.",
"viewcount": "Esta página se ha visitado {{PLURAL:$1|una vez|$1 veces}}.",
"protectedpage": "Página protegida",
"jumpto": "Saltar a:",
"jumptosearch": "buscar",
"view-pool-error": "Lo sentimos, los servidores están sobrecargados en este momento.\nHay demasiados usuarios que están tratando de ver esta página.\nEspera un momento antes de tratar de acceder nuevamente a esta página.\n\n$1",
"generic-pool-error": "Lo sentimos, los servidores están sobrecargados en este momento.\nHay demasiados usuarios que están tratando de ver este recurso.\nEspera un momento antes de tratar de acceder nuevamente a este recurso.",
- "pool-timeout": "Tiempo limite agotado para el bloqueo",
+ "pool-timeout": "Se agotó el tiempo de espera del candado",
"pool-queuefull": "La cola de trabajo está llena",
"pool-errorunknown": "Error desconocido",
- "pool-servererror": "El servicio de contador de la piscina no está disponible ($1).",
+ "pool-servererror": "El servicio de gestión de procesos agrupados no está disponible ($1).",
"aboutsite": "Acerca de {{SITENAME}}",
"aboutpage": "Project:Acerca de",
- "copyright": "El contenido está disponible bajo $1 a menos que se indique lo contrario.",
+ "copyright": "El contenido está disponible bajo la licencia $1 a menos que se indique lo contrario.",
"copyrightpage": "{{ns:project}}:Derechos de autor",
"currentevents": "Actualidad",
"currentevents-url": "Project:Actualidad",
"versionrequiredtext": "Se necesita la versión $1 de MediaWiki para utilizar esta página. Para más información, consultar [[Special:Version|la página de versión]]",
"ok": "Aceptar",
"retrievedfrom": "Obtenido de «$1»",
- "youhavenewmessages": "Tienes $1 ($2).",
- "youhavenewmessagesfromusers": "Tienes $1 de {{PLURAL:$3|otro usuario|$3 usuarios}} ($2).",
+ "youhavenewmessages": "{{PLURAL:$3|Tienes}} $1 ($2).",
+ "youhavenewmessagesfromusers": "{{PLURAL:$4|Tienes}} $1 de {{PLURAL:$3|otro usuario|$3 usuarios}} ($2).",
"youhavenewmessagesmanyusers": "Tienes $1 de muchos usuarios ($2).",
"newmessageslinkplural": "{{PLURAL:$1|un mensaje nuevo|999=mensajes nuevos}}",
"newmessagesdifflinkplural": "{{PLURAL:$1|último cambio|999=últimos cambios}}",
"editlink": "modificar",
"viewsourcelink": "ver código",
"editsectionhint": "Editar sección: $1",
- "toc": "Contenidos",
+ "toc": "Contenido",
"showtoc": "mostrar",
"hidetoc": "ocultar",
"collapsible-collapse": "Contraer",
"collapsible-expand": "Expandir",
+ "confirmable-confirm": "¿Estás {{GENDER:$1|seguro|segura}}?",
+ "confirmable-yes": "Sí",
+ "confirmable-no": "No",
"thisisdeleted": "¿Ver o restaurar $1?",
"viewdeleted": "¿Quieres ver $1?",
"restorelink": "{{PLURAL:$1|una edición borrada|$1 ediciones borradas}}",
"invalidtitle-knownnamespace": "El título con el espacio de nombres «$2» y el texto «$3» no es válido",
"invalidtitle-unknownnamespace": "El título con el espacio de nombres desconocido (n.º $1) y el texto «$2» no es válido",
"exception-nologin": "No has iniciado sesión",
- "exception-nologin-text": "[[Special:Userlogin|Inicia sesión]] para acceder a esta página o acción.",
+ "exception-nologin-text": "Necesitas acceder para ver esta página o llevar a cabo esta acción.",
"exception-nologin-text-manual": "Necesitas $1 para acceder a esta página o acción.",
"virus-badscanner": "Configuración incorrecta: antivirus desconocido: <em>$1</em>",
"virus-scanfailed": "falló el análisis (código $1)",
"parser-template-recursion-depth-warning": "Se ha excedido el límite de recursión de plantillas ($1)",
"language-converter-depth-warning": "El límite de profundidad del convertidor de idioma ha excedido ($1)",
"node-count-exceeded-category": "Páginas donde se supera el número de nodos",
- "node-count-exceeded-category-desc": "Una categoría para las páginas donde se supera el número de nodos.",
+ "node-count-exceeded-category-desc": "La página supera el número máximo de nodos.",
"node-count-exceeded-warning": "Página que ha superado el número de nodos",
"expansion-depth-exceeded-category": "Páginas donde se supera la profundidad de expansión",
- "expansion-depth-exceeded-category-desc": "Esta es una categoría para las páginas donde se supera la profundidad de expansión.",
+ "expansion-depth-exceeded-category-desc": "Esta página supera el límite de extensión.",
"expansion-depth-exceeded-warning": "Página que ha superado la profundidad de expansión",
"parser-unstrip-loop-warning": "Se ha detectado un bucle \"unstrip\"",
"parser-unstrip-recursion-limit": "Se ha superado el límite de recursión de \"unstrip\" ($1)",
"nextn-title": "Próximos $1 {{PLURAL:$1|resultado|resultados}}",
"shown-title": "Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página",
"viewprevnext": "Ver ($1 {{int:pipe-separator}} $2) ($3).",
- "searchmenu-exists": "'''Hay una página llamada «[[:$1]]» en este wiki.'''",
+ "searchmenu-exists": "<strong>Hay una página llamada «[[:$1]]» en este wiki.</strong> {{PLURAL:$2|0=|Véase también los otros resultados de búsqueda encontrados.}}",
"searchmenu-new": "<strong>Crear la página «[[:$1]]» en este wiki.</strong> {{PLURAL:$2|0=|Véase también la página encontrada con la búsqueda.|Véanse también los resultados de la búsqueda.}}",
"searchprofile-articles": "Páginas de contenido",
"searchprofile-images": "Multimedia",
"searchprofile-advanced-tooltip": "Buscar en espacios de nombres personalizados",
"search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
"search-result-category-size": "{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 fichero|$3 ficheros}})",
- "search-result-score": "Relevancia: $1%",
"search-redirect": "(redirige desde $1)",
"search-section": "(sección $1)",
"search-file-match": "(coincide con el contenido del archivo)",
"preferences": "Preferencias",
"mypreferences": "Preferencias",
"prefs-edits": "Cantidad de ediciones:",
- "prefsnologintext2": "Necesitas $1 para definir las preferencias del usuario.",
+ "prefsnologintext2": "Es necesario acceder para cambiar las preferencias del usuario.",
"prefs-skin": "Apariencia",
"skin-preview": "Previsualizar",
"datedefault": "Sin preferencia",
"searchresultshead": "Búsquedas",
"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:",
+ "recentchangesdays": "Días que mostrar en Cambios recientes:",
"recentchangesdays-max": "(máximo {{PLURAL:$1|un día|$1 días}})",
- "recentchangescount": "Número de ediciones a mostrar de manera predeterminada:",
+ "recentchangescount": "N.º de ediciones que mostrar de manera predeterminada:",
"prefs-help-recentchangescount": "Esto incluye cambios recientes, historiales de página, y registros.",
"prefs-help-watchlist-token2": "Esta es la clave secreta para el canal de contenido web de tu lista de seguimiento.\nCualquier persona que la conozca podría leer tu lista, así que no la compartas.\n[[Special:ResetTokens|Pulsa aquí si necesitas restablecerla]].",
"savedprefs": "Se han guardado tus preferencias.",
"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",
- "uploadedimage": "subió «[[$1]]»",
- "overwroteimage": "subió una nueva versión de «[[$1]]»",
- "uploaddisabled": "Subida de archivos deshabilitada",
+ "uploaddisabled": "Se desactivó la carga de archivos.",
"copyuploaddisabled": "Carga por URL deshabilitada.",
- "uploaddisabledtext": "No es posible subir archivos.",
+ "uploaddisabledtext": "Se desactivó la carga de archivos.",
"php-uploaddisabledtext": "La subida de archivos está deshabilitada en PHP. Por favor compruebe <code>file_uploads</code> en php.ini.",
"uploadscripted": "Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.",
"uploadscriptednamespace": "Este archivo SVG contiene un espacio de nombre no permitido '$1'",
"index-category-desc": "La página contiene la palabra mágica <code><nowiki>__INDEX__</nowiki></code> (y está en un espacio de nombres donde la función está activada); y por ello los robots la indizarán.",
"post-expand-template-inclusion-category-desc": "Después de expandir todas las plantillas, el tamaño de la página es más grande que <code>$wgMaxArticleSize</code>, así que algunas plantillas no se expandieron.",
"post-expand-template-argument-category-desc": "Después de expandir un argumento de plantilla (algunos en tres llaves, como <code>{{{Foo}}})</code>, la página es más grande que <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Páginas que contienen demasiadas funciones sintácticas muy costosas (como <code>#ifexist</code>). Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Categoría añadida cuando una página contiene enlaces rotos a archivos (enlaces a archivos incrustados cuando el archivo no existe).",
- "hidden-category-category-desc": "Esta es una categoría con <code><nowiki>__HIDDENCAT__</nowiki></code> en ella, que evita que aparezca en el cuadro de enlace de la categoría en las páginas, de forma predeterminada.",
+ "expensive-parserfunction-category-desc": "La página usa demasiadas funciones sintácticas costosas (como <code>#ifexist</code>). Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "La página contiene un enlace roto a archivos (un enlace para incrustar un archivo cuando el archivo no existe).",
+ "hidden-category-category-desc": "La categoría contiene <code><nowiki>__HIDDENCAT__</nowiki></code> en su página de contenido, lo que evita que aparezca en el cuadro de enlaces de categorías en las páginas, de forma predeterminada.",
"trackingcategories-nodesc": "No hay descripción disponible.",
"trackingcategories-disabled": "La categoría está desactivada",
"mailnologin": "Ninguna dirección de envio",
"mywatchlist": "Lista de seguimiento",
"watchlistfor2": "Para $1 $2",
"nowatchlist": "No tienes ninguna página en tu lista de seguimiento.",
- "watchlistanontext": "Para ver o editar las entradas de tu lista de seguimiento es necesario $1.",
+ "watchlistanontext": "Es necesario acceder para ver o editar los elementos de tu lista de seguimiento.",
"watchnologin": "No has iniciado sesión",
"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í.",
"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.",
+ "delete-cantedit": "No puedes borrar esta página porque no tienes permiso de editarla.",
"deleting-backlinks-warning": "'''Advertencia:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otras páginas]] enlazan o transcluyen la página que vas a eliminar.",
"rollback": "Revertir ediciones",
"rollback_short": "Revertir",
"autoblockid": "Bloqueo automático #$1",
"block": "Bloquear usuario",
"unblock": "Desbloquear usuario",
- "blockip": "Bloquear usuario",
+ "blockip": "Bloquear {{GENDER:$1|al usuario|a la usuaria}}",
"blockip-legend": "Bloquear usuario",
"blockiptext": "Usa el siguiente formulario para bloquear el acceso de escritura desde una dirección IP específica o nombre de usuario.\nEsto debería hacerse sólo para prevenir vandalismos, y de acuerdo a las [[{{MediaWiki:Policy-url}}|políticas]].\nExplica la razón específica del bloqueo (por ejemplo, citando las páginas en particular que han sido objeto de vandalismo).",
"ipaddressorusername": "Dirección IP o nombre de usuario:",
"ipb-unblock-addr": "Desbloquear $1",
"ipb-unblock": "Desbloquear un usuario o una IP",
"ipb-blocklist": "Ver bloqueos vigentes",
- "ipb-blocklist-contribs": "Contribuciones de $1",
+ "ipb-blocklist-contribs": "Contribuciones de {{GENDER:$1|$1}}",
"unblockip": "Desbloquear usuario",
"unblockiptext": "Use el formulario a continuación para devolver los permisos de escritura a una dirección IP que ha sido bloqueada.",
"ipusubmit": "Desactivar este bloqueo",
"blocklist-userblocks": "Ocultar bloqueos de cuenta",
"blocklist-tempblocks": "Ocultar bloqueos temporales",
"blocklist-addressblocks": "Ocultar bloqueos de una sola dirección IP",
- "blocklist-rangeblocks": "Ocultar bloqueos de rango",
+ "blocklist-rangeblocks": "Ocultar bloqueos por intervalo",
"blocklist-timestamp": "Fecha y hora",
"blocklist-target": "Destino",
"blocklist-expiry": "Caduca",
"revdelete-unrestricted": "restricciones para administradores eliminadas",
"logentry-move-move": "$1 movió la página $3 a $4",
"logentry-move-move-noredirect": "$1 movió la página $3 a $4 sin dejar una redirección",
- "logentry-move-move_redir": "$1 movió la página $3 a $4 sobre una redirección",
- "logentry-move-move_redir-noredirect": "$1 movió la página $3 a $4 sobre una redirección y sin dejar una redirección",
+ "logentry-move-move_redir": "$1 {{GENDER:$2|trasladó}} la página $3 a $4 sobre una redirección",
+ "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|trasladó}} la página $3 a $4 sobre una redirección y sin dejar una redirección",
"logentry-patrol-patrol": "$1 {{GENDER:$2|marcó}} como patrullada la edición $4 de la página $3",
"logentry-patrol-patrol-auto": "$1 {{GENDER:$2|marcó}} automáticamente la edición $4 de la página $3 como patrullada",
"logentry-newusers-newusers": "La cuenta de usuario $1 ha sido {{GENDER:$2|creada}}",
"logentry-rights-rights": "$1 modificó los grupos a los que pertenece $3: de $4 a $5",
"logentry-rights-rights-legacy": "$1 modificó los grupos a los que pertenece $3",
"logentry-rights-autopromote": "$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|subió}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|subió}} una nueva versión de $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|subió}} $3",
"rightsnone": "(ninguno)",
"feedback-bugornote": "Si estás preparado para describir en detalle un problema técnico, [$1 informa de un bug] por favor.\n\nEn otro caso, puedes usar el siguiente formulario. Tu comentario será añadido a la página [$3 $2], junto con tu nombre de usuario y el navegador que usas.",
"feedback-subject": "Asunto:",
"action-pagelang": "cambiar el idioma de la página",
"log-name-pagelang": "Registro de cambios en idiomas",
"log-description-pagelang": "Este es un registro de los cambios en los idiomas de las páginas.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambió}} el idioma de la página «$3» del $4 al $5.",
+ "default-skin-not-found": "¡Oops! La apariencia por defecto de la wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, no está disponible.\n\nLa instalación parece poseer las siguientes opciones de apariencia. Por favor revise [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] para mayor información sobre cómo configurarla y seleccionar la apariencia por defecto.\n\n$2\n\n; Si acaba de instalar MediaWiki:\n: Probablemente la haya instalado desde git, o directamente desde el código fuente usando algún otro método. Esto es lo esperado. Intente instalar algunos sets de apariencia desde [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory]:\n:* Descargando [https://www.mediawiki.org/wiki/Download el instalador tarball], el cual contiene varios sets de apariencia y extensiones. Puede copiar y pegar el directorio <code>skins/</code> desde ahi.\n:* Clonando uno de los repositorios en <code>mediawiki/skins/*</code> via git dentro del directorio <code>skins/</code> de su instaación de MediaWiki.\n: Haciendo esto no debería interferir con su repositorio git si usted es un desarrollador de MediaWiki.\n\n; Si acaba de actualizar MediaWiki:\n: MediaWiki 1.24 y versiones posteriores ya no tiene habilitada la actualización de apariencia (revise [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Puede pegar las siguientes lineas <code>LocalSettings.php</code> para habilitar todos los sets de apariencia que haya configurado:\n\n<pre>$3</pre>\n\n; Si acaba de modificar <code>LocalSettings.php</code>:\n: Compruebe detenidamente posibles errores tipográficos en los nombres de los sets de apariencias.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activado)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desactivado''')"
}
"Silvar",
"Võrok",
"WikedKentaur",
- "לערי ריינהארט"
+ "לערי ריינהארט",
+ "Boxmein"
]
},
"tog-underline": "Linkide allakriipsutus:",
"hidetoc": "peida",
"collapsible-collapse": "Peida",
"collapsible-expand": "Näita",
+ "confirmable-confirm": "Kas {{GENDER:$1|oled}} kindel?",
+ "confirmable-yes": "Jah",
+ "confirmable-no": "Ei",
"thisisdeleted": "Vaata $1 või taasta?",
"viewdeleted": "Vaata $1?",
"restorelink": "{{PLURAL:$1|üht|$1}} kustutatud versiooni",
"invalidtitle-knownnamespace": "Vigane pealkiri nimeruumis \"$2\" tekstiga \"$3\"",
"invalidtitle-unknownnamespace": "Vigane pealkiri nimeruuminumbriga $1 ja tekstiga \"$2\"",
"exception-nologin": "Sisse logimata",
- "exception-nologin-text": "Selle lehekülje või toimingu jaoks [[Special:Userlogin|logi]] palun sisse.",
+ "exception-nologin-text": "Selle lehekülje või toimingu jaoks logi palun sisse.",
"exception-nologin-text-manual": "Pead $1, et sellele leheküljele või toimingule ligi pääseda.",
"virus-badscanner": "Viga konfiguratsioonis: tundmatu viirusetõrje: ''$1''",
"virus-scanfailed": "skaneerimine ebaõnnestus (veakood $1)",
"parser-template-recursion-depth-warning": "Malli rekursiivse kasutamise limiit on ületatud ($1)",
"language-converter-depth-warning": "Keeleteisendaja sügavuspiir ületatud ($1)",
"node-count-exceeded-category": "Ületatud sõlmemääraga leheküljed",
- "node-count-exceeded-category-desc": "Ületatud sõlmemääraga lehekülgede kategooria.",
+ "node-count-exceeded-category-desc": "Lehekülg ületab sõlmede ülemmäära.",
"node-count-exceeded-warning": "Lehekülg ületas sõlmemäära.",
"expansion-depth-exceeded-category": "Ületatud hõrendussügavusega leheküljed",
- "expansion-depth-exceeded-category-desc": "Ületatud hõrendussügavusega lehekülgede kategooria.",
+ "expansion-depth-exceeded-category-desc": "Lehekülg ületab hõrendussügavuse ülemmäära.",
"expansion-depth-exceeded-warning": "Lehekülg ületas hõrendussügavuse.",
"converter-manual-rule-error": "Tõrge keelevariandi käsivahetusreeglis",
"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.",
"searchprofile-advanced-tooltip": "Otsi kohandatud nimeruumidest",
"search-result-size": "$1 ({{PLURAL:$2|1 sõna|$2 sõna}})",
"search-result-category-size": "{{PLURAL:$1|1 lehekülg|$1 lehekülge}} ({{PLURAL:$2|1 alamkategooria|$2 alamkategooriat}}, {{PLURAL:$3|1 fail|$3 faili}})",
- "search-result-score": "Vastavus: $1%",
"search-redirect": "(ümbersuunamine $1)",
"search-section": "(alaosa $1)",
"search-file-match": "(vastab faili sisule)",
"preferences": "Eelistused",
"mypreferences": "Eelistused",
"prefs-edits": "Redigeerimiste arv:",
- "prefsnologintext2": "Pead $1, et oma eelistusi muuta.",
+ "prefsnologintext2": "Palun logi sisse, et oma eelistusi muuta.",
"prefs-skin": "Kujundus",
"skin-preview": "eelvaade",
"datedefault": "Eelistus puudub",
"uploadwarning": "Üleslaadimise hoiatus",
"uploadwarning-text": "Muuda allpool olevat faili kirjeldust ning proovi uuesti.",
"savefile": "Salvesta fail",
- "uploadedimage": "laadis üles faili \"[[$1]]\"",
- "overwroteimage": "laadis üles faili \"[[$1]]\" uue versiooni",
"uploaddisabled": "Üleslaadimine hetkel keelatud",
"copyuploaddisabled": "Internetiaadressilt üleslaadimine on keelatud.",
"uploaddisabledtext": "Faili üleslaadimine on keelatud.",
"index-category-desc": "Leheküljel on <code><nowiki>__INDEX__</nowiki></code> ja lehekülg on nimeruumis, kus see silt on lubatud ning seetõttu indekseerivad robotid lehekülge seal, kus nad muidu seda ei teeks.",
"post-expand-template-inclusion-category-desc": "Kõigi mallide hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>, mistõttu jäid mõned mallid hõrendamata.",
"post-expand-template-argument-category-desc": "Malli argumendi (midagi kolmekordsete looksulgude vahel, näiteks <code>{{{Foo}}})</code> hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Leheküljel on liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
- "broken-file-category-desc": "Kategooria lisatakse, kui leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
+ "expensive-parserfunction-category-desc": "Lehekülg kasutab liiga palju kulukaid parserifunktsioone nagu <code>#ifexist</code>. Vaata [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit dokumentatsiooni].",
+ "broken-file-category-desc": "Leheküljel on katkine pildilink, millega manustatakse fail, mida pole olemas.",
"hidden-category-category-desc": "Selle kategooria leheküljel on <code><nowiki>__HIDDENCAT__</nowiki></code>, mis vaikimisi ei lase näidata seda kategooriat lehekülgedel kategoorialinkide kastis.",
"trackingcategories-nodesc": "Kirjeldus puudub.",
"trackingcategories-disabled": "Kategooria on keelatud.",
"mywatchlist": "Jälgimisloend",
"watchlistfor2": "Kasutaja $1 $2 jaoks",
"nowatchlist": "Sinu jälgimisloend on tühi.",
- "watchlistanontext": "Oma jälgimisloendi nägemiseks ja muutmiseks pead $1.",
+ "watchlistanontext": "Palun logi sisse, et oma jälgimisloendit näha või muuta.",
"watchnologin": "Ei ole sisse logitud",
"addwatch": "Lisa jälgimisloendisse",
"addedwatchtext": "Lehekülg \"[[:$1]]\" on lisatud sinu [[Special:Watchlist|jälgimisloendisse]].\nEdasised muudatused sellel leheküljel ja seotud aruteluleheküljel tuuakse ära jälgimisloendis.",
"delete-edit-reasonlist": "Redigeeri kustutamise põhjuseid",
"delete-toobig": "See lehekülg on pika redigeerimisajalooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.\nSelle 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}}.\nEttevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.",
+ "delete-cantedit": "Seda lehekülge ei saa kustutada, kuna sul pole õigust seda redigeerida.",
"deleting-backlinks-warning": "'''Hoiatus:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Teised leheküljed]] viitavad leheküljele, mida oled kustutamas, või see lehekülg on kasutuses mallina.",
"rollback": "Tühista muudatused",
"rollback_short": "Tühista",
"autoblockid": "Automaatblokeering #$1",
"block": "Kasutaja blokeerimine",
"unblock": "Kasutaja blokeeringu eemaldamine",
- "blockip": "Kasutaja blokeerimine",
+ "blockip": "Blokeeri {{GENDER:$1|kasutaja}}",
"blockip-legend": "Kasutaja blokeerimine",
"blockiptext": "See vorm on kindla IP-aadressi või kasutajanime kirjutamisõiguste blokeerimiseks.\nSeda tohib teha ainult vandalismi vältimiseks ja kooskõlas [[{{MediaWiki:Policy-url}}|{{GRAMMAR:genitive|{{SITENAME}}}} sisekorraga]].\nTäida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.",
"ipaddressorusername": "IP-aadress või kasutajanimi:",
"logentry-rights-rights": "$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust; enne oli $4, nüüd on $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust",
"logentry-rights-autopromote": "$1 {{GENDER:$2|viidi}} automaatselt üle teise rühma; enne oli $4, nüüd on $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|laadis üles}} faili $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|laadis üles}} uue versiooni failist $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|laadis üles}} faili $3",
"rightsnone": "(puudub)",
"feedback-bugornote": "Kui arvad, et oskad tehnilist probleemi üksikasjalikult kirjeldada, [$1 teata veast].\nKui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajanime ja teabega kasutatava võrgulehitsejaga kohta leheküljele \"[$3 $2]\".",
"feedback-subject": "Teema:",
"searchprofile-advanced-tooltip": "Lankideen izen zehatzetan bilatu",
"search-result-size": "$1 ({{PLURAL:$2|hitz bat|$2 hitz}})",
"search-result-category-size": "{{PLURAL:$1|kide 1|$1 kide}} ({{PLURAL:$2|azpikategoria 1|$2 azpikategoria}}, {{PLURAL:$3|fitxategi 1|$3 fitxategi}})",
- "search-result-score": "Garrantzia: %$1",
"search-redirect": "(«$1» orritik birbideratua)",
"search-section": "($1 atala)",
"search-suggest": "$1 esan nahi zenuen",
"uploadwarning": "Igotzeko oharra",
"uploadwarning-text": "Aldatu beheko fitxategiaren deskribapena, mesedez, eta saiatu berriz.",
"savefile": "Fitxategia gorde",
- "uploadedimage": "\"[[$1]]\" igo da",
- "overwroteimage": "\"[[$1]]\"ren bertsio berri bat igo",
"uploaddisabled": "Igoerak ezgaituta daude",
"copyuploaddisabled": "URL bidezko igoera desaktibatuta.",
"uploaddisabledtext": "Fitxategiak igotzea ezgaituta dago.",
"watchlist-details": "{{PLURAL:$1|Orrialde $1|$1 orrialde}} jarraitzen, eztabaida orrialdeak kontuan hartu gabe.",
"wlheader-enotif": "Posta bidezko ohartarazpena gaituta dago.",
"wlheader-showupdated": "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude.",
+ "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",
"watching": "Zerrendan gehitzen...",
"confirm-purge-bottom": "Orrialdea purgatzean katxea ezabatzen du eta orrialdearen bertsiorik eguneratuena erakustera behartzen du.",
"confirm-watch-button": "Ados",
"confirm-unwatch-button": "Ados",
+ "quotation-marks": "«$1»",
"imgmultipageprev": "← aurreko orrialdea",
"imgmultipagenext": "hurrengo orrialdea →",
"imgmultigo": "Joan!",
"talkpagelinktext": "Caraba",
"specialpage": "Página Especial",
"personaltools": "Herramientas presonalis",
- "postcomment": "Nueva seción",
"articlepage": "Vel artículu",
"talk": "Caraba",
"views": "Guipás",
"externaldberror": "Marru d'autentificación esterna e la basi e datus, u bien nu t'alcuentras autorizau p'atualizal la tu cuenta esterna.",
"login": "Entral",
"nav-login-createaccount": "Entral/Crial cuenta",
- "loginprompt": "Ebis atival las cookies pa entral en {{SITENAME}}.",
"userlogin": "Entral/Crial cuenta",
"userloginnocreate": "Entral",
"logout": "Salil",
"searchprofile-images-tooltip": "Landeal archivus",
"searchprofile-everything-tooltip": "Landeal tol conteniu (encruyendu carabas)",
"search-result-size": "$1 ({{PLURAL:$2|1 letra|$2 letras}})",
- "search-result-score": "Emportáncia: $1%",
"search-redirect": "(rederihil $1)",
"search-section": "(seción $1)",
"search-suggest": "Quieis izil: $1",
"file-exists-duplicate": "Esti archivu es un dupricau {{PLURAL:$1|el siguienti archivu|los siguientis archivus}}:",
"uploadwarning": "Avisu d´empuntu",
"savefile": "Emburacal archivu",
- "uploadedimage": "emputau \"[[$1]]\"",
- "overwroteimage": "empuntá una nueva velsión de \"[[$1]]\"",
"uploaddisabled": "Empuntus desativaus",
"uploaddisabledtext": "El empuntu d'archivus está desativau.",
"uploadscripted": "Esti archivu contieni script u cóigu HTML que puei sel mal entelpretau pol un escrucaol.",
"watchlist-details": "{{PLURAL:$1|$1 artículu|$1 artículus}} vehilaus (sin contal las carabas).",
"wlheader-enotif": "Se premitin notificacionis pol email.",
"wlheader-showupdated": "Las páhinas que s'án emburacau dendi la úrtima vezi que las visoreasti son muestrás en '''negrina'''",
+ "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",
"watching": "Vehilandu...",
"tog-watchdefault": "صفحهها و پروندههایی که ویرایش میکنم به فهرست پیگیریهایم افزوده شود",
"tog-watchmoves": "صفحهها و پروندههایی که منتقل میکنم به فهرست پیگیریهایم افزوده شود",
"tog-watchdeletion": "صفحهها و پروندههایی که حذف میکنم به فهرست پیگیریهایم افزوده شود",
+ "tog-watchrollback": "افزودن صفحاتی که واگردانی کردم برای فهرست پیگیریهایم",
"tog-minordefault": "همهٔ ویرایشها به طور پیشفرض به عنوان «جزئی» علامت بخورد",
"tog-previewontop": "پیشنمایش قبل از جعبهٔ ویرایش نمایش یابد",
"tog-previewonfirst": "پیشنمایش هنگام اولین ویرایش نمایش یابد",
"hidetoc": "نهفتن",
"collapsible-collapse": "نهفتن",
"collapsible-expand": "گسترش",
+ "confirmable-yes": "بله",
+ "confirmable-no": "خیر",
"thisisdeleted": "نمایش یا احیای $1؟",
"viewdeleted": "نمایش $1؟",
"restorelink": "{{PLURAL:$1|یک|$1}} ویرایش حذفشده",
"revdelete-radio-set": "پنهان",
"revdelete-radio-unset": "نمایان",
"revdelete-suppress": "از دسترسی مدیران به داده نیز مانند سایر کاربران جلوگیری به عمل آید.",
- "revdelete-unsuppress": "خاتمهٔ محدودیتها در مورد نسخههای انتخاب شده",
+ "revdelete-unsuppress": "خاتمهٔ محدودیتها در مورد نسخههای انتخابشده",
"revdelete-log": "دلیل:",
"revdelete-submit": "اعمال بر {{PLURAL:$1|نسخهٔ|نسخههای}} انتخاب شده",
"revdelete-success": "'''پیدایی نسخه با موفقیت به روز شد.'''",
"difference-multipage": "(تفاوت بین صفحهها)",
"lineno": "سطر $1:",
"compareselectedversions": "مقایسهٔ نسخههای انتخابشده",
- "showhideselectedversions": "نمایش/نهفتن نسخههای انتخاب شده",
+ "showhideselectedversions": "نمایش/نهفتن نسخههای انتخابشده",
"editundo": "خنثیسازی",
"diff-empty": "(بدون تفاوت)",
"diff-multi-sameuser": "({{PLURAL:$1|یک نسخهٔ میانی|$1 نسخهٔ میانی}} توسط کاربر مشابهی که نشان داده نشده)",
"searchprofile-advanced-tooltip": "جستجو در فضاهای نام دلخواه",
"search-result-size": "$1 ({{PLURAL:$2|یک واژه|$2 واژه}})",
"search-result-category-size": "{{PLURAL:$1|یک عضو|$1 عضو}} ({{PLURAL:$2|یک زیررده|$2 زیررده}}، {{PLURAL:$3|یک پرونده|$3 پرونده}})",
- "search-result-score": "ارتباط: $1٪",
"search-redirect": "(تغییرمسیر $1)",
"search-section": "(بخش $1)",
"search-file-match": "(تشابه محتوی پرونده)",
"uploadwarning": "هشدار بارگذاری",
"uploadwarning-text": "لطفاً توضیحات پرونده را در زیر تغییر دهید و دوباره تلاش کنید.",
"savefile": "ذخیرهٔ پرونده",
- "uploadedimage": "«[[$1]]» را بارگذاری کرد",
- "overwroteimage": "نسخه جدیدی از «[[$1]]» را بارگذاری کرد",
"uploaddisabled": "بارگذاری غیرفعال است.",
"copyuploaddisabled": "بارگذاری از طریق نشانی اینترنتی غیرفعال است.",
"uploaddisabledtext": "امکان بارگذاری پرونده غیرفعال است.",
"nolicense": "هیچ کدام انتخاب نشدهاست",
"licenses-edit": "گزینههای مجوز ویرایش",
"license-nopreview": "(پیشنمایش وجود ندارد)",
- "upload_source_url": "(یک نشانی اینترنتی معتبر و قابل دسترسی برای عموم)",
- "upload_source_file": "(پرÙ\88Ù\86دÙ\87â\80\8cاÛ\8c در راÛ\8cاÙ\86Ù\87Ù\94 Ø´Ù\85ا)",
+ "upload_source_url": "(شما یک پرونده انتخاب از یک URL معتبر و دسترس عموم انتخاب کردید)",
+ "upload_source_file": "(پرÙ\88Ù\86دÙ\87â\80\8cاÛ\8c از راÛ\8cاÙ\86Ù\87Ù\94 Ø´Ù\85ا اÙ\86تخاب شدÙ\87â\80\8cاست)",
"listfiles-delete": "حذف",
"listfiles-summary": "این صفحهٔ ویژه تمام پروندههای بارگذاریشده را نمایش میدهد.",
"listfiles_search_for": "جستجو به دنبال نام پرونده چندرسانهای:",
"alllogstext": "نمایش یکجای تمام سیاهههای موجود در {{SITENAME}}.\nمیتوانید با انتخاب نوع سیاهه، نام کاربری (حساس به کوچکی و بزرگی حروف) و صفحههای تغییریافته (حساس به بزرگی و کوچکی حروف)، نمایش را محدودتر سازید.",
"logempty": "مورد منطبق با منظور شما در سیاهه یافت نشد.",
"log-title-wildcard": "صفحههایی را جستجو کن که عنوانشان با این عبارت آغاز میشود",
- "showhideselectedlogentries": "نمایش/نهفتن موارد انتخابی در سیاهه",
+ "showhideselectedlogentries": "تغییر پدیداری موارد انتخابشده در سیاهه",
"allpages": "همهٔ صفحهها",
"nextpage": "صفحهٔ بعد ($1)",
"prevpage": "صفحهٔ قبلی ($1)",
"watchlist-details": "بدون احتساب صفحههای جداگانهٔ بحث، {{PLURAL:$1|$1 صفحه|$1 صفحه}} در فهرست پیگیریهای شما قرار {{PLURAL:$1|دارد|دارند}}.",
"wlheader-enotif": "آگاهسازی رایانامهای فعال است.",
"wlheader-showupdated": "صفحههایی که پس از آخرین بازدید شما تغییر کردهاند '''پررنگ''' نمایش داده شدهاند.",
- "wlnote": "در زیر {{PLURAL:$1|تغییری|$1 تغییری}} که در {{PLURAL:$2|ساعت|$2 ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4",
+ "wlnote": "در زیر {{PLURAL:$1|تغییری|<strong>$1</strong> تغییری}} که در {{PLURAL:$2|ساعت|<strong>$2</strong> ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4",
"wlshowlast": "نمایش آخرین $1 ساعت $2 روز $3",
"watchlist-options": "گزینههای پیگیری",
"watching": "پیگیری...",
"logentry-rights-rights": "$1 عضویت $3 را از گروه $4 به $5 {{GENDER:$2|تغییر داد}}",
"logentry-rights-rights-legacy": "$1 گروه عضویت $3 را {{GENDER:$2|تغییر داد}}",
"logentry-rights-autopromote": "$1 به طور خودکار از $4 به $5 {{GENDER:$2|ارتقاء داد}}",
+ "logentry-upload-upload": "$1 {{GENDER:$2|بارگذاری کرد}} $3",
+ "logentry-upload-overwrite": "$1 یک نسخهٔ جدید {{GENDER:$2|بارگذاریکرد}} $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|بارگذاری کرد}} $3",
"rightsnone": "(هیچ)",
"feedback-bugornote": "اگر آمادهاید تا مشکلی فنی را با جزئیاتش شرح دهید لطفاً [$1 یک ایراد گزارش دهید]. در غیر این صورت میتوانید از فرم سادهٔ زیر استفاده کنید. نظر شما به همراه نام کاربری و مرورگرتان به صفحهٔ «[$3 $2]» افزوده خواهد شد.",
"feedback-subject": "موضوع:",
"action-pagelang": "تغییر زبان صفحه",
"log-name-pagelang": "تغییر سیاههٔ زبان",
"log-description-pagelang": "این سیاههٔ تغییرات صفحهٔ زبانها است.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای $3 از $4 به $5 ."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2| تغییریافت}} زبان صفحه برای $3 از $4 به $5 .",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (فعال)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''غیر فعال''')"
}
"underline-never": "Ei koskaan",
"underline-default": "Ulkoasun tai selaimen oletustapa",
"editfont-style": "Muokkauskentän kirjasintyyppi",
- "editfont-default": "Selaimen oletus",
+ "editfont-default": "Selaimen vakioasetus",
"editfont-monospace": "Tasalevyinen kirjasin",
"editfont-sansserif": "Sans-serif-kirjasin",
"editfont-serif": "Serif-kirjasin",
"hidetoc": "piilota",
"collapsible-collapse": "Supista",
"collapsible-expand": "Laajenna",
+ "confirmable-confirm": "Oletko varma?",
+ "confirmable-yes": "Kyllä",
+ "confirmable-no": "Ei",
"thisisdeleted": "Näytä tai palauta $1?",
"viewdeleted": "Näytä $1?",
"restorelink": "{{PLURAL:$1|yksi poistettu muokkaus|$1 poistettua muokkausta}}",
"invalidtitle-knownnamespace": "Virheellinen sivunimi, nimiavaruus \"$2\" ja teksti \"$3\"",
"invalidtitle-unknownnamespace": "Virheellinen sivunimi, tuntematon nimiavaruus numero $1 ja teksti \"$2\"",
"exception-nologin": "Et ole kirjautunut sisään",
- "exception-nologin-text": "Ole hyvä ja [[Special:Userlogin|kirjaudu sisään]], niin pääset tälle sivulle tai tähän toimintoon.",
+ "exception-nologin-text": "Ole hyvä ja kirjaudu sisään, niin pääset tälle sivulle tai tähän toimintoon.",
"exception-nologin-text-manual": "Sinun pitää $1 jotta pääset tälle sivulle tai toimintoon.",
"virus-badscanner": "Virheellinen asetus: Tuntematon virustutka: ''$1''",
"virus-scanfailed": "virustarkistus epäonnistui virhekoodilla $1",
"parser-template-recursion-depth-warning": "Mallineen rekursioraja ylittyi ($1)",
"language-converter-depth-warning": "Kielimuuntimen syvyysraja ylittyi ($1)",
"node-count-exceeded-category": "Sivut, joissa solmumäärä on ylitetty",
- "node-count-exceeded-category-desc": "Luokka sivuille, joissa solmujen lukumäärä (node-count) on ylitetty.",
- "node-count-exceeded-warning": "Sivu ylitti solmumäärän",
+ "node-count-exceeded-category-desc": "Tämä sivu ylittää suurimman sallitun solmujen lukumäärän (node count).",
+ "node-count-exceeded-warning": "Sivu ylitti solmumäärän (node count)",
"expansion-depth-exceeded-category": "Sivut, joissa laajentamissyvyys on ylitetty",
- "expansion-depth-exceeded-category-desc": "Tämä on luokka sivuille, joissa laajentamissyvyys (expansion depth) on ylitetty.",
+ "expansion-depth-exceeded-category-desc": "Tämä sivu ylittää suurimman sallitun laajentamissyvyyden (expansion depth).",
"expansion-depth-exceeded-warning": "Sivu ylitti laajentamissyvyyden.",
"parser-unstrip-loop-warning": "Unstrip-silmukka havaittiin",
"parser-unstrip-recursion-limit": "Unstrip-rekursion enimmäissyvyys ($1) ylitettiin",
"suppressionlog": "Häivytysloki",
"suppressionlogtext": "Alla on luettelo poistoista ja muokkausestoista, jotka sisältävät ylläpitäjiltä piilotettua materiaalia.\n[[Special:BlockList|Estolistassa]] on lueteltu voimassa olevat muokkauskiellot ja muokkausestot.",
"mergehistory": "Yhdistä sivujen muutoshistoriat",
- "mergehistory-header": "Tämä sivu mahdollistaa sivun muutoshistorian yhdistämisen uudemman sivun muutoshistoriaan.\nUuden ja vanhan sivun muutoksien pitää muodostaa jatkumo – ne eivät saa mennä ristikkäin.",
- "mergehistory-box": "Yhdistä kahden sivun muutoshistoria",
- "mergehistory-from": "Lähdesivu",
- "mergehistory-into": "Kohdesivu",
+ "mergehistory-header": "Tällä sivulla voit yhdistää lähdesivun sivuhistorian versioita uudemman sivun historiaan.\nVarmista, että sivujen yhtenäinen muokkaushistoria säilyy eikä mene ristikkäin sekaisin!",
+ "mergehistory-box": "Yhdistä kahden sivun versioita:",
+ "mergehistory-from": "Lähdesivu:",
+ "mergehistory-into": "Kohdesivu:",
"mergehistory-list": "Sivuhistoria, joka voidaan yhdistää",
- "mergehistory-merge": "Seuraavat sivun [[:$1]] muutokset voidaan liittää sivun [[:$2]] muutoshistoriaan. Voit valita version, jota myöhempiä muutoksia ei liitetä. Selainlinkkien käyttäminen kadottaa tämän valinnan.",
- "mergehistory-go": "Etsi muutokset",
+ "mergehistory-merge": "Seuraavat versiot sivusta [[:$1]] voidaan yhdistää sivuun [[:$2]]. \n\nValintamerkin sijoituksella voit yhdistää vain ne versiot, jotka on luotu valittuna ajankohtana tai sitä ennen (listassa alaspäin). \nOta huomioon, että jos käytät navigaatiolinkkejä, tekemäsi valinta poistuu.",
+ "mergehistory-go": "Etsi muokkaukset, jotka voidaan yhdistää",
"mergehistory-submit": "Yhdistä versiot",
- "mergehistory-empty": "Ei liitettäviä muutoksia.",
- "mergehistory-success": "{{PLURAL:$3|Yksi versio|$3 versiota}} sivusta [[:$1]] liitettiin sivuun [[:$2]].",
- "mergehistory-fail": "Muutoshistorian liittäminen epäonnistui. Tarkista määritellyt sivut ja versiot.",
+ "mergehistory-empty": "Mitään versioita ei voida yhdistää.",
+ "mergehistory-success": "$3 {{PLURAL:$3|versio|versiota}} sivusta [[:$1]] yhdistettiin onnistuneesti sivuun [[:$2]].",
+ "mergehistory-fail": "Sivuhistorioiden yhdistämistä ei voida suorittaa. Tarkista lähde- ja kohdesivujen nimet sekä versioiden aikamääritys.",
"mergehistory-fail-toobig": "Sivuhistorian yhdistämistä ei voi tehdä, koska enemmän kuin sallittu määrä $1 {{PLURAL:$1|versio|versiota}} siirrettäisiin.",
"mergehistory-no-source": "Lähdesivua $1 ei ole olemassa.",
"mergehistory-no-destination": "Kohdesivua $1 ei ole olemassa.",
- "mergehistory-invalid-source": "Lähdesivulla pitää olla kelvollinen nimi.",
- "mergehistory-invalid-destination": "Kohdesivulla pitää olla kelvollinen nimi.",
- "mergehistory-autocomment": "Yhdisti sivun [[:$1]] sivuun [[:$2]]",
+ "mergehistory-invalid-source": "Lähdesivun nimen pitää olla kelvollinen.",
+ "mergehistory-invalid-destination": "Kohdesivun nimen pitää olla kelvollinen.",
+ "mergehistory-autocomment": "Ak: Yhdisti sivun [[:$1]] sivuun [[:$2]]",
"mergehistory-comment": "Yhdisti sivun [[:$1]] sivuun [[:$2]]: $3",
"mergehistory-same-destination": "Lähde- ja kohdesivut eivät voi olla samat",
"mergehistory-reason": "Syy:",
"mergelog": "Yhdistämisloki",
- "pagemerge-logentry": "liitti sivun [[$1]] sivuun [[$2]] (muokkaukseen $3 asti)",
- "revertmerge": "Kumoa yhdistäminen",
+ "pagemerge-logentry": "yhdisti kohteen [[$1]] kohteeseen [[$2]] (muokkaukseen $3 saakka)",
+ "revertmerge": "Peru yhdistäminen",
"mergelogpagetext": "Alla on loki viimeisimmistä muutoshistorioiden yhdistämisistä.",
"history-title": "Sivun ”$1” muutoshistoria",
"difference-title": "Ero sivun ”$1” versioiden välillä",
"searchprofile-advanced-tooltip": "Etsi määritellyistä nimiavaruuksista",
"search-result-size": "$1 ({{PLURAL:$2|1 sana|$2 sanaa}})",
"search-result-category-size": "{{PLURAL:$1|1 jäsen|$1 jäsentä}} ({{PLURAL:$2|1 alaluokka|$2 alaluokkaa}}, {{PLURAL:$3|1 tiedosto|$3 tiedostoa}})",
- "search-result-score": "Asiaankuuluvuus: $1%",
"search-redirect": "(ohjaus $1)",
"search-section": "(osio $1)",
"search-file-match": "(vastaa tiedoston sisältöä)",
"preferences": "Asetukset",
"mypreferences": "Asetukset",
"prefs-edits": "Muokkauksia",
- "prefsnologintext2": "Sinun pitää $1 ennen kuin voit muuttaa käyttäjän asetuksia.",
+ "prefsnologintext2": "Sinun pitää kirjautua sisään ennen kuin voit muuttaa omia asetuksiasi.",
"prefs-skin": "Ulkoasu",
"skin-preview": "esikatselu",
"datedefault": "Ei omaa määrittelyä",
"group-bot": "botit",
"group-sysop": "ylläpitäjät",
"group-bureaucrat": "byrokraatit",
- "group-suppress": "häivytysoikeuden käyttäjät",
+ "group-suppress": "häivyttäjät",
"group-all": "(kaikki)",
"group-user-member": "{{GENDER:$1|käyttäjä}}",
"group-autoconfirmed-member": "{{GENDER:$1|automaattisesti hyväksytty käyttäjä}}",
"group-bot-member": "{{GENDER:$1|botti}}",
"group-sysop-member": "{{GENDER:$1|ylläpitäjä}}",
"group-bureaucrat-member": "{{GENDER:$1|byrokraatti}}",
- "group-suppress-member": "{{GENDER:$1|häivytysoikeuden käyttäjä}}",
+ "group-suppress-member": "{{GENDER:$1|häivyttäjä}}",
"grouppage-user": "{{ns:project}}:Käyttäjät",
"grouppage-autoconfirmed": "{{ns:project}}:Automaattisesti hyväksytyt käyttäjät",
"grouppage-bot": "{{ns:project}}:Botit",
"recentchangeslinked-feed": "Linkitettyjen sivujen muutokset",
"recentchangeslinked-toolbox": "Linkitettyjen sivujen muutokset",
"recentchangeslinked-title": "Sivulta $1 linkitettyjen sivujen muutokset",
- "recentchangeslinked-summary": "Tämä toimintosivu näyttää muutokset sivuihin, joihin on viitattu tältä sivulta. [[Special:Watchlist|Tarkkailulistallasi]] olevat sivut on '''lihavoitu'''.",
+ "recentchangeslinked-summary": "Tämä on luettelo muutoksista, jotka on viimeksi tehty niihin sivuihin, joihin johtaa linkki tietystä sivusta (tai jonkun määrätyn luokan sisältämistä sivuista). Omalla [[Special:Watchlist|tarkkailulistallasi]] olevat sivut on <strong>lihavoitu</strong>.",
"recentchangeslinked-page": "Sivu",
- "recentchangeslinked-to": "Näytä muutokset sivuihin, joilla on linkki annettuun sivuun",
+ "recentchangeslinked-to": "Näytä sen sijaan muutokset sivuihin, joista on linkki tähän sivuun",
"upload": "Tallenna tiedosto",
"uploadbtn": "Tallenna tiedosto",
"reuploaddesc": "Peruuta tallennus ja palaa tallennuslomakkeelle.",
"uploadwarning": "Tallennusvaroitus",
"uploadwarning-text": "Muuta alla olevaa tiedostokuvausta ja yritä uudelleen.",
"savefile": "Tallenna",
- "uploadedimage": "tallensi tiedoston [[$1]]",
- "overwroteimage": "tallensi uuden version [[$1]]",
"uploaddisabled": "Tiedostojen tallennus ei ole käytössä.",
"copyuploaddisabled": "Tallennus URL:n kautta on poistettu käytöstä.",
"uploaddisabledtext": "Tiedostojen tallennus on poistettu käytöstä.",
"upload_source_file": "(valitsemasi tiedosto omasta tietokoneestasi)",
"listfiles-delete": "poista",
"listfiles-summary": "Tämä toimintosivu näyttää kaikki tallennetut tiedostot.",
- "listfiles_search_for": "Nimihaku",
+ "listfiles_search_for": "Etsi tiedoston nimellä:",
"imgfile": "tiedosto",
"listfiles": "Tiedostoluettelo",
"listfiles_thumb": "Pienoiskuva",
"filerevert-success": "'''[[Media:$1|$1]]''' on palautettu takaisin [$4 versioon, joka luotiin $2 kello $3].",
"filerevert-badversion": "Tiedostosta ei ole luotu versiota kyseisellä ajan hetkellä.",
"filedelete": "Poistetaan tiedosto $1",
- "filedelete-legend": "Tiedoston poisto",
- "filedelete-intro": "Olet poistamassa tiedoston '''[[Media:$1|$1]]''' ja kaiken sen historian.",
+ "filedelete-legend": "Poista tiedosto",
+ "filedelete-intro": "Olet poistamassa tiedoston '''[[Media:$1|$1]]''' ja lisäksi koko sen muokkaushistorian.",
"filedelete-intro-old": "<span class=\"plainlinks\">Olet poistamassa tiedoston '''[[Media:$1|$1]]''' [$4 päivämäärällä $2 kello $3 luotua versiota].</span>",
"filedelete-comment": "Syy:",
"filedelete-submit": "Poista",
"protectedtitles": "Suojatut sivunimet",
"protectedtitles-summary": "Tällä sivulla on lueteltu ne sivut, jotka on tällä hetkellä suojattu uudelleenluonnilta. Nähdäksesi luettelon olemassaolevista suojatuista sivuista katso [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
"protectedtitlesempty": "Ei suojattuja sivunimiä näillä hakuehdoilla.",
- "listusers": "Käyttäjälista",
+ "listusers": "Käyttäjien luettelo",
"listusers-editsonly": "Näytä vain käyttäjät, joilla on muokkauksia",
"listusers-creationsort": "Lajittele tunnuksen luontipäivämäärän mukaan",
"listusers-desc": "Lajittele alenevassa järjestyksessä",
"trackingcategories-desc": "Kriteerit luokkaan joutumiselle",
"noindex-category-desc": "Tätä sivua eivät hakurobotit indeksoi, koska sivulla on taikasana <code><nowiki>__NOINDEX__</nowiki></code> ja koska sivu on sellaisessa nimiavaruudessa, jossa taikasanan käyttö on sallittua.",
"index-category-desc": "Tällä sivulla on koodi <code><nowiki>__INDEX__</nowiki></code> ja sivu on sellaisessa nimiavaruudessa, jossa koodin käyttö on sallittua. Tämän vuoksi hakurobotit indeksoivat tämän sivun, vaikka ilman koodia sivua ei indeksoitaisi normaalisti.",
- "post-expand-template-inclusion-category-desc": "Jos kaikki mallineet laajennetaan, sivun koko on suurempi kuin <code>$wgMaxArticleSize</code>. Tämän vuoksi kaikkia mallineita ei laajennettu.",
- "post-expand-template-argument-category-desc": "Kun mallineen argumentti on laajennettu (argumentti on merkkijono kolmen kaarisulun sisällä kuten <code>{{{Foo}}}</code>), sivu on suurempi kuin <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Liian monta resursseja vaativaa jäsenninfunktiota (esimerkiksi <code>#ifexist</code>) on sisällytetty sivulle. Katso [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Tämä luokka sisältää ne sivut, joissa on rikkinäinen tiedostolinkki. Tällä tarkoitetaan linkkiä sellaiseen tiedostoon, jota ei olemassa.",
- "hidden-category-category-desc": "Tämä on luokka, joka sisältää koodin <code><nowiki>__HIDDENCAT__</nowiki></code>. Koodi estää luokan näkymisen sivujen alareunassa olevassa luokkien laatikossa oletusarvoisesti.",
+ "post-expand-template-inclusion-category-desc": "Sivun koko on suurempi kuin <code>$wgMaxArticleSize</code>, kun kaikki mallineet on laajennettu. Tämän vuoksi joitakin mallineita ei laajennettu.",
+ "post-expand-template-argument-category-desc": "Sivu on suurempi kuin <code>$wgMaxArticleSize</code>, kun mallineen argumentti on laajennettu (argumentti on merkkijono kolmen aaltosulun sisällä kuten <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "Tämä sivu käyttää liian monta resursseja vaativaa jäsenninfunktiota (kuten <code>#ifexist</code>). Katso [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "Tämä sivu sisältää rikkinäisen tiedostolinkin. Tällä tarkoitetaan linkkiä sellaiseen tiedostoon, jota ei olemassa.",
+ "hidden-category-category-desc": "Tämä luokka sisältää koodin <code><nowiki>__HIDDENCAT__</nowiki></code> sen tekstisisällössä. Koodi estää luokan näkymisen sivujen alareunassa olevassa luokkien laatikossa kuten yleensä.",
"trackingcategories-nodesc": "Ei kuvausta olemassa.",
"trackingcategories-disabled": "Luokka on poistettu käytöstä",
"mailnologin": "Lähettäjän osoite puuttuu",
"mywatchlist": "Tarkkailulista",
"watchlistfor2": "Käyttäjälle $1 $2",
"nowatchlist": "Tarkkailulistallasi ei ole sivuja.",
- "watchlistanontext": "Sinun täytyy $1, jos haluat käyttää tarkkailulistaa.",
+ "watchlistanontext": "Sinun täytyy kirjautua sisään, jos haluat muokata kohteita omalla tarkkailulistallasi.",
"watchnologin": "Et ole kirjautunut sisään",
"addwatch": "Lisää tarkkailulistalle",
"addedwatchtext": "Sivu '''[[:$1]]''' on lisätty [[Special:Watchlist|tarkkailulistallesi]].\nTulevaisuudessa sivuun ja sen keskustelusivuun tehtävät muutokset listataan täällä.",
"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ä.",
+ "delete-cantedit": "Et voi poistaa tätä sivua, koska sinulla ei ole oikeutta sen muokkaamiseen.",
"deleting-backlinks-warning": "'''Varoitus:''' Sivulle, jota olet poistamassa, johtaa [[Special:WhatLinksHere/{{FULLPAGENAME}}|linkkejä muilta sivuilta]], tai sivu on sisällytetty muuhun sivuun.",
"rollback": "palauta aiempaan versioon",
"rollback_short": "Palautus",
"protectlogpage": "Suojausloki",
"protectlogtext": "Alla on loki muutoksista sivujen suojauksiin. Luettelo tällä hetkellä suojatuista sivuista löytyy [[Special:ProtectedPages|suojattujen sivujen luettelosta]].",
"protectedarticle": "suojasi sivun [[$1]]",
- "modifiedarticleprotection": "muutti sivun [[$1]] suojaustasoa",
+ "modifiedarticleprotection": "muutti sivun [[$1]] suojausasetuksia",
"unprotectedarticle": "poisti suojauksen sivulta [[$1]]",
"movedarticleprotection": "siirsi suojausasetukset sivulta [[$2]] sivulle [[$1]]",
"protect-title": "Muuta suojausta sivulla ”$1”",
- "protect-title-notallowed": "Sivun $1 suojaustaso",
+ "protect-title-notallowed": "Katsele kohteen $1 suojauksen tasoa",
"prot_1movedto2": "siirsi sivun [[$1]] uudelle nimelle [[$2]]",
"protect-badnamespace-title": "Nimiavaruus ei suojattavissa",
"protect-badnamespace-text": "Tämän nimiavaruuden sivuja ei voi suojata.",
"autoblockid": "Automaattinen esto #$1",
"block": "Estä käyttäjä",
"unblock": "Poista käyttäjän esto",
- "blockip": "Estä käyttäjä",
+ "blockip": "Estä {{GENDER:$1|käyttäjä}}",
"blockip-legend": "Estä käyttäjä",
"blockiptext": "Tällä toiminnolla voit estää käyttäjätunnusta tai IP-osoitetta muokkaamasta.<br />\nTällainen muokkausesto pitäisi asettaa vain vandalismin torjumiseksi ja [[{{MediaWiki:Policy-url}}|käytännön]] mukaisesti.\nKirjoita eston syy alla olevaan kenttään.",
"ipaddressorusername": "IP-osoite tai käyttäjätunnus",
"ipb-unblock-addr": "Poista käyttäjän $1 esto",
"ipb-unblock": "Poista käyttäjän tai IP-osoitteen muokkausesto",
"ipb-blocklist": "Näytä voimassa olevat estot",
- "ipb-blocklist-contribs": "Käyttäjän $1 muokkaukset",
+ "ipb-blocklist-contribs": "Käyttäjän {{GENDER:$1|$1}} muokkaukset",
"unblockip": "Muokkauseston poisto käyttäjältä",
"unblockiptext": "Tällä lomakkeella voit poistaa käyttäjän tai IP-osoitteen muokkauseston.",
"ipusubmit": "Poista tämä esto",
"movetalk": "Siirrä myös keskustelusivu",
"move-subpages": "Siirrä kaikki alasivut (enintään $1)",
"move-talk-subpages": "Siirrä kaikki keskustelusivun alasivut (enintään $1)",
- "movepage-page-exists": "Sivu $1 on jo olemassa ja sitä ei voi automaattisesti korvata.",
+ "movepage-page-exists": "Sivu $1 on jo olemassa ja sen päälle ei voida automaattisesti siirtää.",
"movepage-page-moved": "Sivu $1 on siirretty nimelle $2.",
"movepage-page-unmoved": "Sivua $1 ei voitu siirtää nimelle $2.",
"movepage-max-pages": "Enimmäismäärä sivuja on siirretty, eikä enempää siirretä enää automaattisesti.\n$1 {{PLURAL:$1|sivu|sivua}} siirrettiin.",
"export-pagelinks": "Sisällytä linkkien kohteina olevat sivut syvyydelle:",
"allmessages": "Järjestelmäviestit",
"allmessagesname": "Nimi",
- "allmessagesdefault": "Oletusarvo",
- "allmessagescurrent": "Nykyinen arvo",
+ "allmessagesdefault": "Viestin tekstin perusmuoto",
+ "allmessagescurrent": "Viestin teksti tällä hetkellä",
"allmessagestext": "Tämä on luettelo järjestelmäviesteistä, jotka ovat saatavilla MediaWiki-nimiavaruudessa.\nJos haluat muokata MediaWikin yleistä kotoistusta, käy [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWikin kotoistussivuilla] ja sivustolla [//translatewiki.net translatewiki.net].",
"allmessagesnotsupportedDB": "Tämä sivu ei ole käytössä, koska <tt>$wgUseDatabaseMessages</tt>-asetus on pois päältä.",
"allmessages-filter-legend": "Suodata",
"logentry-newusers-autocreate": "Käyttäjätunnus $1 {{GENDER:$2|luotiin}} automaattisesti",
"logentry-rights-rights": "$1 {{GENDER:$2|muutti}} käyttäjän $3 oikeudet ryhmistä $4 ryhmiin $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|muutti}} käyttäjän $3 jäsenyyttä ryhmässä",
- "logentry-rights-autopromote": "$1 {{GENDER:$2|muutettiin}} automaattisesti ryhmistä $4 ryhmiin $5",
+ "logentry-rights-autopromote": "Käyttäjän $1 oikeudet {{GENDER:$2|muuttuivat}} automaattisesti ryhmistä $4 ryhmiin $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|tallensi}} tiedoston $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|tallensi}} uuden version tiedostosta $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|tallensi}} tiedoston $3",
"rightsnone": "(ei oikeuksia)",
"feedback-bugornote": "Jos voit kuvailla teknisen ongelman tarkasti – [$1 ilmoita ohjelmointivirheestä].\nMuussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi lisätään sivulle [$3 $2], ja siinä on mukana käyttäjätunnuksesi.",
"feedback-subject": "Otsikko",
"api-error-illegal-filename": "Tiedoston nimi ei kelpaa.",
"api-error-internal-error": "Sisäinen virhe: jotain meni vikaan tallennuksesi käsittelyssä.",
"api-error-invalid-file-key": "Sisäinen virhe: tiedostoa ei löytynyt välikaisvarastosta.",
- "api-error-missingparam": "Sisäinen virhe: pyynnöstä puutuu parametrejä.",
+ "api-error-missingparam": "Sisäinen virhe: pyynnöstä puutuu parametreja.",
"api-error-missingresult": "Sisäinen virhe: ei voitu varmistaa, että tallennus onnistui.",
"api-error-mustbeloggedin": "Sinun pitää olla kirjautunut sisään, jotta voisit tallentaa tiedostoja.",
"api-error-mustbeposted": "Sisäinen virhe: HTTP POST-pyyntö edellytetty.",
"action-pagelang": "muuttaa sivun kieliasetuksia",
"log-name-pagelang": "Kielenvaihtoloki",
"log-description-pagelang": "Tämä on loki, johon merkitään muutokset sivujen kieliasetuksissa.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} sivun kieltä sivulla $3 kielestä $4 kieleksi $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutti}} sivun kieltä sivulla $3 kielestä $4 kieleksi $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (käytössä)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ei käytössä''')"
}
"@metadata": {
"authors": [
"Kaganer",
- "Mestos"
+ "Mestos",
+ "아라"
]
},
"tog-underline": "Linkitten alleviivaus",
"tog-showtoolbar": "Näytä työneuvopalkki (JavaScript)",
"tog-editondblclick": "Mookkaa sivuja kaksoisknapituksella (JavaScript)",
"tog-editsectiononrightclick": "Aktiveeraa seksuuni mookkaus oikeapuolen klikkauksella seksuuni tittelhiin (JavaScript)",
- "tog-rememberpassword": "Muista minun lokkauksen tässä weppilukijassa (eninthään $1 {{PLURAL:$1|päivä|päivää}})",
"tog-watchcreations": "Lissää sivut mitä luon valvontasivule",
"tog-watchdefault": "Lissää sivut mitä mie mookkaan valvontasivule",
"tog-watchmoves": "Lissää sivut mitä mie siirän minun valvontasivule",
"qbmyoptions": "Minun inställninkit",
"faq": "Useasti kysytyt kysymykset",
"faqpage": "Project:Useasti kysytyt kysymykset",
- "vector-action-addsection": "Lissää aine",
- "vector-action-delete": "Ota poies",
- "vector-action-move": "Siirä",
- "vector-action-protect": "Suojaa",
- "vector-action-undelete": "Pane takashiin",
- "vector-action-unprotect": "Muuta suojaa",
- "vector-view-create": "Luo",
- "vector-view-edit": "Mookkaa",
- "vector-view-history": "Näytä histuuria",
- "vector-view-view": "Lue",
- "vector-view-viewsource": "Näytä lähekooti",
"actions": "Toiminat",
"namespaces": "Nimityhjyyet",
"variants": "Varianttia",
"remembermypassword": "Muista minun lokkauksen tässä taattorissa (korkeinthaans $1 {{PLURAL:$1|päivä|päivää}})",
"login": "Lokkaa sisäle",
"nav-login-createaccount": "Lokkaa sisäle / luo konttu",
- "loginprompt": "Lokkauksheen tähhään {{SITENAME}} tarvithaan ette olet aktiveeranu kuukit .",
"userlogin": "Lokkaa sisäle/ luo konttu",
"userlogout": "Lokkaa ulos",
"nologin": "Eikos sulla ole käyttäjäkonttua, '''$1'''.",
"searchmenu-exists": "'''Sivu [[:$1]] löytyy tästä wikistä.'''",
"searchmenu-new": "'''Luo sivu ''[[:$1]]'' tähhaän wikhiin.'''",
"searchprofile-articles": "Sisältösivut",
- "searchprofile-project": "Apu ja prujektisivut",
"searchprofile-images": "Mylttimeetia",
"searchprofile-everything": "Kaikki",
"searchprofile-advanced": "Avanseerattu",
"searchprofile-articles-tooltip": "Hae nimityhjyyestä $1",
- "searchprofile-project-tooltip": "Hae nimityhjyyestä $1",
"searchprofile-images-tooltip": "Hae fiiliä",
"searchprofile-everything-tooltip": "Hae kaikesta (keskustelusivut kans)",
"searchprofile-advanced-tooltip": "Hae tietyissä nimityhjyissä",
"recentchanges-label-bot": "Tämän muutoksen teki botti",
"recentchanges-label-unpatrolled": "Tätä muutosta ei ole vielä tarkistettu",
"rcnotefrom": "Alla on muutokset '''$2'''lähtien. (korkeinthaans '''$1''' näytethään).",
- "rclistfrom": "Näytä uuet muutokset jälkhiin $1",
+ "rclistfrom": "Näytä uuet muutokset jälkhiin $3 $2",
"rcshowhideminor": "$1 pienet muutokset",
"rcshowhidebots": "$1 ropootit",
"rcshowhideliu": "\n$1 sisäle lokaattuja käyttäjiä",
"upload": "Lattaa ylös fiili",
"uploadlogpage": "Ylöslattauksen loki",
"filedesc": "Yhteenveto",
- "uploadedimage": "lattasi ylös [[$1]]",
"license": "Lisensi",
"license-header": "Lisensi",
"file-anchor-link": "Fiili",
"booksources-go": "Mene",
"log": "Lokit",
"allpages": "Kaikki sivut",
- "alphaindexline": "$1…$2",
"allarticles": "Kaikki sivut",
"allpagessubmit": "Mene",
"categories": "Katekuurit",
"talkpagelinktext": "Kjak",
"specialpage": "Serstøk síða",
"personaltools": "Persónlig amboð",
- "postcomment": "Nýtt brot",
"articlepage": "Vís síðu við innihaldi",
"talk": "Kjak",
"views": "Skoðanir",
"externaldberror": "Antin var talan um ein atgongd dátubasu feil, ella hevur tú ikki loyvi til at dagføra tína eksternu kontu.",
"login": "Rita inn",
"nav-login-createaccount": "Stovna kontu ella rita inn",
- "loginprompt": "Cookies má verða sett til fyri at innrita á {{SITENAME}}.",
"userlogin": "Stovna kontu ella rita inn",
"userloginnocreate": "Rita inn",
"logout": "Útrita",
"searchprofile-advanced-tooltip": "Leita í ávísum navnaøkjum",
"search-result-size": "$1 ({{PLURAL:$2|1 orð|$2 orð}})",
"search-result-category-size": "{{PLURAL:$1|1 limur|$1 limir}} ({{PLURAL:$2|1 undirbólkur|$2 undirbólkar}}, {{PLURAL:$3|1 fíla|$3 fílur}})",
- "search-result-score": "Viðkomandi: $1%",
"search-redirect": "(umstilling $1)",
"search-section": "(sektión $1)",
"search-suggest": "Meinti tú: $1",
"uploadwarning": "Ávaring",
"uploadwarning-text": "Vinarliga broyt frágreiðingina fyri fíluna og royn umaftur.",
"savefile": "Goym fílu",
- "uploadedimage": "sent \"[[$1]]\" upp",
- "overwroteimage": "legði út eina nýggja versjón av \"[[$1]]\"",
"uploaddisabled": "Útleggjan av fílum er óvirkin.",
"copyuploaddisabled": "Útleggjan frá URL er óvirkið.",
"uploaddisabledtext": "Útleggjan av fílum er óvirkið.",
"watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á tínum vaktarlista, kjaksíður ikki íroknaðar.",
"wlheader-enotif": "Tað ber nú til at senda teldupost.",
"wlheader-showupdated": "Síður sum eru broyttar síðan tú seinast vitjaði tær, eru vístar við '''feitum'''.",
+ "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",
"watching": "Eftirlitir...",
"hidetoc": "masquer",
"collapsible-collapse": "masquer",
"collapsible-expand": "afficher",
+ "confirmable-confirm": "Êtes-vous sûr{{GENDER:||e|(e)}} ?",
+ "confirmable-yes": "Oui",
+ "confirmable-no": "Non",
"thisisdeleted": "Désirez-vous afficher ou restaurer $1 ?",
"viewdeleted": "Voir $1 ?",
"restorelink": "{{PLURAL:$1|la modification effacée|les $1 modifications effacées}}",
"invalidtitle-knownnamespace": "Titre invalide avec l'espace de noms « $2 » et l'intitulé « $3 »",
"invalidtitle-unknownnamespace": "Titre invalide avec le numéro d'espace de noms $1 et l'intitulé « $2 » inconnus",
"exception-nologin": "Non connecté",
- "exception-nologin-text": "Veuillez [[Special:Userlogin|vous connecter]] pour pouvoir accéder à cette page ou cette action.",
+ "exception-nologin-text": "Veuillez vous connecter pour pouvoir accéder à cette page ou cette action.",
"exception-nologin-text-manual": "Veuillez $1 pour pouvoir accéder à cette page ou cette action.",
"virus-badscanner": "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
"virus-scanfailed": "Échec de la recherche (code $1)",
"virus-unknownscanner": "antivirus inconnu :",
- "logouttext": "'''Vous êtes à présent déconnecté.'''\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
+ "logouttext": "'''Vous êtes à présent déconnecté{{GENDER:||e|(e)}}.'''\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
"welcomeuser": "Bienvenue, $1 !",
"welcomecreation-msg": "Votre compte a été créé.\nN'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]].",
"yourname": "Nom d'utilisateur :",
"resetpass-submit-cancel": "Annuler",
"resetpass-wrong-oldpass": "Mot de passe actuel ou temporaire invalide.\nVous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.",
"resetpass-recycled": "Veuillez réinitialiser votre mot de passe à quelque chose d’autre que l’actuel.",
- "resetpass-temp-emailed": "Vous êtes connecté avec un code temporaire fourni par courriel.\nPour terminer la connexion, vous devez fournir un nouveau mot de passe ici :",
+ "resetpass-temp-emailed": "Vous êtes connecté{{GENDER:||e|(e)}} avec un code temporaire fourni par courriel.\nPour terminer la connexion, vous devez fournir un nouveau mot de passe ici :",
"resetpass-temp-password": "Mot de passe temporaire :",
"resetpass-abort-generic": "La modification du mot de passe a été annulée par une extension.",
"resetpass-expired": "Votre mot de passe a expiré. Veuillez en fournir un nouveau pour vous connecter.",
"passwordreset-capture-help": "Si vous cochez cette case, le courriel (avec le mot de passe temporaire) vous sera affiché en même temps qu'il sera envoyé à l'utilisateur.",
"passwordreset-email": "Adresse de courriel :",
"passwordreset-emailtitle": "Détails du compte sur {{SITENAME}}",
- "passwordreset-emailtext-ip": "Quelqu'un (probablement vous, depuis l'adresse IP $1) a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
- "passwordreset-emailtext-user": "L'utilisateur $1 sur {{SITENAME}} a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+ "passwordreset-emailtext-ip": "Quelqu'un (probablement vous, depuis l'adresse IP $1) a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu{{GENDER:||e|(e)}} de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+ "passwordreset-emailtext-user": "L'utilisateur $1 sur {{SITENAME}} a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu{{GENDER:||e|(e)}} de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
"passwordreset-emailelement": "Nom d'utilisateur : $1\nMot de passe temporaire : $2",
"passwordreset-emailsent": "Un courriel de réinitialisation de mot de passe a été envoyé.",
"passwordreset-emailsent-capture": "Un courriel de réinitialisation de mot de passe a été envoyé, qui est affiché ci-dessous.",
- "passwordreset-emailerror-capture": "Un courriel de réinitialisation de mot de passe a été généré, qui est affiché ci-dessous, mais l'envoi à l'{{GENDER:$2|utilisateur}} a échoué : $1",
+ "passwordreset-emailerror-capture": "Un courriel de réinitialisation de mot de passe a été généré, qui est affiché ci-dessous, mais l'envoi à l'{{GENDER:$2|utilisateur|utilisatrice}} a échoué : $1",
"changeemail": "Changer l’adresse de courriel",
"changeemail-header": "Changer l’adresse de courriel du compte",
"changeemail-text": "Remplissez ce formulaire pour changer votre adresse de courriel. Vous devrez entrer votre mot de passe pour confirmer ce changement.",
"content-failed-to-parse": "Échec de l’analyse syntaxique du contenu de $2 pour le modèle $1: $3",
"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.\nSi vous êtes connecté, vous pouvez désactiver cet avertissement dans la section « {{int:prefs-editing}} » de vos préférences.",
+ "editwarning-warning": "Quitter cette page vous fera perdre toutes les modifications que vous avez faites.\nSi vous êtes connecté{{GENDER:||e|(e)}}, 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-model-wikitext": "wikitexte",
"parser-template-recursion-depth-warning": "Limite de profondeur des appels de modèles dépassée ($1)",
"language-converter-depth-warning": "Limite de profondeur du convertisseur de langue dépassée ($1)",
"node-count-exceeded-category": "Pages où nombre de nœuds est dépassé",
- "node-count-exceeded-category-desc": "Une catégorie pour les pages où le nombre de nœuds est dépassé.",
+ "node-count-exceeded-category-desc": "Cette page dépasse le nombre maximal de nœuds.",
"node-count-exceeded-warning": "Page dépassant le nombre de nœuds",
"expansion-depth-exceeded-category": "Pages où la profondeur d'expansion est dépassée",
- "expansion-depth-exceeded-category-desc": "Ceci est une catégorie pour les pages où la profondeur d’expansion est dépassée.",
+ "expansion-depth-exceeded-category-desc": "La page dépasse la profondeur d’expansion maximale.",
"expansion-depth-exceeded-warning": "Page dépassant la profondeur d'expansion",
"parser-unstrip-loop-warning": "Boucle non démontable détectée",
"parser-unstrip-recursion-limit": "Limite de récursion non démontable dépassée ($1)",
"revdelete-nooldid-title": "Version cible non valide",
"revdelete-nooldid-text": "Vous n'avez pas précisé la version cible de cette fonction, elle n'existe pas, ou il s'agit de la version actuelle.",
"revdelete-no-file": "Le fichier spécifié n'existe pas.",
- "revdelete-show-file-confirm": "Êtes-vous sûr de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?",
+ "revdelete-show-file-confirm": "Êtes-vous sûr{{GENDER:||e|(e)}} de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?",
"revdelete-show-file-submit": "Oui",
"revdelete-selected-text": "{{PLURAL:$1|Révision sélectionnée|Révisions sélectionnées}} de [[:$2]] :",
"revdelete-selected-file": "{{PLURAL:$1|Version de fichier sélectionnée|Versions de fichier sélectionnées}} de [[:$2]] :",
"searchprofile-advanced-tooltip": "Choisir les espaces de noms pour la recherche",
"search-result-size": "$1 ($2 mot{{PLURAL:$2||s}})",
"search-result-category-size": "$1 membre{{PLURAL:$1||s}} ($2 sous-catégorie{{PLURAL:$2||s}}, $3 fichier{{PLURAL:$3||s}})",
- "search-result-score": "Pertinence : $1%",
"search-redirect": "(redirection depuis $1)",
"search-section": "(section $1)",
"search-file-match": "(correspond au contenu du fichier)",
"preferences": "Préférences",
"mypreferences": "Préférences",
"prefs-edits": "Nombre de modifications :",
- "prefsnologintext2": "Veuillez $1 pour définir les préférences utilisateur.",
+ "prefsnologintext2": "Veuillez vous connecter pour modifier vos préférences.",
"prefs-skin": "Habillage",
"skin-preview": "Prévisualiser",
"datedefault": "Aucune préférence",
"userrights-lookup-user": "Gestion des groupes d'utilisateurs",
"userrights-user-editname": "Entrez un nom d'utilisateur :",
"editusergroup": "Modification des groupes d'utilisateurs",
- "editinguser": "Modification des droits de l'{{GENDER:$1|utilisateur|utilisatrice}} '''[[User:$1|$1]]''' $2",
+ "editinguser": "Modification des droits de l'{{GENDER:$1|utilisateur|utilisatrice}} <strong>[[User:$1|$1]]</strong>' $2",
"userrights-editusergroup": "Modifier les groupes de l'utilisateur",
"saveusergroups": "Enregistrer les groupes de l'utilisateur",
"userrights-groupsmember": "Membre de :",
"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é.",
"copyuploaddisabled": "Import de fichier par URL désactivé.",
"uploaddisabledtext": "L’import de fichiers est désactivé sur ce wiki.",
"trackingcategories-desc": "Critère d’inclusion de la catégorie",
"noindex-category-desc": "La page contient <code><nowiki>__NOINDEX__</nowiki></code> et est dans un espace de noms où ce marquage est autorisé ; elle ne sera donc pas indexée par les robots.",
"index-category-desc": "La page contient <code><nowiki>__INDEX__</nowiki></code> et est dans un espace de noms où ce marquage est autorisé ; elle sera donc indexée par les robots alors qu’elle ne l’aurait pas été normalement.",
- "post-expand-template-inclusion-category-desc": "Après avoir développé tous les modèles, la taille de la page dépasse <code>$wgMaxArticleSize</code> ; certains modèles n’ont donc pas été développés.",
- "post-expand-template-argument-category-desc": "Après avoir développé l’argument d’un modèle (quelque chose entre accolades triples, comme <code>{{{Foo}}}</code>), la page dépasse <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Trop de fonctions coûteuses de l’analyseur (comme <code>#ifexist</code>) sont incluses dans une page. Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "La catégorie ajoutée sur la page contient un lien de fichier incorrect (un lien pour inclure un fichier alors que celui-ci n’existe pas).",
- "hidden-category-category-desc": "Catégorie contenant <code><nowiki>__HIDDENCAT__</nowiki></code>, ce qui empêche son affichage dans la zone des liens de catégorie sur les pages, par défaut.",
+ "post-expand-template-inclusion-category-desc": "La taille de la page dépasse <code>$wgMaxArticleSize</code> après le développement de tous ses modèles ; certains n’ont donc pas été développés.",
+ "post-expand-template-argument-category-desc": "La page dépasse <code>$wgMaxArticleSize</code> après avoir développé l’argument d’un modèle (quelque chose entre accolades triples, comme <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "La page utilise trop de fonctions coûteuses de l’analyseur (comme <code>#ifexist</code>). Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "La page contient un lien de fichier incorrect (un lien pour inclure un fichier alors que celui-ci n’existe pas).",
+ "hidden-category-category-desc": "La catégorie contient <code><nowiki>__HIDDENCAT__</nowiki></code> dans son contenu, ce qui empêche son affichage dans la zone des liens de catégorie sur les pages, par défaut.",
"trackingcategories-nodesc": "Aucune description disponible.",
"trackingcategories-disabled": "La catégorie est désactivée",
"mailnologin": "Pas d'adresse d'expéditeur",
"mywatchlist": "Liste de suivi",
"watchlistfor2": "Pour $1 $2",
"nowatchlist": "Votre liste de suivi ne référence aucune page.",
- "watchlistanontext": "Veuillez vous $1 pour visualiser ou modifier les éléments de votre liste de suivi.",
+ "watchlistanontext": "Veuillez vous connecter pour visualiser ou modifier les éléments de votre liste de suivi.",
"watchnologin": "Non connecté",
"addwatch": "Ajouter à la liste de suivi",
"addedwatchtext": "La page « [[:$1]] » a été ajoutée à votre [[Special:Watchlist|liste de suivi]].\nLes prochaines modifications de cette page et de la page de discussion associée y seront répertoriées.",
"delete-edit-reasonlist": "Modifier les motifs de suppression de page",
"delete-toobig": "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.\nLa suppression de telles pages a été restreinte pour prévenir des perturbations accidentelles de {{SITENAME}}.",
"delete-warning-toobig": "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.\nLa supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;\nveuiller ne procéder qu'avec prudence.",
+ "delete-cantedit": "Vous ne pouvez pas supprimer cette page car vous n’avez pas le droit de la modifier.",
"deleting-backlinks-warning": "'''Attention :''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|D’autres pages]] ont un lien vers ou incorporent la page que vous allez supprimer.",
"rollback": "Révoquer les modifications",
"rollback_short": "Révoquer",
"autoblockid": "Blocage automatique #$1",
"block": "Bloquer l’utilisateur",
"unblock": "Débloquer l’utilisateur",
- "blockip": "Bloquer l’utilisateur",
+ "blockip": "Bloquer l’{{GENDER:$1|utilisateur|utilisatrice}}",
"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.\nUne telle mesure ne devrait être prise que pour prévenir le vandalisme et en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].\nDonnez ci-dessous un motif précis (par exemple en citant les pages qui ont été vandalisées).",
"ipaddressorusername": "Adresse IP ou nom d'utilisateur :",
"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",
+ "ipb-blocklist-contribs": "Contributions pour {{GENDER:$1|$1}}",
"unblockip": "Débloquer un utilisateur ou une adresse IP",
"unblockiptext": "Utilisez le formulaire ci-dessous pour redonner les droits d’écriture à une adresse IP ou un nom d’utilisateur.",
"ipusubmit": "Supprimer ce blocage",
"logentry-rights-rights": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3 de $4 à $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|a téléchargé}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléchargé}} une nouvelle version de $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|a téléchargé}} $3",
"rightsnone": "(aucun)",
"feedback-bugornote": "Si vous êtes prêt à décrire un problème technique en détail, veuillez [$1 signaler un bogue].\nSinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentaire sera ajouté à la page « [$3 $2] », avec votre nom d'utilisateur.",
"feedback-subject": "Objet :",
"action-pagelang": "changer la langue de la page",
"log-name-pagelang": "Tracer les changements de langue",
"log-description-pagelang": "Ceci est un journal des changements dans les langues des pages.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a changé}} la langue de la page $3 de $4 à $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a changé}} la langue de la page $3 de $4 à $5.",
+ "default-skin-not-found": "Oups ! L’habillage par défaut pour votre wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, n’est pas disponible.\n\nVotre installation semble inclure les habillages suivants. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de configuration des habillages] pour savoir comment les activer et choisir celui par défaut.\n\n$2\n\n; Si vous venez juste d’installer MédiaWiki :\n: Vous l’avez probablement installé depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en:\n:* Téléchargeant le [https://www.mediawiki.org/wiki/Download fichier tar de l’installeur], qui comprend plusieurs habillages et extensions. Vous pouvez copier et coller le répertoire <code>skins/</code> depuis là.\n:* Clonant un des dépôts <code>mediawiki/skins/*</code> via git dans le répertoire <code>skins/</code> de votre installation de MédiaWiki.\n: Faire ainsi ne devrait pas interférer avec votre dépôt git, si vous êtes un développeur de MédiaWiki.\n\n; Si vous venez juste de mettre à jour MédiaWiki :\n: MédiaWiki 1.24 et au-delà n’active plus automatiquement les habillages installés (voyez [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery le manuel sur la découverte automatique des habillages]). Vous pouvez coller les lignes suivantes dans <code>LocalSettings.php</code> pour activer tous les habillages actuellement installés :\n\n<pre>$3</pre>\n\n; Si vous venez de modifier <code>LocalSettings.php</code> :\n: Vérifiez deux fois le nom des habillages pour éviter les erreurs de frappe.",
+ "default-skin-not-found-no-skins": "Oups ! L’habillage par défaut pour votre wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, n’est pas disponible.\n\nVous n’avez aucun habillage d’installé.\n\n; Si vous venez juste d’installer ou de mettre à jour MédiaWiki :\n: Vous l’avez sans doute fait depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. MédiaWiki 1.24 et au-delà n’inclut aucun habillage dans le dépôt principal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en :\n:* Téléchargeant [https://www.mediawiki.org/wiki/Download le fichier tar de l’installeur], qui comprend différents habillages et extensions. Vous pouvez copier et coller le répertoire <code>skins/</code> depuis là.\n:*Clonant un des dépôts <code>mediawiki/skins/*</code> via git dans le répertoire <code>skins/</code> de votre installation de MédiaWiki.\n: Faire ainsi ne devrait pas interférer avec votre dépôt git si vous êtes un développeur de MédiaWiki. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de la configuration des habillages] pour des instructions sur la manière d’activer les habillages et choisir celui par défaut.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activé)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''désactivé''')"
}
"talkpagelinktext": "discutar",
"specialpage": "Pâge spèciâla",
"personaltools": "Outils a sè",
- "postcomment": "Novèla sèccion",
"articlepage": "Vêde la pâge de contegnu",
"talk": "Discussion",
"views": "Vues",
"externaldberror": "Ou ben na fôta est arrevâye avouéc la bâsa de balyês d’ôtentificacion de defôr ou ben vos éte pas ôtorisâ{{GENDER:||ye|(ye)}} a betar a jorn voutron compto de defôr.",
"login": "Branchement",
"nav-login-createaccount": "Sè branchiér / fâre un compto",
- "loginprompt": "Vos dête activar los tèmouens (''cookies'') por vos branchiér a {{SITENAME}}.",
"userlogin": "Sè branchiér / fâre un compto",
"userloginnocreate": "Sè branchiér",
"logout": "Sè dèbranchiér",
"searchprofile-advanced-tooltip": "Chouèsir los èspâços de noms por la rechèrche",
"search-result-size": "$1 ($2 mot{{PLURAL:$2||s}})",
"search-result-category-size": "$1 membro{{PLURAL:$1||s}} ($2 sot-catègorie{{PLURAL:$2||s}}, $3 fichiér{{PLURAL:$3||s}})",
- "search-result-score": "Rapôrt : $1%",
"search-redirect": "(redirèccion dês $1)",
"search-section": "(sèccion $1)",
"search-suggest": "Voléd-vos dére : $1",
"uploadwarning": "Semonce pendent lo tèlèchargement",
"uploadwarning-text": "Se vos plét, changiéd la dèscripcion du fichiér ce-desot et pués tornâd èprovar.",
"savefile": "Encartar lo fichiér",
- "uploadedimage": "at tèlèchargiê « [[$1]] »",
- "overwroteimage": "at tèlèchargiê na novèla vèrsion de « [[$1]] »",
"uploaddisabled": "Tèlèchargements dèsactivâs.",
"copyuploaddisabled": "Tèlèchargement per URL dèsactivâ.",
"uploaddisabledtext": "Los tèlèchargements de fichiérs sont dèsactivâs.",
"watchlist-details": "Y at $1 pâge{{PLURAL:$1||s}} dedens voutra lista de siuvu, sen comptar les pâges de discussion.",
"wlheader-enotif": "La notificacion per mèssageria èlèctronica est activâye.",
"wlheader-showupdated": "Les pâges que sont étâyes changiêes dês voutra dèrriére visita sont montrâyes en '''grâs'''.",
+ "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",
"watching": "Siuvu...",
"duplicate-defaultsort": "'''Atencion :''' la cllâf de tri per dèfôt « $2 » ècllafe cela « $1 ».",
"version": "Vèrsion",
"version-extensions": "Èxtensions enstalâs",
+ "version-skins": "Habelyâjos",
"version-specialpages": "Pâges spèciâles",
"version-parserhooks": "Grèfons du parsor",
"version-variables": "Variâbles",
"version-antispam": "Prèvencion du spame",
- "version-skins": "Habelyâjos",
"version-other": "De totes sôrtes",
"version-mediahandlers": "Maneyors de mèdia",
"version-hooks": "Grèfons",
"talkpagelinktext": "Diskusjuun",
"specialpage": "Spezial-sidj",
"personaltools": "Min werktjüügen",
- "postcomment": "Nei kirew",
"articlepage": "Artiikel wise",
"talk": "Diskusjuun",
"views": "Uunsichten",
"externaldberror": "Deer läit en fäägel bai jü äkstärn autentifisiiring for, unti dü möist din äkstärn brükerkonto äi aktualisiire.",
"login": "Uunmelde",
"nav-login-createaccount": "Melde di uun of skriiw di iin",
- "loginprompt": "För't uunmeldin tu {{SITENAME}} skel bi dan browser cookies aktiwiaret wees.",
"userlogin": "Melde di uun of skriiw di iin",
"userloginnocreate": "Uunmelde",
"logout": "Ufmelde",
"searchprofile-advanced-tooltip": "Uun ööder nöömrümer schük",
"search-result-size": "$1 ({{PLURAL:$2|1 wurd|$2 wurden}})",
"search-result-category-size": "{{PLURAL:$1|1 sidj|$1 sidjen}} ({{PLURAL:$2|1 onerkategorii|$2 onerkategoriin}}, {{PLURAL:$3|1 datei|$3 datein}})",
- "search-result-score": "Relewans: $1 %",
"search-redirect": "(widjerfeerd faan „$1“)",
"search-section": "(kirew $1)",
"search-file-match": "(fünjen tekst)",
"uploadwarning": "Wäärnang",
"uploadwarning-text": "Feranre det datei-beskriiwang an ferschük det noch ans nei.",
"savefile": "Datei seekre",
- "uploadedimage": "hää \"[[$1]]\" huuchschüürd",
- "overwroteimage": "hää en nei werjuun faan „[[$1]]“ huuchschüürd",
"uploaddisabled": "Huuchschüüren as ei aktiwiaret",
"copyuploaddisabled": "Huuchschüüren faan URLs as ei aktiwiaret.",
"uploaddisabledtext": "Det huuchschüüren faan datein as ei aktiwiaret.",
"watchlist-details": "Dü behäälst {{PLURAL:$1|1 sidj|$1 sidjen}} uun't uug, diarbi wurd diskuschuunsidjen ei mätääld.",
"wlheader-enotif": "Di e-mail siinst as aktiif.",
"wlheader-showupdated": "Nei feranert sidjen wurd '''fäät''' uunwiset.",
- "wlnote2": "Diar stun a feranrangen faan a leetst {{PLURAL:$1|stünj|<strong>$1</strong> stünjen}}, üüb a stant faan $2, $3.",
+ "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",
"watching": "Uun't uug behual ...",
"talkpagelinktext": "discussion",
"specialpage": "Pagjine speciâl",
"personaltools": "Imprescj personâi",
- "postcomment": "Gnove sezion",
"articlepage": "Cjale la vôs",
"talk": "Discussion",
"views": "Visitis",
"yourdomainname": "Il to domini",
"login": "Jentre",
"nav-login-createaccount": "Regjistriti o jentre",
- "loginprompt": "Tu âs di vê abilitâts i cookies par jentrâ in {{SITENAME}}.",
"userlogin": "Regjistriti o jentre",
"userloginnocreate": "Jentre",
"logout": "Jes",
"searchprofile-advanced-tooltip": "Cîr tai spazis dai nons personalizâts",
"search-result-size": "$1 ({{PLURAL:$2|une peraule|$2 peraulis}})",
"search-result-category-size": "{{PLURAL:$1|1 membri|$1 membris}} ({{PLURAL:$2|1 sotcategorie|$2 sotcategoriis}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Rilevance: $1%",
"search-redirect": "(re-indreçament $1)",
"search-section": "(sezion $1)",
"search-suggest": "Forsit tu cirivis: $1",
"filetype-missing": "Il file nol à une estension (par esempli \".jpg\").",
"file-exists-duplicate": "Chest file al è un duplicât {{PLURAL:$1|dal file |dai files ca sot:}}",
"savefile": "Salve file",
- "uploadedimage": "cjamât sù \"$1\"",
- "overwroteimage": "al à cjamât une gnove version di «[[$1]]»",
"uploaddisabled": "Nus displâs, par cumò no si pues cjamâ sù robe.",
"uploaddisabledtext": "Lis cjamadis di files a son disativadis.",
"sourcefilename": "Non dal file origjinâl:",
"watchlist-details": "{{PLURAL:$1|E je $1 pagjine tignude|A son $1 pagjinis tignudis}} di voli, cence contâ lis pagjinis di discussion.",
"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'''",
+ "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",
"watching": "Daûr a zontâ aes pagjinis tignudis di voli...",
"talkpagelinktext": "Oerlis",
"specialpage": "Bysûndere side",
"personaltools": "Persoanlike ynstellings",
- "postcomment": "Skriuw in opmerking",
"articlepage": "Side lêze",
"talk": "Oerlis",
"views": "Aspekten/aksjes",
"externaldberror": "Der is in fout by it oanmelden by de database of jo hawwe gjin tastimming om jo ekstern account by te wurkjen.",
"login": "Oanmelde",
"nav-login-createaccount": "Oanmelde",
- "loginprompt": "Jo moatte 'cookies' oanstean hawwe om yn jo oan te melden by {{SITENAME}}.",
"userlogin": "Oanmelde",
"userloginnocreate": "Ynlogge",
"logout": "Ofmelde",
"searchprofile-everything-tooltip": "Alle ynhâld trochsykje (ynklusyf oerlissiden)",
"searchprofile-advanced-tooltip": "Sykje yn oanjûne nammerûmten",
"search-result-size": "$1 ({{PLURAL:$2|1 wurd|$2 wurden}})",
- "search-result-score": "Relevante: $1%",
"search-redirect": "(trochferwizing $1)",
"search-section": "(seksje $1)",
"search-suggest": "Bedoele jo: $1",
"file-deleted-duplicate": "In bestân idintyk oan dit bestân ([[:$1]]) is foarhinne fuorthelle.\nRieplachtsje it fuorthel-logboek foar't jo fierder geane.",
"uploadwarning": "Oanbied-warskôging",
"savefile": "Lis triem fêst",
- "uploadedimage": " \"[[$1]]\" oanbean",
- "overwroteimage": "hat in nije ferzje fan \"[[$1]]\" tafoege",
"uploaddisabled": "Sorry, op dizze tsjinner kin net oanbean wurde.",
"uploaddisabledtext": "It oanbieden fan triemmen is útskeakele.",
"php-uploaddisabledtext": "PHP-triemuploads binne útskeakele. Kontrolearje a.j.w. de triem_uploads-ynstelling.",
"unwatchthispage": "Ferjit dizze side",
"notanarticle": "Dit kin net folge wurde.",
"watchlist-details": "Jo folchlist hat {{PLURAL:$1|$1 side|$1 siden}}, oerlissiden net meiteld.",
+ "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",
"watching": "Dwaande mei op'e folchlist te setten ...",
"unwatching": "Dwaande mei fan'e folchlist ôf te heljen ...",
"talkpagelinktext": "Plé",
"specialpage": "Leathanach Speisialta",
"personaltools": "Do chuid uirlisí",
- "postcomment": "Mír nua",
"articlepage": "Féach ar an alt",
"talk": "Plé",
"views": "Radhairc",
"externaldberror": "Bhí earráid bhunachair sonraí ann maidir le fíordheimhniú seachtrach, nóThere was either an external authentication database error or you are not allowed to update your external account.",
"login": "Logáil isteach",
"nav-login-createaccount": "Logáil isteach",
- "loginprompt": "Tá sé riachtanach fianáin a chur i ngníomh chun logáil isteach a dhéanamh ag {{SITENAME}}.",
"userlogin": "Logáil isteach / cruthaigh cuntas",
"userloginnocreate": "Logáil isteach",
"logout": "Logáil amach",
"fileexists-forbidden": "Tá comhad eile leis an ainm seo ann fós, agus ní féidie é a forscríobh.\nMá theastáilann uait do chomhad a uaslódáil fós, téigh ar ais agus úsáid ainm nua, le do thoil. [[File:$1|thumb|center|$1]]",
"uploadwarning": "Rabhadh suaslódála",
"savefile": "Sábháil comhad",
- "uploadedimage": "uaslódáladh \"[[$1]]\"",
"uploaddisabled": "Tá brón orainn, ní féidir aon rud a uaslódáil faoi láthair.",
"uploaddisabledtext": "Tá cosc ar uaslódáil comhad.",
"uploadvirus": "Tá víreas ann sa comhad seo! Eolas: $1",
"watchlist-details": "Tá tú ag faire ar {{PLURAL:$1|leathanach amháin|$1 leathanaigh}}, gan leathanaigh phlé a chur san áireamh.",
"wlheader-enotif": "Cumasaíodh fógraí riomhphoist.",
"wlheader-showupdated": "Tá '''cló trom''' ar leathanaigh a athraíodh ón uair is deireanaí a d'fhéach tú orthu.",
+ "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",
"watching": "Ag faire...",
"talkpagelinktext": "Konuşmaa",
"specialpage": "Maasus Sayfa",
"personaltools": "Personal instrumentlär",
- "postcomment": "Yorum ekle",
"articlepage": "Yazıya bak",
"talk": "Dartışma",
"views": "Görünüşler",
"yourdomainname": "Domen adınız",
"login": "Gir",
"nav-login-createaccount": "Gir / esap yarat",
- "loginprompt": "Bak: {{SITENAME}} saytında sessiya açmaa için tarayıcınızda läazım cookies aktivat olsun. <br />\nKullanıcı adınız '''var nicä içersin'''gagauzça nışan, boşluk . Savaşın kullanıcı adınıza e-mail adresi '''girmemää'''.",
"userlogin": "Gir / esap yarat",
"logout": "Sessiyanı kapat",
"userlogout": "Oturmaa kapat",
"upload": "Fayl ükle",
"uploadbtn": "Fayl ükle",
"uploadlogpage": "Fayl üklemäk jurnalları",
- "uploadedimage": "Üklenen: \"[[$1]]\"",
"listfiles": "Pätret listası",
"file-anchor-link": "Fayl",
"filehist": "Fayl istoriyası",
"externaldberror": "外部验证数据库出错,或倷更新伓正倷𠮶外部帐户。",
"login": "登入",
"nav-login-createaccount": "登入/新开只帐户",
- "loginprompt": "要开到cookies才登入得正{{SITENAME}}。",
"userlogin": "登入/新开只帐户",
"userloginnocreate": "登入",
"logout": "退出",
"fileexists-shared-forbidden": "到共用档案库里度有嘞同名𠮶档案;请回头并换过只新𠮶名称来上传个只档案。[[File:$1|thumb|center|$1]]",
"uploadwarning": "上传警告",
"savefile": "保存盘案",
- "uploadedimage": "上传正嘞\"[[$1]]\"",
- "overwroteimage": "上传正嘞\"[[$1]]\"𠮶新版本",
"uploaddisabled": "上传伓正",
"uploaddisabledtext": "上传伓正文件到{{SITENAME}}。",
"uploadscripted": "个只档案包到可能会误导网络浏览器错误解释𠮶 HTML 或脚本代码。",
"watchlist-details": "$1只页面(伓算讨论页) 拖眏到哩",
"wlheader-enotif": "启动嘞email通知功能。",
"wlheader-showupdated": "上回倷眵𠮶页面改动𠮶部分用'''粗体'''显到",
+ "wlnote": "下底系最近'''$2'''钟头内𠮶最晏'''$1'''道修改:",
"wlshowlast": "显示近来$1钟头$2日$3𠮶改动",
"watchlist-options": "监视清单选项",
"watching": "眏到...",
"fileexists-shared-forbidden": "到共用檔案庫裡度有嘞同名嗰檔案;請回頭並換過隻新嗰名稱來上傳箇隻檔案。[[File:$1|thumb|center|$1]]",
"uploadwarning": "上傳警告",
"savefile": "保存檔案",
- "uploadedimage": "上傳正哩\"[[$1]]\"",
- "overwroteimage": "上傳正哩\"[[$1]]\"嗰新版本",
"uploaddisabled": "上傳伓正",
"uploaddisabledtext": "上傳伓正文件到{{SITENAME}}。",
"uploadscripted": "箇隻檔案包到可能會誤導網絡瀏覽器錯誤解釋嗰 HTML 或腳本代碼。",
"searchprofile-advanced-tooltip": "Lorg am broinn ainm-spàsan gnàthaichte",
"search-result-size": "$1 ({{PLURAL:$2|$2 fhacal|$2 fhacal|$2 faclan|$2 facal}})",
"search-result-category-size": "{{PLURAL:$1|$1 bhall|$1 bhall|$1 bhuill|$1 ball}} ({{PLURAL:$2|$2 fho-roinn-seòrsa|$2 fho-roinn-seòrsa|$2 fo-roinnean-seòrsa|$2 fo-roinn-seòrsa}}, {{PLURAL:$3|$3 fhaidhle|$3 fhaidhle|$3 faidhlichean|$3 faidhle}})",
- "search-result-score": "Buntainneas: $1%",
"search-redirect": "(ag ath-sheòladh $1)",
"search-section": "(earrann $1)",
"search-file-match": "{a' freagairt ri susbaint an fhaidhle)",
"uploadwarning": "Rabhadh luchdaidh suas",
"uploadwarning-text": "Atharraich tuairisgeul an fhaidhle gu h-ìosal 's feuch ris a-rithist.",
"savefile": "Sàbhail faidhle",
- "uploadedimage": "a luchdaich suas \"[[$1]]\"",
- "overwroteimage": "luchdaich suas tionndadh ùr de \"[[$1]]\"",
"uploaddisabled": "Tha an luchdadh suas à comas.",
"copyuploaddisabled": "Tha an luchdadh suas o URL à comas.",
"uploaddisabledtext": "Tha luchdadh suas fhaidhlichean à comas.",
"watchlist-details": "Tha {{PLURAL:$1|$1 duilleag|$1 dhuilleag|$1 duilleagan|$1 duilleag}} air a' chlàr-fhaire agad, gun luaidh air na duilleagan deasbaireachd.",
"wlheader-enotif": "Tha brathan-naidheachd air a' phost-d an comas.",
"wlheader-showupdated": "Tha clò <strong>trom</strong> air duilleagan a chaidh atharrachadh on turas mu dheireadh a thadhail thu orra.",
- "wlnote2": "Chì thu na h-atharraichean {{PLURAL:$1|san <strong>$1</strong> uair|san <strong>$1</strong> uair|sna <strong>$1</strong> uairean|san <strong>$1</strong> uair}} a thìde seo chaidh aig $3 air $2.",
+ "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",
"watching": "'Ga chur air a' chlàr-fhaire...",
"searchprofile-advanced-tooltip": "Procurar nos espazos de nomes elixidos",
"search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})",
"search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoría|$2 subcategorías}}, {{PLURAL:$3|1 ficheiro|$3 ficheiros}})",
- "search-result-score": "Relevancia: $1%",
"search-redirect": "(redirixido desde \"$1\")",
"search-section": "(sección \"$1\")",
"search-file-match": "(coincide co contido do ficheiro)",
"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",
- "uploadedimage": "cargou \"[[$1]]\"",
- "overwroteimage": "enviou unha nova versión de \"[[$1]]\"",
"uploaddisabled": "Sentímolo, a subida de ficheiros está desactivada.",
"copyuploaddisabled": "A carga mediante URL está desactivada.",
"uploaddisabledtext": "A carga de ficheiros está desactivada.",
"authors": [
"Deepak D'Souza",
"Isidore Dantas",
- "The Discoverer"
+ "The Discoverer",
+ "아라"
]
},
"underline-always": "Soddankal",
"category-article-count": "{{PLURAL:$2|Hea vorgan fokot hi ek pan asa.|Hea vorgan {{PLURAL:$1|hi pan asa|him $1 panam asat}} beriz $2 panam modem.}}",
"category-file-count": "{{PLURAL:$2|Hea vorgan fokot hi ek fail asa.|Hea vorgan {{PLURAL:$1|hi fail asa|heo $1 faili asat}}, beriz $2 faili modem.}}",
"listingcontinuesabbrev": "chalu",
+ "index-category": "Suchi-potran zodlelim panam",
"noindex-category": "Suchi-potran zoddunk-naslelim panam",
"about": "Hea vixoiavoir",
"article": "Vixoi sombondhi pan",
"cancel": "Rod'd kor",
"mytalk": "Bhasabhas",
"navigation": "Dixa-niontronn",
+ "and": " ani",
"qbfind": "Sod",
"qbedit": "Bodol",
"faq": "Choddxe vicharlole prosn",
- "vector-action-addsection": "Vixoi zodd",
- "vector-action-delete": "Kadd",
- "vector-action-move": "Fuddem voch",
- "vector-action-protect": "Rakh",
- "vector-view-create": "Roch",
- "vector-view-edit": "Sudar",
- "vector-view-history": "Itihas polloi",
- "vector-view-view": "Vach",
- "vector-view-viewsource": "Mull polloi",
"actions": "Karvaio",
"namespaces": "Nanv-thollam",
"variants": "Dusre",
"history_short": "Itihas",
"printableversion": "Chapp'pachi avruti",
"permalink": "Togpi zodd",
+ "print": "Chap",
"view": "Poloi",
"edit": "Sudar",
"create": "Roch",
"remembermypassword": "Hea internet browseran mhojem sotrachem ugdas dovor (chodan chod $1 {{PLURAL:$1|disak|disank}})",
"login": "Sotrromb kor",
"nav-login-createaccount": "Sotrrombh kor / khato roch",
- "loginprompt": "{{SITENAME}}, hea siticher sotrorombh korunktujea internet browseran ''cookies'' suru asunk zai.",
"userlogin": "Sotrrombh kor / khatem roch",
"logout": "Bhair podd",
"userlogout": "Sotracho xevott",
"gotaccount": "Tuje kodem khatem asa? $1.",
"gotaccountlink": "Sotrorombh kor",
"userlogin-resetlink": "Sotrorombh korpacheo bariksai visorlai?",
- "mailmypassword": "Novem gupitutor email kor",
+ "mailmypassword": "Novem gupitutor",
"loginlanguagelabel": "Bhas: $1",
"bold_sample": "Datt mozkur",
"bold_tip": "Datt mozkur",
"viewpagelogs": "Hea panachim sotram polloi",
"currentrev-asof": "$1, hachi halinchi uzollnni",
"revisionasof": "$1 hachi uzollnni",
- "revision-info": "$2 hannem $1, hachi uzollnni",
+ "revision-info": "$1 porian, $2 hannem kelli uzollnni",
"previousrevision": "← Adli uzollnni",
"nextrevision": "Novi uzolnni →",
"currentrevisionlink": "Sogleanvon novi uzollnni",
"shown-title": "Dor panar {{PLURAL:$1|porinam|porinam}} dakhoi",
"viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) poloi",
"searchmenu-exists": "'''Hea Wikicher \"[[:$1]]\" nanvanche pan asa.'''",
- "searchmenu-new": "'''\"[[:$1]]\" hem pan hea vikint roch!'''",
+ "searchmenu-new": "<strong>\"[[:$1]]\" hem pan hea vikint roch!<strong> {{PLURAL:$2|0=|Tujea sodan mellelem panui polloi.|Tujea sodan mellelem panamui polloi.}}",
"searchprofile-articles": "Mozkurachim panam",
- "searchprofile-project": "Adar ani Project panam",
"searchprofile-images": "Bhovmadhiom",
"searchprofile-everything": "Sogllem",
"searchprofile-advanced": "Sodpache poryay",
"searchprofile-articles-tooltip": "$1 hantunt sod",
- "searchprofile-project-tooltip": "$1 hantunt sod",
"searchprofile-images-tooltip": "Faili sod",
"searchprofile-everything-tooltip": "Akhea sitin sod (Bhasabhas panant'ui)",
"searchprofile-advanced-tooltip": "chalu nanvthollancher sod",
"recentchanges-label-minor": "Ho ek dhaktto sudar",
"recentchanges-label-bot": "Hem bodlop eka robotan kel'lem",
"recentchanges-label-unpatrolled": "Hem sudharop azun topasunk nam",
- "rcnotefrom": "Sokoil '''$2''' savn zalelim bodolpam dileant ( '''$1'''meren dakhoileant).",
- "rclistfrom": "$1 savn suru zatelim novim bodolpam dakhoi",
+ "rcnotefrom": "Sokoil <strong>$2<strong> savn zalelim bodolpam dileant ( <strong>$1<strong> meren dakhoileant).",
+ "rclistfrom": "$3 $2 savn suru zatelim novim bodolpam dakhoi",
"rcshowhideminor": "$1 dhaktteo sudarnneo",
"rcshowhidebots": "$1 robot",
- "rcshowhideliu": "$1 sotrromb kelele vapuddpi",
+ "rcshowhideliu": "$1 nond zalele vapuddpi",
"rcshowhideanons": "$1 nanv-naslelim vapurpi",
"rcshowhidepatr": "$1 topaslele sudharop",
"rcshowhidemine": "Mhojem sudarop $1",
"upload": "Fail upload kor",
"uploadlogpage": "Uploadachem sotr",
"filedesc": "Sar",
- "uploadedimage": " \"[[$1]]\" upload zalem",
"watchthisupload": "Hea faylar dixtt dovor",
"license": "Porvangi",
"license-header": "Porvangi",
"speciallogtitlelabel": "Vishoi vo vapurpi:",
"log": "Sotram",
"allpages": "Sogllim panam",
- "alphaindexline": "$1 savn $2",
"nextpage": "Mukklem pan ($1)",
"prevpage": "Ad'dlem pan ($1)",
"allpagesfrom": "Hanga thavn suru zatelea panank dakhoi:",
"watch": "Sadur rav",
"watchthispage": "Hea panar dixtt dovor",
"unwatch": "Nodor kadd",
- "watchlist-details": "Tujea sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}}, ulovpachim panam mezonastanam.",
+ "watchlist-details": "Tujea sadurvollerint {{PLURAL:$1|$1 pan asa|$1 panam asat}}, ulovpachim panam veglim mezonastanam.",
"wlheader-showupdated": "Tujea fatle bhette san bodol'lean tim panam '''datt''' dakhoileant.",
"wlshowlast": "Xevottchim $1 voram $2 dis $3 dakhoi",
"watchlist-options": "Sadurvollericheo poryay",
"talkpagelinktext": "Διαλέγεσθαι",
"specialpage": "Εἰδικὴ δέλτος",
"personaltools": "Ἴδια ἐργαλεῖα",
- "postcomment": "Νέον τμῆμα",
"articlepage": "Χρήματος δέλτον ὁρᾶν",
"talk": "Διάλεξις",
"views": "Προβολαί",
"externaldberror": "Συνέβη εἴτε σφάλμα τι πιστοποιήσεως τῆς βάσεως δεδομένων εἴτε οὐκ ἔξεστί σοι ἐνημεροῦν τὸν ἐξωτερικὸν λογισμόν σου.",
"login": "Συνδεῖσθαι",
"nav-login-createaccount": "Συνδεῖσθαι/λογισμὸν ποιεῖν",
- "loginprompt": "Δεῖ ἐνεργὰ τὰ HTTP-πύσματα εἶναι πρὸ τοῦ συνδεῖσθαι τῷ {{SITENAME}}.",
"userlogin": "Συνδεῖσθαι/λογισμὸν ποιεῖν",
"userloginnocreate": "Συνδεῖσθαι",
"logout": "Ἐξέρχεσθαι",
"searchprofile-everything-tooltip": "Πανταχοῖ (καὶ τὰς δέλτους διαλέξεως) ζητεῖν.",
"searchprofile-advanced-tooltip": "Ζητεῖν εἰς συνήθη ὀνοματεῖα",
"search-result-size": "$1 ({{PLURAL:$2|1 λέξις|$2 λέξεις}})",
- "search-result-score": "Σχετικότης: $1%",
"search-redirect": "(ἀναδιευθύνειν $1)",
"search-section": "(τμῆμα $1)",
"search-suggest": "Συνίης: $1",
"file-exists-duplicate": "Τὸ ἀρχεῖον ἐστὶ διπλότυπον τοῦ/τῶν ἑξῆς {{PLURAL:$1|ἀρχείου|ἀρχείων}}:",
"uploadwarning": "Προμήνυσις ἐπιφορτίσεως",
"savefile": "Σῴζειν ἀρχεῖον",
- "uploadedimage": "ἐπιπεφορτισμένον \"[[$1]]\"",
- "overwroteimage": "νέα ἔκδοσις τῆς \"[[$1]]\" ἐπιπεφορτισμένη",
"uploaddisabled": "Μὴ ἐνεργαὶ αἱ ἐπιφορτίσεις",
"uploaddisabledtext": "Ἐπιφορτίσεις ἀρχείων μὴ ἐνεργαὶ.",
"php-uploaddisabledtext": "Αἱ ἐπιφορτώσεις ἀρχείων εἰσὶν ἀνενεργοὶ ἐν τῇ PHP.\nἜλεγξον τὴν ῥύθμισιν file_uploads.",
"notvisiblerev": "Ἀναθεώρησις διαγεγραμμένη",
"watchlist-details": "{{PLURAL:$1|$1 δέλτος|$1 δέλτοι}} ἐφορωμέναι, ἄνευ τῶν δέλτων διαλέξεως περιλαμβανομένων.",
"wlheader-enotif": "Σύστημα εἰδήσεως μέσῳ ἠλ-ἐπιστολῶν ἐνεργόν.",
+ "wlnote": "Κατωτέρω {{PLURAL:$1|ἐστὶν ἡ ὑστάτη μεταβολὴ|εἰσὶν αἱ ὑστάται '''$1''' μεταβολαὶ}} ἐν {{PLURAL:$2|τῇ ὑστάτῃ μίᾳ ὥρᾳ|ταῖς ὑστάταις '''$2''' ὥραις}}.",
"wlshowlast": "Ἐμφάνισις τῶν τελευταίων $1 ὡρῶν $2 ἡμερῶν $3",
"watchlist-options": "Ἐπιλογαὶ ἐφοροδιαλογῆς",
"watching": "Ἐφορῶν...",
"searchprofile-advanced-tooltip": "Suech in wytere Namensryym",
"search-result-size": "$1 ({{PLURAL:$2|1 Wort|$2 Werter}})",
"search-result-category-size": "{{PLURAL:$1|1 Kategorii|$1 Kategorie}} ({{PLURAL:$2|1 Unterkategorii|$2 Unterkategorie}}, {{PLURAL:$3|1 Datei|$3 Dateie}})",
- "search-result-score": "Relevanz: $1 %",
"search-redirect": "(Wyterleitig $1)",
"search-section": "(Abschnitt $1)",
"search-suggest": "Hesch „$1“ gmeint?",
"uploadwarning": "Warnig",
"uploadwarning-text": "Bitte tue unte d Dateibsschryybig ändere un versuech s nomol.",
"savefile": "Datei spychere",
- "uploadedimage": "het „[[$1]]“ ufeglade",
- "overwroteimage": "het e neiji Version vu „[[$1]]“ uffeglade",
"uploaddisabled": "Uffelade deaktiviert",
"copyuploaddisabled": "S Uffelade iber URL isch abschalte wore.",
"uploaddisabledtext": "S Uffelade vu Dateie isch deaktiviert.",
"watchlist-details": "{{PLURAL:$1|1 Syte wird|$1 Sytene wärde}} beobachtet (Diskussionssyte nid zelt, aber ou beobachtet).",
"wlheader-enotif": "Dr E-Mail-Benochrichtigungsdienscht isch aktiviert.",
"wlheader-showupdated": "Syte mit Anderige, wu no nit aagluegt sin, sin '''fett''' dargstellt.",
+ "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",
"watching": "Am beobachte …",
"permalink": "સ્થાયી કડી",
"print": "છાપો",
"view": "જુઓ",
+ "view-foreign": "$1 પર જુઓ",
"edit": "ફેરફાર કરો",
+ "edit-local": "સ્થાનિક વર્ણનમાં ફેરફાર કરો",
"create": "બનાવો",
+ "create-local": "સ્થાનિક વર્ણન ઉમેરો",
"editthispage": "આ પાનામાં ફેરફાર કરો",
"create-this-page": "આ પાનું બનાવો",
"delete": "રદ કરો",
"talkpagelinktext": "ચર્ચા",
"specialpage": "ખાસ પાનું",
"personaltools": "વ્યક્તિગત સાધનો",
- "postcomment": "નવો વિભાગ",
"articlepage": "લેખનું પાનું જુઓ",
"talk": "ચર્ચા",
"views": "દેખાવો",
"hidetoc": "છુપાવો",
"collapsible-collapse": "સંકેલો",
"collapsible-expand": "વિસ્તારો",
+ "confirmable-confirm": "શું {{GENDER:$1|તમે}} ચોક્કસ છો?",
+ "confirmable-yes": "હા",
+ "confirmable-no": "ના",
"thisisdeleted": "જુઓ અથવા મૂળરૂપે ફેરવો $1?",
"viewdeleted": "$1 જોવું છે?",
"restorelink": "{{PLURAL:$1|એક ભુસીનાખેલો ફેરફાર|$1 ભુસીનાખેલા ફેરફારો}}",
"externaldberror": "પ્રમાણભૂતતાની ત્રુટી આવી અથવા તમારૂ બહારનુ ખાતું અપડેટ કરવાનો અધિકાર તમને નથી.",
"login": "પ્રવેશ કરો",
"nav-login-createaccount": "પ્રવેશ કરો / નવું ખાતું ખોલો",
- "loginprompt": "{{SITENAME}}માં પ્રવેશ કરવા માટે તમારા બ્રાઉઝરમાં કુકીઝ એનેબલ કરેલી હોવી જોઇશે.",
"userlogin": "પ્રવેશ કરો / નવું ખાતું ખોલો",
"userloginnocreate": "પ્રવેશ કરો",
"logout": "બહાર નીકળો",
"suspicious-userlogout": "લોગ આઉટ કરવાની તમારી વિનંતિ પૂરી ન કરી શકાઇ. એમ લાગે છે કે તેને તૃટિ પામેલ બ્રાઉઝર કે પ્રોક્સી દ્વારા મોકલાઈ હતી.",
"createacct-another-realname-tip": "સાચું નામ મરજીયાત છે.\nજો તમે તે આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમે કરેલ યોગદાનનું શ્રેય આપવા માટે થશે.",
"pt-login": "પ્રવેશ કરો",
+ "pt-login-button": "પ્રવેશો",
"pt-createaccount": "ખાતું બનાવો",
"pt-userlogout": "બહાર નીકળો",
"php-mail-error-unknown": "PHPની મેલ() કામગીરીમાં અજ્ઞાત ત્રુટિ",
"edit-gone-missing": "આ પાને અધ્યતન ન બનાવી શકાયું \nલાગે છે કોઇએ આ પાનું હટાવી દીધું છે",
"edit-conflict": "સંપાદન સંઘર્ષ.",
"edit-no-change": "તમારા ફેરફારો અવગણાયા, કેમકે અક્ષરકાયામાં કોઈ ફેરફારાના હતો",
+ "postedit-confirmation-created": "પાનું બનાવવામાં આવ્યું.",
"postedit-confirmation-saved": "તમે કરેલો ફેરફાર સચવાઈ ગયો છે.",
"edit-already-exists": "નવું પાનું બનાવી ન શકાયું\nતે પહેલેથી હાજર છે.",
"defaultmessagetext": "મૂળભૂત સંદેશ લખાણ",
"invalid-content-data": "અયોગ્ય વિગત માહિતી",
"content-not-allowed-here": "\"$1\" વિગત [[$2]] પાનાં પર માન્ય નથી",
- "editwarning-warning": "àª\86 પાનà«\81àª\82 àª\9bà«\8bડà«\80 દà«\87શà«\8b તà«\8b તમારા ફà«\87રફારà«\8b સàª\9aવાશà«\87 નહà«\80àª\82.\nàª\9cà«\8b તમà«\87 પà«\8dરવà«\87શ àª\95રà«\87લà«\8b હà«\8bય તà«\8b તમà«\87 àª\86 àª\9aà«\87તવણà«\80નà«\87 તમારà«\80 પસàª\82દના \"ફà«\87રફાર\" વિભાગના વિકલ્પો બદલીને બંધ કરી શકો છો.",
+ "editwarning-warning": "àª\86 પાનà«\81àª\82 àª\9bà«\8bડà«\80 દà«\87શà«\8b તà«\8b તમારા ફà«\87રફારà«\8b તમà«\87 àª\97à«\81માવà«\80 શàª\95à«\8b àª\9bà«\8b.\nàª\9cà«\8b તમà«\87 પà«\8dરવà«\87શ àª\95રà«\87લà«\8b હà«\8bય તà«\8b, તમà«\87 àª\86 àª\9aà«\87તવણà«\80નà«\87 તમારà«\80 પસàª\82દàª\97à«\80ના \"{{int:prefs-editing}}\" વિભાગના વિકલ્પો બદલીને બંધ કરી શકો છો.",
"content-model-wikitext": "વિકિલખાણ",
"content-model-text": "સાદું લખાણ",
"content-model-javascript": "જાવાસ્ક્રિપ્ટ",
"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-score": "પ્રસ્તુતિ: $1%",
"search-redirect": "(અન્યત્ર પ્રસ્થાન $1)",
"search-section": "(વિભાગ $1)",
"search-suggest": "શું તમે $1 કહેવા માંગો છો?",
"preferences": "પસંદ",
"mypreferences": "પસંદગીઓ",
"prefs-edits": "સંપાદનોની સંખ્યા",
- "prefsnologintext2": "તમારી પસંદગીઓ બદલવા માટે મહેરબાની કરી $1 કરો.",
+ "prefsnologintext2": "તમારી પસંદગીઓ બદલવા માટે મહેરબાની કરી પ્રવેશ કરો.",
"prefs-skin": "ફલક",
"skin-preview": "ફેરફાર બતાવો",
"datedefault": "મારી પસંદ",
"uploadwarning": "ફાઇલ ચઢાવ ચેતવણી",
"uploadwarning-text": "કૃપયા ફાઈલ સંબધી વર્ણન સુધારો અને ફરી પ્રયત્ન કરો",
"savefile": "સાચવો",
- "uploadedimage": "\"[[$1]]\" ચઢાવ્યું",
- "overwroteimage": " \"[[$1]]\" ની નવી આવૃત્તિ ચઢાવો.",
"uploaddisabled": "ફાઇલ ચઢાવ પ્રતિબંધિત",
"copyuploaddisabled": "URL દ્વાર ફાઇલ ચઢાવ પ્રતિબંધિત",
"uploaddisabledtext": "ફાઇલ ચઢાવવું નિષ્ક્રીય બનાવ્યું છે",
"license-header": "પરવાના",
"nolicense": "કોઇ વિકલ્પ પસંદ નથી કરાયો",
"license-nopreview": "(ઝલક મોજુદ નથી)",
- "upload_source_url": " (એક વૈધ , જાહેર URL)",
- "upload_source_file": "(તમારા કોમ્પ્યુટર પરની એક ફાઇલ)",
+ "upload_source_url": "(યોગ્ય, જાહેર URL માંથી તમે પસંદ કરેલ ફાઇલ)",
+ "upload_source_file": "(તમારા àª\95à«\8bમà«\8dપà«\8dયà«\81àª\9fર પરનà«\80 તમà«\87 પસàª\82દ àª\95રà«\87લà«\80 àª\8fàª\95 ફાàª\87લ)",
"listfiles-summary": "આ વિશિષ્ટ પાનું બધી અપલોડ કરાયેલી ફાઈલો દર્શાવે છે.",
"listfiles_search_for": "મિડિયા નામ શોધો:",
"imgfile": "ફાઇલ",
"protectedpages-indef": "ફક્ત અનિશ્ચિત સુરક્ષા ધરાવતા પાના",
"protectedpages-cascade": "માત્ર પગથિયામય સુરક્ષા વાળા પગ",
"protectedpagesempty": "આ વિકલ્પો દ્વારા કોઈ પાના સુરક્ષિત કરાયા નથી.",
+ "protectedpages-timestamp": "સમયછાપ",
"protectedpages-page": "પાનું",
+ "protectedpages-expiry": "સમાપ્તિ",
"protectedpages-reason": "કારણ",
"protectedpages-unknown-timestamp": "અજ્ઞાત",
"protectedpages-unknown-performer": "અજ્ઞાત સભ્ય",
"listgrouprights-removegroup-self": "તેમના પોતાના ખાતમાંથી {{PLURAL:$2|group|groups}} હટાવો : $1",
"listgrouprights-addgroup-self-all": "દરેક જૂથને તેમના પોતાના ખાતા માં ઉમેરો",
"listgrouprights-removegroup-self-all": "બધા જૂથને તેમના પોતાના ખાતામાંથી હટાવો",
+ "listgrouprights-namespaceprotection-namespace": "નામાવકાશ",
+ "trackingcategories-name": "સંદેશ નામ",
"mailnologin": "મેળવનારનું સરનામું નથી",
"mailnologintext": "અન્ય સભ્યને ઇ-મેલ મોકલવા માટે તમે [[Special:UserLogin|logged in]] પ્રવેશ કરેલ હોવો જોઈએ અને તમારા[[Special:Preferences|preferences]] વિકલ્પોમાં તમારા ઈ-મેલ સરનામાની પુષ્ટિ થયેલી હોવી જોઈએ",
"emailuser": "સભ્યને ઇ-મેલ કરો",
"watchlist-details": "ચર્ચાનાં પાનાં ન ગણતા {{PLURAL:$1|$1 પાનું|$1 પાનાં}} ધ્યાનસૂચીમાં છે.",
"wlheader-enotif": "ઈમેલ સૂચના પદ્ધતિ સક્રીય કરાઈ.",
"wlheader-showupdated": "તમારી છેલ્લી મુલાકાત પછી બદલાયેલાં પાના '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે.",
+ "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|'''$2''' કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|'''$1''' ફેરફારો }} દર્શાવ્યા છે.",
"wlshowlast": "છેલ્લા $1 કલાક $2 દિવસ $3 બતાવો",
"watchlist-options": "ધ્યાનસૂચિના વિકલ્પો",
"watching": "નજર રાખી રહ્યાં છો...",
"autoblockid": "ઓટોબ્લોક #$1",
"block": "સભ્ય પર પ્રતિબંધ મુકો",
"unblock": "સભ્ય પરનો પ્રતિબંધ હટાવો",
- "blockip": "સભ્ય પર પ્રતિબંધ મુકો",
+ "blockip": "{{GENDER:$1|સભ્ય}} પર પ્રતિબંધ મુકો",
"blockip-legend": "સભ્ય પર પ્રતિબંધ મુકો",
"blockiptext": "કોઈ ચોક્કસ IP સરનામું કે સભ્યના લેખન યોગદાન પર પ્રતિબંધ મુકવા નીચેનું ફોર્મ વાપરો.\nતેનો ઉપયોગ માત્ર ભાંગફોડિયા પ્રવૃત્તિઓને રોકવા અને [[{{MediaWiki:Policy-url}}|નીતિ]] અનુસાર જ હોવો જોઈએ.\nકારણનું ખાનું અવશ્ય ભરશો (દા.ત. અમુક ભાંગફોડ કરાયેલા પાનાનો સંદર્ભ).",
"ipaddressorusername": "IP સરનામું અથવા સભ્યનામ:",
"ipb-unblock-addr": "$1 પરનો પ્રતિબંધ ઉઠાવો",
"ipb-unblock": "સભ્યનામ કે IP સરનામું અપ્રતિબંધિત કરો.",
"ipb-blocklist": "વિહરમાન પ્રતિબંધો જુઓ",
- "ipb-blocklist-contribs": "સભ્ય $1નું યોગદાન",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}} નું યોગદાન",
"unblockip": "સભ્ય પરનો પ્રતિબંધ હટાવો",
"unblockiptext": "પહેલા રોક લગાડેલ IP સરનામા કે સભ્ય ના પ્રવેશને પુનઃસ્થાપિત કરવા નીચેનું ફોર્મેટ વાપરો.",
"ipusubmit": "આપ્રતિબંધન હટાવો",
"import-upload": "XML માહિતી ચઢાવો",
"import-token-mismatch": "સત્ર સમાપ્ત\nફરી પ્રયત્ન કરો",
"import-invalid-interwiki": "દર્શાવેલ વિકિ પરથી આયાત નહીં કરી શકાય",
- "import-error-edit": "પાનà«\81àª\82 \"$1\" àª\86યાત ન àª\95રà«\80 શàª\95ાયà«\81àª\82 àª\95à«\87મàª\95à«\87 તà«\87નà«\87 સàª\82પાદિત àª\95રવાનà«\8b હàª\95à«\8dàª\95 તમનà«\87 પà«\8dરાપત નથà«\80.",
+ "import-error-edit": "પાનું \"$1\" આયાત ન કરી શકાયું કેમકે તેને સંપાદિત કરવાનો હક્ક તમને નથી.",
"import-error-create": "પાનું \"$1\" આયાત ન કરી શકાયું કેમકે તેને બનાવવાના હક્ક તમને પ્રાપત નથી.",
"import-error-interwiki": "\"$1\" પાનું અહીં આયાત કરી ન શકાયું કેમકે તે નામ બાહ્ય કડીઓ (interwiki) માટે આરક્ષીત છે",
"import-error-special": "પાનું \"$1\" આયાત કરી શકાયું નહીં કેમકે તે ખાસ નામસ્થળનો ભાગ જે અન્ય પાના ની રજા આપનો નથી.",
- "import-error-invalid": "\"$1\" આ પાનુમ્ આયાત ન થયું કેમકે નામ અવૈધ છે.",
+ "import-error-invalid": "પાનું \"$1\" આયાત થયું નથી કારણ કે તેનું નામ આ વિકિ માટે અયોગ્ય છે.",
"importlogpage": "આયાત માહિતિ પત્રક",
"importlogpagetext": "અન્ય વિકિમાંથી ઈતિહાસ સહિત પાનાની પ્રબંધકીય આયાત",
"import-logentry-upload": "ફાઇલ ચઢાવનાર દ્વારા [[$1]] આયાત કરાઇ",
- "import-logentry-upload-detail": "$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
+ "import-logentry-upload-detail": "$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}} આયાત કરેલ છે",
"import-logentry-interwiki": "આંતરવિકિ $1",
- "import-logentry-interwiki-detail": "$2 થà«\80 $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
+ "import-logentry-interwiki-detail": "$2 માàª\82થà«\80 àª\86યાત àª\95રà«\87લ $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
"javascripttest": "જાવા સ્ક્રીપ્ટ પરીક્ષણ",
"javascripttest-title": "$1 પરીક્ષણ જારી",
"javascripttest-pagetext-noframework": "આ પાનું જાવા સ્ક્રીપ્ટ ચલાવવા આરક્ષિત છે.",
"pageinfo-redirects-name": "આ પાનાં પર દિશાનિર્દેશનોની સંખ્યા",
"pageinfo-subpages-name": "આ પાનાંનું ઉપપાનું",
"pageinfo-firstuser": "પૃષ્ઠ સર્જક",
- "pageinfo-firsttime": "પà«\83ષà«\8dઠસરà«\8dàª\9cનની તારીખ",
+ "pageinfo-firsttime": "પાનાàª\82 બનાવવાની તારીખ",
"pageinfo-lastuser": "છેલ્લો ફેરફાર કરનાર",
"pageinfo-lasttime": "છેલ્લા ફેરફારની તારીખ",
"pageinfo-edits": "કુલ સંપાદનોની સંખ્યા",
"months": "{{PLURAL:$1|$1 મહિનો|$1 મહિનાઓ}}",
"years": "{{PLURAL:$1|$1 વર્ષ|$1 વર્ષો}}",
"ago": "$1 પહેલાં",
- "just-now": "હમણાં",
+ "just-now": "હમણાં જ",
"hours-ago": "$1 {{PLURAL:$1|કલાક|કલાકો}} ago",
"minutes-ago": "$1 {{PLURAL:$1|મિનિટ|મિનિટો}} ago",
"seconds-ago": "$1 {{PLURAL:$1|સેકંડ|સેકંડો}} ago",
"confirm-watch-top": "આ પાનું તમારી ધ્યાનસૂચિમાં ઉમેરો?",
"confirm-unwatch-button": "બરાબર",
"confirm-unwatch-top": "આ પાનું તમારી ધ્યાનસૂચીમાથી કાઢી નાખો",
+ "quotation-marks": "\"$1\"",
"imgmultipageprev": "← પાછલું પાનું",
"imgmultipagenext": "આગલું પાનું →",
"imgmultigo": "જાઓ!",
"watchlistedit-raw-done": "તમારી ધ્યાના સૂચિ અધ્યતન કરાઈ.",
"watchlistedit-raw-added": "{{PLURAL:$1|1 શીર્ષક |$1 શીર્ષકો}} ઉમેરાયા :",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 શીર્ષક |$1 શીર્ષકો }} હટાવાયા :",
+ "watchlistedit-clear-titles": "શીર્ષકો:",
"watchlisttools-view": "બંધબેસતાં ફેરફારો નિહાળો",
"watchlisttools-edit": "ધ્યાનસૂચી જુઓ અને બદલો",
"watchlisttools-raw": "કાચી ધ્યાનસૂચિમાં ફેરફાર કરો",
"duplicate-defaultsort": "'''ચેતવણી:''' કી \"$2\" આગળનામૂળે પ્રસ્થાપિત ક્રમિકાવર્ગીકરણ કી \"$1\"નું સ્થાન લઈ લેશે..",
"version": "આવૃત્તિ",
"version-extensions": "પ્રસ્થાપિત વિસ્તારકો",
+ "version-skins": "સ્થાપિત ફલકો",
"version-specialpages": "ખાસ પાનાં",
"version-parserhooks": "પદચ્છેદ ખૂંટો",
"version-variables": "ચલ",
"version-antispam": "સ્પેમ સંરક્ષણ",
- "version-skins": "ફલક",
"version-other": "અન્ય",
"version-mediahandlers": "દ્રશ્યશ્રાવ્ય માધ્યમના ધારક",
"version-hooks": "ખૂંટા",
"version-hook-name": "ખૂંટાનું નામ્",
"version-hook-subscribedby": "દ્વ્રારા લાભાન્વીત",
"version-version": "(આવૃત્તિ $1)",
+ "version-no-ext-name": "[નામ નથી]",
"version-license": "મીડિઆવિકિ લાયસન્સ",
"version-ext-license": "લાયસન્સ",
+ "version-skin-colheader-name": "ફલક",
"version-ext-colheader-version": "આવૃત્તિ",
"version-ext-colheader-license": "લાયસન્સ",
"version-ext-colheader-description": "વર્ણન",
"htmlform-no": "ના",
"htmlform-yes": "હા",
"htmlform-chosen-placeholder": "વિકલ્પ પસંદ કરો",
+ "htmlform-cloner-create": "વધુ ઉમેરો",
+ "htmlform-cloner-delete": "હટાવો",
"sqlite-has-fts": "$1 પૂર્ણ શબ્દ શોધ સહીત",
"sqlite-no-fts": "$1 પૂર્ણ શબ્દ શોધ વિકલ્પ વગર",
"logentry-delete-delete": "$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}",
"expand_templates_xml_output": "XML આઉટપુટ",
"expand_templates_ok": "મંજૂર",
"expand_templates_remove_comments": "ટીપ્પણીઓ દૂર કરો",
- "expand_templates_preview": "પૂર્વાવલોકન"
+ "expand_templates_preview": "પૂર્વાવલોકન",
+ "pagelang-name": "પાનું",
+ "pagelang-language": "ભાષા",
+ "pagelang-select-lang": "ભાષા પસંદ કરો",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (સક્રિય)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''નિષ્ક્રિય''')"
}
"talkpagelinktext": "Resoonaght",
"specialpage": "Duillag er lheh",
"personaltools": "Greienyn persoonagh",
- "postcomment": "Meer noa",
"articlepage": "Jeeagh er y duillag chummal",
"talk": "Resoonaght",
"views": "Reayrtyn",
"remembermypassword": "Cooinnee m'ockle arrey (rish wheesh as $1 {{PLURAL:$1|laa|laa|laa|laaghyn}})",
"login": "Log stiagh",
"nav-login-createaccount": "Log stiagh / croo coontys",
- "loginprompt": "Shegin dhyt cur pooar da minniagyn dy loggal stiagh ayns {{SITENAME}}.",
"userlogin": "Log stiagh / croo coontys",
"userloginnocreate": "Log stiagh",
"logout": "Log magh",
"searchprofile-images-tooltip": "Ronsee coadanyn",
"searchprofile-everything-tooltip": "Ronsee dagh red (goaill stiagh duillagyn resoonaght)",
"search-result-size": "$1 ({{PLURAL:$2|1 fockle|$2 'ockle|$2 'ockle|$2 focklyn}})",
- "search-result-score": "Bentynys: $1%",
"search-redirect": "(aa-enmyssit ass $1)",
"search-section": "(rheynn $1)",
"search-suggest": "R'ou çheet er: $1",
"filesource": "Bun:",
"badfilename": "T'ennym y choadan aa-enmyssit myr \"$1\".",
"savefile": "Sauail y coadan",
- "uploadedimage": "\"[[$1]]\" laadit neese",
"uploadvirus": "Ta veerys 'sy choadan! Mynphoyntyn: $1",
"watchthisupload": "Freill arrey er y choadan shoh",
"upload-file-error": "Marranys ynveanagh",
{
"@metadata": {
"authors": [
- "Mladanali"
+ "Mladanali",
+ "아라"
]
},
"tog-underline": "A shaya zaruruwa",
"tog-showtoolbar": "A nuna sandar kayan aiki ta gyarawa (ana buƙatar JavaScript)",
"tog-editondblclick": "A gyara shafuna da dabar-kiliki (ana buƙatar JavaScript)",
"tog-editsectiononrightclick": "A lamunta gyara shashe da kilikin dama a kan kanun shashe (ana buƙatar JavaScript)",
- "tog-rememberpassword": "A adana bayanan loginkina a wannan kwamfyuta (for a maximum of $1 {{PLURAL:$1|day|days}})",
"tog-watchcreations": "A daɗa shafunan da na ƙirƙira a cikin jerina na kan ido",
"tog-watchdefault": "A daɗa shafunan da na gyara a cikin jerina na kan ido",
"tog-watchmoves": "A daɗa shafunan da na gusar a cikin jerina na kan ido",
"navigation": "Shawagi",
"qbfind": "Nemo",
"qbedit": "Gyarawa",
- "vector-action-delete": "Soke",
- "vector-action-move": "Gusarwa",
- "vector-action-protect": "A kare",
- "vector-view-create": "Ƙirƙira",
"errorpagetitle": "Tangarɗa",
"returnto": "Koma $1",
"tagline": "Daga {{SITENAME}}",
"searchall": "duka",
"powersearch-legend": "Sahihin nema",
"powersearch-ns": "Binciki sararen sunaye:",
- "powersearch-redir": "Nuna turawa gaba",
"powersearch-toggleall": "Duka",
"preferences": "Saituttuka",
"mypreferences": "Saituttukana",
"recentchanges": "Sauye-sauyen baya-bayan nan",
"recentchanges-legend": "Zaɓi na sauye-sauyen baya-bayan nan",
"recentchanges-feed-description": "Bi sawun sauye-sauyen ƙarshe na wikin da ke cikin wannan kwarare",
- "rclistfrom": "Nuna sabbin sauye-sauye tun daga $1",
+ "rclistfrom": "Nuna sabbin sauye-sauye tun daga $3 $2",
"rcshowhideminor": "$1 ƙananen sauye-sauye",
"rcshowhidebots": "Rabuwat $1",
"rcshowhideliu": "$1 Ma'aikata logaggi",
"uploadlogpage": "Rajistan girke fayiloli",
"filedesc": "Taƙaici",
"fileuploadsummary": "Taƙaici:",
- "uploadedimage": "an girke \"[[$1]]\"",
"filehist": "Tarihin fayil",
"filehist-help": "ku Latsa rana/lokaci ku ga fayil yadda yake a wannan lokaci",
"filehist-deleteone": "soke",
"booksources-go": "Mu je",
"log": "Rajistoci ayyuka",
"allpages": "Duka shafuna",
- "alphaindexline": "$1 zuwa $2",
"prevpage": "Shafi na baya ($1)",
"allpagesfrom": "Nuna shafuna farawa daga:",
"allpagesto": "Nuna shafuna har:",
"fileexists-shared-forbidden": "在共享文件庫中既存在同名文件。\n係話汝仍然想愛上載其嘅話,請返回並用一隻新名來上傳邇隻文件。[[File:$1|thumb|center|$1]]",
"uploadwarning": "上傳警告",
"savefile": "保存文件",
- "uploadedimage": "已上傳“[[$1]]”",
"uploaddisabled": "上傳己停用。",
"uploaddisabledtext": "Tóng-on song-chhòn chhai chhṳ́ miong-chham put hí-khó yung.",
"php-uploaddisabledtext": "PHP文件上傳已經停用。請檢查file_uploads設定。",
"talkpagelinktext": "Walaʻau",
"specialpage": "‘Ao‘ao kūikawā",
"personaltools": "Hāmeʻa ponoʻī",
- "postcomment": "Māhele hou",
"articlepage": "Nānā i ka ʻaoʻao mealoko",
"talk": "walaʻau",
"views": "Nānaina",
"copyrightpage": "{{ns:project}}:Kūleana kope",
"currentevents": "Nūhou",
"currentevents-url": "Project:Nūhou",
- "disclaimers": "Nā Akahele",
+ "disclaimers": "Akahana",
"disclaimerpage": "Project:Akahele Laulaha",
"edithelp": "Kōkua ho‘ololi",
"mainpage": "Papa Kinohi",
"hidetoc": "hoʻohūnā",
"collapsible-collapse": "Hoʻoliʻi",
"collapsible-expand": "Hoʻākea",
+ "confirmable-confirm": "He ʻoiaʻiʻo nō?",
+ "confirmable-yes": "ʻAe",
+ "confirmable-no": "ʻAʻole",
"thisisdeleted": "Nānā ai‘ole hō‘āla iā $1?",
"viewdeleted": "Nānā iā $1?",
"restorelink": "{{PLURAL:$1|kekahi loli holoi|$1 mau loli holoi}}",
"cascadeprotected": "Ho‘omalu ‘ia kēia ‘ao‘ao mai e ho‘opololei ana, no ka mea, hoʻokomo pū ‘ia ‘oia ma aia {{PLURAL:$1|‘ao‘ao|nā ‘ao‘ao}} i lalo, ho‘omalu ‘ia me ka \"e wailele ana\" koho:\n$2",
"ns-specialprotected": "‘A‘ole hiki ke ho‘ololi i nā ‘ao‘ao kūikawā",
"exception-nologin": "ʻE‘e ʻole",
+ "exception-nologin-text": "E ʻoluʻolu e ʻeʻe no ke komo ʻana i kēia ʻaoʻao a i ʻole ka ʻae no kēia hana.",
+ "exception-nologin-text-manual": "E ʻoluʻolu, e $1 no ke komo ʻana i kēia ʻaoʻao a i ʻole ka ʻae no kēia hana.",
"welcomeuser": "Welina mai e $1!",
"yourname": "Inoa mea ho'ohana:",
"userlogin-yourname": "Inoa mea hoʻohana",
"userlogin-remembermypassword": "Hoʻomanaʻo iaʻu",
"login": "ʻEʻe",
"nav-login-createaccount": "ʻEʻe / Kāinoa",
- "loginprompt": "Pono ʻoe e hoʻā i nā makana no ka ʻeʻe ʻana iā {{SITENAME}}.",
"userlogin": "ʻEʻe / Kāinoa",
"userloginnocreate": "ʻEʻe",
"logout": "Haʻalele",
"pt-createaccount": "Kāinoa",
"pt-userlogout": "Haʻalele",
"changepassword": "E hoʻololi i ka ʻōlelo hūnā",
+ "resetpass_header": "Hoʻololi i ka ʻōlelo hūnā moʻokāki",
"oldpassword": "ʻŌlelo hūnā kahiko:",
"newpassword": "ʻŌlelo hūnā hou:",
"retypenew": "E kikokiko hou i ka ʻōlelo hūnā hou:",
"resetpass_submit": "Kau i ka ʻōlelo hūnā a ʻeʻe",
"changepassword-success": "Ua hoʻololi ‘ia kāu hua‘ōlelo huna!",
+ "changepassword-throttled": "Nui ʻino ka hana ʻeʻe ʻana.\nE kali no $1 ma mua o ka hana hou ʻana ke ʻoluʻolu.",
+ "resetpass_forbidden": "ʻAʻole hiki ke hoʻololi i nā ʻōlelo hūnā",
+ "resetpass-no-info": "Pono ʻoe e ʻeʻe no ke komo pono ʻana o kēia ʻaoʻao.",
"resetpass-submit-loggedin": "Hoʻololi i ka ʻōlelo hūnā",
"resetpass-submit-cancel": "Hoʻōki",
"resetpass-temp-password": "ʻŌlelo hūnā kūikawā:",
+ "resetpass-expired": "Ua pau kāu ʻōlelo hūnā. E ʻoluʻolu, e loaʻa kahi ʻōlelo hūnā hou no ka ʻeʻe ʻana.",
"passwordreset": "Kāinoa hou i ka ʻōlelo hūnā",
"passwordreset-legend": "Kāinoa hou i ka ʻōlelo hūnā",
"passwordreset-username": "Inoa mea ho'ohana:",
"passwordreset-email": "Wahinoho lekauila:",
+ "changeemail": "Hoʻololi i ka wahinoho lekauila",
+ "changeemail-header": "Hoʻololi i ka wahinoho lekauila moʻokāki",
"changeemail-oldemail": "Wahinoho lekauila hananei:",
"changeemail-newemail": "Wahinoho lekauila hou:",
"changeemail-none": "(ʻaʻohe)",
"showpreview": "E hō'ike i ka nāmua",
"showdiff": "E hō'ike i nā loli",
"anoneditwarning": "<strong>E akahele:</strong> ʻAʻole ʻoe ʻeʻe nei.\nE hoʻopaʻa ʻia ana kāu IP ma ko kēia ʻaoʻao mōʻaukala hoʻololi.",
+ "missingcommenttext": "E kikokiko i kekahi kaumanaʻo i lalo, ke ʻoluʻolu.",
"summary-preview": "Nāmua hōʻuluʻulu manaʻo:",
"blockedtitle": "Ua pale ‘ia ka mea ho‘ohana",
"blockednoreason": "‘a‘ohe kumu",
+ "whitelistedittext": "E ʻoluʻolu, e $1 no ka hoʻololi ʻaoʻao ʻana.",
"loginreqtitle": "Noi i ka ʻeʻe ʻana",
"loginreqlink": "ʻeʻe",
"accmailtitle": "Ua ho‘ouna ‘ia ka ‘ōlelo hūnā",
"anontalkpagetext": "----\n<em>ʻO kēia ka ʻaoʻao kūkākūkā no kekahi mea ho‘ohana me ka inoa ʻole.</em>\nNo laila, pono mākou e ho‘ohana i ka IP no ka hōʻoia ʻana iā ia a hiki i kekahi mau mea hoʻohana ke hoʻokaʻana i kēia IP.\nInā he mea ho‘ohana inoa ʻole ʻoe a loaʻa kekahi mau manaʻo nāuʻole, e ʻoluʻolu [[Special:UserLogin/signup|e kāinoa]] a i ʻole [[Special:UserLogin|e ʻeʻe]].''",
"noarticletext": "ʻAʻohe kikokikona a kēia ʻaoʻao.\nHiki iā ʻoe ke [[Special:Search/{{PAGENAME}}|huli no kēia inoa ʻaoʻao]] i nā ʻaoʻao ʻē aʻe, <span class=\"plainlinks\">[{{fullurl:SpecialLog|page={{FULLPAGENAMEE}}}} huli i nā moʻolelo pili], a i ʻole [{{fullurl:{{FULLPAGENAME}}|action=edit}} hoʻololi i kēia ʻaoʻao]</span>.",
"noarticletext-nopermission": "ʻAʻohe kikokikona a kēia ʻaoʻao.\nHiki iā ʻoe ke [[Special:Search/{{PAGENAME}}|huli no kēia inoa ʻaoʻao]] i nā ʻaoʻao ʻē aʻe aiʻole <span class=\"plainlinks\">[{{fullurl:SpecialLog|page={{FULLPAGENAMEE}}}} huli i nā moʻolelo pili]</span>, akā hiki ʻole iā ʻoe ke hoʻololi i kēia ʻaoʻao.",
+ "userpage-userdoesnotexist-view": "ʻAʻole kāinoa ʻia ka moʻokāki mea hoʻohana ʻo \"$1\".",
"updated": "(Hoʻopuka hou ʻia)",
"note": "<strong>E noka:</strong>",
"previewnote": "<strong>ʻO kēia ka nāmua wale nō.</strong>\n‘A‘ole mālama ‘ia nā ho‘ololi!",
"protectedpagewarning": "<strong>E akahele: Ua hoʻomalu ‘ia kēia ‘ao‘ao, pēlā, hiki i nā \"kahu\" ke ho‘ololi wale nō.</strong>\nAia nā loli hanalohi i lalo no ka ʻikena:",
"templatesused": "{{PLURAL:$1|anakuhi|mau anakuhi}} e hana ʻia ma kēia ʻaoʻao:",
"templatesusedpreview": "Hoʻohana ʻia kēia {{PLURAL:$1|anakuhi|mau anakuhi}} i kēia nāmua:",
+ "templatesusedsection": "{{PLURAL:$1|Ka anakuhi|Nā anakuhi}} e hana ʻia i kēia mahele:",
"template-protected": "(ho‘omalu ‘ia)",
"template-semiprotected": "(hapa-ho‘omalu ‘ia)",
"hiddencategories": "ʻO kēia ʻaoʻao he lālā o {{PLURAL:$1|1 mahele hūnā|$1 mau māhele hūnā}}:",
"recreate-moveddeleted-warn": "<strong>E akahele: Ke haku nei ʻoe i kekahi ʻaoʻao i holoi ʻia.</strong>\n\nPono ʻoe e noʻonoʻo e pili ana ka pono o ka hoʻomau ʻana o ka hoʻololi ʻana o kēia ʻaoʻao.\nAia ka moʻolelo holoi a hoʻoneʻe no kēia ʻaoʻao ma ʻaneʻi:",
"moveddeleted-notice": "Ua holoi ʻia kēia ʻaoʻao.\nHoʻolako ʻia ka moʻolelo holoi a hoʻoneʻe no kēia ʻaoʻao i lalo no ke kūmole.",
"log-fulllog": "Nānā i ka moʻolelo piha",
+ "postedit-confirmation-created": "Ua haku ʻia ka ʻaoʻao.",
"postedit-confirmation-saved": "Ua mālama ʻia kāu hoʻololi",
"defaultmessagetext": "Kikokikona pūlono pa‘amau",
"content-model-wikitext": "kikokikonawiki",
"content-model-javascript": "IawaSikulipa",
+ "content-model-css": "CSS",
"post-expand-template-inclusion-warning": "<strong>E akahele:</strong> Hoʻokela ʻia ka palena nui o ke anakuhi.\nHoʻohui ʻole i kekahi mau anakuhi.",
"post-expand-template-inclusion-category": "Nā ʻaoʻao me nā anakuhi e hoʻokela i ka palenanui",
"post-expand-template-argument-warning": "<strong>E akahele:</strong> Aia ma kēia ʻaoʻao i kekahi a ʻoi pilikia anakuhi e loaʻa i kekahi nui hoʻonui nunui loa.\nUa waiho ʻia kēia mau pilikia.",
"history-feed-title": "Mōʻaukala kāmua",
"history-feed-description": "Mōʻaukala kāmua no kēia ʻaoʻao ma ka wiki",
"history-feed-item-nocomment": "$1 ma $3 ma ka hola $4",
+ "rev-deleted-comment": "wehe ʻia ka hōʻuluʻulu manaʻo hoʻololi)",
+ "rev-deleted-user": "(wehe ʻia ka inoa mea hoʻohana)",
"rev-delundel": "hoʻololi ka nānā ʻana",
"rev-showdeleted": "hōʻike",
"revisiondelete": "Holoi/holoi ʻole i nā kāmua",
"revdelete-reasonotherlist": "Nā kumu ʻē aʻe",
"revdelete-edit-reasonlist": "Hoʻololi i nā kumu holoi",
"revdelete-offender": "Mea kākau kāmua:",
+ "mergehistory": "Hoʻokuʻi pū i nā mōʻaukala ʻaoʻao",
"mergehistory-from": "ʻAoʻao kūmole:",
"mergehistory-into": "ʻAoʻao helewahi:",
"mergehistory-reason": "Kumu:",
+ "mergelog": "Moʻolelo hoʻokuʻi pū",
"revertmerge": "Hoʻokuʻipū ʻole",
"history-title": "Mōʻaukala kāmua o \"$1\"",
"lineno": "Laina $1:",
"search-external": "Huli kūwaho",
"preferences": "Kaʻu makemake",
"mypreferences": "Ka‘u makemake",
+ "prefs-edits": "Helu o nā hoʻololi:",
+ "prefsnologintext2": "E ʻeʻe no ka hoʻololi ʻana o kāu makemake, ke ʻoluʻolu.",
"prefs-skin": "ʻIli",
"skin-preview": "Nāmua",
"datedefault": "ʻAʻohe makemake",
"prefs-namespaces": "Lewainoa",
"default": "paʻamau",
"prefs-files": "Waihona",
+ "prefs-emailconfirm-label": "Hōʻoia lekauila:",
"youremail": "Lekauila:",
"username": "{{GENDER:$1|Inoa mea hoʻohana}}:",
"prefs-memberingroups": "{{GENDER:$2|He lālā}} o {{PLURAL:$1|hui|mau hui}}:",
"prefs-diffs": "ʻOkoʻa",
"prefs-help-prefershttps": "E hana ana kēia makemake i ka ʻeʻe hou ana.",
"userrights": "Ho‘oponopono ‘ana o nā kuleana",
+ "userrights-user-editname": "E kikokiko i kekahi inoa mea hoʻohana:",
+ "editusergroup": "Hoʻololi i nā hui mea hoʻohana",
+ "userrights-editusergroup": "Hoʻololi i nā hui mea hoʻohana",
+ "saveusergroups": "Mālama i nā hui mea hoʻohana",
"userrights-groupsmember": "He lālā o:",
"userrights-reason": "Kumu:",
"group": "Hui:",
"right-bigdelete": "Holoi i nā ʻaoʻao me he mōʻaukala nui",
"right-browsearchive": "Huli i nā ʻaoʻao holoi",
"right-undelete": "Holoi ʻole i kekahi ʻaoʻao",
+ "right-suppressionlog": "Nānā i nā moʻolelo pilikino",
"right-block": "Pale i nā mea hoʻohana ʻē aʻe mai ka hoʻololi ʻana",
"right-blockemail": "Pale i nā mea hoʻohana ʻē aʻe mai ka lekauila ʻana",
"right-hideuser": "Pale i ka inoa mea hoʻohana, no laila ʻaʻole hōʻike i ka lehulehu",
"action-createpage": "haku ʻaoʻao",
"action-createtalk": "haku ʻaoʻao kūkākūkā",
"action-createaccount": "kāinoa i kēia moʻokāki mea hoʻohana",
+ "action-move": "hoʻoneʻe i kēia ʻaoʻao",
+ "action-move-subpages": "hoʻoneʻe i kēia ʻaoʻao a me nā ʻaoʻao kūloko hoʻi.",
+ "action-movefile": "hoʻoneʻe i kēia waihona",
+ "action-upload": "hoʻouka i kēia waihona",
+ "action-delete": "holoi i kēia ʻaoʻao",
+ "action-sendemail": "lekauila",
"nchanges": "$1 {{PLURAL:$1|loli|mau loli}}",
"enhancedrc-since-last-visit": "$1 {{PLURAL:$1|mai kāu kipana aku nei}}",
"enhancedrc-history": "mōʻaukala",
"filesource": "Kumu:",
"uploadwarning": "Akahele hoʻouka",
"savefile": "Waihona mālama",
- "uploadedimage": "ua hoʻouka iā \"[[$1]]\"",
"upload-source": "Waihona kūmole",
"sourcefilename": "Inoa waihona kūmole:",
"sourceurl": "URL kūmole:",
"watchlisttools-raw": "Hoʻololi i ka papakiaʻi maka",
"duplicate-defaultsort": "<strong>E akahele:</strong> Mauʻaʻe ke kī kaʻalike paʻamau \"$2\" i ke kī kaʻalike paʻamau \"$1\" mai ka wā mua.",
"version-specialpages": "Nā ‘Ao‘ao kūikawā",
- "version-poweredby-translators": "Mea unuhi translatewiki.net",
+ "version-poweredby-translators": "nā mea unuhi ma translatewiki.net",
"version-software-version": "Mana",
"redirect": "Kiahou e ka waihona, ka mea hoʻohana, ka ʻaoʻao aiʻole ka ID loihape",
"redirect-legend": "Kiahou i kekahi waihona aiʻole kekahi ʻaoʻao",
"tog-watchdefault": "מעקב אחרי דפים וקבצים שערכתי",
"tog-watchmoves": "מעקב אחרי דפים וקבצים שהעברתי",
"tog-watchdeletion": "מעקב אחרי דפים וקבצים שמחקתי",
- "tog-watchrollback": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d שש×\97×\96רת×\99",
+ "tog-watchrollback": "×\9eעק×\91 ×\90×\97ר×\99 ×\93פ×\99×\9d ש×\91×\94×\9d ×\91×\99צעת×\99 ש×\97×\96×\95ר ×\9e×\94×\99ר",
"tog-minordefault": "הגדרת כל פעולת עריכה כמשנית אם לא צוין אחרת",
"tog-previewontop": "הצגת תצוגה מקדימה לפני תיבת העריכה",
"tog-previewonfirst": "הצגת תצוגה מקדימה בעריכה ראשונה",
"hidetoc": "הסתרה",
"collapsible-collapse": "הסתרה",
"collapsible-expand": "הצגה",
+ "confirmable-confirm": "האם {{GENDER:$1|ברצונך}} להמשיך?",
+ "confirmable-yes": "כן",
+ "confirmable-no": "לא",
"thisisdeleted": "לשחזר או להציג $1?",
"viewdeleted": "להציג $1?",
"restorelink": "{{PLURAL:$1|גרסה מחוקה אחת|$1 גרסאות מחוקות}}",
"invalidtitle-knownnamespace": "כותרת בלתי־תקינה עם מרחב השם \"$2\" ושם דף \"$3\"",
"invalidtitle-unknownnamespace": "כותרת בלתי־תקינה עם מרחב שם בלתי־ידוע מספר $1 ושם דף \"$2\"",
"exception-nologin": "לא בחשבון",
- "exception-nologin-text": "אנא [[Special:Userlogin|היכנסו לחשבון]] כדי לראות את הדף הזה או לבצע את הפעולה הזו.",
+ "exception-nologin-text": "אנא היכנסו לחשבון כדי לראות את הדף הזה או לבצע את הפעולה הזו.",
"exception-nologin-text-manual": "אנא $1 כדי לראות את הדף הזה או לבצע את הפעולה הזו.",
"virus-badscanner": "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
"virus-scanfailed": "הסריקה נכשלה (קוד: $1)",
"changeemail": "שינוי כתובת דוא\"ל",
"changeemail-header": "שינוי כתובת הדואר האלקטרוני בחשבון",
"changeemail-text": "מלאו טופס זה כדי לשנות את כתובת הדואר האלקטרוני שלכם. יהיה עליכם למלא סיסמה כדי לאשר את השינוי.",
- "changeemail-no-info": "×¢×\9c×\99×\9b×\9d להיכנס לחשבון כדי לגשת לדף זה ישירות.",
+ "changeemail-no-info": "×\99ש להיכנס לחשבון כדי לגשת לדף זה ישירות.",
"changeemail-oldemail": "כתובת דוא\"ל נוכחית:",
"changeemail-newemail": "כתובת דוא\"ל חדשה:",
"changeemail-none": "(אין)",
"parser-template-recursion-depth-warning": "עומק התבניות המוכללות זו בזו עבר את המגבלה ($1)",
"language-converter-depth-warning": "עומק ממיר השפה עבר את המגבלה ($1)",
"node-count-exceeded-category": "דפים שבהם מספר הצמתים גדול מדי",
- "node-count-exceeded-category-desc": "ק×\98×\92×\95ר×\99×\94 ×\9c×\93פ×\99×\9d ש×\9eספר ×\94צ×\9eת×\99×\9d ×\91×\94×\9d ×\92×\93×\95×\9c ×\9e×\93י.",
+ "node-count-exceeded-category-desc": "×\9eספר ×\94צ×\9eת×\99×\9d ×\91×\93×£ ×\92×\93×\95×\9c ×\9e×\94×\9eספר ×\94×\9eר×\91י.",
"node-count-exceeded-warning": "מספר הצמתים בדף גדול מדי",
"expansion-depth-exceeded-category": "דפים שבהם עומק ההרחבה גדול מדי",
- "expansion-depth-exceeded-category-desc": "×\96×\95×\94×\99 ק×\98×\92×\95ר×\99×\94 ×\9c×\93פ×\99×\9d ש×\91×\94×\9d ×¢×\95×\9eק ×\94×\94ר×\97×\91×\94 ×\92×\93×\95×\9c ×\9e×\93י.",
+ "expansion-depth-exceeded-category-desc": "×¢×\95×\9eק ×\94×\94ר×\97×\91×\94 ×\91×\93×£ ×\92×\93×\95×\9c ×\9e×\94×¢×\95×\9eק ×\94×\9eר×\91י.",
"expansion-depth-exceeded-warning": "עומק ההרחבה בדף גדול מדי",
"parser-unstrip-loop-warning": "נמצאה לולאה בפריסה",
"parser-unstrip-recursion-limit": "עומק הרקורסיה של הפריסה עבר את המגבלה ($1)",
"searchprofile-advanced-tooltip": "חיפוש במרחבי שם מותאמים אישית",
"search-result-size": "$1 ({{PLURAL:$2|מילה אחת|$2 מילים}})",
"search-result-category-size": "{{PLURAL:$1|חבר אחד|$1 חברים}} ({{PLURAL:$2|קטגוריית משנה אחת|$2 קטגוריות משנה}}, {{PLURAL:$3|קובץ אחד|$3 קבצים}})",
- "search-result-score": "רלוונטיוּת: $1%",
"search-redirect": "(הפניה $1)",
"search-section": "(פסקה $1)",
"search-file-match": "(התאמה בתוכן הקובץ)",
"preferences": "העדפות",
"mypreferences": "העדפות",
"prefs-edits": "מספר עריכות:",
- "prefsnologintext2": "×¢×\9c×\99×\9b×\9d $1 כדי לשנות העדפות משתמש.",
+ "prefsnologintext2": "×\90× ×\90 ×\94×\99×\9b× ×¡×\95 ×\9c×\97ש×\91×\95×\9f כדי לשנות העדפות משתמש.",
"prefs-skin": "עיצוב",
"skin-preview": "תצוגה מקדימה",
"datedefault": "ברירת המחדל",
"prefs-help-gender": "אין חובה למלא העדפה זו.\nהמערכת משתמשת במידע זה כדי לפנות אליך/אלייך ולציין את שם המשתמש שלך במין הדקדוקי הנכון.\nהמידע יהיה ציבורי.",
"email": "דוא\"ל",
"prefs-help-realname": "השם האמיתי הוא אופציונאלי.\nאם תבחרו לספקו, הוא ישמש לייחוס עבודתכם אליכם.",
- "prefs-help-email": "×\9bת×\95×\91ת ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\94×\99×\90 ×\90×\95פצ×\99×\95× ×\90×\9c×\99ת, ×\90×\9a ×\94×\99×\90 ×\93ר×\95ש×\94 ×\9c×\90×\99פ×\95ס ×\94ס×\99ס×\9e×\94 ×\91×\9eקר×\94 שתש×\9b×\97×\95 ×\90ת ×\94ס×\99ס×\9eה.",
+ "prefs-help-email": "×\9bת×\95×\91ת ×\93×\95×\90ר ×\90×\9cק×\98ר×\95× ×\99 ×\94×\99×\90 ×\90×\95פצ×\99×\95× ×\90×\9c×\99ת, ×\90×\91×\9c ×\94×\99×\90 ×\97×\99×\95× ×\99ת ×\9c×\90×\99פ×\95ס ×\94ס×\99ס×\9e×\94 ×\91×\9eקר×\94 שתש×\9b×\97×\95 ×\90×\95תה.",
"prefs-help-email-others": "באפשרותך גם לבחור לאפשר לאחרים ליצור איתך קשר באמצעות דוא\"ל דרך קישור בדף המשתמש או בדף השיחה שלך.\nכתובת הדוא\"ל שלך לא תיחשף כשמשתמשים אחרים ייצרו קשר איתך.",
"prefs-help-email-required": "כתובת דואר אלקטרוני נדרשת לכתיבה באתר.",
"prefs-info": "מידע בסיסי",
"uploadwarning": "אזהרת העלאת קבצים",
"uploadwarning-text": "אנא שנו את תיאור הקובץ שלמטה ונסו שוב.",
"savefile": "שמירת קובץ",
- "uploadedimage": "העלה את הקובץ [[$1]]",
- "overwroteimage": "העלה גרסה חדשה של הקובץ [[$1]]",
"uploaddisabled": "העלאת קבצים מבוטלת.",
"copyuploaddisabled": "העלאת קבצים מכתובת URL מבוטלת.",
"uploaddisabledtext": "אפשרות העלאת הקבצים מבוטלת.",
"trackingcategories-desc": "הקריטריון להכללה בקטגוריה",
"noindex-category-desc": "הדף אינו מאונדקס על־ידי רובוטים כיוון שהוא כולל את מילת הקסם <code><nowiki>__NOINDEX__</nowiki></code> והוא במרחב שם שבו דגל כזה מותר לשימוש.",
"index-category-desc": "הדף כולל את מילת הקסם <code><nowiki>__INDEX__</nowiki></code> (והוא במרחב שם שבו דגל כזה מותר לשימוש), ולכן הוא מאונדקס על֫־ידי רובוטים אף שכברירת מחדל הוא לא היה מאונדקס על ידם.",
- "post-expand-template-inclusion-category-desc": "×\9c×\90×\97ר ×\94ר×\97×\91ת ×\9b×\9c ×\94ת×\91× ×\99×\95ת, ×\92×\95×\93×\9c ×\94×\93×£ ×\92×\93×\95×\9c ×\9eâ\80\8fâ\80\8fÖ«Ö¾<code>$wgMaxArticleSize</code>, ×\95×\9c×\9b×\9f ×\9eספר ת×\91× ×\99×\95ת ×\90×\99× ×\9f ×\9e×\95ר×\97×\91×\95ת.",
- "post-expand-template-argument-category-desc": "×\9c×\90×\97ר ×\94ר×\97×\91ת ×\90ר×\92×\95×\9e× ×\98 ש×\9c ת×\91× ×\99ת (×\9eש×\94×\95 ×\91ס×\95×\92ר×\99×\99×\9d ×\9eש×\95×\9cש×\99×\9d, ×\9b×\92×\95×\9f <code>{{{Foo}}})</code>, ×\94×\93×£ ×\92×\93×\95×\9c ×\9eâ\80\8fâ\80\8fÖ«â\80\8fâ\80\8fÖ«Ö¾<code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "×\99×\95תר ×\9e×\93×\99 פ×\95× ×§×¦×\99×\95ת ×\9e×¤×¢× ×\97 ×\99קר×\95ת ×\9cש×\99×\9e×\95ש (×\9b×\92×\95×\9f #ק×\99×\99×\9d) ×\9e×\95×\9b×\9c×\9c×\95ת ×\91×\93×£. ראו [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "×\94ק×\98×\92×\95ר×\99×\94 × ×\95ספת ×\90×\9d ×\94×\93×£ ×\9b×\95×\9c×\9c ק×\99ש×\95ר ש×\91×\95ר ×\9cק×\95×\91×¥ (ק×\99ש×\95ר ×\9c×\94×\98×\9eעת ק×\95×\91×¥ ×\9b×\90שר ×\94ק×\95×\91×¥ ×\90×\99× ×\95 ק×\99×\99×\9d).",
- "hidden-category-category-desc": "ק×\98×\92×\95ר×\99×\94 ×\96×\95 ×\9b×\95×\9c×\9cת ×\90ת ×\9e×\99×\9cת ×\94קס×\9d <nowiki>__ק×\98×\92×\95ר×\99×\94_×\9e×\95סתרת__</nowiki>, ש×\92×\95ר×\9eת ×\9c×\94 ×\9c×\90 ×\9c×\94×\95פ×\99×¢ בתיבת קישורי הקטגוריות בדפים כברירת מחדל.",
+ "post-expand-template-inclusion-category-desc": "×\92×\95×\93×\9c ×\94×\93×£ ×\92×\93×\95×\9c ×\9eâ\80\8fâ\80\8fÖ¾<code>$wgMaxArticleSize</code> ×\9c×\90×\97ר ×\94ר×\97×\91ת ×\9b×\9c ×\94ת×\91× ×\99×\95ת, ×\95×\9c×\9b×\9f ×\9b×\9e×\94 ת×\91× ×\99×\95ת ×\9c×\90 ×\94×\95ר×\97×\91×\95.",
+ "post-expand-template-argument-category-desc": "×\94×\93×£ ×\92×\93×\95×\9c ×\9eÖ¾<code>$wgMaxArticleSize</code> ×\9c×\90×\97ר ×\94ר×\97×\91ת ×\90ר×\92×\95×\9e× ×\98 ש×\9c ת×\91× ×\99ת (×\9eש×\94×\95 ×\91ס×\95×\92ר×\99×\99×\9d ×\9eש×\95×\9cש×\99×\9d, ×\9b×\92×\95×\9f <code>{{{Foo}}})</code>).",
+ "expensive-parserfunction-category-desc": "×\94×\93×£ ×\9eשת×\9eש ×\91×\99×\95תר ×\9e×\93×\99 פ×\95× ×§×¦×\99×\95ת ×\9e×¤×¢× ×\97 ×\99קר×\95ת ×\9cש×\99×\9e×\95ש (×\9b×\92×\95×\9f #ק×\99×\99×\9d). ראו [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "הדף כולל קישור שבור לקובץ (קישור להטמעת קובץ כאשר הקובץ אינו קיים).",
+ "hidden-category-category-desc": "×\94ק×\98×\92×\95ר×\99×\94 ×\9b×\95×\9c×\9cת ×\90ת ×\94×\98קס×\98 <code><nowiki>__ק×\98×\92×\95ר×\99×\94_×\9e×\95סתרת__</nowiki></code> ×\91ת×\95×\9b×\9f ×\94×\93×£ ש×\9c×\94, ×\95×\9c×\9b×\9f ×\94×\99×\90 ×\9c×\90 ×\9e×\95פ×\99×¢×\94 בתיבת קישורי הקטגוריות בדפים כברירת מחדל.",
"trackingcategories-nodesc": "התיאור אינו זמין.",
"trackingcategories-disabled": "הקטגוריה מבוטלת",
"mailnologin": "אין כתובת לשליחה",
"mywatchlist": "רשימת מעקב",
"watchlistfor2": "עבור $1 $2",
"nowatchlist": "אין דפים ברשימת המעקב.",
- "watchlistanontext": "×¢×\9c×\99×\9b×\9d $1 כדי לצפות או לערוך פריטים ברשימת המעקב.",
+ "watchlistanontext": "×\90× ×\90 ×\94×\99×\9b× ×¡×\95 ×\9c×\97ש×\91×\95×\9f כדי לצפות או לערוך פריטים ברשימת המעקב.",
"watchnologin": "לא נכנסת לחשבון",
"addwatch": "הוספה לרשימת המעקב",
"addedwatchtext": "הדף \"[[:$1]]\" נוסף ל[[Special:Watchlist|רשימת המעקב]].\nשינויים שייערכו בעתיד בדף זה ובדף השיחה שלו, יוצגו ברשימת המעקב.",
"delete-edit-reasonlist": "עריכת סיבות המחיקה",
"delete-toobig": "דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.",
"delete-warning-toobig": "דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.",
+ "delete-cantedit": "אין באפשרותך למחוק את הדף כי אין לך הרשאה לערוך אותו.",
"deleting-backlinks-warning": "'''אזהרה:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|דפים אחרים]] מקשרים לדף שאתם עומדים למחוק או מכלילים אותו.",
"rollback": "שחזור עריכות",
"rollback_short": "שחזור",
"autoblockid": "חסימה אוטומטית #$1",
"block": "חסימת משתמש",
"unblock": "שחרור משתמש",
- "blockip": "חסימת משתמש",
+ "blockip": "חסימת {{GENDER:$1|משתמש|משתמשת}}",
"blockip-legend": "חסימת משתמש",
"blockiptext": "השתמשו בטופס שלהלן כדי לחסום את הרשאות הכתיבה מכתובת IP או משתמש מסוימים.\nחסימות כאלה צריכות להתבצע רק כדי למנוע השחתה, ובהתאם ל[[{{MediaWiki:Policy-url}}|נהלים]].\nאנא מלאו את הסיבה הפרטנית לחסימה להלן (לדוגמה, באמצעות ציון דפים מסוימים שהשחית המשתמש).",
"ipaddressorusername": "כתובת IP או שם משתמש:",
"ipb-unblock-addr": "הסרת חסימה של $1",
"ipb-unblock": "הסרת חסימה של שם משתמש או כתובת IP",
"ipb-blocklist": "הצגת החסימות הנוכחיות",
- "ipb-blocklist-contribs": "התרומות של $1",
+ "ipb-blocklist-contribs": "התרומות של {{GENDER:$1|$1}}",
"unblockip": "שחרור חסימה",
"unblockiptext": "השתמשו בטופס שלהלן כדי להחזיר את הרשאות הכתיבה למשתמש או כתובת IP חסומים.",
"ipusubmit": "שחרור חסימה",
"movepage-moved-redirect": "נוצרה הפניה.",
"movepage-moved-noredirect": "יצירת ההפניה בוטלה.",
"articleexists": "קיים כבר דף באותו שם, או שהשם שבחרת אינו תקין.\nנא לבחור שם אחר.",
- "cantmove-titleprotected": "×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94, כיוון שהשם החדש מוגן מפני יצירה",
+ "cantmove-titleprotected": "×\90×\99× ×\9a ×\9e×\95רש×\94 ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94 כיוון שהשם החדש מוגן מפני יצירה",
"movetalk": "העברה גם של דף השיחה",
"move-subpages": "העברת כל דפי המשנה (עד $1)",
"move-talk-subpages": "העברת כל דפי המשנה של דף השיחה (עד $1)",
"logentry-rights-rights": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3 מ$4 ל$5‏",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3",
"logentry-rights-autopromote": "$1 קודם אוטומטית מ$4 ל$5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|העלה|העלתה}} את $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|העלה|העלתה}} גרסה חדשה של $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|העלה|העלתה}} את $3",
"rightsnone": "(כלום)",
"feedback-bugornote": "אם אתם מוכנים לתאר בעיה טכנית בפרטים, אנא [$1 דווחו באג].\nאחרת, תוכלו להשתמש בטופס הפשוט שלהלן. הערתכם תתווסף לדף \"[$3 $2]\", יחד עם שם המשתמש שלכם.",
"feedback-subject": "נושא:",
"action-pagelang": "לשנות את שפת הדף",
"log-name-pagelang": "יומן שינוי שפה",
"log-description-pagelang": "זהו יומן של שינויים בשפות של הדפים.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|שינה|שינתה}} את שפת הדף $3 מ$4 ל$5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|שינה|שינתה}} את שפת הדף $3 מ$4 ל$5.",
+ "default-skin-not-found": "אופס! עיצוב ברירת המחדל עבור אתר הוויקי שלכם (<code>$wgDefaultSkin</code>),‏ <code>$1</code>, אינו זמין.\n\nנראה שההתקנה שלכם כוללת את העיצובים הבאים. ראו מידע בדף [https://www.mediawiki.org/wiki/Manual:Skin_configuration \"הגדרת עיצובים\" במדריך] על האפשרות להפעיל אותם ולבחור את עיצוב ברירת המחדל.\n\n$2\n\n; אם כרגע התקנתם את מדיה־ויקי:\n: נראה שזו התקנה מ־git, או ישירות מקוד המקור בשיטה אחרת כלשהי. במקרה הזה, בעיה זו צפויה. נסו להתקין כמה עיצובים מ[https://www.mediawiki.org/wiki/Category:All_skins ספריית העיצובים של mediawiki.org], על־ידי:\n:* הורדת [https://www.mediawiki.org/wiki/Download קובץ ה־tar להתקנה], שכולל מספר עיצובים והרחבות. באפשרותכם להעתיק ולהדביק מתוכו את תיקיית ה־<code>skins/</code>.\n:* שכפול אחת מה־git repostiroies ב־<code>mediawiki/skins/*</code> בעזרת git לתוך תיקיית ה־<code>skins/</code> בהתקנת מדיה־ויקי שלכם.\n: אם תעשו זאת, זה לא אמור להפריע ל־git repository שלכם (אם אתם מפתחים של מדיה־ויקי).\n\n; אם כרגע שדרגתם את מדיה־ויקי:\n: מדיה־ויקי 1.24 וגרסאות חדשות יותר כבר לא מפעילות עיצובים מותקנים באופן אוטומטי (ראו [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery \"גילוי אוטומטי של עיצובים\" במדריך]). תוכלו להעתיק את השורות הבאות לתוך הקובץ <code>LocalSettings.php</code> כדי להפעיל את כל העיצובים המותקנים כעת:\n\n<pre>$3</pre>\n\n; אם כרגע שיניתם את <code>LocalSettings.php</code>:\n: בדקו שנית האם ביצעתם שגיאות הקלדה בשמות העיצובים.",
+ "default-skin-not-found-no-skins": "אופס! עיצוב ברירת המחדל עבור אתר הוויקי שלכם (<code>$wgDefaultSkin</code>),‏ <code>$1</code>, אינו זמין.\n\nאין לכם עיצובים מותקנים.\n\n$2\n\n; אם כרגע התקנתם או שדרגתם את מדיה־ויקי:\n: נראה שזו התקנה מ־git, או ישירות מקוד המקור בשיטה אחרת כלשהי. במקרה הזה, בעיה זו צפויה. מדיה־ויקי 1.24 וגרסאות חדשות יותר אינן כוללות עיצובים ב־git repository הראשי. נסו להתקין כמה עיצובים מ[https://www.mediawiki.org/wiki/Category:All_skins ספריית העיצובים של mediawiki.org], על־ידי:\n:* הורדת [https://www.mediawiki.org/wiki/Download קובץ ה־tar להתקנה], שכולל מספר עיצובים והרחבות. באפשרותכם להעתיק ולהדביק מתוכו את תיקיית ה־<code>skins/</code>.\n:* שכפול אחת מה־git repostiroies ב־<code>mediawiki/skins/*</code> בעזרת git לתוך תיקיית ה־<code>skins/</code> בהתקנת מדיה־ויקי שלכם.\n: אם תעשו זאת, זה לא אמור להפריע ל־git repository שלכם (אם אתם מפתחים של מדיה־ויקי). ראו מידע בדף [https://www.mediawiki.org/wiki/Manual:Skin_configuration \"הגדרת עיצובים\" במדריך] על האפשרות להפעיל עיצובים ולבחור את עיצוב ברירת המחדל.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (מופעל)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''מבוטל''')"
}
"לערי ריינהארט",
"आलोक",
"रोहित रावत",
- "아라"
+ "아라",
+ "संजीव कुमार"
]
},
"tog-underline": "कड़ियाँ अधोरेखन:",
"tog-watchdefault": "मेरे द्वारा सम्पादित पृष्ठों और फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
"tog-watchmoves": "मेरे द्वारा स्थानांतरित पृष्ठों एवं फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
"tog-watchdeletion": "मेरे द्वारा हटाए गए पृष्ठों एवं फ़ाइलों को मेरी ध्यानसूची में जोड़ें",
+ "tog-watchrollback": "मेरे द्वारा प्रत्यापन्न (रोलबैक) किये हुये पृष्ठों को मेरी ध्यानसूची में जोड़ें।",
"tog-minordefault": "मेरे सभी सम्पादन छोटे बदलाव हैं",
"tog-previewontop": "सम्पादन बक्से के ऊपर झलक दिखाएँ",
"tog-previewonfirst": "प्रथम सम्पादन के बाद झलक दिखाएँ",
"searchprofile-advanced-tooltip": "विशेष नामस्थानों में खोजें",
"search-result-size": "$1 ({{PLURAL:$2|$2 शब्द}})",
"search-result-category-size": "{{PLURAL:$1|$1 सदस्य}} ({{PLURAL:$2|$2 उपश्रेणी|$2 उपश्रेणियाँ}}, {{PLURAL:$3|$3 सञ्चिका|$3 सञ्चिकाएँ}})",
- "search-result-score": "संबद्ध: $1%",
"search-redirect": "($1 से पुनर्निर्देशित)",
"search-section": "(अनुभाग $1)",
"search-file-match": "(फ़ाइल सामग्री से मेल खाता है)",
"uploadwarning": "अपलोड चेतावनी",
"uploadwarning-text": "फ़ाइल विवरण को संशोधित कर फिर कोशिश करें।",
"savefile": "फ़ाइल संजोयें",
- "uploadedimage": "\"[[$1]]\" अपलोड करी",
- "overwroteimage": "\"[[$1]]\" का नया अवतरण अपलोड किया",
"uploaddisabled": "अपलोड प्रतिबंधित हैं।",
"copyuploaddisabled": "यू॰आर॰एल द्वारा अपलोड अक्षम हैं।",
"uploaddisabledtext": "फ़ाइल अपलोड अक्षम हैं।",
"watchlist-details": "वार्ता पृष्ठों के अलावा {{PLURAL:$1|$1 पृष्ठ}} आपकी ध्यानसूची में हैं।",
"wlheader-enotif": "ई-मेल नोटिफ़िकेशन सक्षम हैं।",
"wlheader-showupdated": "पृष्ठ जो आपके द्वारा देखे जाने के बाद बदले गये हैं '''बोल्ड''' दिखेंगे।",
- "wlnote2": "$2,$3 तक आखरी {{PLURAL:$1|घंटे|<strong>$1</strong> घंटों}} में बदलाव निम्नलिखित हैं।",
+ "wlnote": "$3 को $4 बजे तक पिछले '''$2''' {{PLURAL:$2|घंटे|घंटों}} में {{PLURAL:$1|हुआ एक|हुए '''$1'''}} परिवर्तन निम्न {{PLURAL:$1|है|हैं}}।",
"wlshowlast": "पिछले $1 घंटे $2 दिन $3 देखें",
"watchlist-options": "ध्यानसूची विकल्प",
"watching": "ध्यान दे रहे हैं...",
"delete-edit-reasonlist": "हटाने के कारण संपादित करें",
"delete-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\n{{SITENAME}} के अनपेक्षित रूप से बंद होने से रोकने के लिये ऐसे पृष्ठों को हटाने की अनुमति नहीं है।",
"delete-warning-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\nइसे हटाने से {{SITENAME}} के डाटाबेस की गतिविधियों में व्यवधान आ सकता है;\nकृपया सोच समझ कर आगे बढ़ें।",
+ "delete-cantedit": "आप इस पृष्ठ को नहीं हटा सकते क्योंकि आपको इसकी अनुमति नहीं है।",
"deleting-backlinks-warning": "'''चेतावनी:''' जो पृष्ठ आप हटाने जा रहे हैं उससे [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
"rollback": "संपादन वापिस लें",
"rollback_short": "वापिस लें",
"Malafaya",
"Thakurji",
"아라",
- "Soul Train"
+ "Soul Train",
+ "Filipinayzd"
]
},
"tog-underline": "Jorr ke niche line khicho:",
"talkpagelinktext": "Baat",
"specialpage": "Khaas Panna",
"personaltools": "Aapan aujaar",
- "postcomment": "Nawaa section",
"articlepage": "Content waala panna ke dekho",
"talk": "Salah",
"views": "Bichar",
"externaldberror": "Koi bahaari database authentication error hai, nai to aap ke bahaari account badle ke adhikar nai hai.",
"login": "Log in karo",
"nav-login-createaccount": "Log in karo/ nawaa account banao",
- "loginprompt": "Login kare ke khatir {{SITENAME}} cookies ke laabu kare ke chaahi.",
"userlogin": "Log in karo/ nawaa account banao",
"userloginnocreate": "Log in karo",
"logout": "Log out",
"searchprofile-advanced-tooltip": "Custom namespaces me khojo",
"search-result-size": "$1 ({{PLURAL:$2|1 sabd|$2 sabd}})",
"search-result-category-size": " {{PLURAL:$1|1 sadasya|$1 sadasya}} ({{PLURAL:$2|1 chhota vibhag|$2 chhota vibhag}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Len den: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(section $1)",
"search-suggest": "Ka aap ke matlab rahaa: $1",
"saveprefs": "Save karo",
"restoreprefs": "Sab default settings ke pahile jaise karo (sab vibhag me)",
"prefs-editing": "Badaltaa hai",
- "rows": "Line:",
+ "rows": "Taytay:",
"columns": "Column:",
"searchresultshead": "Khojo",
"stub-threshold": "Threshold ke khatir <a href=\"#\" class=\"stub\">stub link</a> formatting (bytes):",
"uploadwarning": "Upload ke baare me chetauni",
"uploadwarning-text": "Meharbani kar ke file ke baaare me aur jankari ke niche badal ke aur fir se kosis karo.",
"savefile": "File ke save karo",
- "uploadedimage": "\"[[$1]]\" ke upload kar dewa gae",
- "overwroteimage": "\"[[$1]]\" ke nawaa version ke upload karaa gais hai",
"uploaddisabled": "Uploads ke disable kar dewa gais hai",
"copyuploaddisabled": "URL se upload kare pe rok lagae dewa gais hae.",
"uploaddisabledtext": "File uploads ke disable kar dewa gais hai.",
"watchlist-details": "{{PLURAL:$1|$1 panna|$1 panna}} pe dhyan dewa jae hai, baat waala panna ke chhorr ke.",
"wlheader-enotif": "E-mail notification ke enable kar dewa gais hai.",
"wlheader-showupdated": "Panna jiske aap ke pichhla visit ke ke baad badal dewa gais hia ke '''bold''' me dekhawa jaawe hai.",
+ "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",
"watching": "Dekhtaa...",
"talkpagelinktext": "Hisayranay",
"specialpage": "Espesyal nga panid",
"personaltools": "Mga kinaugalingon nga galamiton",
- "postcomment": "Bag-o nga seksyon",
"articlepage": "Lantawon ang panid sang ka-undan",
"talk": "Paghisayranay",
"views": "Mga talanawon",
"externaldberror": "Mahimo nga may ara sang sala sa pagpamatood sang database ukon wala ka sa lugar nga magbag-o sang imo pang-guha nga akawnt.",
"login": "Mag sulod",
"nav-login-createaccount": "Magsulod / maghimo account",
- "loginprompt": "Kinahanglan mo nga pasugtan ang kokes agod nga makasulod ka sa {{SITENAME}}.",
"userlogin": "Mag sulod / maghimo account",
"userloginnocreate": "Magsulod",
"logout": "Mag guha",
"searchprofile-advanced-tooltip": "Pangitaon sa pahungod nga espasyo sang pangalan",
"search-result-size": "$1 ({{PLURAL:$2|1 pulong|$2 pulong}})",
"search-result-category-size": "{{PLURAL:$1|1 ka miyembro|$1 ka mga miyembro}} ({{PLURAL:$2|1 ka subcategoriya|$2 ka mga subcategoriya}}, {{PLURAL:$3|1 ka hilera|$3 ka mga hilera}})",
- "search-result-score": "Pagkaangot: $1%",
"search-redirect": "(gindirekta liwat $1)",
"search-section": "(seksiyon $1)",
"search-suggest": "Ang buot mo silingon: $1",
"file-too-large": "Ang dokumeto ginapadala mo madako gid.",
"filename-tooshort": "Ang ngalan sang dokumento malipot gid.",
"filetype-banned": "Ini sari ni dokumento madumili.",
- "uploadedimage": "na-uplod \"[[$1]]\"",
"watchthisupload": "Bantayan ining panid",
"license": "Pagpanglisensya",
"license-header": "Pagpanglisensya",
"searchprofile-advanced-tooltip": "Traži u zadanom imenskom prostoru",
"search-result-size": "$1 ({{PLURAL:$2|1 riječ|$2 riječi}})",
"search-result-category-size": "{{PLURAL:$1|1 član|$1 člana|$1 članova}} ({{PLURAL:$2|1 potkategorija|$2 potkategorije|$2 potkategorija}}, {{PLURAL:$3|1 datoteka|$3 datoteke|$3 datoteka}})",
- "search-result-score": "Povezanost: $1%",
"search-redirect": "(preusmjeravanje $1)",
"search-section": "(odlomak $1)",
"search-suggest": "Mislili ste: $1",
"uploadwarning": "Upozorenje kod postavljanja",
"uploadwarning-text": "Molimo izmijenite opis datoteke ispod i pokušajte kasnije.",
"savefile": "Sačuvaj datoteku",
- "uploadedimage": "je postavio \"$1\"",
- "overwroteimage": "postavljena nova inačica od \"[[$1]]\"",
"uploaddisabled": "Postavljanje je onemogućeno",
"copyuploaddisabled": "Postavljanje URL-om onemogućeno.",
"uploaddisabledtext": "Postavljanje datoteka je onemogućeno.",
"talkpagelinktext": "Diskussion",
"specialpage": "Spezialseit",
"personaltools": "Meine Werkzeiche",
- "postcomment": "Neier Abschnitt",
"articlepage": "Inhaltsseit oonzeiche",
"talk": "Diskussion",
"views": "Ansichte",
"externaldberror": "Entweder es lieht en Fehler bei der externe Authentifizierung voar orrer du därrefst dein externes Benutzerkonto net aktualisiere.",
"login": "Oonmelde",
"nav-login-createaccount": "Oonmelde / Benutzerkonto erstelle",
- "loginprompt": "Zur Oonmeldung müsse Cookies aktiviert sin.",
"userlogin": "Oonmelde / Benutzerkonto erstelle",
"userloginnocreate": "Oonmelde",
"logout": "Abmelde",
"searchprofile-advanced-tooltip": "Such in weitre Noomeräume",
"search-result-size": "$1 ({{PLURAL:$2|1 Wort|$2 Wörter}})",
"search-result-category-size": "{{PLURAL:$1|1 Seit|$1 Seite}} ({{PLURAL:$2|1 Unnerkategorie|$2 Unnerkategorie}}, {{PLURAL:$3|1 Datei|$3 Dateie}})",
- "search-result-score": "Relevanz: $1 %",
"search-redirect": "(Weiterleitung von „$1“)",
"search-section": "(Abschnitt $1)",
"search-file-match": "(treffende Dateiinhalte)",
"uploadwarning": "Hochloodewarnung",
"uploadwarning-text": "Bittschön änner unner die Dateibeschreibung und versuch das nochmo erneit.",
"savefile": "Datei speichre",
- "uploadedimage": "lud „[[$1]]“ hoch",
- "overwroteimage": "Hot en nei Version von \"[[$1]]\" hochgelood",
"uploaddisabled": "Hochloode deaktiviert",
"copyuploaddisabled": "Das Hochloode von URLs ist deaktiviert",
"uploaddisabledtext": "Das Hochloode von Dateie ist deaktiviert.",
"watchlist-details": "Du beobachtest {{PLURAL:$1|en Seit|$1 Seite}}, ohne dass Diskussionsseite getrennt gezählt werre.",
"wlheader-enotif": "Der E-Mail-Benachrichtigungsdienst ist aktiviert.",
"wlheader-showupdated": "Seite mit noch net gesiehne Ännrunge werre'''fett''' dorgestellt.",
- "wlnote2": "Do folliche die Ändrunge von der letzte {{PLURAL:$1|Stund|<strong>$1</strong> Stunne}}. Stand: $2, $3.",
"wlshowlast": "Zeich die Ännrunge von der letzte $1 Stunde, $2 Tooch orrer $3.",
"watchlist-options": "Oonzeichoptione",
"watching": "Beobachte …",
"duplicate-defaultsort": "Achtung: Der Sortierungsschlüssel „$2“ üwerschreibt den voarher verwenndte Schlüssel „$1“.",
"version": "Version",
"version-extensions": "Installierte Erweitrunge",
+ "version-skins": "Benutzeroberfläche",
"version-specialpages": "Erweitrungen mit Spezialseite",
"version-parserhooks": "Parsererweitrunge",
"version-variables": "Variable",
"version-antispam": "Spamschutzerweitrunge",
- "version-skins": "Benutzeroberfläche",
"version-other": "Sonstiche Erweitrungen",
"version-mediahandlers": "Medienutzungserweitrunge",
"version-hooks": "Schnittstelle ''(Hooks)''",
"talkpagelinktext": "diskusija",
"specialpage": "Specialna strona",
"personaltools": "Wosobinske nastroje",
- "postcomment": "Nowy wotrězk",
"articlepage": "Nastawk",
"talk": "diskusija",
"views": "Zwobraznjenja",
"hidetoc": "schować",
"collapsible-collapse": "Schować",
"collapsible-expand": "Pokazać",
+ "confirmable-confirm": "Sy {{GENDER:$1|sej}} wěsty?",
+ "confirmable-yes": "Haj",
+ "confirmable-no": "Ně",
"thisisdeleted": "$1 pokazać abo wobnowić?",
"viewdeleted": "$1 pokazać?",
"restorelink": "{{PLURAL:$1|1 wušmórnjenu wersiju|$1 wušmórnjenej wersiji|$1 wušmórnjene wersije|$1 wušmórnjenych wersijow}}",
"invalidtitle-knownnamespace": "Njepłaćiwy titul z mjenowym rumom \"$2\" a tekstom \"$3\"",
"invalidtitle-unknownnamespace": "Njepłaćiwy titul z njeznatym mjenowym rumom $1 a tekstom \"$2\"",
"exception-nologin": "Njejsy přizjewjeny",
- "exception-nologin-text": "Prošu [[Special:Userlogin|přizjew so]], zo by přistup na tutu stronu abo akciju měł.",
+ "exception-nologin-text": "Prošu přizjew so, zo by přistup na tutu stronu abo akciju měł.",
"exception-nologin-text-manual": "Zo by přistup na tutu stronu abo akciju měł, dyrbiš so $1.",
"virus-badscanner": "Špatna konfiguracija: Njeznaty wirusowy skener: ''$1''",
"virus-scanfailed": "Skenowanje njeporadźiło (kode $1)",
"externaldberror": "Běše pak eksterny zmylk awtentifikacije datoweje banki, pak njesměš swoje eksterne konto aktualizować.",
"login": "Přizjewić",
"nav-login-createaccount": "Konto wutworić abo so přizjewić",
- "loginprompt": "Za přizjewjenje do {{GRAMMAR:genitiw|{{SITENAME}}}} dyrbja placki zmóžnjene być.",
"userlogin": "Załožće konto abo přizjewće so",
"userloginnocreate": "Přizjewić",
"logout": "wotzjewić",
"searchprofile-advanced-tooltip": "W swójskich mjenowych rumach pytać",
"search-result-size": "$1 ({{PLURAL:$2|1 słowo|$2 słowje|$2 słowa|$2 słowow}})",
"search-result-category-size": "{{PLURAL:$1|1 čłon|$1 čłonaj|$1 čłonojo|$1 čłonow}} ({{PLURAL:$2|1 podkategorija|$2 podkategoriji|$2 podkategorije|$2 podkategorijow}}, {{PLURAL:$3|1 dataja|$3 dataji|$3 dataje|$3 datajow}})",
- "search-result-score": "Relewanca: $1 %",
"search-redirect": "(Daleposrědkowanje $1)",
"search-section": "(wotrězk $1)",
"search-file-match": "(wotpowěduje datajowemu wobsahej)",
"right-browsearchive": "Zhašane strony pytać",
"right-undelete": "Strony wobnowić",
"right-suppressrevision": "Wersije, kotrež su před administratorami schowane, přepruwować a wobnowić",
+ "right-viewsuppressed": "Před wužiwarjemi schowane wersije sej wobhladać",
"right-suppressionlog": "Priwatne protokole wobhladać",
"right-block": "Druhich wužiwarjow při wobdźěłowanju haćić",
"right-blockemail": "Wužiwarja při słanju e-mejlow haćić",
"uploadwarning": "Warnowanje",
"uploadwarning-text": "Prošu změń slědowace datajowe wopisanje a spytaj hišće raz.",
"savefile": "Dataju składować",
- "uploadedimage": "je dataju „[[$1]]” nahrał",
- "overwroteimage": "je nowu wersiju dataje „[[$1]]“ nahrał",
"uploaddisabled": "Wodaj, nahraće je znjemóžnjene.",
"copyuploaddisabled": "Nahraće přez URL znjemóžnjene.",
"uploaddisabledtext": "Nahraće datajow je znjemóžnjene.",
"license": "Licenca:",
"license-header": "Licencowanje",
"nolicense": "žadyn wuběr",
+ "licenses-edit": "Licencne nastajenja wobdźěłać",
"license-nopreview": "(žadyn přehlad k dispoziciji)",
- "upload_source_url": " (płaćiwy, zjawnje docpějomny URL)",
- "upload_source_file": " (dataja na twojim ličaku)",
+ "upload_source_url": " (twoja wubrana dataja z płaćiweho, zjawnje přistupneho URL)",
+ "upload_source_file": " (twoja wubrana dataja z twojeho ličaka)",
+ "listfiles-delete": "zhašeć",
"listfiles-summary": "Tuta specialna strona pokazuje wšě nahrate dataje.",
"listfiles_search_for": "Za mjenom wobraza pytać:",
"imgfile": "dataja",
"wantedfiles": "Požadane dataje",
"wantedfiletext-cat": "Slědowace dataje so wužiwaja, ale njeeksistuju. Dataje z cuzych repozitorijow hodźa so nalistować, byrnjež eksistowali. Tajke wopačne pozitiwy su <del>přešmórnjene</del>. Nimo toho so strony w [[:$1]] nalistuja, kotrež dataje zasadźuja, kotrež njeeksistuja.",
"wantedfiletext-nocat": "Slědowace dataje so wužiwaja, ale njeeksistuja. Dataje z cuzych repozitorijow hodźa so nalistować, byrnjež eksistowali. Tajke wopačne pozitiwy su <del>přešmórnjene</del>.",
+ "wantedfiletext-nocat-noforeign": "Slědowace dataje so wužiwaja, ale njeeksistuja.",
"wantedtemplates": "Falowace předłohi",
"mostlinked": "Z najwjace stronami zwjazane strony",
"mostlinkedcategories": "Z najwjace stronami zwjazane kategorije",
"watchlist-details": "{{PLURAL:$1|$1 wobkedźbowana strona|$1 wobkedźbowanej stronje|$1 wobkedźbowane strony|$1 wobkedźbowanych stronow}}, bjeztoho zo so diskusijne strony dźělene liča.",
"wlheader-enotif": "E-mejlowa zdźělenska słužba je zmóžnjena.",
"wlheader-showupdated": "Strony, kotrež su so po twojim poslednim wopyće změnili, so '''tučne''' pokazuja.",
- "wlnote2": "Slěduja změny {{PLURAL:$1|zańdźeneje hodźiny|zańdźeneju <strong>$1</strong> hodźinow|zańdźenych <strong>$1</strong> hodźin}} Staw: $2, $3.",
+ "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",
"watching": "Wobkedźbuju…",
"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.",
+ "delete-cantedit": "Njemóžeš tutu stronu zhašeć, dokelž nimaš prawo ju wobdźěłować.",
"deleting-backlinks-warning": "'''Warnowanje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druhe strony]] wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
"rollback": "Změny cofnyć",
"rollback_short": "Cofnyć",
"autoblockid": "#$1 awtomatisce blokować",
"block": "Wužiwarja blokować",
"unblock": "Blokowanje wužiwarja zběhnyć",
- "blockip": "Wužiwarja zablokować",
+ "blockip": "{{GENDER:$1|Wužiwarja|Wužiwarku}} blokować",
"blockip-legend": "Wužiwarja blokować",
"blockiptext": "Wužij slědowacy formular deleka, zo by pisanski přistup za podatu IP-adresu abo wužiwarske mjeno blokował. To měło so jenož stać, zo by wandalizmej zadźěwało a woptpowědujo [[{{MediaWiki:Policy-url}}|zasadam]]. Zapodaj deleka přičinu (na př. citujo wosebite strony, kotrež běchu z woporom wandalizma).",
"ipaddressorusername": "IP-adresa abo wužiwarske mjeno",
"ipb-unblock-addr": "zablokowanje wužiwarja „$1“ zběhnyć",
"ipb-unblock": "zablokowanje wužiwarja abo IP-adresy zběhnyć",
"ipb-blocklist": "tuchwilne blokowanja zwobraznić",
- "ipb-blocklist-contribs": "Přinoški za $1",
+ "ipb-blocklist-contribs": "Přinoški za {{GENDER:$1|$1}}",
"unblockip": "Zablokowanje zběhnyć",
"unblockiptext": "Wužij formular deleka, zo by blokowanje IP-adresy abo wužiwarskeho mjena zběhnył.",
"ipusubmit": "Tute blokěrowanje skónčić",
"autosumm-replace": "Strona bu z hinašim tekstom přepisana: '$1'",
"autoredircomment": "posrědkuju k stronje „[[$1]]”",
"autosumm-new": "Wutwori stronu z '$1'",
+ "autosumm-newblank": "Prózdna strona wutworjena",
"size-kilobytes": "$1 kB",
"lag-warn-normal": "Změny {{PLURAL:$1|zašłeje $1 sekundy|zašłeju $1 sekundow|zašłych $1 sekundow|zašłych $1 sekundow}} so w tutej lisćinje hišće njezwobraznjeja.",
"lag-warn-high": "Wućeženja datoweje banki dla so změny {{PLURAL:$1|zašłeje $1 sekundy|zašłeje $1 sekundow|zašłych $1 sekundow|zašłych $1 sekundow}} w tutej lisćinje hišće njepokazuja.",
"duplicate-defaultsort": "Warnowanje: Standardny sortěrowonski kluč (DEFAULTSORTKEY) \"$2\" přepisa prjedawšu sortěrowanski kluč \"$1\".",
"version": "Wersija",
"version-extensions": "Instalowane rozšěrjenja",
- "version-skins": "Šaty",
+ "version-skins": "Instalowane drasty",
"version-specialpages": "Specialne strony",
"version-parserhooks": "Parserowe hoki",
"version-variables": "Wariable",
"version-hook-name": "Mjeno hoki",
"version-hook-subscribedby": "Abonowany wot",
"version-version": "(Wersija $1)",
+ "version-no-ext-name": "[žane mjeno]",
"version-license": "Licenca MediaWiki",
"version-ext-license": "Licenca",
"version-ext-colheader-name": "Rozšěrjenje",
+ "version-skin-colheader-name": "Drasta",
"version-ext-colheader-version": "Wersija",
"version-ext-colheader-license": "Licenca",
"version-ext-colheader-description": "Wopisanje",
"logentry-rights-rights": "$1 je skupinske čłonstwo za $3 z $4 do $5 {{GENDER:$2|změnił|změniła}}",
"logentry-rights-rights-legacy": "$1 je skupinske čłonstwo za $3 {{GENDER:$2|změnił|změniła}}",
"logentry-rights-autopromote": "$1 je so awtomatisce wot $4 do $5 {{GENDER:$2|přirjadował|přirjadowała}}",
+ "logentry-upload-upload": "$1 je $3 {{GENDER:$2|nahrał|nahrała}}",
+ "logentry-upload-overwrite": "$1 je nowu wersiju $3 {{GENDER:$2|nahrał|nahrała}}",
+ "logentry-upload-revert": "$1 je $3 {{GENDER:$2|nahrał|nahrała}}",
"rightsnone": "(ničo)",
"feedback-bugornote": "Jeli sy zwólniwy, techniski problem nadrobnje wopisać, [$1 zdźěl prošu zmylk].\nHewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so stronje \"[$3 $2]\", z twojim wužiwarskim mjenom a z wobhladowakom, kotryž wužiwaš.",
"feedback-subject": "Tema:",
"expand_templates_remove_nowiki": "Taflički <nowiki> we wuslědku potłóčić",
"expand_templates_generate_xml": "Analyzowy štom XML pokazać",
"expand_templates_generate_rawhtml": "Hruby HTML pokazać",
- "expand_templates_preview": "Přehlad"
+ "expand_templates_preview": "Přehlad",
+ "pagelanguage": "Selektor rěče strony",
+ "pagelang-name": "Strona",
+ "pagelang-language": "Rěč",
+ "pagelang-use-default": "Standardnu rěč wužiwać",
+ "pagelang-select-lang": "Rěč wubrać",
+ "right-pagelang": "Rěč strony změnić",
+ "action-pagelang": "rěč strony změnić",
+ "log-name-pagelang": "Protokol změnow rěče",
+ "log-description-pagelang": "To je protokol změnow na rěčach stronow.",
+ "logentry-pagelang-pagelang": "$1 je rěč strony za $3 wot $4 do $5 {{GENDER:$2|změnił|změniła}}.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (zmóžnjeny)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''znjemóžnjeny''')"
}
"talkpagelinktext": "Diskite",
"specialpage": "Paj Espesyal",
"personaltools": "Zouti pèsonèl yo",
- "postcomment": "Nouvo seksyon",
"articlepage": "Wè paj atik",
"talk": "Diskisyon",
"views": "Afichay yo",
"externaldberror": "Li sanble ke yon erè pwodui ak bazdone a pou idantifikasyon ki pa nan sistèm an, oubyen ou pa otorize pou mete a jou kont ou genyen nan lòt sistèm yo.",
"login": "Konekte ou",
"nav-login-createaccount": "Kreye yon kont oubyen konekte ou",
- "loginprompt": "Ou dwe aksepte (aktive) koukiz (cookies) yo pou ou kapab konekte nan {{SITENAME}}.",
"userlogin": "Kreye yon kont oubyen konekte ou",
"userloginnocreate": "Konekte ou",
"logout": "Dekonekte ou",
"upload": "Chaje yon fichye",
"uploadbtn": "Chaje yon fichye",
"uploadlogpage": "Jounal chajman pou fichye yo",
- "uploadedimage": "chaje « [[$1]] »",
"listfiles": "Lis fichye yo",
"file-anchor-link": "Fichye",
"filehist": "Istorik fichye a",
"searchprofile-advanced-tooltip": "Keresés adott névterekben",
"search-result-size": "$1 ({{PLURAL:$2|egy|$2}} szó)",
"search-result-category-size": "$1 oldal, $2 alkategória, $3 fájl",
- "search-result-score": "Relevancia: $1%",
"search-redirect": "(átirányítva innen: $1)",
"search-section": "($1 szakasz)",
"search-suggest": "Keresési javaslat: $1",
"preferences": "Beállítások",
"mypreferences": "Beállítások",
"prefs-edits": "Szerkesztéseid száma:",
+ "prefsnologintext2": "Kérjük jelentkezzen be a beállítások módosításához.",
"prefs-skin": "Felület",
"skin-preview": "előnézet",
"datedefault": "Nincs beállítás",
"uploadwarning": "Feltöltési figyelmeztetés",
"uploadwarning-text": "Kérlek módosítsd a fájl leírását alább, majd próbáld újra.",
"savefile": "Fájl mentése",
- "uploadedimage": "„[[$1]]” felküldve",
- "overwroteimage": "feltöltötte a(z) „[[$1]]” fájl új változatát",
"uploaddisabled": "Feltöltések kikapcsolva",
"copyuploaddisabled": "A feltöltés URL alapján le van tiltva.",
"uploaddisabledtext": "A fájlfeltöltés nem engedélyezett.",
"listgrouprights-addgroup-self-all": "az összes csoportot hozzáadhatja a saját fiókjához",
"listgrouprights-removegroup-self-all": "az összes csoporból eltávolíthatja a saját fiókját",
"listgrouprights-namespaceprotection-namespace": "Névtér",
- "trackingcategories-nodesc": "Nincs leírás.",
+ "trackingcategories-nodesc": "Nem található leírás.",
"trackingcategories-disabled": "A kategória le van tiltva",
"mailnologin": "Nincs feladó",
"mailnologintext": "Ahhoz hogy másoknak e-mailt küldhess, [[Special:UserLogin|be kell jelentkezned]] és meg kell adnod egy érvényes e-mail címet a [[Special:Preferences|beállításaidban]].",
"talkpagelinktext": "Քննարկում",
"specialpage": "Սպասարկող էջ",
"personaltools": "Անձնական գործիքներ",
- "postcomment": "Նոր բաժին",
"articlepage": "Դիտել հոդվածը",
"talk": "Քննարկում",
"views": "Դիտումները",
"externaldberror": "Տեղի է ունեցել վավերացման արտաքին տվյալների բազայի սխալ, կամ դուք չունեք բավարար իրավունքներ ձեր արտաքին հաշվի փոփոխման համար։",
"login": "Մտնել համակարգ",
"nav-login-createaccount": "Մտնել / Գրանցվել",
- "loginprompt": "{{SITENAME}} մուտք գործելու համար հարկավոր է քուքիները թույլատրել։",
"userlogin": "Մտնել / Գրանցվել",
"userloginnocreate": "Մտնել",
"logout": "Դուրս գալ համակարգից",
"searchprofile-advanced-tooltip": "Որոնել նշված անվանատարածքներում",
"search-result-size": "$1 ({{PLURAL:$2|1 բառ|$2 բառ}})",
"search-result-category-size": "{{PLURAL:$1|անդամ}} ({{PLURAL:$2|ենթակատեգորիա}}, {{PLURAL:$3|նիշք}})",
- "search-result-score": "Համընկնում $1%",
"search-redirect": "(վերահղում $1)",
"search-section": "(բաժին $1)",
"search-suggest": "Գուցե նկատի ունե՞ք՝ $1",
"fileexists-shared-forbidden": "Այսպիսի անվանմամբ նիշք արդեն գոյություն ունի նիշքերի ընդհանուր զետեղարանում։ Խնդրում ենք հետ վերադառնալ և բեռնել նիշքը նոր անվանմամբ։ [[File:$1|thumb|center|$1]]",
"uploadwarning": "Զգուշացում",
"savefile": "Հիշել ֆայլը",
- "uploadedimage": "բեռնվեց «[[$1]]»",
- "overwroteimage": "բեռնվեց «[[$1]]» նիշքի նոր տարբերակ",
"uploaddisabled": "Բեռնումները արգելված են",
"uploaddisabledtext": "Նիշքերի բեռնումը արգելափակված է։",
"uploadscripted": "Այս նիշքը պարունակում է HTML-կոդ կամ գրվածք (սկրիպտ), որը կարող է սխալ մեկնաբանվել զննարկիչի կողմից։",
"watchlist-details": "Ձեր հսկացանկում կա {{PLURAL:$1|$1 էջ|$1 էջ}}` քննարկման էջերը չհաշված։",
"wlheader-enotif": "Էլ-փոստով տեղեկացումը միացված է։",
"wlheader-showupdated": "Էջերը, որոնք փոփոխվել են ձեր դրանց վերջին այցից հետո բերված են '''թավատառ'''։",
+ "wlnote": "Ստորև բերված {{PLURAL:$1|է վերջին փոփոխությունը|են վերջին '''$1''' փոփոխությունները}} վերջին <strong>$2</strong> ժամվա ընթացքում։",
"wlshowlast": "Ցուցադրել վերջին $1 ժամերը $2 օրերը $3",
"watchlist-options": "Հսկացանկի նախընտրություններ",
"watching": "Հսկվում է...",
"searchprofile-advanced-tooltip": "Cercar in spatios de nomines personalisate",
"search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})",
"search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Relevantia: $1%",
"search-redirect": "(redirection ab $1)",
"search-section": "(section $1)",
"search-file-match": "(corresponde al contento del file)",
"uploadwarning": "Advertimento de incargamento",
"uploadwarning-text": "Per favor modifica le description del file ci infra e reproba.",
"savefile": "Salveguardar file",
- "uploadedimage": "incargava \"[[$1]]\"",
- "overwroteimage": "incargava un nove version de \"[[$1]]\"",
"uploaddisabled": "Incargamento de files disactivate",
"copyuploaddisabled": "Incargamento per URL disactivate.",
"uploaddisabledtext": "Le incargamento de files es disactivate.",
"searchprofile-advanced-tooltip": "Pencarian di ruang nama tertentu",
"search-result-size": "$1 ({{PLURAL:$2|1 kata|$2 kata}})",
"search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
- "search-result-score": "Relevansi: $1%",
"search-redirect": "(pengalihan $1)",
"search-section": "(bagian $1)",
"search-file-match": "(cocok dengan isi berkas)",
"uploadwarning": "Peringatan pemuatan",
"uploadwarning-text": "Mohon perbaiki keterangan berkas di bawah dan coba lagi.",
"savefile": "Simpan berkas",
- "uploadedimage": "memuat \"[[$1]]\"",
- "overwroteimage": "memuat versi baru dari \"[[$1]]\"",
"uploaddisabled": "Maaf, fasilitas pemuatan dimatikan.",
"copyuploaddisabled": "Pengunggahan dengan URL dimatikan.",
"uploaddisabledtext": "Pemuatan berkas tidak diizinkan.",
"watchlist-details": "Terdapat {{PLURAL:$1|$1 halaman|$1 halaman}} di daftar pantauan Anda, tidak termasuk halaman pembicaraan.",
"wlheader-enotif": "Notifikasi surel diaktifkan.",
"wlheader-showupdated": "Halaman-halaman yang telah berubah sejak kunjungan terakhir Anda ditampilkan dengan '''huruf tebal'''.",
- "wlnote2": "Di bawah ini adalah perubahan yang terjadi dalam {{PLURAL:$1|sejam|<strong>$1</strong> jam}} terakhir, per $2, $3.",
+ "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",
"watching": "Memantau...",
"talkpagelinktext": "Conversation",
"specialpage": "Págine special",
"personaltools": "Mi utensiles",
- "postcomment": "Nov division",
"articlepage": "Vider li articul",
"talk": "Discussion",
"views": "Aspectes",
"yourdomainname": "Tui dominia:",
"login": "Aperter session",
"nav-login-createaccount": "Crear un conto o intrar",
- "loginprompt": "Cookies deve esser permisset por intrar in {{SITENAME}}.",
"userlogin": "Crear un conto o intrar",
"userloginnocreate": "Intrar",
"logout": "Surtida",
"uploadwarning": "Advertiment de cargament",
"uploadwarning-text": "Pleser modificar li descrition de file infra e prova denov.",
"savefile": "Conservar file",
- "uploadedimage": "cargat \"[[$1]]\"",
"uploadscripted": "Ti file contene HTML o code scrite que posse esser interpretet erroremen per un navigator web.",
"uploadvirus": "Li file contene un virus!\nDetallies: $1",
"upload-maxfilesize": "Mesura maxim de file: $1",
"watchlist-details": "{{PLURAL:$1|$1 págine|$1 págines}} in tui liste de págines vigilat, sin págines de discussion.",
"wlheader-enotif": "Li notification de e-mail es permisset.",
"wlheader-showupdated": "Págines quel hat esset mutat desde tui ultim visitation es monstrat in '''nigri'''",
+ "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",
"watching": "Vigilant...",
"talkpagelinktext": "Okwu",
"specialpage": "Ihü mkpà",
"personaltools": "Ngwa nkem",
- "postcomment": "Nkeji ohúrù",
"articlepage": "Zi ihü iheníle",
"talk": "Akíkó",
"views": "Há hụrụ ya olé",
"yourdomainname": "Obí gi:",
"login": "Banyé",
"nav-login-createaccount": "Banyé / ké buwá",
- "loginprompt": "Í gi nwé cookies Í chórí bátá {{SITENAME}}.",
"userlogin": "Banyé / ké buwá",
"userloginnocreate": "Banyé",
"logout": "Fwuör",
"searchprofile-everything-tooltip": "Tùwé ihe nile (na okwu ihü)",
"searchprofile-advanced-tooltip": "Chọwa na ímé áhàámá nke gí Í kèrè",
"search-result-size": "$1 ({{PLURAL:$2|mkpurụ edemede 1|$2 mkpurụ edemede}})",
- "search-result-score": "Otu o di nkpà: $1%",
"search-redirect": "(kúfù $1)",
"search-section": "(nkeji $1)",
"search-suggest": "Ị̀ kwèshirí dé: $1",
"filereuploadsummary": "Gbanwere maka usòrò:",
"filesource": "Mkpọlọ́gwụ̀:",
"savefile": "Domá usòrò",
- "uploadedimage": "\"[[$1]]\" dị na élú",
"upload-source": "Usòrò mkpọlógwù",
"sourcefilename": "Áhà usòrò mkpọlógwù:",
"sourceurl": "URL mkpọlógwù:",
"watchlisttools-edit": "Lé na rü na ndetù ńlé",
"watchlisttools-raw": "Rüo ndetù nlènlé mèpòrò",
"version": "Ùdị",
- "version-specialpages": "Ihü mkpà",
"version-skins": "Akpụkpọ",
+ "version-specialpages": "Ihü mkpà",
"version-other": "Nke ozor",
"version-hooks": "Nyazo",
"version-hook-name": "Áhà nyazo",
"userpage-userdoesnotexist": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro. \nPangngaasi a kitaem no kayatmo ti agpartuat/agurnos iti daytoy a panid.",
"userpage-userdoesnotexist-view": "Ti pakabilangan ti agar-aramat ni \"$1\" ket saan a nakarehistro.",
"blocked-notice-logextract": "Agdama a naserraan daytoy nga agar-aramat.\nTi naudi a listaan ti pannakaserra ket naited dita baba para iti reperensia:",
- "clearyourcache": "<strong>Nota:</strong> Kalpasan ti panangidulin, koma ket masapul nga ipalabas ti cahe ti pagbasabasam tapno makita dagiti sinukatam.\n* <strong>Firefox / Safari:</strong> Tenglen ti <em>Shift</em> bayat a pinduten ti <em>Reload</em>, wenno talmegan ti <em>Ctrl-F5</em> wenno <em>Ctrl-R</em> (<em>⌘-R</em> iti Mac)\n* <strong>Google Chrome:</strong> Talmegan ti <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> iti Mac)\n* <strong>Internet Explorer:</strong> Tenglen ti <em>Ctrl</em> bayat a pinduten ti <em>Refresh</em>, wenno talmegan ti <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Dalusan ti cache iidiay <em>Tools → Preferences</em>",
+ "clearyourcache": "<strong>Nota:</strong> Kalpasan ti panangidulin, koma ket masapul nga ipalabas ti cahe ti pagbasabasam tapno makita dagiti sinukatam.\n* <strong>Firefox / Safari:</strong> Tenglen ti <em>Shift</em> bayat a pinduten ti <em>Reload</em>, wenno talmegan ti <em>Ctrl-F5</em> wenno <em>Ctrl-R</em> (<em>⌘-R</em> iti Mac)\n* <strong>Google Chrome:</strong> Talmegan ti <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> iti Mac)\n* <strong>Internet Explorer:</strong> Tenglen ti <em>Ctrl</em> bayat a pinduten ti <em>Refresh</em>, wenno talmegan ti <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Dalusan ti cache idiay <em>Tools → Preferences</em>",
"usercssyoucanpreview": "<strong>Paammo:</strong> Usaren ti buton ti \"{{int:showpreview}}\" tapno masubokan ti baro a CSS sakbay nga agidulin.",
"userjsyoucanpreview": "<strong>Pammo:</strong> Usaren ti buton ti \"{{int:showpreview}}\" tapno masubokan ti baro a JavaScript sakbay nga agidulin.",
"usercsspreview": "<strong>Laglagipem nga ipadpadasmo laeng ti bukodmo a CSS ti agar-aramat.\nSaan pay a naidulin!</strong>",
"searchprofile-advanced-tooltip": "Agbirukka kadagiti naiduma a nagan ti espasio",
"search-result-size": "$1 ({{PLURAL:$2|iti 1 a balikas|kadagiti $2 a balikas}})",
"search-result-category-size": "{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 a subkategoria|dagiti $2 a subkategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})",
- "search-result-score": "Kaitutopan: $1%",
"search-redirect": "(baw-ing ti $1)",
"search-section": "(paset $1)",
"search-file-match": "(maipada ti linaon a papeles)",
"uploadwarning": "Ballaag ti panagikarga",
"uploadwarning-text": "Pangngaasi a baliwam ti deskripsion ti papeles dita baba ken padasen manen.",
"savefile": "Idulin ti papeles",
- "uploadedimage": "naikarga ti \"[[$1]]\"",
- "overwroteimage": "nagikarga ti baro a bersion ti \"[[$1]]\"",
"uploaddisabled": "Nabaldado dagiti panagikarga.",
"copyuploaddisabled": "Nabaldado ti panagikarga babaen ti URL.",
"uploaddisabledtext": "Nabaldado dagiti panagikarga ti papeles.",
"talkpagelinktext": "дувцам",
"specialpage": "ГӀулакха оагӀув",
"personaltools": "Са гӀорсаш",
- "postcomment": "Керда декъам",
"articlepage": "Йоазув тӀа бӀаргтасса",
"talk": "Дувцам",
"views": "БӀаргтассамаш",
"yourdomainname": "Шун цӀеноагӀув:",
"login": "Чувала/яла",
"nav-login-createaccount": "ЦӀи яьккха/Ший oагӀув ела",
- "loginprompt": "Укх белхацхьоагIоца доттагӀал лаца, шун \"cookies\" йийла хьалдеза.",
"userlogin": "ЦӀи яьккха/ОагӀув ела",
"userloginnocreate": "Чувала/яла",
"logout": "Аравала/яла",
"uploadlogpage": "Чуяьккхамий тептар",
"filedesc": "Лоаца лоацам",
"fileuploadsummary": "Лоаца лоацам:",
- "uploadedimage": "\"[[$1]]\" чуяьккхай",
"license": "ЦIийяздар",
"license-header": "ЦIийяздар",
"imgfile": "паьл",
"talkpagelinktext": "Diskutez",
"specialpage": "Specala pagino",
"personaltools": "Personala utensili",
- "postcomment": "Nova seciono",
"articlepage": "Regardar artiklo",
"talk": "Diskuto",
"views": "Apari",
"yourdomainname": "Vua domano:",
"login": "Enirar",
"nav-login-createaccount": "Enirar",
- "loginprompt": "Vu mustas permisar ''cookies'' por enirar a {{SITENAME}}.",
"userlogin": "Enirar / krear konto",
"userloginnocreate": "Enirar",
"logout": "Ekirar",
"searchprofile-articles-tooltip": "Serchez en $1",
"searchprofile-images-tooltip": "Serchez arkivi",
"search-result-size": "$1 ({{PLURAL:$2|1 vorto|$2 vorti}})",
- "search-result-score": "Importo: $1%",
"search-redirect": "(ridirektilo $1)",
"search-section": "(seciono $1)",
"search-suggest": "Ka vu volis dicar: $1",
"fileexists": "Arkivo kun ica nomo ja existas.\nVolutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.\n[[$1|thumb]]",
"uploadwarning": "Averto pri la adkargo di arkivo",
"savefile": "Registragar arkivo",
- "uploadedimage": "adkargita \"[[$1]]\"",
"uploaddisabled": "Pardonez, la adkargo esas desaktiva.",
"watchthisupload": "Surveyar ica arkivo",
"upload-success-subj": "Adcharjo sucesoza",
"unwatch": "Ne plus surveyar",
"unwatchthispage": "Ne plus surveyar",
"notanarticle": "Ne esas artiklo",
+ "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",
"watching": "Surveyanta…",
"searchprofile-advanced-tooltip": "Leita í ákveðnum nafnrýmum",
"search-result-size": "$1 ({{PLURAL:$2|1 orð|$2 orð}})",
"search-result-category-size": "{{PLURAL:$1|1 meðlimur|$1 meðlimir}} ({{PLURAL:$2|1 undirflokks|$2 undirflokka}}, {{PLURAL:$3|1 skrá|$3 skrár}})",
- "search-result-score": "Gildi: $1%",
"search-redirect": "(tilvísun $1)",
"search-section": "(hluti $1)",
"search-file-match": "(passar við innihald skráa)",
"rcshowhidebots": "$1 vélmenni",
"rcshowhidebots-show": "Sýna",
"rcshowhidebots-hide": "Fela",
- "rcshowhideliu": "$1 skráðir notendur",
+ "rcshowhideliu": "$1 skráða notendur",
"rcshowhideliu-show": "Sýna",
"rcshowhideliu-hide": "Fela",
"rcshowhideanons": "$1 óinnskráða notendur",
"uploadwarning": "Aðvörun",
"uploadwarning-text": "Vinsamlegast breyttu myndalýsingunni hér fyrir neðan og reyndu aftur.",
"savefile": "Vista",
- "uploadedimage": "hlóð inn „[[$1]]“",
- "overwroteimage": "hlóð inn nýrri útgáfu af \"[[$1]]\"",
"uploaddisabled": "Lokað er fyrir að hlaða inn myndum.",
"copyuploaddisabled": "Lokað er fyrir að hlaða inn myndum frá vefslóð.",
"uploaddisabledtext": "Lokað er fyrir að hlaða inn skrám.",
"watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum, fyrir utan spjallsíður.",
"wlheader-enotif": "Tilkynning með tölvupósti er virk.",
"wlheader-showupdated": "Síðum sem hefur verið breytt síðan þú skoðaðir þær síðast eru '''feitletraðar'''.",
+ "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta <strong>$1</strong> breyting|eru síðustu <strong>$1</strong> breytingar}} {{PLURAL:$2|síðustu <strong>$2</strong> klukkutímann|síðastliðna <strong>$2</strong> klukkutímana}}, frá $3, $4.",
"wlshowlast": "Sýna síðustu $1 klukkutíma, $2 daga, $3",
"watchlist-options": "Vaktlistastillingar",
"watching": "Vakta...",
"hidetoc": "nascondi",
"collapsible-collapse": "Comprimi",
"collapsible-expand": "Espandi",
+ "confirmable-yes": "Sì",
+ "confirmable-no": "No",
"thisisdeleted": "Vedi o ripristina $1?",
"viewdeleted": "Vedi $1?",
"restorelink": "{{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}",
"searchprofile-advanced-tooltip": "Cerca nei namespace personalizzati",
"search-result-size": "$1 ({{PLURAL:$2|una parola|$2 parole}})",
"search-result-category-size": "{{PLURAL:$1|1 utente|$1 utenti}} ({{PLURAL:$2|1 sottocategoria|$2 sottocategorie}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Rilevanza: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(sezione $1)",
"search-file-match": "(corrispondenza nel contenuto del file)",
"uploadwarning": "Avviso di caricamento",
"uploadwarning-text": "Per favore modifica qui sotto la descrizione del file e prova di nuovo.",
"savefile": "Salva file",
- "uploadedimage": "ha caricato \"[[$1]]\"",
- "overwroteimage": "ha caricato una nuova versione di \"[[$1]]\"",
"uploaddisabled": "Il caricamento dei file è disabilitato.",
"copyuploaddisabled": "Il caricamento tramite URL è disabilitato.",
"uploaddisabledtext": "Il caricamento dei file non è attivo.",
"movepagetalktext": "La corrispondente pagina di discussione, se esiste, sarà spostata automaticamente insieme alla pagina principale, '''tranne che nei seguenti casi''':\n* lo spostamento della pagina è tra namespace diversi;\n* in corrispondenza del nuovo titolo esiste già una pagina di discussione (non vuota);\n* la casella qui sotto è stata deselezionata.\n\nIn questi casi, se lo si ritiene opportuno, occorre spostare o aggiungere manualmente le informazioni contenute nella pagina di discussione.",
"movearticle": "Sposta la pagina:",
"moveuserpage-warning": "'''Attenzione:''' Si sta per spostare una pagina utente. Nota che verrà spostata solamente la pagina. L'utente ''non'' sarà rinominato.",
- "movecategorypage-warning": "<strong>Attenzione:</strong> stai per spostare una categoria. Solo la pagina verrà spostata, ma tutte le pagine nella vecchia categoria <em>non</em> saranno inserite nella nuova.",
+ "movecategorypage-warning": "<strong>Attenzione:</strong> si sta per spostare una categoria. Solo questa pagina verrà spostata: tutte le pagine nella vecchia categoria <em>non</em> saranno inserite nella nuova.",
"movenologintext": "Lo spostamento delle pagine è consentito solo agli utenti registrati che hanno eseguito l'[[Special:UserLogin|accesso]] al sito.",
"movenotallowed": "Non si dispone dei permessi necessari per spostare le pagine.",
"movenotallowedfile": "Non si dispone dei permessi necessari per spostare i file.",
"logentry-rights-rights": "$1 {{GENDER:$2|ha modificato}} l'appartenenza di $3 dal gruppo $4 al gruppo $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|ha modificato}} l'appartenenza a gruppi di $3",
"logentry-rights-autopromote": "$1 è {{GENDER:$2|stato promosso|stata promossa|stato/a promosso/a}} automaticamente da $4 a $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|ha caricato}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|ha caricato}} una nuova versione di $3.",
+ "logentry-upload-revert": "$1 {{GENDER:$2|ha caricato}} $3",
"rightsnone": "(nessuno)",
"feedback-bugornote": "Se si è in grado di descrivere il problema tecnico riscontrato in maniera precisa, [$1 segnalate il bug]. In alternativa, si può usare il modulo semplificato sottostante. Il commento inserito sarà aggiunto alla pagina \"[$3 $2]\", insieme al proprio nome utente e al browser in uso.",
"feedback-subject": "Oggetto:",
"tog-watchdefault": "自分が編集したページやファイルをウォッチリストに追加",
"tog-watchmoves": "自分が移動したページやファイルをウォッチリストに追加",
"tog-watchdeletion": "自分が削除したページやファイルをウォッチリストに追加",
+ "tog-watchrollback": "ロールバックしたページをウォッチリストに追加",
"tog-minordefault": "細部の編集に既定でチェックを入れる",
"tog-previewontop": "プレビューを編集ボックスの前に配置",
"tog-previewonfirst": "編集開始時にもプレビューを表示",
"tog-fancysig": "署名をウィキ文として扱う (自動リンクなし)",
"tog-uselivepreview": "ライブプレビューを使用 (開発中)",
"tog-forceeditsummary": "要約欄が空欄の場合に確認を促す",
- "tog-watchlisthideown": "ウォッチリストに自分の編集を表示しない",
- "tog-watchlisthidebots": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\83\9cã\83\83ã\83\88ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92表示しない",
- "tog-watchlisthideminor": "ウォッチリストに細部の編集を表示しない",
- "tog-watchlisthideliu": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\83ã\82°ã\82¤ã\83³å\88©ç\94¨è\80\85ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92表示しない",
- "tog-watchlisthideanons": "ウォッチリストに匿名利用者による編集を表示しない",
- "tog-watchlisthidepatrolled": "ウォッチリストに巡回済みの編集を表示しない",
+ "tog-watchlisthideown": "自分の編集をウォッチリストに表示しない",
+ "tog-watchlisthidebots": "ã\83\9cã\83\83ã\83\88ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«表示しない",
+ "tog-watchlisthideminor": "細部の編集をウォッチリストに表示しない",
+ "tog-watchlisthideliu": "ã\83ã\82°ã\82¤ã\83³å\88©ç\94¨è\80\85ã\81«ã\82\88ã\82\8bç·¨é\9b\86ã\82\92ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«表示しない",
+ "tog-watchlisthideanons": "匿名利用者による編集をウォッチリストに表示しない",
+ "tog-watchlisthidepatrolled": "巡回済みの編集をウォッチリストに表示しない",
"tog-ccmeonemails": "他の利用者に送信したメールの控えを自分にも送信",
"tog-diffonly": "差分の下にページ内容を表示しない",
"tog-showhiddencats": "隠しカテゴリを表示",
"moredotdotdot": "続き...",
"morenotlisted": "この一覧は完全ではありません。",
"mypage": "ページ",
- "mytalk": "トーク",
- "anontalk": "ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81®ã\83\88ã\83¼ã\82¯",
+ "mytalk": "議論",
+ "anontalk": "ã\81\93ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81«ã\81¤ã\81\84ã\81¦ã\81®è°è«\96",
"navigation": "案内",
- "and": " ã\81\8aã\82\88ã\81³ ",
+ "and": " ã\81¨",
"qbfind": "検索",
"qbbrowse": "閲覧",
"qbedit": "編集",
"searcharticle": "表示",
"history": "ページの履歴",
"history_short": "履歴",
- "updatedmarker": "最終閲覧以降に変更されました",
+ "updatedmarker": "前回の閲覧以降に更新されました",
"printableversion": "印刷用バージョン",
"permalink": "この版への固定リンク",
"print": "印刷",
"hidetoc": "非表示",
"collapsible-collapse": "折り畳む",
"collapsible-expand": "展開する",
+ "confirmable-confirm": "本当にいいですか?",
+ "confirmable-yes": "はい",
+ "confirmable-no": "いいえ",
"thisisdeleted": "$1を閲覧または復元しますか?",
"viewdeleted": "$1を閲覧しますか?",
"restorelink": "{{PLURAL:$1|削除された$1編集}}",
"invalidtitle-knownnamespace": "名前空間名「$2」と名前「$3」の組み合わせはページ名として無効です",
"invalidtitle-unknownnamespace": "不明な名前空間番号 $1 と名前「$2」の組み合わせはページ名として無効です",
"exception-nologin": "ログインしていません",
- "exception-nologin-text": "このページまたは操作にアクセスできるようにするには[[Special:Userlogin|ログイン]]してください。",
+ "exception-nologin-text": "このページまたは操作にアクセスできるようにするにはログインしてください。",
"exception-nologin-text-manual": "このページまたは操作にアクセスできるようにするには$1してください。",
"virus-badscanner": "環境設定が不適合です: 不明なウイルス対策ソフトウェア: <em>$1</em>",
"virus-scanfailed": "スキャンに失敗しました (コード $1)",
"preview": "プレビュー",
"showpreview": "プレビューを表示",
"showdiff": "差分を表示",
+ "blankarticle": "<strong>警告:</strong>作成しようとしているページの内容がありません。{{Int:savearticle}}\"をもう一度クリックすると、中身の無いページが作成されます。",
"anoneditwarning": "<strong>警告:</strong> ログインしていません。\n編集すると、IPアドレスがこのページの編集履歴に記録されます。",
"anonpreviewwarning": "<em>ログインしていません。投稿を保存すると、ご使用中のIPアドレスがこのページの履歴に記録されます。</em>",
"missingsummary": "<strong>注意:</strong> 編集内容の要約が空欄です。\n「{{int:savearticle}}」をもう一度クリックすると、編集内容は要約なしで保存されます。",
"parser-template-recursion-depth-warning": "テンプレートの再帰の深さ ($1) が上限を超えました",
"language-converter-depth-warning": "言語変換機能の深さ ($1) が制限を超えました",
"node-count-exceeded-category": "ノード数が制限を超えたページ",
- "node-count-exceeded-category-desc": "ノード数が制限を超えたページを列挙するカテゴリです。",
+ "node-count-exceeded-category-desc": "ノード数が上限を超えたページ。",
"node-count-exceeded-warning": "ページがノード数の制限を超えました",
"expansion-depth-exceeded-category": "展開の深さ制限を超えたページ",
- "expansion-depth-exceeded-category-desc": "このカテゴリでは、展開の深さが制限を超えたページを列挙します。",
+ "expansion-depth-exceeded-category-desc": "展開の深さが上限を超えたページ。",
"expansion-depth-exceeded-warning": "ページが展開の深さ制限を超えました",
"parser-unstrip-loop-warning": "unstrip のループを検出しました",
"parser-unstrip-recursion-limit": "unstrip の再帰 ($1) が上限を超えました",
"rev-deleted-event": "(記録は除去されています)",
"rev-deleted-user-contribs": "[利用者名またはIPアドレスは除去されました - その編集は投稿記録で非表示にされています]",
"rev-deleted-text-permission": "この版は<strong>削除されています</strong>。\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+ "rev-suppressed-text-permission": "この版は<strong>秘匿されています</strong>。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
"rev-deleted-text-unhide": "この版は<strong>削除されています</strong>。\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。\nこのまま[$1 この版を閲覧]できます。",
"rev-suppressed-text-unhide": "この版は<strong>秘匿されています</strong>。\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。\nこのまま[$1 この版を閲覧]できます。",
"rev-deleted-text-view": "この版は<strong>削除されています</strong>。\n内容を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
"searchprofile-advanced-tooltip": "特定の名前空間内を検索",
"search-result-size": "$1 ({{PLURAL:$2|$2 単語}})",
"search-result-category-size": "{{PLURAL:$1|$1 件}} ({{PLURAL:$2|$2 下位カテゴリ}}、{{PLURAL:$3|$3 ファイル}})",
- "search-result-score": "関連度: $1%",
"search-redirect": "($1からのリダイレクト)",
"search-section": "($1の節)",
"search-file-match": "(ファイルの内容との一致)",
"uploadwarning": "アップロード警告",
"uploadwarning-text": "下記のファイル解説を修正して再試行してください。",
"savefile": "ファイルを保存",
- "uploadedimage": "「[[$1]]」をアップロードしました",
- "overwroteimage": "「[[$1]]」の新しい版をアップロードしました",
"uploaddisabled": "アップロード機能は無効になっています。",
"copyuploaddisabled": "URL からのアップロードは無効になっています。",
"uploaddisabledtext": "ファイルのアップロードは、無効になっています。",
"nolicense": "選択なし",
"licenses-edit": "ライセンスオプションを編集",
"license-nopreview": "(プレビューはありません)",
- "upload_source_url": "(有効かつ一般に公開されている URL)",
- "upload_source_file": "(ã\81\82ã\81ªã\81\9fã\81®ã\82³ã\83³ã\83\94ã\83¥ã\83¼ã\82¿ã\83¼ä¸\8aã\81®ã\83\95ã\82¡ã\82¤ã\83«)",
+ "upload_source_url": "(一般に公開されている、有効な URL からファイルを選択)",
+ "upload_source_file": "(ã\81\82ã\81ªã\81\9fã\81®ã\82³ã\83³ã\83\94ã\83¥ã\83¼ã\82¿ã\83¼ä¸\8aã\81\8bã\82\89ã\83\95ã\82¡ã\82¤ã\83«ã\82\92é\81¸æ\8a\9e)",
"listfiles-delete": "削除",
"listfiles-summary": "この特別ページでは、アップロードされたファイルをすべて表示します。",
"listfiles_search_for": "検索するメディア名:",
"post-expand-template-inclusion-category-desc": "テンプレートを展開したあとのページ サイズが <code>$wgMaxArticleSize</code> よりも大きいため、一部のテンプレートが展開されなかった",
"post-expand-template-argument-category-desc": "テンプレート引数 (<code>{{{Foo}}}</code> のような三重中括弧部分) を展開したあとのページが <code>$wgMaxArticleSize</code> よりも大きい",
"expensive-parserfunction-category-desc": "高負荷なパーサー関数 (<code>#ifexist</code> など) の呼び出し回数が多過ぎるページ。[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] を参照してください。",
- "broken-file-category-desc": "リンク切れしたファイルを含むページ (ファイルを埋め込むリンクがあり、そのファイルが存在しない) に追加されるカテゴリ",
- "hidden-category-category-desc": "<code><nowiki>__HIDDENCAT__</nowiki></code> を含むカテゴリ。このカテゴリは、既定ではページのカテゴリ リンク ボックス内に表示されません。",
+ "broken-file-category-desc": "リンク切れしたファイルを含むページ (ファイルを埋め込むリンクがあり、そのファイルが存在しない)。",
+ "hidden-category-category-desc": "ページの本文に <code><nowiki>__HIDDENCAT__</nowiki></code> を含むカテゴリ。このカテゴリは既定ではページのカテゴリ リンク ボックス内に表示されません。",
"trackingcategories-nodesc": "説明はありません。",
"trackingcategories-disabled": "このカテゴリは無効化されています",
"mailnologin": "送信アドレスがありません",
"mywatchlist": "ウォッチリスト",
"watchlistfor2": "利用者: $1 $2",
"nowatchlist": "ウォッチリストには何も項目がありません。",
- "watchlistanontext": "ウォッチリストにある項目を閲覧または編集するには、$1してください。",
+ "watchlistanontext": "ウォッチリストにある項目を閲覧または編集するには、ログインしてください。",
"watchnologin": "ログインしていません",
"addwatch": "ウォッチリストに追加",
"addedwatchtext": "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。\nこのページまたはそのトークページが変更されると、ウォッチリストに表示されます。",
"wlheader-enotif": "メール通知が有効になっています。",
"wlheader-showupdated": "最終訪問以降に変更されたページは、<strong>太字</strong>で表示されます。",
"wlnote": "$3 $4 までの{{PLURAL:$2|<strong>$2</strong>時間}}になされた{{PLURAL:$1|<strong>$1</strong>件の変更}}は以下の通りです。",
- "wlshowlast": "次の期間で表示: $1時間、$2日間、$3",
+ "wlshowlast": "表示する期間: $1時間、$2日間、$3",
"watchlist-options": "ウォッチリストのオプション",
"watching": "ウォッチリストに追加中...",
"unwatching": "ウォッチリストから除去中...",
"autoblockid": "自動ブロック #$1",
"block": "利用者をブロック",
"unblock": "利用者のブロックを解除",
- "blockip": "利用者をブロック",
+ "blockip": "{{GENDER:$1|利用者}}をブロック",
"blockip-legend": "利用者をブロック",
"blockiptext": "以下のフォームを使用して、指定したIPアドレスまたは利用者からの書き込みアクセスをブロックできます。\nこのような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。\n以下にブロックの理由を具体的に書いてください (例えば、荒らされたページへの言及など)。",
"ipaddressorusername": "IPアドレスまたは利用者名:",
"ipb-unblock-addr": "$1のブロックを解除",
"ipb-unblock": "利用者またはIPアドレスのブロックを解除",
"ipb-blocklist": "現在有効なブロックを表示",
- "ipb-blocklist-contribs": "$1の投稿の一覧",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}}の投稿の一覧",
"unblockip": "ブロックを解除",
"unblockiptext": "以下のフォームで利用者またはIPアドレスのブロックを解除できます。",
"ipusubmit": "このブロックを解除",
"import-error-create": "あなたにそのページを作成する許可がないため、ページ「$1」は取り込まれませんでした。",
"import-error-interwiki": "ページ名が外部リンク (ウィキ間リンク) に予約されているため、ページ「$1」を取り込みませんでした。",
"import-error-special": "ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みませんでした。",
- "import-error-invalid": "名前が正しくないため、ページ「$1」を取り込みませんでした。",
+ "import-error-invalid": "ページ「$1」は、このウィキでは名前が無効であるため、取り込めませんでした。",
"import-error-unserialize": "ページ「$1」の版 $2 はシリアライズ解除できませんでした。この版は $4 としてシリアライズされたコンテンツモデル $3 を使用していると報告されています。",
"import-error-bad-location": "コンテンツモデル $3 はこのページではサポート外のため、モデル $3 を使用している版 $2 はこのウィキ上の「$1」に保存できません。",
"import-options-wrong": "間違った{{PLURAL:$2|オプション}}です: <nowiki>$1</nowiki>",
"importlogpage": "取り込み記録",
"importlogpagetext": "管理された他のウィキから編集履歴を伴ったページ取り込みです。",
"import-logentry-upload": "ファイルのアップロードにより[[$1]]を取り込みました",
- "import-logentry-upload-detail": "$1{{PLURAL:$1|版}}",
+ "import-logentry-upload-detail": "$1{{PLURAL:$1|版}} をインポートしました",
"import-logentry-interwiki": "$1をウィキ間移動しました",
- "import-logentry-interwiki-detail": "$2の$1{{PLURAL:$1|版}}",
+ "import-logentry-interwiki-detail": "$2ã\81\8bã\82\89ã\82¤ã\83³ã\83\9dã\83¼ã\83\88æ¸\88ã\81¿ã\81®$1{{PLURAL:$1|ç\89\88}}",
"javascripttest": "JavaScript をテスト中",
"javascripttest-title": "$1 のテストの実行",
"javascripttest-pagetext-noframework": "このページは JavaScript のテストを実行するために予約されています。",
"autosumm-replace": "内容を「$1」で置換",
"autoredircomment": "[[$1]]への転送ページ",
"autosumm-new": "ページの作成:「$1」",
+ "autosumm-newblank": "空白のページを作成しました",
"size-bytes": "$1バイト",
"size-kilobytes": "$1キロバイト",
"size-megabytes": "$1メガバイト",
"logentry-rights-rights": "$1 が $3 の所属グループを $4 から $5 に{{GENDER:$2|変更しました}}",
"logentry-rights-rights-legacy": "$1 が $3 の所属グループを{{GENDER:$2|変更しました}}",
"logentry-rights-autopromote": "$1 が $4 から $5 に自動的に{{GENDER:$2|昇格しました}}",
+ "logentry-upload-upload": "$1 が $3 を {{GENDER:$2|アップロードしました}}",
+ "logentry-upload-overwrite": "$1 が $3 の新しいバージョンを {{GENDER:$2|アップロードしました}}",
+ "logentry-upload-revert": "$1 が $3 を {{GENDER:$2|アップロードしました}}",
"rightsnone": "(なし)",
"feedback-bugornote": "技術的な問題の詳細を説明する準備ができている場合は、[$1 バグ報告]をお願いします。\n準備ができていない場合は、下の簡易フォームを使用してください。あなたのコメントと利用者名が、ページ「[$3 $2]」に追加されます。",
"feedback-subject": "件名:",
"action-pagelang": "ページの言語の変更",
"log-name-pagelang": "言語変更記録",
"log-description-pagelang": "これはページ言語の変更の記録です。",
- "logentry-pagelang-pagelang": "$1 がページ $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}"
+ "logentry-pagelang-pagelang": "$1 がページ $3 の言語を $4 から $5 に{{GENDER:$2|変更しました}}",
+ "default-skin-not-found": "おっと! あなたのウィキのデフォルト外装「<code>$1</code>」 (<code>$wgDefaultSkin</code>)は利用できません。\n\nあなたのインストールには以下の外装が含まれています。外装の有効化とデフォルトの選択については、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル: 外装設定] をご覧ください。\n\n$2\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。\n:* [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これにはいくつかの外装と拡張機能が含まれています。 <code>skins/</code> ディレクトリからコピー&ペーストできます。\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitレポジトリに干渉することはありません。\n\n; MediaWiki をアップグレードした場合:\n: MediaWiki 1.24 以降のバージョンでは、インストール済みの外装は自動的には有効になりません。 ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery マニュアル: 外装の自動探索] をご覧ください。)。<code>LocalSettings.php</code> に以下の行をペーストして、現在インストールされている外装を有効にできます。\n\n<pre>$3</pre>\n\n; <code>LocalSettings.php</code>を編集したばかりの場合:\n: 外装名に打ち間違いがないか再度確認して下さい。",
+ "default-skin-not-found-no-skins": "おっと! あなたのWikiのデフォルト外装「<code>$1</code>」 (<code>$wgDefaultSkin</code>)は利用できません。\n\n外装をインストールしていません。\n\n; MediaWikiをインストールしたばかりの場合:\n: gitからインストールしたか、その他の何らかの方法でソースコードから直接インストールした場合には、これは期待されたとおりの動作です。\n:* [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory] から外装をインストールしてみてください。\n:* [https://www.mediawiki.org/wiki/Download tarball installer] をダウンロードしてみてください。これには外装と拡張機能がいくつか含まれています。 <code>skins/</code> ディレクトリからコピー&ペーストできます。\n: あなたがMediaWiki開発者の場合、これを行うことであなたのgitレポジトリに干渉することはありません。外装の有効化とデフォルトの選択についての情報は、[https://www.mediawiki.org/wiki/Manual:Skin_configuration マニュアル: 外装設定] をご覧ください。",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (有効)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''無効''')"
}
"talkpagelinktext": "Chat",
"specialpage": "Peshal piej",
"personaltools": "Persnal tuuldem",
- "postcomment": "Nyuu sekshan",
"articlepage": "Vyuu kantent piej",
"talk": "Diskoshan",
"views": "Vyuu",
"externaldberror": "Aida aatentikieshan dietabies era okor ar yu no lou fi opdiet yu extoernal akount.",
"login": "Lag iin",
"nav-login-createaccount": "Lag iin / kriet akount",
- "loginprompt": "Yu mos ab kukidem eniebl fi lag iin tu {{SITENAME}}.",
"userlogin": "Lag iin / kriet akount",
"userloginnocreate": "Lag iin",
"logout": "Lag out",
"recentchangeslinked-to": "Shuo chienjdem tu piej wa lingk tu di gibn piej insted",
"upload": "Opluod fail",
"uploadlogpage": "Opluod lag",
- "uploadedimage": "opluodid \"[[$1]]\"",
"filehist": "Fail ischri",
"filehist-help": "Klik pan a diet/taim fi vyuu di fail az ou iapier a di taim.",
"filehist-current": "korant",
"Urhixidur",
"Xabier Armendaritz",
"Ælsån",
- "Midnight Gambler"
+ "Midnight Gambler",
+ "아라"
]
},
"tog-underline": "Understreg henvesnenger",
"tog-showtoolbar": "Ves værktøjslenje til redigærenge",
"tog-editondblclick": "Redigær sider ve dåbeltklik",
"tog-editsectiononrightclick": "Redigær åfsnet ve at klikke på deres titler",
- "tog-rememberpassword": "Husk adgengskode til næste besøĝ frå denne kompjuter (for a maximum of $1 {{PLURAL:$1|day|days}})",
"tog-watchcreations": "Tilføj sider a åpretter til miin åvervågnengsliste",
"tog-watchdefault": "Tilføj sider a redigærer til miin åvervågnengsliste",
"tog-watchmoves": "Tilføj sider a flytter til miin åvervågnengsliste",
"talkpagelinktext": "diskusje",
"specialpage": "Sonst side",
"personaltools": "Personlige værktø'r",
- "postcomment": "Tilføj en biskrevselenger",
"articlepage": "Se'n ertikel",
"talk": "Diskusje",
"views": "Vesnenger",
"filedeleteerror": "Kan ekke slette'n file \"$1\".",
"directorycreateerror": "Kan ekke åprette katalåget \"$1\".",
"filenotfound": "Kan ekke finde'n file \"$1\".",
- "fileexistserror": "Kan ekke åprette \"$1\": æ file findes ålrede",
"unexpected": "Uventet værdi: \"$1\"=\"$2\".",
"formerror": "Fejl: Kan ekke åfsende formulær",
"badtitle": "Førkert skrevselenger",
"remembermypassword": "Husk min adgangskode til næste gang (for a maximum of $1 {{PLURAL:$1|day|days}})",
"login": "Loĝ på",
"nav-login-createaccount": "Åpret æ konto æller loĝ på",
- "loginprompt": "Du skal have cookies slået til før at kunne loĝge på {{SITENAME}}.",
"userlogin": "Åpret æ konto æller loĝ på",
"logout": "Loĝ åf",
"userlogout": "Loĝ åf",
"recentchanges": "Seneste ændrenger",
"recentchanges-feed-description": "Ve dette fiid ken du følge de seneste ændrenger på {{SITENAME}}.",
"rcnotefrom": "Nedenfør ses ændrengerne frå '''$2''' til '''$1''' vest.",
- "rclistfrom": "Ves nye ændrenger startende frå $1",
+ "rclistfrom": "Ves nye ændrenger startende frå $3 $2",
"rcshowhideminor": "$1 lile ændrenger",
"rcshowhidebots": "$1 råbotter",
"rcshowhideliu": "$1 regestrerede brugere",
"upload": "Læĝ æ billet åp",
"uploadbtn": "Læĝ æ gøret åp",
"uploadlogpage": "Åplægnengslog",
- "uploadedimage": "Låĝde \"[[$1]]\" åp",
"listfiles": "Billetliste",
"file-anchor-link": "Billet",
"filehist": "Billetskigt",
"log": "Loglister",
"all-logs-page": "Åle loglister",
"allpages": "Åle ertikler",
- "alphaindexline": "$1 til $2",
"nextpage": "Næste side ($1)",
"prevpage": "Førge side ($1)",
"allpagesfrom": "Ves sider startende frå:",
"talkpagelinktext": "Wicara",
"specialpage": "Kaca astaméwa",
"personaltools": "Piranti pribadi",
- "postcomment": "Bagéyan anyar",
"articlepage": "nDeleng artikel",
"talk": "Dhiskusi",
"views": "Tampilan",
"externaldberror": "Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.",
"login": "Mlebu log",
"nav-login-createaccount": "Log mlebu / nggawé rékening (akun)",
- "loginprompt": "Panjenengan kudu ngaktifaké ''cookies'' supaya bisa mlebu (log in) ing {{SITENAME}}.",
"userlogin": "Mlebu log / gawé rékening (akun)",
"userloginnocreate": "Mlebu log",
"logout": "Oncat",
"searchprofile-advanced-tooltip": "Panggolèkan ing bilik jeneng biasa (''custom'')",
"search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})",
"search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
- "search-result-score": "Relevansi: $1%",
"search-redirect": "(pangalihan $1)",
"search-section": "(sèksi $1)",
"search-suggest": "Apa panjenengan kersané: $1",
"uploadwarning": "Pèngetan pangunggahan berkas",
"uploadwarning-text": "Mangga owah katrangan berkas nèng ngisor lan coba manèh.",
"savefile": "Simpen berkas",
- "uploadedimage": "gambar \"[[$1]]\" kaunggahaké",
- "overwroteimage": "ngunggahaké vèrsi anyar saka \"[[$1]]\"",
"uploaddisabled": "Nuwun sèwu, fasilitas pangunggahan dipatèni.",
"copyuploaddisabled": "Ngunggah mawa URL dipatèni.",
"uploaddisabledtext": "Pangunggahan berkas ora diidinaké.",
"watchlist-details": "Ngawasaké {{PLURAL:$1|$1 kaca|$1 kaca}}, ora kalebu kaca-kaca dhiskusi.",
"wlheader-enotif": "Notifikasi layang elektronik diaktifaké.",
"wlheader-showupdated": "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
+ "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",
"watching": "Ngawasi...",
"duplicate-defaultsort": "Pènget: Kunci pilih asal (''Default sort key'') \"$2\" nggantèkaké kunci pilih asal sadurungé \"$1\".",
"version": "Versi",
"version-extensions": "Èkstènsi sing wis diinstalasi",
+ "version-skins": "Kulit",
"version-specialpages": "Kaca astaméwa (kaca kusus)",
"version-parserhooks": "Canthèlan parser",
"version-variables": "Variabel",
"version-antispam": "Pambendhung spam",
- "version-skins": "Kulit",
"version-other": "Liyané",
"version-mediahandlers": "Pananganan média",
"version-hooks": "Canthèlan-canthèlan",
"talkpagelinktext": "განხილვა",
"specialpage": "სპეციალური გვერდი",
"personaltools": "პირადი ხელსაწყოები",
- "postcomment": "ახალი სექცია",
"articlepage": "სტატიის ნახვა",
"talk": "განხილვა",
"views": "გადახედვა",
"externaldberror": "საგარეო მონაცემთა ბაზაში აუტენტიფიკაციის შეცდომაა, ან თქვენ არ გაქვთ საკმარისი უფლებები საგარეო ანგარიშში ცვლილებების შესატანად.",
"login": "შესვლა",
"nav-login-createaccount": "შესვლა / რეგისტრაცია",
- "loginprompt": "{{SITENAME}}-ში შესასვლელად საჭიროა კუკის (cookies) გააქტიურება.",
"userlogin": "შესვლა/ანგარიშის შექმნა",
"userloginnocreate": "შესვლა",
"logout": "გასვლა",
"searchprofile-advanced-tooltip": "ძიება სახელთა მოცემულ სივრცეში",
"search-result-size": "$1 ($2 სიტყვა)",
"search-result-category-size": "{{PLURAL:$1|$1 ელემენტი|$1 ელემენტი|$1 ელემენტები}} ({{PLURAL:$2|$2 ქვეკატეგორია|$2 ქვეკატეგორიები|$2 ქვეკატეგორიები}}, {{PLURAL:$3|$3 ფაილი|$3 ფაილი|$3 ფაილი}})",
- "search-result-score": "რელევანტურობა $1 %",
"search-redirect": "(გადამისამართება $1)",
"search-section": "(სექცია $1)",
"search-file-match": "(ემთხვევა ფაილის შინაარსს)",
"uploadwarning": "გადატვირთვის შეხსენება",
"uploadwarning-text": "გთხოვთ ჩაასწოროთ ფაილის აღწერა ქვევით და ხელმეორედ სცადოთ.",
"savefile": "ფაილის შენახვა",
- "uploadedimage": "აიტვირთა „[[$1]]“",
- "overwroteimage": "ატვირთულია „[[$1]]-ის“ ახალი ვერსია",
"uploaddisabled": "ატვირთვა გამორთულია.",
"copyuploaddisabled": "URL ატვირთვა გაღიშულია",
"uploaddisabledtext": "ფაილების ატვირთვა შეუძლებელია.",
"watchlist-details": "$1 გვერდია თქვენი კონტროლის სიაში განხილვის გვერდების ჩაუთვლელად.",
"wlheader-enotif": "ელ.ფოსტით შეტყობინება ჩართულია.",
"wlheader-showupdated": "თქვენი ბოლო ვიზიტის შემდეგ შეცვლილი გვერდები, აღნიშნულია '''მუქად'''.",
+ "wlnote": "ქვემოთ {{PLURAL:$1|ნაჩვენებია ბოლო ცვლილება|ნაჩვენებია ბოლო '''$1''' ცვლილება}} უკანასკნელი {{PLURAL:$2|საათის|'''$2''' საათის}} მანძილზე, $3, $4 მდგომარეობით.",
"wlshowlast": "აჩვენე ბოლო $1 საათის $2 დღის $3",
"watchlist-options": "კონტროლის სიის პარამეტრები",
"watching": "კონტროლებადი...",
"duplicate-defaultsort": "'''ყურადღება.'''სორტირების გასაღებს «$2»-ს გააჭრის წინა გასაღებს «$1»-ს.",
"version": "ვერსია",
"version-extensions": "დაყენებული გაფართოებები",
+ "version-skins": "იერსახე",
"version-specialpages": "სპეციალური გვერდები",
"version-parserhooks": "სინტაქსური ანალიზატორის ჰუკები",
"version-variables": "ცვალებადი",
"version-antispam": "სპამის პრევენცია",
- "version-skins": "იერსახე",
"version-api": "API",
"version-other": "სხვა",
"version-mediahandlers": "მედია დამუშავება",
"talkpagelinktext": "Sa'wbet",
"specialpage": "Arnawlı bet",
"personaltools": "Paydalanıwshı a'sbapları",
- "postcomment": "Taza bo'lim",
"articlepage": "Mag'lıwmat betin ko'riw",
"talk": "Diskussiya",
"views": "Ko'rinis",
"yourdomainname": "Sizin' domen:",
"login": "Kiriw",
"nav-login-createaccount": "Kiriw / akkaunt jaratıw",
- "loginprompt": "{{SITENAME}} saytına kiriw ushın kukiler qosılg'an bolıwı kerek.",
"userlogin": "Kiriw / akkaunt jaratıw",
"logout": "Shıg'ıw",
"userlogout": "Shıg'ıw",
"searchprofile-everything-tooltip": "Barlıq betlerde izlew (sa'wbet betlerin qosıp)",
"searchprofile-advanced-tooltip": "Berilgen isimler ko'pliginde izlew",
"search-result-size": "$1 ({{PLURAL:$2|1 so'z|$2 so'z}})",
- "search-result-score": "Qatnasıqlıg'ı: $1%",
"search-redirect": "(qayta bag'ıtlandırıw $1)",
"search-section": "(bo'lim $1)",
"search-suggest": "Ba'lkim, siz bunı na'zerde tutqan shig'arsız: $1",
"largefileserver": "Bul faildın mo'lsheri serverdin' ruxsatınan u'lken.",
"uploadwarning": "Aploud eskertiwi",
"savefile": "Fayldı saqla",
- "uploadedimage": "«[[$1]]» faylı aploud qılındı",
- "overwroteimage": "\"[[$1]]\" faylının' jan'a nusqası aploud qılındı",
"uploaddisabled": "Aploudqa ruxsat berilmegen",
"uploaddisabledtext": "Fayllardı aploud qılıw toqtatılg'an.",
"uploadvirus": "Bul failda virus bar! Mag'lıwmat: $1",
"notvisiblerev": "Nusqa o'shirildi",
"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.",
+ "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ı",
"watching": "Baqlaw...",
"talkpagelinktext": "Mmeslay",
"specialpage": "Asebter uslig",
"personaltools": "Dduzan inu",
- "postcomment": "Azen awennit",
"articlepage": "Ẓer ayen yellan deg usebter",
"talk": "Amyannan",
"views": "Tuẓrin",
"externaldberror": "Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.",
"login": "Kcem",
"nav-login-createaccount": "Kcem / Xleq isem n wemseqdac",
- "loginprompt": "Yessefk ad teǧǧiḍ ikukiyen (cookies) iwakken ad tkecmeḍ ar {{SITENAME}}.",
"userlogin": "Kcem / Xleq isem n wemseqdac",
"userloginnocreate": "Qqen",
"logout": "Ffeɣ",
"searchprofile-advanced-tooltip": "Fren ideggen n isemawen i unadi",
"search-result-size": "$1 ({{PLURAL:$2|1 awal|$2 awalen}})",
"search-result-category-size": "$1 {{PLURAL:$1|amseqdac|imseqdacen}} $2 ({{PLURAL:$2|adu-taggayt|adu-tiggayin}}, $3 {{PLURAL:$3|afaylu|ifuyla}})",
- "search-result-score": "Taflest : $1%",
"search-redirect": "(asemmimeḍ $1)",
"search-section": "(tigezmi $1)",
"search-file-match": "(yzega i ugbur n ufaylu)",
"uploadwarning": "Aɣtal deg wazan n ufayluwen",
"uploadwarning-text": "Beddel aglam n ufaylu dɣa ɛreḍ tikkelt nniḍen",
"savefile": "Smekti afaylu",
- "uploadedimage": "\"[[$1]]\" yettwazen",
- "overwroteimage": "yekter lqem amaynut n « [[$1]] »",
"uploaddisabled": "Suref-aɣ, azen n ufayluwen yettwakkes",
"copyuploaddisabled": "Taktert n ufaylu s URL yensan.",
"uploaddisabledtext": "Azen n ifuyla yettwakkes deg wiki agi.",
"watchlist-details": "ttɛassaɣ {{PLURAL:$1|$1 usebter|$1 n isebtaren}} mebla isebtaren \"amyannan\".",
"wlheader-enotif": "Talɣut s email yessermed.",
"wlheader-showupdated": "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.",
- "wlnote2": "Ddaw agi ibeddilen deg {{PLURAL:$1|asrag aneggaru|<strong>$1</strong> isragen ineggura}}, seg $2, $3.",
+ "wlnote": "Ddaw agi {{PLURAL:$1|yella abeddel aneggaru|llan '''$1''' ibeddilen ineggura}} n {{PLURAL:$2|usrag aneggaru|'''$2''' isragen ineggura}}, seg $3 af $4.",
"wlshowlast": "Ssken $1 n swayeɛ $2 n wussan neɣ $3 ineggura",
"watchlist-options": "Tifranin n umuɣ n uɛessi",
"watching": "Ad iɛass...",
"duplicate-defaultsort": "Ɣur-wet : tasarut n ufran m-ulac « $2 » atsefεej tasarut n uqbel « $1 ».",
"version": "Lqem",
"version-extensions": "Isiɣzaf i serkeben",
+ "version-skins": "Igelman",
"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",
"talkpagelinktext": "Тепсэлъыхьыгъуэ",
"specialpage": "Лэжыгъэ напэкӀуэцӀ",
"personaltools": "Уи Ӏэмэпсымэхэр",
- "postcomment": "ЛъэныкъуэщӀэ",
"articlepage": "Тхыгъэм хэплъэн",
"talk": "Тепсэлъэхьыгъуэ",
"views": "Зыхэплъахэр",
"externaldberror": "Щэуэгъуэ хъуа, аутентификациэ щекӀуэкӀым иэ апхуэдиз пӀалъэ уиӀу щыткъым, уи нэкугъуэ аккаунтыр зэпхъуэкӀын.",
"login": "Системэм зыкъегъэцIыхуын",
"nav-login-createaccount": "Ихьэн/щӀэуэ зитхэн",
- "loginprompt": "«Cookies» уиӀэн хуэй, системэм уихьэн щхьэкӀэ.",
"userlogin": "Ихьэн/зыхэтхэн",
"userloginnocreate": "Системэм зыкъегъэцӀыхуын",
"logout": "ИкӀыжын",
"upload": "Файл илъхьэн",
"uploadnologin": "Системэм зыкъебгъэцӀыхуакъым",
"uploadlogpage": "Иралъхьахэм и тхыдэ-тхылъыр",
- "uploadedimage": "изылъхьар \"[[$1]]\"",
"filehist": "Файлым и тхыдэ",
"filehist-help": "Махуэ/зэманым текъузэ файлыр дэпщэщ дэуэду щытами уеплъынумэ",
"filehist-current": "иджырер",
"talkpagelinktext": "مشقولگی",
"specialpage": "خصوصی صفحہ",
"personaltools": "ذاتی سماند",
- "postcomment": "پروشٹیو حصّہ",
"articlepage": "مندرجاتی صفحہو لوڑے",
"talk": "تبادلہٴ خیال",
"views": "خیالات",
"externaldberror": "یا تھے توثیقی ڈیٹابیسا خطا واقع بیتی شیر یا تتے بیریو کھاتو بتاریخ کوریکو اِجازت نیکی",
"login": "داخل بوس",
"nav-login-createaccount": "کھاتہ کھولاو کورے یا اندراج کورے",
- "loginprompt": "{{SITENAME}} کھوار ویکیپیڈیا داخلو بچے تہ سوم پاسورڈ بیک ضروری شیر",
"userlogin": "کھاتہ ساوزاوے یا اندراج کورے",
"userloginnocreate": "داخل نوشتہ بوس",
"logout": "لاگ آوٹ",
"uploadlogpage": "نوشتۂ زبراثقال (اپ لوڈ لاگ)",
"filename": "فایلو نام",
"filedesc": "خلاصہ",
- "uploadedimage": "زبراثقال (اپ لوڈ) براۓ \"[[$1]]\"",
"license": "لایسنس",
"license-header": "لایسنسنگ",
"file-anchor-link": "فایل",
"filesource": "Çıme:",
"empty-file": "Dosya ke ti şawit veng biy.",
"savefile": "Dosya qeyd ke",
- "uploadedimage": "\"[[$1]]\" bar bi",
"upload-source": "Dosya çımey",
"sourcefilename": "Namê dosya çımey:",
"watchthisupload": "Na dosya de şêr ke",
"talkpagelinktext": "تالقىلاۋى",
"specialpage": "ارنايى بەت",
"personaltools": "جەكە قۇرالدار",
- "postcomment": "ماندەمە جونەلتۋ",
"articlepage": "ماعلۇمات بەتىن قاراۋ",
"talk": "تالقىلاۋ",
"views": "كورىنىس",
"externaldberror": "وسى ارادا نە شەتتىك راستاۋ دەرەكقورىندا قاتە بولدى, نەمەسە شەتتىك تىركەلگىڭىزدى جاڭالاۋ رۇقساتى جوق.",
"login": "كىرۋ",
"nav-login-createaccount": "كىرۋ / تىركەلگى جاساۋ",
- "loginprompt": "{{SITENAME}} تورابىنا كىرۋىڭىز ٴۇشىن «cookies» قوسىلۋى ٴجون.",
"userlogin": "كىرۋ / تىركەلگى جاساۋ",
"logout": "شىعۋ",
"userlogout": "شىعۋ",
"nextn": "كەلەسى {{PLURAL:$1|$1}}",
"viewprevnext": "كورسەتىلۋى: ($1 {{int:pipe-separator}} $2) ($3) جازبا",
"search-result-size": "$1 ($2 ٴسوز)",
- "search-result-score": "اراقاتىناستىلىعى: $1 %",
"search-redirect": "(ايداعىش $1)",
"search-section": "(ٴبولىم $1)",
"search-suggest": "بۇنى ىزدەدىڭىز بە: $1",
"file-exists-duplicate": "بۇل فايل كەلەسى {{PLURAL:$1|فايلدىڭ|فايلدارىنىڭ}} تەلنۇسقاسى:",
"uploadwarning": "قوتارىپ بەرۋ جونىندە قۇلاقتاندىرۋ",
"savefile": "فايلدى ساقتاۋ",
- "uploadedimage": "«[[$1]]» فايلىن قوتارىپ بەردى",
- "overwroteimage": "«[[$1]]» فايلىننىڭ جاڭا نۇسقاسىن قوتارىپ بەردى",
"uploaddisabled": "قوتارىپ بەرۋ وشىرىلگەن",
"uploaddisabledtext": "{{SITENAME}} جوباسىندا فايل قوتارىپ بەرۋى وشىرىلگەن.",
"uploadscripted": "بۇل فايلدا ۆەب شولعىشتى قاتەلىكپەن تالداتقىزاتىن HTML نە ٴامىر كودى بار.",
"watchlist-details": "تالقىلاۋ بەتتەرىن ساناماعاندا $1 بەت باقلانىلادى.",
"wlheader-enotif": "ەسكەرتۋ حات جىبەرۋى قوسىلعان.",
"wlheader-showupdated": "سوڭعى كەلىپ-كەتۋىڭىزدەن بەرى وزگەرتىلگەن بەتتەردى '''جۋان''' قارىپىمەن كورسەت",
+ "wlnote": "تومەندە سوڭعى {{PLURAL:$2|ساعاتتا|'''$2''' ساعاتتا}} بولعان, {{PLURAL:$1|جۋىقتاعى وزگەرىس|جۋىقتاعى '''$1''' وزگەرىس}} كورسەتىلەدى.",
"wlshowlast": "سوڭعى $1 ساعاتتاعى, $2 كۇندەگى, $3 بولعان وزگەرىستى كورسەتۋ",
"watching": "باقىلاۋدا…",
"unwatching": "باقىلاماۋدا…",
"Bakytgul Salykhova",
"Daniyar",
"GaiJin",
- "Kaztrans"
+ "Kaztrans",
+ "Balnur.s"
]
},
"tog-underline": "Сілтеменің астын сызу:",
"hidetoc": "жасыру",
"collapsible-collapse": "Түру",
"collapsible-expand": "Жазу",
+ "confirmable-yes": "Иә",
+ "confirmable-no": "Жоқ",
"thisisdeleted": "$1 қарайсыз ба немесе қалпына келтіресіз бе?",
"viewdeleted": "$1 қарайсыз ба?",
"restorelink": "{{PLURAL:$1|жойылған өңдемені|$1 жойылған өңдемені}}",
"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-suggest": "Мүмкін осы болар: $1",
"file-exists-duplicate": "Бұл файл келесі {{PLURAL:$1|файлдың|файлдарының}} телнұсқасы:",
"uploadwarning": "Жүктеу жөнінде құлақтандыру",
"savefile": "Файлды сақтау",
- "uploadedimage": "«[[$1]]» файлын жүктеді",
- "overwroteimage": "«[[$1]]» деген файлдың жаңа нұсқасын жүктеді",
"uploaddisabled": "Жүктеу өшірілген",
"copyuploaddisabled": "URL арқылы жүктеу өшірілген.",
"uploaddisabledtext": "Файл жүктеу өшірілген.",
"pageinfo-toolboxlink": "Бұл бет туралы мәлімет",
"pageinfo-redirectsto": "Айдатылғандар",
"pageinfo-redirectsto-info": "Информация",
+ "pageinfo-contentpage": "Контент бетке санала ма?",
"pageinfo-contentpage-yes": "Иә",
"pageinfo-protect-cascading": "Баулы қорғаулылар мұнда",
"pageinfo-protect-cascading-yes": "Иә",
"talkpagelinktext": "Talqılawı",
"specialpage": "Arnaýı bet",
"personaltools": "Jeke quraldar",
- "postcomment": "Mändeme jöneltw",
"articlepage": "Mağlumat betin qaraw",
"talk": "Talqılaw",
"views": "Körinis",
"externaldberror": "Osı arada ne şettik rastaw derekqorında qate boldı, nemese şettik tirkelgiñizdi jañalaw ruqsatı joq.",
"login": "Kirw",
"nav-login-createaccount": "Kirw / Tirkelgi jasaw",
- "loginprompt": "{{SITENAME}} torabına kirwiñiz üşin «cookies» qosılwı jön.",
"userlogin": "Kirw / Tirkelgi jasaw",
"logout": "Şığw",
"userlogout": "Şığw",
"nextn": "kelesi {{PLURAL:$1|$1}}",
"viewprevnext": "Körsetilwi: ($1 {{int:pipe-separator}} $2) ($3) jazba",
"search-result-size": "$1 ($2 söz)",
- "search-result-score": "Araqatınastılığı: $1 %",
"search-redirect": "(aýdağış $1)",
"search-section": "(bölim $1)",
"search-suggest": "Bunı izdediñiz be: $1",
"file-exists-duplicate": "Bul faýl kelesi {{PLURAL:$1|faýldıñ|faýldarınıñ}} telnusqası:",
"uploadwarning": "Qotarıp berw jöninde qulaqtandırw",
"savefile": "Faýldı saqtaw",
- "uploadedimage": "«[[$1]]» faýlın qotarıp berdi",
- "overwroteimage": "«[[$1]]» faýlınnıñ jaña nusqasın qotarıp berdi",
"uploaddisabled": "Qotarıp berw öşirilgen",
"uploaddisabledtext": "{{SITENAME}} jobasında faýl qotarıp berwi öşirilgen.",
"uploadscripted": "Bul faýlda veb şolğıştı qatelikpen taldatqızatın HTML ne ämir kodı bar.",
"watchlist-details": "Talqılaw betterin sanamağanda $1 bet baqlanıladı.",
"wlheader-enotif": "Eskertw xat jiberwi qosılğan.",
"wlheader-showupdated": "Soñğı kelip-ketwiñizden beri özgertilgen betterdi '''jwan''' qaripimen körset",
+ "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",
"watching": "Baqılawda…",
"unwatching": "Baqılamawda…",
"talkpagelinktext": "ការពិភាក្សា",
"specialpage": "ទំព័រពិសេស",
"personaltools": "ឧបករណ៍ផ្ទាល់ខ្លួន",
- "postcomment": "ផ្នែកថ្មី",
"articlepage": "មើលខ្លឹមសារទំព័រ",
"talk": "ការពិភាក្សា",
"views": "គំហើញ",
"externaldberror": "មានបញ្ហាក្នុងការបញ្ជាក់ផ្ទៀងផ្ទាត់មូលដ្ឋានទិន្នន័យ ឬអ្នកមិនត្រូវបានអនុញ្ញាតឲ្យបន្ទាន់សម័យគណនីខាងក្រៅរបស់អ្នក។\n",
"login": "កត់ឈ្មោះចូល",
"nav-login-createaccount": "កត់ឈ្មោះចូលឬបង្កើតគណនី",
- "loginprompt": "អ្នកត្រូវតែមានខូគី ដើម្បីអាចកត់ឈ្មោះចូល{{SITENAME}}បាន។",
"userlogin": "កត់ឈ្មោះចូលឬបង្កើតគណនី",
"userloginnocreate": "កត់ឈ្មោះចូល",
"logout": "កត់ឈ្មោះចេញ",
"searchprofile-advanced-tooltip": "ស្វែងរកក្នុងប្រភេទកំណត់ដោយអ្នកប្រើប្រាស់",
"search-result-size": "$1({{PLURAL:$2|១ពាក្យ|$2ពាក្យ}})",
"search-result-category-size": "{{PLURAL:$1|សមាជិកម្នាក់|សមាជិក$1នាក់}} ({{PLURAL:$2|កូនចំណាត់ថ្នាក់ក្រុម១|$2 កូនចំណាត់ថ្នាក់ក្រុម}}, {{PLURAL:$3|1 ឯកសារ|$3 ឯកសារ}})",
- "search-result-score": "កម្រិតទាក់ទិន៖ $1%",
"search-redirect": "(បញ្ជូនបន្ត $1)",
"search-section": "(ផ្នែក $1)",
"search-suggest": "ប្រហែលជាអ្នកចង់រក៖ $1",
"uploadwarning": "ប្រយ័ត្ន",
"uploadwarning-text": "សូមកែការពិពណ៌នារបស់ឯកសារខាងក្រោម រួចសាកល្បងម្ដងទៀត។",
"savefile": "រក្សាឯកសារទុក",
- "uploadedimage": "បានផ្ទុកឡើង \"[[$1]]\"",
- "overwroteimage": "បានផ្ទុកឡើងកំណែថ្មីរបស់\"[[$1]]\"",
"uploaddisabled": "មិនអនុញ្ញាតអោយផ្ទុកឯកសារឡើង",
"copyuploaddisabled": "មានអោយប្រើការផ្ទុកឡើងដោយ URL។",
"uploaddisabledtext": "ការផ្ទុកឯកសារឡើងគឺមិនត្រូវបានអនុញ្ញាតទេ។",
"watchlist-details": "{{PLURAL:$1|$1 page|ទំព័រ $1}}នៅក្នុងបញ្ជីតាមដានរបស់អ្នក ដោយមិនរាប់បញ្ចូលទំព័រពិភាក្សា។",
"wlheader-enotif": "បើកប្រើការផ្ដល់ដំណឹងតាមរយៈអ៊ីមែល។",
"wlheader-showupdated": "ទំព័រដែលត្រូវបានផ្លាស់ប្តូរតាំងពីពេលចូលមើលចុងក្រោយរបស់អ្នក ត្រូវបានបង្ហាញជា '''អក្សរដិត'''។",
+ "wlnote": "ខាងក្រោមនេះជា {{PLURAL:$1|បំលាស់ប្តូរចុងក្រោយ|'''$1'''បំលាស់ប្តូរចុងក្រោយ}}ក្នុងរយះពេល{{PLURAL:$2|'''$2'''ម៉ោង}}ចុងក្រោយ គិតចាប់ពី $3, $4។",
"wlshowlast": "បង្ហាញ $1ម៉ោងចុងក្រោយ $2ថ្ងៃចុងក្រោយ ឬ$3",
"watchlist-options": "ជម្រើសនានាក្នុងបញ្ជីតាមដាន",
"watching": "កំពុងតាមដាន...",
"unknown_extension_tag": "ស្លាកនៃផ្នែកបន្ថែម \"$1\" មិនស្គាល់",
"version": "កំណែ",
"version-extensions": "ផ្នែកបន្ថែមដែលបានដំឡើង",
+ "version-skins": "សំបក",
"version-specialpages": "ទំព័រពិសេសៗ",
"version-variables": "អថេរ",
"version-antispam": "ការបង្ការស្ប៉ាម",
- "version-skins": "សំបក",
"version-other": "ផ្សេង",
"version-mediahandlers": "កម្មវិធីបើកមេឌា (Media handlers)",
"version-hook-name": "ឈ្មោះ Hook",
"talkpagelinktext": "ಚರ್ಚೆ",
"specialpage": "ವಿಶೇಷ ಪುಟ",
"personaltools": "ವೈಯಕ್ತಿಕ ಉಪಕರಣಗಳು",
- "postcomment": "ಹೊಸ ವಿಭಾಗ",
"articlepage": "ಲೇಖನ ಪುಟವನ್ನು ವೀಕ್ಷಿಸಿ",
"talk": "ಚರ್ಚೆ",
"views": "ನೋಟಗಳು",
"password-change-forbidden": "ನೀವು ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.",
"login": "ಲಾಗ್ ಇನ್",
"nav-login-createaccount": "ಲಾಗ್ ಇನ್ - log in",
- "loginprompt": "{{SITENAME}} ತಾಣಕ್ಕೆ ಲಾಗ್ ಇನ್ ಆಗಲು ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ ಕುಕೀ (cookie) ಸೌಲಭ್ಯವಿರಬೇಕು.",
"userlogin": "ಲಾಗ್ ಇನ್ - log in",
"userloginnocreate": "ಲಾಗ್ ಇನ್",
"logout": "ಲಾಗ್ ಔಟ್",
"searchprofile-everything-tooltip": "ಹುದುಕಿ ಯಲ ಸುಮನು (ಇಥಿಯದಿ ಮಾಥು ಹಲೆ)",
"searchprofile-advanced-tooltip": "ಹುಧುಕಿ ನಮ ಜಾಗ ಹೆಸರುಸ್ತಲ್ಲ",
"search-result-size": "$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದಗಳು}})",
- "search-result-score": "ಸಂಬದ್ಧತೆ: $1%",
"search-redirect": "(ಪುನರ್ನಿರ್ದೇಶನ $1)",
"search-section": "(ವಿಭಾಗ $1)",
"search-suggest": "ನೀವು ಇದನ್ನು ಹುಡುಕುತ್ತಿರುವಿರೆ: $1",
"fileexists-shared-forbidden": "ಆ ಹೆಸರಿನಲ್ಲಿ ಫೈಲೊಂದು ಸಾಮೂಹಿಕ ಫೈಲಿನ ಆಗರದಲ್ಲಿ ಆಗಲೆ ಇದೆ;\nದಯವಿಟ್ಟು ಹಿಂದಕ್ಕೆ ಹೋಗಿ ಈ ಫೈಲನ್ನು ಹೊಸ ಹೆಸರಿನಲ್ಲಿ ಅಪ್ಲೋಡ್ ಮಾಡಿ. [[File:$1|thumb|center|$1]]",
"uploadwarning": "ಅಪ್ಲೋಡ್ ಎಚ್ಚರಿಕೆ",
"savefile": "ಕಡತವನ್ನು ಉಳಿಸಿ",
- "uploadedimage": "\"[[$1]]\" ಅಪ್ಲೋಡ್ ಆಯಿತು",
- "overwroteimage": "\"[[$1]]\" ಫೈಲಿನ ಹೊಸ ಆವೃತ್ತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಲಾಯಿತು",
"uploaddisabled": "ಅಪ್ಲೋಡ್ಗಳು ನಿರ್ಬಂಧಿತವಾಗಿದೆ",
"uploaddisabledtext": "{{SITENAME}} ತಾಣದಲ್ಲಿ ಫೈಲುಗಳ ಅಪ್ಲೋಡ್ ಮಾಡುವಿಕೆ ತಡೆಗಟ್ಟಲ್ಪಟ್ಟಿದೆ.",
"uploadvirus": "ಈ ಫೈಲಿನಲ್ಲಿ ಒಂದು ವೈರಸ್ ಇದೆ! ಮಾಹಿತಿ: $1",
"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": "(내용이 일치하는 파일 있음)",
"uploadwarning": "올리기 경고",
"uploadwarning-text": "아래의 파일 설명을 수정하고 다시 시도해 주세요.",
"savefile": "파일 저장",
- "uploadedimage": "사용자가 \"[[$1]]\" 파일을 올렸습니다.",
- "overwroteimage": "사용자가 \"[[$1]]\" 파일의 새 판을 올렸습니다.",
"uploaddisabled": "올리기 비활성화됨",
"copyuploaddisabled": "URL로 파일 올리기가 비활성화되어 있습니다.",
"uploaddisabledtext": "파일 올리기 기능이 비활성화되어 있습니다.",
"undeletedrevisions-files": "{{PLURAL:$1|판 1개|판 $1개}}와 {{PLURAL:$2|파일 1개|파일 $2개}}를 되살렸습니다",
"undeletedfiles": "{{PLURAL:$1|파일 1개|파일 $1개}}를 되살렸습니다",
"cannotundelete": "되살리는 데 실패했습니다:\n$1",
- "undeletedpage": "'''$1 문서를 되살렸습니다.'''\n\n[[Special:Log/delete|삭제 기록]]에서 최근의 삭제와 되살리기 기록을 볼 수 있습니다.",
+ "undeletedpage": "<strong>$1 문서를 되살렸습니다.</strong>\n\n[[Special:Log/delete|삭제 기록]]에서 최근의 삭제 및 되살리기 기록을 볼 수 있습니다.",
"undelete-header": "최근에 삭제한 문서에 대한 기록은 [[Special:Log/delete|여기]]에서 볼 수 있습니다.",
"undelete-search-title": "삭제된 문서 검색",
"undelete-search-box": "삭제된 문서 검색",
"@metadata": {
"authors": [
"Enye Lav",
- "Yufereff"
+ "Yufereff",
+ "아라"
]
},
"underline-always": "Пыр",
"qbmyoptions": "Листбоккезö",
"faq": "Отир сё юасьö",
"faqpage": "Project:отир сё юасьö",
- "vector-action-delete": "Чышкыны",
- "vector-view-view": "Лыддьöтны",
"variants": "Варианттэз",
"errorpagetitle": "Сорасьöм",
"returnto": "Бертны $1-öдз.",
"talkpagelinktext": "Сёрнитан",
"specialpage": "Тодильнöй листбок",
"personaltools": "Аслат керöтаннэз",
- "postcomment": "Виль юкöт",
"talk": "Сёрни",
"views": "Видзöтöммез",
"toolbox": "Керöтаннэз",
"viewprevnext": "Видзöтны ($1 {{int:pipe-separator}} $2) ($3)",
"searchprofile-everything": "Быдлаись",
"searchprofile-articles-tooltip": "Кошшан $1ын",
- "searchprofile-project-tooltip": "Кошшан $1ын",
"search-result-size": "$1 ({{PLURAL:$2|1=1 кыв|$2 кыв}})",
"search-redirect": "(иньдöтöм $1 вылiсь)",
"search-section": "(юкöт № $1)",
"searchall": "быдöс",
"powersearch-legend": "Паськытжыка кошшан",
"powersearch-ns": "Ним чукöррезiсь кошшан:",
- "powersearch-redir": "Мöдлаö иньдöтöммез ним сьöртi",
"powersearch-toggleall": "Быдöс",
"powersearch-togglenone": "Нем",
"preferences": "Лöсьöтаннэз",
"timezoneregion-pacific": "Лöнь океан",
"youremail": "Электрон пошта:",
"username": "Уджкерисьлöн ним:",
- "uid": "Уджкерисьлöн лыддьöса пас:",
"yourrealname": "Быльнöй нимыт:",
"yourlanguage": "Кыв:",
"yournick": "Виль кырымпас:",
"recentchanges": "Медбöрья вильмöтöммез",
"recentchanges-legend": "Медбöрья вильмöтöммез понда лöсьöтаннэз",
"recentchanges-feed-description": "Синмавны медбöрья вильмöтöммез этiя вики визылын.",
- "rclistfrom": "Мыччавны вильмöтöмсö $1-сянь",
+ "rclistfrom": "Мыччавны вильмöтöмсö $3 $2-сянь",
"rcshowhideminor": "$1 невунка мöдкöдьсьöтыштöм",
"rcshowhidebots": "$1 бот",
"rcshowhideliu": "Ас нимöн $1 уджкерись",
"recentchangeslinked-to": "Мыччавны мöдкодьсьöтöммез листбоккез вылын, кöдна асьныс ыстiсьöны этiя листбок вылö",
"upload": "Кышавны файл",
"uploadlogpage": "Тöбалöм сьöртi журнал",
- "uploadedimage": "тöбалiс ''[[$1]]''",
"filehist": "Файллöн история",
"filehist-help": "Нырышт дата/кад, мед адззыны, кытшöмöн сэк вöлi файлыс.",
"filehist-current": "öння",
"booksources-go": "Кошшыны",
"log": "Журналлэз",
"allpages": "Быдöс листбоккез",
- "alphaindexline": "$1-сянь $2-дынö",
"prevpage": "Одзжыкся листбок ($1)",
"allpagesfrom": "Мыччавны листбоккез, кöдна пондöтчöны сiдз:",
"allpagesto": "Мыччавны листбоккез татшöмöдз:",
"talkpagelinktext": "сюзюу",
"specialpage": "Къуллукъ бет",
"personaltools": "Энчи адырла",
- "postcomment": "Джангы бёлюм",
"articlepage": "Статьягъа къарау",
"talk": "Сюзюу",
"views": "Къараула",
"externaldberror": "Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.",
"login": "Системагъа кириу",
"nav-login-createaccount": "Системагъа кириу / Аккаунт къурау",
- "loginprompt": "{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.",
"userlogin": "Кир / регистрация эт",
"userloginnocreate": "Кириу",
"logout": "Чыгъыу",
"searchprofile-advanced-tooltip": "Энчи ат аланладада изле",
"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 бёлюм)",
"search-file-match": "(файлны ичиндегиси бла бирди)",
"uploadwarning": "Эсгертиу",
"uploadwarning-text": "Файлны тюбюрекде келтирилген ачыкълауун тюрлендиригиз да джангыдан кёрюгюз.",
"savefile": "Файлны сакълат",
- "uploadedimage": "«[[$1]]» джюкленнгенди",
- "overwroteimage": "«[[$1]]» суратны джангы версиясы джюкленнгенди",
"uploaddisabled": "Джюклеуге эркинлик джокъду",
"copyuploaddisabled": "URL кёре джюклеу джукъланыбды.",
"uploaddisabledtext": "Файлланы джюклеу мадар джукъланыбды",
"watchlist-details": "Кёздеги тизмегизде сюзюу бетлери саналмай {{PLURAL:$1|бет|бет}} барды.",
"wlheader-enotif": "E-mail бла хапар бериу джандырылыбды.",
"wlheader-showupdated": "Ахыр кириуюгюзден сора бетни тюрлениулери '''къалын''' джазыу бла кёргюзюлгенди.",
- "wlnote2": "Тюбюнде, ахыр {{PLURAL:$1|сагъатны|<strong>$1</strong> сагъатны}} ичинден этилген тюрлениуле кёрюнедиле, $2, $3 заманда болумгъа кёре.",
+ "wlnote": "Тюбюндеди кёргюзюлгенди: ахыр '''$2''' сагъатха этилген ахыр '''$1''' тюрлениу, $3 $4 заманнга дери.",
"wlshowlast": "Арт $1 сагъат $2 кюннге $3 кёргюз",
"watchlist-options": "Кёзде тургъан тизмени джарашдырыулары",
"watching": "Кёзде тургъан тизмеге къошуу...",
"Protostar"
]
},
+ "tog-underline": "Link ùndarlaintin",
"tog-hideminor": "Haid dhi lili chenjdèm na dhi resènt chenj list",
+ "tog-hidepatrolled": "Haid patrol èditdèm na risènt chenjdèm",
+ "tog-newpageshidepatrolled": "Haid patrol pejdèm na dhi nyu pej list",
"tog-extendwatchlist": "Èkspand dhi wachlist fòr show òll dhi chenjdèm, pas dhi resènt chenjdèm nòmòr",
+ "tog-usenewrc": "Grup chenjdèm bay pej na dhi risènt chenj wachlist",
+ "tog-numberheadings": "Auto-nùmbar hedtindèm",
+ "tog-showtoolbar": "Show dhi èdit tulbar",
+ "tog-editondblclick": "Èdit pejdèm with tutèm klik",
+ "tog-editsectiononrightclick": "Ebul sèkshòn èdit whe yu raiht klik pan sèkshòn tituldèm",
+ "tog-watchcreations": "Add pejdèm whe a kreat èn faildèm whe a ùplod tu mi wachlist",
+ "tog-watchdefault": "Add pejdèm èn faildèm whe a èdit tu mi wachlist.",
+ "tog-watchmoves": "Add dhi pejdèm we a muf go mi wachlist",
+ "tog-watchdeletion": "Add dhi pejdèm èn faildèm we a delet go mi wachlist",
+ "tog-minordefault": "Mark òll èditdèm lèkkè minòr bay default",
+ "tog-previewontop": "Show prevyu bifor èdit bòks",
+ "tog-previewonfirst": "Show prevyu we dhi fùrs èdit dòn",
+ "tog-enotifwatchlistpages": "Sèn mi e-mel wan pej òr fail na mi wachlist chenj",
+ "tog-enotifusertalkpages": "Sèn mi e-mel whe mi yuzar tòk pej chenj",
+ "tog-enotifminoredits": "Sèn mi e-mel fòr minòr pej èn fail èditdèm",
+ "tog-enotifrevealaddr": "Show mi e-mel addrèss na mi notifakshòn e-meldèm",
+ "tog-shownumberswatching": "Show dhi nùmbàr dhi yuzardèm we de wach",
+ "tog-oldsig": "Signatura we èksist",
+ "tog-fancysig": "Trit signatura lèkkè wikitext (withaut automatik link)",
+ "tog-uselivepreview": "Yuz laive prevyu (èkspèrimèntlèkk)",
+ "tog-forceeditsummary": "Tèllmi we a de èntar blank èdit sùmmari",
+ "tog-watchlisthideown": "Haid mi èditdèm kòmòt mi wachlist",
+ "tog-watchlisthidebots": "Haid bòtèdit kòmòt dhi wachlist",
+ "tog-watchlisthideminor": "Haid minòr èditdèn kòmòt dhi wachlist",
"sunday": "Sandey",
"monday": "Mundey",
"tuesday": "Tyrdey",
"navigation": "Navigatio",
"qbedit": "Èdit",
"faq": "Kwèstiòn dèndeaks bòku",
- "faqpage": "Projèkt:Kuèstiòndèm we òllman de ask",
- "vector-action-addsection": "Add tòpik",
- "vector-action-delete": "Delet",
- "vector-action-move": "Muf",
- "vector-action-protect": "Protèkt",
- "vector-view-create": "Kreat",
- "vector-view-edit": "Chenj",
- "vector-view-history": "Luk historia",
- "vector-view-view": "Rid",
- "vector-view-viewsource": "Luk dhi sòrs",
+ "faqpage": "Project:Kuèstiòndèm we de ask bòku",
"actions": "Actiòndèm",
"namespaces": "Nemspasiodèm",
"variants": "Variantdèm",
"talkpagelinktext": "Tòk",
"specialpage": "Spèsial Pej",
"personaltools": "Pèrsònal tuldèm",
- "postcomment": "Nyu sèktiòn",
"articlepage": "Luk kòntènt pej",
"talk": "Diskùssiòn",
"views": "Vyudèm",
"jumptosearch": "Luk fòr",
"aboutsite": "Na bòt {{SITENAME}}",
"aboutpage": "Project:Na bòt",
- "copyright": "Dis kontent de onda $1 .",
+ "copyright": "Dhis kòntènt avelebul ùndar $1 .",
"currentevents": "Kùrrènt evèntdèm",
"currentevents-url": "Project:Kùrrènt evèntdèm",
"disclaimers": "Disklamardèm",
"yourpasswordagain": "Retayp passwòrd",
"login": "Lògin",
"nav-login-createaccount": "Lògin / Mek yu yon akkaunt",
- "loginprompt": "Yu gèt fòde yuz kukidèm fòr ebul fòrlogin {{SITENAME}}.",
"userlogin": "Lògin / Mek yu yon akkaunt",
"logout": "Lògòt",
"userlogout": "Lògòt",
"createaccount": "Kreat yu yon akkaunt",
"gotaccount": "Yu dòn mek yu akkaunt? '''$1'''.",
"gotaccountlink": "Lògin",
- "createaccountmail": "wit imel",
+ "createaccountmail": "Yuz shòrttèm randòm passwòrd èn sèn am go dhi imel address we spesifay",
"badretype": "Dhi passwòrddèm we yu taip nò mach.",
"userexists": "Odhar pòrsin de yuz dha yuzmannem.\nYu go gèt fòr pik differènt wan.",
"mailmypassword": "Resèt passwòrd",
"savearticle": "Sev dis pej",
"preview": "Prevyu",
"showpreview": "Luk dhi prevyu",
- "showlivepreview": "Luk dhi laiv prevyu",
"showdiff": "Sho wetin dòn chenj",
"anoneditwarning": "'''Tek tèm o:''' Yu nò lògin yet.\nSo dèn go sev yu IP addrèss na dhi pejim èdithistoria",
"missingsummary": "'''Mèmbar se:''' yu nò mek èditsùmmari.\nIf yu prèss sev bak, dhèm go sev yu èdit nòmor.",
"shown-title": "Show $1 {{PLURAL:$1|resùlt|resùltdèm}} fòr pej",
"viewprevnext": "Vyu ($1 {{int:pipe-separator}} $2) ($3)",
"searchprofile-articles": "Kòntèntpejdèm",
- "searchprofile-project": "Hèp èn Protèkt pejdèm",
"searchprofile-images": "Mùltimedia",
"searchprofile-everything": "Òllthin",
"searchprofile-advanced": "We advans",
"searchprofile-articles-tooltip": "Sarch na $1",
- "searchprofile-project-tooltip": "Sarch na $1",
"searchprofile-images-tooltip": "Sarch fòr faildèm",
"search-result-size": "$1 ({{PLURAL:$2|1 wòrd|$2 wòrddèm}})",
"search-section": "(sèkshòn $1)",
"search-nonefound": "Resùltdèm we mach dhi kweri nò de",
"powersearch-legend": "Advanssarch",
"powersearch-ns": "Sarch na nemspatiodèm:",
- "powersearch-redir": "List de sèn yu go",
"search-external": "Èksternal sarch",
"searchdisabled": "{{websaitim nem}} Dhi sarch nò de work.\nNa dhi mintèm yuz Google fòr sarch.\nMèmbar se sòmtèm dhèm indèksdèm na {{SITENAME}}go dòn datòt.",
"mypreferences": "Prèfèrèntiadèm",
"searchresultshead": "Sarch",
"youremail": "Emel:",
- "username": "Yuzanem:",
+ "username": "Yuzmannem:",
"yourrealname": "Real nem",
"newuserlogpage": "Yuzman kreattin lòg",
"action-edit": "èdit dhis pej",
"booksources-go": "Go",
"log": "Lògdèm",
"allpages": "Òll pejdèm",
- "alphaindexline": "$1 go $2",
"allarticles": "Òll pejdèm",
"allpagessubmit": "Go",
"categories": "Katègòridèm",
"searchprofile-advanced-tooltip": "Donn en ußjesohte Appachtemangs sööke",
"search-result-size": "$1 ({{PLURAL:$2|Eij Woot|$2 Wööter|Keij Woot}})",
"search-result-category-size": "{{PLURAL:$1|1 Saach|$1 Saache|0 Saache}} ({{PLURAL:$2|1 Ongerjropp|$2 Ongerjroppe|0 Ongerjroppe}}, {{PLURAL:$3|1 Datei|$3 Dateie|0 Dateie}})",
- "search-result-score": "Jeweesch: $1%",
"search-redirect": "(Ömleitung $1)",
"search-section": "(Avschnett $1)",
"search-file-match": "(en dä Dattei dren)",
"uploadwarning": "Warnung beim Huhlade",
"uploadwarning-text": "Donn onge dä Täx övver di Dattei ändere, un versöhg_et norr_ens.",
"savefile": "Datei avspeichere",
- "uploadedimage": "hät huhjelade: „[[$1]]“",
- "overwroteimage": "hät en neue Version huhjelade vun: „[[$1]]“",
"uploaddisabled": "Huhlade jesperrt",
"copyuploaddisabled": "Et Huhlaade us URLs es afjeschalldt",
"uploaddisabledtext": "Et Huhlade es jesperrt.",
"searchprofile-articles-tooltip": "Di $1 da lêbigere",
"searchprofile-images-tooltip": "Li pelan bigere",
"search-result-size": "$1 ({{PLURAL:$2|peyvek|$2 peyv}})",
- "search-result-score": "Lêhatin: $1%",
"search-redirect": "(beralîkirin $1)",
"search-section": "(beş $1)",
"search-suggest": "Gelo mebesta te ev bû: $1",
"fileexists-forbidden": "Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.\n[[File:$1|thumb|center|$1]]",
"uploadwarning": "Hişyariya barkirinê",
"savefile": "Dosyayê tomar bike",
- "uploadedimage": "\"[[$1]]\" hate barkirin",
- "overwroteimage": "versiyonekî nû ya \"[[$1]]\" hate barkirin",
"uploaddisabled": "Barkirin hatîye qedexekirin",
"uploaddisabledtext": "Barkirinê data'yan hatiye qedexekirin.",
"uploadvirus": "Di vê data'yê da vîrûsek heye! Înformasyon: $1",
"talkpagelinktext": "keskows",
"specialpage": "Folen arbennek",
"personaltools": "Toulys personel",
- "postcomment": "Tregh nowyth",
"articlepage": "Gweles an folen",
"talk": "Keskows",
"views": "Gwelyansow",
"password-change-forbidden": "Ny yllir chanjya geryow tremena war an wiki-ma.",
"login": "Omgelmi",
"nav-login-createaccount": "Omgelmi / Gwruthyl akont nowyth",
- "loginprompt": "Res yw dhywgh galosegi cookies rag omgelmi orth {{SITENAME}}.",
"userlogin": "Omgelmi / gwruthyl akont nowyth",
"userloginnocreate": "Omgelmi",
"logout": "Digelmi",
"fileuploadsummary": "Berrskrif:",
"filesource": "Pennfenten:",
"savefile": "Gwitha restren",
- "uploadedimage": "\"[[$1]]\" ughkergys",
"watchthisupload": "Golya an folen-ma",
"imgfile": "restren",
"listfiles_date": "Dedhyans",
"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",
"watching": "Ow kolya...",
"talkpagelinktext": "Талкуулоо",
"specialpage": "Кызматтык барак",
"personaltools": "Жеке аспаптар",
- "postcomment": "Жаңы бөлүм",
"articlepage": "Макаланы кароо",
"talk": "Талкуу",
"views": "Көрсөтүүлөр",
"externaldberror": "Маалымат базасында ката кетти же сизге сырткы эсебиңизди жаңыртууга уруксат берилген эмес.",
"login": "Кирүү",
"nav-login-createaccount": "Кирүү / Катталуу",
- "loginprompt": "{{SITENAME}} сайтына кириш үчүн сиз «кукилерге» уруксат беришиңиз керек.",
"userlogin": "Кирүү / Катталуу",
"userloginnocreate": "Кирүү",
"logout": "Чыгуу",
"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-suggest": "Балким, издегениңиз бул: $1",
"ignorewarnings": "Болгон эскертүүлөрдү этибар албоо",
"filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|уруксат болбогон файл тиби|уруксат болбогон файл типтери}}.\nУруксат болгон {{PLURAL:$3|файл тиби|файл типтери}} $2.",
"savefile": "Файлды сактоо",
- "uploadedimage": "\"[[$1]]\" жүктөлдү",
"upload-source": "Баштапкы файл",
"sourcefilename": "Булактын файл аты:",
"sourceurl": "Булактын URL-дареги:",
"searcharticle": "Ire",
"history": "Historia paginae",
"history_short": "Historia",
+ "updatedmarker": "mutata postquam vidi",
"printableversion": "Forma impressibilis",
"permalink": "Nexus perpetuus",
"print": "Imprimere",
"gotaccount": "Habesne iam rationem? '''$1'''.",
"gotaccountlink": "Conventum aperi",
"userlogin-resetlink": "Num tesserae tuae oblitus es?",
+ "userlogin-resetpassword-link": "Num tesserae oblivisceris?",
"createacct-emailrequired": "Inscriptio electronica",
"createacct-emailoptional": "Inscriptio electronica (non necesse)",
"createacct-email-ph": "Inscriptionem electronicam tuam inscribe",
"searchprofile-everything-tooltip": "Omnia perscrutari (etiam paginae disputationis)",
"searchprofile-advanced-tooltip": "In spatiis nominalibus accommotis quaerere",
"search-result-size": "$1 ({{PLURAL:$2|1 verbum|$2 verba}})",
- "search-result-score": "Gravitas: $1%",
"search-redirect": "(redirectio $1)",
"search-section": "(pars $1)",
"search-suggest": "Nonne dicere voluisti: $1",
"large-file": "Suasum est ut fasciculi $1 magnitudine non excedant; magnitudo huius fasciculi est $2.",
"uploadwarning": "Monitus imponendi",
"savefile": "Servare fasciculum",
- "uploadedimage": "imposuit \"[[$1]]\"",
"uploaddisabled": "Fasciculos imponere prohibitum est",
"uploaddisabledtext": "Fasciculos imponere prohibitum est.",
"uploadvirus": "Fasciculi huic est virus! Singula: $1",
"tooltip-pt-userpage": "Pagina usoris tua",
"tooltip-pt-mytalk": "Pagina disputationis tua",
"tooltip-pt-preferences": "Praeferentiae tuae",
- "tooltip-pt-watchlist": "Paginae quae custodis ut eorum mutationes facilius vides",
+ "tooltip-pt-watchlist": "Paginae quas custodis ut earum mutationes facilius videas",
"tooltip-pt-mycontris": "Index conlationum tuarum",
"tooltip-pt-login": "Te conventum aperire hortamur, non autem requisitum",
"tooltip-pt-logout": "Conventum concludere",
"talkpagelinktext": "Messaje",
"specialpage": "Hoja Especial",
"personaltools": "Aparates personales",
- "postcomment": "Capítůlo muevo",
"articlepage": "Ver el artícůlo de contenido",
"talk": "Diskusyón",
"views": "Vistas",
"password-change-forbidden": "No se puede kambiar contrasenyas en este viki.",
"login": "Entrar",
"nav-login-createaccount": "Entrar / criar un cuento",
- "loginprompt": "Kale tener \"cookies\" aktivadas enel navegador para enrejistrarse en {{SITENAME}}",
"userlogin": "Entrar / Criar cuento",
"logout": "Salir",
"userlogout": "Salir",
"filesource": "Fuente:",
"filename-tooshort": "El nombre del archivo es muy kurto.",
"savefile": "Guardar archivo",
- "uploadedimage": "suvió «[[$1]]»",
"backend-fail-notexists": "El archivo $1 no egziste.",
"backend-fail-alreadyexists": "El archivo \"$1\" ya egziste.",
"img-auth-nofile": "El archivo \"$1\" no egziste.",
"hidetoc": "verstoppen",
"collapsible-collapse": "Zesummeklappen",
"collapsible-expand": "Opklappen",
+ "confirmable-confirm": "Sidd {{GENDER:$1|Dir}} sécher?",
+ "confirmable-yes": "Jo",
+ "confirmable-no": "Neen",
"thisisdeleted": "$1 kucken oder zrécksetzen?",
"viewdeleted": "Weis $1?",
"restorelink": "$1 geläscht {{PLURAL:$1|Versioun|Versiounen}}",
"invalidtitle-knownnamespace": "Net valabelen Titel mam Nummraum \"$2\" a mam Text \"$3\"",
"invalidtitle-unknownnamespace": "Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text \"$2\"",
"exception-nologin": "Net ageloggt",
- "exception-nologin-text": "[[Special:Userlogin|Loggt Iech w.e.g. a]] fir op dës Säit oder dës Aktioun zougräifen ze kënnen.",
+ "exception-nologin-text": "Loggt Iech w.e.g. a fir op dës Säit oder dës Aktioun zougräifen ze kënnen.",
"exception-nologin-text-manual": "Dir musst Iech $1 fir dës Säit kucken ze kënne respektiv fir dës Aktioun ze maachen.",
"virus-badscanner": "Schlecht Konfiguratioun: onbekannte Virescanner: ''$1''",
"virus-scanfailed": "De Scan huet net funktionéiert (Code $1)",
"parser-template-loop-warning": "Endlos Schleef an der Schabloun: [[$1]] entdeckt",
"parser-template-recursion-depth-warning": "D'Limit vun der Zuel vun de Verschachtelunge vu Schabloune gouf iwwerschratt ($1)",
"language-converter-depth-warning": "D'Limite vun der déift vun der Sproochëmwandlung gouf iwwerschratt ($1)",
- "node-count-exceeded-category-desc": "Eng Kategorie fir Säiten an deenen d'Zuel vun de Kniet (Node-count) ze grouss ass.",
+ "node-count-exceeded-category-desc": "D'Säit huet méi wéi déi maximal Zuel vu Kniet (Node-count).",
"parser-unstrip-loop-warning": "Endlos Schleef entdeckt",
"converter-manual-rule-error": "An der Regel iwwer déi manuell Ëmwandlung vun der Sprooch gouf e Feeler fonnt",
"undo-success": "D'Ännerung gëtt réckgängeg gemaach. Iwwerpréift w.e.g. de Verglach ënnendrënner fir nozekuckeen ob et sou richteg ass, duerno späichert w.e.g d'Ännerungen of, fir dës Aktioun ofzeschléissen.",
"mergehistory-go": "Weis déi Versiounen, déi zesummegeluecht kënne ginn",
"mergehistory-submit": "Versioune verschmelzen",
"mergehistory-empty": "Et kënne keng Versioune zesummegeluecht ginn.",
- "mergehistory-success": "{{PLURAL:$3|1 Versioun gouf|$3 Versioune goufe}} vun [[:$1]] op [[:$2]] zesummegeluecht.",
+ "mergehistory-success": "{{PLURAL:$3|1 Versioun gouf|$3 Versioune goufe}} vu(n) [[:$1]] op [[:$2]] zesummegeluecht.",
"mergehistory-fail": "Versiounszesummeleeung war net méiglech, kuckt w.e.g. d'Säiten an d'Zäit-Parameter no.",
"mergehistory-no-source": "Originalsäit \"$1\" gëtt et net.",
"mergehistory-no-destination": "Zilsäit \"$1\" gëtt et net.",
"searchprofile-advanced-tooltip": "Sich an den Nummraim déi an de perséinlichen Astellungen festgeluecht sinn",
"search-result-size": "$1 ({{PLURAL:$2|1 Wuert|$2 Wierder}})",
"search-result-category-size": "{{PLURAL:$1|1 Säit|$1 Säiten}} ({{PLURAL:$2|1 Ënnerkategorie|$2 Ënnerkategorien}}, {{PLURAL:$3|1 Fichier|$3 Fichieren}})",
- "search-result-score": "Relevanz: $1 %",
"search-redirect": "(Viruleedung $1)",
"search-section": "(Abschnitt $1)",
"search-file-match": "(Inhalt vum Fichier passt)",
"preferences": "Astellungen",
"mypreferences": "Astellungen",
"prefs-edits": "Zuel vun den Ännerungen:",
- "prefsnologintext2": "Dir musst Iech $1 fir Är Benotzerastellunge festzeleeën",
+ "prefsnologintext2": "Loggt Iech a fir Är Benotzerastellungen z'änneren.",
"prefs-skin": "Skin",
"skin-preview": "Kucken",
"datedefault": "Egal (Standard)",
"uploadwarning": "Opgepasst",
"uploadwarning-text": "Ännert d'Beschreiwung hei ënnedrënner w.e.g. a versicht et nach eng Kéier.",
"savefile": "Fichier späicheren",
- "uploadedimage": "huet \"[[$1]]\" eropgelueden",
- "overwroteimage": "huet eng nei Versioun vun \"[[$1]]\" eropgelueden",
"uploaddisabled": "Pardon, d'Eropluede vu Fichieren ass ausgeschalt.",
"copyuploaddisabled": "D'Eroplueden iwwer URL ass desaktivéiert.",
"uploaddisabledtext": "D'Eropluede vu Fichieren ass ausgeschalt.",
"trackingcategories-msg": "Tracking-Kategorie",
"trackingcategories-name": "Numm vum Message",
"noindex-category-desc": "D'Säit gëtt net vu Botten indexéiert, well dat magescht Wuert <code><nowiki>__NOINDEX__</nowiki></code> dran ass a well se an engem Nummraum ass, an deem déi Markéierung erlaabt ass.",
- "broken-file-category-desc": "Kategorie, déi derbäigesat gëtt, wann et op der Säit e futtise Link op e Fichier gëtt (e Link op en agebonnene Fichier wann et de Fichier net gëtt).",
- "hidden-category-category-desc": "Dëst ass eng Kategorie an där <code><nowiki>__HIDDENCAT__</nowiki></code> drasteet, dat verhënnert datt se standardméisseg an der këscht mat de Kategorielinken op der Säit gewise gëtt.",
+ "post-expand-template-inclusion-category-desc": "D'Säit ass méi grouss wéi <code>$wgMaxArticleSize</code> nom expandéiere vun alle Schablounen, dofir goufen e puer Schablounen net expandéiert.",
+ "broken-file-category-desc": "D'Säit huet e futtise Link op e Fichier (e Link op en agebonnene Fichier wann et de Fichier net gëtt).",
+ "hidden-category-category-desc": "D'Kategorie huet <code><nowiki>__HIDDENCAT__</nowiki></code> an hirer Säit drastoen, dat verhënnert datt se standardméisseg an der Këscht mat de Kategorielinken op der Säit gewise gëtt.",
"trackingcategories-nodesc": "Keng Beschreiwung disponibel.",
"trackingcategories-disabled": "Kategorie ass desaktivéiert",
"mailnologin": "Keng E-Mailadress",
"mywatchlist": "Iwwerwaachungslëscht",
"watchlistfor2": "Vum $1 $2",
"nowatchlist": "Är Iwwerwaachungslëscht ass eidel.",
- "watchlistanontext": "Dir musst $1 fir Säiten op ärer Iwwerwaachungslëscht ze gesinn oder z'änneren.",
+ "watchlistanontext": "Loggt Iech a fir Elementer op Ärer Iwwerwaachungslëscht ze gesinn oder z'änneren.",
"watchnologin": "Net ageloggt",
"addwatch": "Op d'Iwwerwaachungslëscht derbäisetzen",
"addedwatchtext": "D'Säit \"[[:$1]]\" gouf op är [[Special:Watchlist|Iwwerwaachungslëscht]] gesat.\nAll weider Ännerungen op dëser Säit an der associéierter Diskussiounssäit ginn hei opgelëscht.",
"delete-edit-reasonlist": "Läschgrënn änneren",
"delete-toobig": "Dës Säit huet e laangen Historique, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.\nD'Läsche vu sou Säite gouf limitéiert fir ongewollte Stéierungen op {{SITENAME}} ze verhënneren.",
"delete-warning-toobig": "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.\nD'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;\ndës Aktioun soll mat Virsiicht gemaach ginn.",
+ "delete-cantedit": "Dir däerft dës Säit net läsche well Dir net d'Recht hutt fir se z'änneren.",
"deleting-backlinks-warning": "'''Opgepasst:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|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": "Ännerungen zrécksetzen",
"rollback_short": "Zrécksetzen",
"autoblockid": "Automatesch Spär #$1",
"block": "Benotzer spären",
"unblock": "D'Spär vum Benotzer ophiewen",
- "blockip": "Benotzer spären",
+ "blockip": "{{GENDER:$1|Benotzer}} spären",
"blockip-legend": "Benotzer spären",
"blockiptext": "Benotzt dëse Formulaire fir eng spezifesch IP-Adress oder e Benotzernumm ze spären. Dëst soll nëmmen am Fall vu Vandalismus gemaach ginn, en accordance mat den [[{{MediaWiki:Policy-url}}|interne Richlinen]]. Gitt e spezifesche Grond un (zum Beispill Säite wou Vandalismus virgefall ass).",
"ipaddressorusername": "IP-Adress oder Benotzernumm:",
"ipb-unblock-addr": "Spär vum $1 ophiewen",
"ipb-unblock": "Spär vun enger IP-Adress oder engem Benotzer ophiewen",
"ipb-blocklist": "Kuckt aktuell Spären",
- "ipb-blocklist-contribs": "Kontributioune fir $1",
+ "ipb-blocklist-contribs": "Kontributioune vum {{GENDER:$1|$1}}",
"unblockip": "Spär vum Benotzer ophiewen",
"unblockiptext": "Benotzt dëse Formulaire fir enger IP-Adress oder engem Benotzer seng Spär opzehiewen.",
"ipusubmit": "Des Spär ophiewen",
"unlockdbsuccesssub": "D'Spär vun der Datebank gouf opgehuewen",
"lockdbsuccesstext": "D'{{SITENAME}}-Datebank gouf gespaart. <br />\nDenkt drun [[Special:UnlockDB|d'Spär erëm ewechzehuele]] soubaal d'Maintenance-Aarbechte fäerdeg sinn.",
"unlockdbsuccesstext": "D'Spär vun der Datebank ass opgehuewen.",
- "lockfilenotwritable": "De Fichier mat de Späre vun der Datebank kann net geännert ginn.\nFir d'Datebank ze spären oder fir d'Spär opzehiewen muss dëse Fichier vum Webserver geännert kënne ginn.",
+ "lockfilenotwritable": "De Fichier mat de Späre vun der Datebank kann net geännert ginn.\nFir d'Datebank ze spären oder fir d'Spär opzehiewe muss dëse Fichier vum Webserver geännert kënne ginn.",
"databasenotlocked": "D'Datebank ass net gespaart.",
"lockedbyandtime": "(vum $1 de(n) $2 ëm $3 Auer)",
"move-page": "Réckel $1",
"thumbnail_image-missing": "De Fichier schengt ze feelen: $1",
"import": "Säiten importéieren",
"importinterwiki": "Transwiki-Import",
- "import-interwiki-text": "Sicht eng Wiki an e Säitentitel eraus fir z'importéieren.\nD'Versiounsdatumen an d'Benotzernimm bleiwen derbäi erhalen.\nAll Transwiki-Import-Aktioune ginn am [[Special:Log/import|Import-Logbuch]] protokolléiert.",
+ "import-interwiki-text": "Sicht eng Wiki an e Säitentitel eraus fir z'importéieren.\nD'Versiounsdatumen an d'Benotzernimm bleiwen dobäi erhalen.\nAll Transwiki-Import-Aktioune ginn am [[Special:Log/import|Import-Logbuch]] protokolléiert.",
"import-interwiki-source": "Quelle Wiki/Säit:",
"import-interwiki-history": "Importéier all d'Versioune vun dëser Säit",
"import-interwiki-templates": "Mat alle Schablounen",
"confirmemail_pending": "Dir krut schonn e Confirmatiouns-Code per E-Mail geschéckt. Wenn Dir Äre Benotzerkont eréischt elo kuerz opgemaach hutt, da gedëllegt Iech nach e puer Minutten bis Är E-Mail ukomm ass, ier Dir een neie Code ufrot.",
"confirmemail_send": "Confirmatiouns-E-Mail schécken",
"confirmemail_sent": "Confirmatiouns-E-Mail gouf geschéckt.",
- "confirmemail_oncreate": "E Confirmatiouns-Code gouf op Är E-Mail-Adress geschéckt.\nDëse Code gëtt fir d'Umeldung net gebraucht. Dir braucht en awer bei der Aktivéierung vun den E-Mail-Funktiounen bannert der Wiki.",
+ "confirmemail_oncreate": "E Confirmatiouns-Code gouf op Är E-Mail-Adress geschéckt.\nDëse Code gëtt fir d'Umeldung net gebraucht. Dir braucht en awer bei der Aktivéierung vun den E-Mail-Funktioune bannert der Wiki.",
"confirmemail_sendfailed": "{{SITENAME}} konnt är Confirmatiouns-E-Mail net schécken.\nIwwerpréift w.e.g. är E-Mailadress op ongëlteg Zeechen.\n\nFeelermeldung vum Mailserver: $1",
"confirmemail_invalid": "Ongëltege Confirmatiounscode. Eventuell ass d'Gëltegkeetsdauer vum Code ofgelaf.",
"confirmemail_needlogin": "Dir musst Iech $1, fir Är E-Mail-Adress ze confirméieren.",
"confirmemail_loggedin": "Är E-Mail-Adress gouf elo confirméiert.",
"confirmemail_subject": "Confirmatioun vun der E-Mail-Adress fir {{SITENAME}}",
"confirmemail_body": "E Benotzer, waarscheinlech dir selwer, hutt mat der IP Adress $1 de Benotzerkont \"$2\" um Site {{SITENAME}} opgemaach.\n\nFir ze bestätegen, datt dee Kont iech wierklech gehéiert a fir d'E-Mail-Funktiounen um Site {{SITENAME}} z'aktivéieren, maacht w.e.g. dëse Link an ärem Browser op:\n$3\n\nWann dir dëse Benotzerkont *net* opgemaach hutt, maacht w.e.g. dëse Link an ärem Browser op fir d'E-Mailconfirmation z'annulléieren:\n\n$5\n\nSollt et sech net ëm äre Benotzerkont handelen, da maacht de Link *net* op. De Confirmatiounscode ass gëlteg bis de(n) $4.",
- "confirmemail_body_changed": "E Benotzer, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
+ "confirmemail_body_changed": "E Benotzer, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dëse Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
"confirmemail_body_set": "Iergendeen, wahrscheinlech Dir selwer, vun der IP-Adress $1,\nhuet d'E-Mail-Adress vum Benotzerkont \"$2\" op dës Adress op {{SITENAME}} geännert.\n\nFir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:\n\n$3\n\nWann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d'Confirmatioun vun der E-Mail-Adress auszeschalten:\n\n$5\n\nDëse Confirmatiounscode leeft den $4 of.",
"confirmemail_invalidated": "Confirmatioun vun der E-Mail-Adress annulléiert",
"invalidateemail": "Annulléier d'E-Mailconfirmation",
"logentry-rights-rights": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert vu(n) $4 op $5 geännert",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|huet}} d'Gruppen zou deenen de Benotzer $3 gehéiert geännert",
"logentry-rights-autopromote": "De Benotzer $1 {{GENDER:$2|krut}} d'Benotzerrechter automatesch vu(n) $4 op $5 geännert",
+ "logentry-upload-upload": "$1 huet $3 {{GENDER:$2|eropgelueden}}",
+ "logentry-upload-overwrite": "$1 huet eng nei Versioun vu(n) $3 {{GENDER:$2|eropgelueden}}",
+ "logentry-upload-revert": "$1 huet $3 {{GENDER:$2|eropgelueden}}",
"rightsnone": "(keen)",
"feedback-bugornote": "Wann Dir bereet sidd fir en technesche Problem am Detail ze beschreiwen da [$1 mellt w.e.g. e Feeler (Bug)].\nSoss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gëtt op d'Säit \"[$3 $2]\" derbäigesat, zesumme mat Ärem Benotzernumm an dem Numm vum Browser deen Dir benotzt.",
"feedback-subject": "Sujet:",
"right-pagelang": "Sprooch vun der Säit änneren",
"action-pagelang": "d'Sprooch vun der Säit änneren",
"log-name-pagelang": "Log vum Ännere vun der Sprooch",
- "log-description-pagelang": "Dëst ass a Log mat den Ännerunge vun de Sprooche vun de Säiten."
+ "log-description-pagelang": "Dëst ass a Log mat den Ännerunge vun de Sprooche vun de Säiten.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktivéiert)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desaktivéiert''')"
}
"talkpagelinktext": "Рахун",
"specialpage": "Куьмекчи ччин",
"personaltools": "Кьилди вичин алатар",
- "postcomment": "ЦӀйий пай",
"articlepage": "Къене авайбурун ччиндиз килигун",
"talk": "Веревирд авун",
"views": "Килигунар",
"yourdomainname": "Куь домен",
"login": "Гьахьун",
"nav-login-createaccount": "Гьахьун/аккаунт туькӀуьрун",
- "loginprompt": "Системадиз гьахьун патал \"куки\" -яр куькӀуьрна кӀанзава",
"userlogin": "Гьахьун/аккаунт туькӀуьрун",
"userloginnocreate": "Гьахьун",
"logout": "ЭкъечӀун",
"filereuploadsummary": "Файлдин къене дегишвилер:",
"filestatus": "Автордин ихтиярдин статус:",
"filesource": "Чешме:",
- "uploadedimage": "\"[[$1]]\" ппарна",
"upload-source": "Чешмедин файл",
"sourcefilename": "Чешмедин тир файлдин тIвар:",
"sourceurl": "Чешмедин URL-адрес:",
"watchlisttools-raw": "Текст хьиз дуьзар хъувун",
"duplicate-defaultsort": "'''Дикъет:''' Авайд хьиз кьунвай жуьрейриз ччара авунин \"$2\" куьлег виликан \"$1\" жуьрейриз ччара авунин куьлег гьич йийзва.",
"version": "Жуьре",
- "version-antispam": "Спамдин вилик пад атIун",
"version-skins": "КЪайдадиз ттунин темаяр",
+ "version-antispam": "Спамдин вилик пад атIун",
"version-other": "Муькуьбур",
"specialpages": "КьетӀен ччинар",
"external_image_whitelist": " #И цӀар авайд хьиз тур<pre>\n#Агъада вахт акадар тийиз жезвай (гьамиша къайдадалди) лугьунрин кьатӀар эцига (// арада авай кӀус).\n#Ибур кьецепатан суьретрин URL галаз гекъигда.\n#Дуьзкъвезвайбур суьретар хьиз къалурда, муькуьбур суьретриз тухузвай элячӀунар хьиз къалурда.\n#«#» галаз эгечӀзавай цӀарариз къейдериз хьиз килигда.\n#ЦӀарар регистрдиз фад кьатӀудайбур я.\n\n#ЦӀарцин винел вири вахт акадар тийиз жезвай лугьунрин кьатӀар эцига. И цӀар авайд хьиз тур</pre>",
"talkpagelinktext": "Parla",
"specialpage": "Paje spesial",
"personaltools": "Utiles personal",
- "postcomment": "Sesion nova",
"articlepage": "Vide la paje de contenis",
"talk": "Discutes",
"views": "Vides",
"yourdomainname": "Tu domina:",
"login": "Identifia",
"nav-login-createaccount": "Sinia per entra",
- "loginprompt": "Tu debe engrana \"tortetas\" per entra {{SITENAME}}.",
"userlogin": "Sinia per entra",
"logout": "Retira",
"userlogout": "Sinia per retira",
"uploadbtn": "Envia la fix",
"uploadlogpage": "Envia arcivo",
"savefile": "Fisa fix",
- "uploadedimage": "\"[[$1]]\" es enviada",
"upload-file-error": "Era interna",
"imgfile": "fix",
"listfiles": "Lista de imajes",
"talkpagelinktext": "Yogera nange",
"specialpage": "Olupapula olwawule",
"personaltools": "Ebikola ku akawunti n'enfo yo",
- "postcomment": "Kitundu kipya",
"articlepage": "Kebera olupapula",
"talk": "Emboozi",
"views": "Kyusa endabika ya by'olaba wano",
"externaldberror": "Waliwo kiremya mu ggwanika lya data ekozesebwa okukakasa bamemba oba tokkirizibwa okukyusa ku akawunti yo ey'awalala.",
"login": "Yingira",
"nav-login-createaccount": "Yingira / kolawo akawunti",
- "loginprompt": "Okuyingira {{SITENAME}}, kalambula-neti yo erina okukkirizako kuki.",
"userlogin": "Yingira / kolawo akawunti",
"userloginnocreate": "Yingira",
"logout": "Vaamu",
"recentchangeslinked-to": "Nonamu eby'empapula ezikuggusa ku luno zokka",
"upload": "Teekayo fayiro",
"uploadlogpage": "Likooda eya fayiro eziteekedwa ku wiki",
- "uploadedimage": "yateekayo \"[[$1]]\"",
"listfiles_user": "Memba",
"file-anchor-link": "Fayiro",
"filehist": "Ebyafaayo ebya fayiro eno",
"talkpagelinktext": "Euverlègk",
"specialpage": "Speciaal pagina",
"personaltools": "Persuunlike hulpmiddele",
- "postcomment": "Nuuj sectie",
"articlepage": "Artikel",
"talk": "Euverlègk",
"views": "Weergave",
"externaldberror": "d'r Is 'n fout opgetraoje biej 't aanmelje biej de database of doe höbs gén toesjtömming diene externe gebroeker biej te wèrke.",
"login": "Aanmèlde",
"nav-login-createaccount": "Aanmelje / registrere",
- "loginprompt": "Diene browser mót ''cookies'' acceptere óm in te logge op {{SITENAME}}.",
"userlogin": "Aanmelde / registrere",
"userloginnocreate": "Mèlj aan",
"logout": "Aafmelde",
"searchprofile-advanced-tooltip": "Zeuke in aongegeve naamruumdes",
"search-result-size": "$1 ({{PLURAL:$2|1 waord|$2 wäörd}})",
"search-result-category-size": "{{PLURAL:$1|1 categorielid|$1 categorielede}} ({{PLURAL:$2|1 ongercategorie|$2 ongercategorieë}}, {{PLURAL:$3|1 bestandj|$3 bestenj}})",
- "search-result-score": "Relevantie: $1%",
"search-redirect": "(doorverwiezing $1)",
"search-section": "(subkop $1)",
"search-suggest": "Meins te sóms: $1",
"uploadwarning": "Upload waarsjuwing",
"uploadwarning-text": "Pas de ongerstaonde bestandjsbesjrieving aan en perbeer t daonao opnuuj.",
"savefile": "Bestand opsjlaon",
- "uploadedimage": "haet ge-upload: [[$1]]",
- "overwroteimage": "haet 'ne nuuje versie van \"[[$1]]\" toegevoeg",
"uploaddisabled": "Uploade is oetgesjakeld",
"copyuploaddisabled": "t Uploade van bestenj via nen URL is oetgezat.",
"uploaddisabledtext": "'t uploade van bestenj is oetgesjakeld.",
"watchlist-details": "D'r {{PLURAL:$1|sjteit ein pagina|sjtaon $1 pagina's}} op dien volglies mit oetzunjering van de euverlèkpagina's.",
"wlheader-enotif": "Doe wörs per e-mail gewaarsjuwd",
"wlheader-showupdated": "Pazjena's die verangerd zeen saers doe ze veur 't lètste bekeeks sjtaon '''vet'''",
+ "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",
"watching": "Bezig mit plaatse op de volglies...",
"duplicate-defaultsort": "Waarsjuwing: De standaardsortering \"$2\" krieg veurrang veur de sortering \"$1\".",
"version": "Versie",
"version-extensions": "Geïnstalleerde oetbreijinge",
+ "version-skins": "Vörmgevinge",
"version-specialpages": "Speciaal pazjena's",
"version-parserhooks": "Parserheuk",
"version-variables": "Variabele",
"version-antispam": "Spampreventie",
- "version-skins": "Vörmgevinge",
"version-other": "Euverige",
"version-mediahandlers": "Mediaverwerkers",
"version-hooks": "Heuk",
"talkpagelinktext": "Ciæti",
"specialpage": "Pagina speçiâ",
"personaltools": "Strùmenti personâli",
- "postcomment": "Noeuva seçion",
"articlepage": "Veddi a voxe",
"talk": "Ciæti",
"views": "Vìxite",
"password-change-forbidden": "No ti peu cangiâ poula segretta in questa wiki.",
"login": "Intra",
"nav-login-createaccount": "Intra / Registrate",
- "loginprompt": "Pe fâ l'accesso inte {{SITENAME}} ti g'hæ da abilitâ i cookie.",
"userlogin": "Intra / Registrite",
"userloginnocreate": "Intra",
"logout": "Sciorti",
"fileexists": "Un papê co sto nomme o existe de zà, pe piaxei da unn'euggiâ a <strong>[[:$1]]</strong> se non ti tei seguo de voleilo cangiâ.\n[[$1|thumb]]",
"fileexists-forbidden": "Un papê co sto nomme o existe de zà, pe piaxei vanni in derrê e carega sto papê co un ätro nomme. [[File:$1|thumb|center|$1]]",
"savefile": "Sarva o papê",
- "uploadedimage": "O l'ha caregòu \"[[$1]]\"",
"uploaddisabledtext": "In {{SITENAME}} non se peu caregâ de papê.",
"uploadvirus": "O papê gha un virus!! Dettaggi: $1",
"sourcefilename": "Nomme do papê d'origine:",
"Andrijko Z.",
"Erdemaslancan",
"Ohpuu",
- "Warbola"
+ "Warbola",
+ "아라"
]
},
"sunday": "pivāpǟva",
"navigation": "Navigīerimi",
"qbfind": "Vȯtšõgid",
"faq": "SKK",
- "vector-action-addsection": "Pangid jūrõ tēma",
- "vector-action-delete": "Kištāntõgid jarā",
- "vector-action-move": "Vīž jarā",
- "vector-action-protect": "Kaitsõmi",
- "vector-view-create": "Lūo",
- "vector-view-edit": "Redigīer",
- "vector-view-history": "Nägţ istōrijõ",
- "vector-view-view": "Vaņ",
- "vector-view-viewsource": "Vaņ ovāt tekstõ",
"actions": "Tīemizt",
"namespaces": "Nim-rūimõd",
"variants": "Varianţõd",
"remembermypassword": " Mǟdlõgid sallisõnā (kuņtš $1 {{PLURAL:$1|päuvõ|päuvõ}})",
"login": "Log sīezõ",
"nav-login-createaccount": "Log sīezõ agā registrīer kȭlbatijizõks",
- "loginprompt": "Sīezõ loggimizõks täddõn um āndamizt lubā \"kūkid\" (''cookies'') pierāst",
"userlogin": "Sīezõ loggimi agā kȭlbatijiz-konto lūomi",
"logout": "Log ulzõ",
"userlogout": "Log ulzõ",
"searchmenu-exists": "'''Lēḑ pēļizkēraks \"[[:$1]]\" um vȯlmizõs.'''",
"searchmenu-new": "'''Lūo lēḑ pēļizkēraks \"[[:$1]]\".'''",
"searchprofile-articles": "Sižāliz lēḑõd",
- "searchprofile-project": "Ab ja projekt lēḑõd",
"searchprofile-images": "Multimēdij",
"searchprofile-everything": "Tikkiž",
"searchprofile-advanced": "Jo akurāt vȯtšimi",
"searchprofile-articles-tooltip": "Vȯtšõgid nim-rūimstõ $1",
- "searchprofile-project-tooltip": "Vȯtšõgid nim-rūimstõ $1",
"searchprofile-images-tooltip": "Fail vȯtšimi",
"searchprofile-everything-tooltip": "Vȯtšõgid amā sižāliz sizāld (ka nõvpidāmiz-lēḑõd pǟld)",
"searchprofile-advanced-tooltip": "Vȯtšõgid andtõd nim-rūimšti",
"search-nonefound": "Vȯtšimizõn vȯtšimi äb lieudtõd vastūkst.",
"powersearch-legend": " Juo akurāt vȯtšimi",
"powersearch-ns": "Vȯtšimi nim-rūimšti:",
- "powersearch-redir": "Jeddõpēḑõn sōtimizt nimkēra",
"preferences": "Mīeldõbõd ulzõ-vēļimizt",
"mypreferences": "Min mīeldõbõd ulzõ-vēļimizt",
"youremail": "E-kēra adres:",
"recentchanges-label-bot": "Sīe mõitõks tei ikš robot",
"recentchanges-label-unpatrolled": "Se mõitõks tēji vȯļ ikš robot",
"rcnotefrom": "Allõ-pūol um tūodõd mõitõkst '''$2''' sōņõst: (nägţõbõd amā jemīņ '''$1''' mõitõkst)",
- "rclistfrom": "Nägţ mõitõkši sōņõst: $1",
+ "rclistfrom": "Nägţ mõitõkši sōņõst: $3 $2",
"rcshowhideminor": "$1 piškizt parāmtimizt",
"rcshowhidebots": "$1 robōtõd",
"rcshowhideliu": "$1 sīezõ loggõnd kȭlbatijizt",
"upload": "Fail ilzõ-lōţimi",
"uploadlogpage": "Ilzõ-lōţimiz log",
"filedesc": "Kubbõ võtāmi:",
- "uploadedimage": "lōţiz ilzõ fail \"[[$1]]\"",
"license": "Litsents:",
"license-header": "Litsents:",
"file-anchor-link": "Bīlda",
"booksources-go": "Li",
"log": "Logūd",
"allpages": "Amād lēḑõd",
- "alphaindexline": "$1 sōņist $2 sōņõ",
"prevpage": "Jedmõli lēḑ ($1)",
"allpagesfrom": " Nägţ līedidi pēļizkērast sōņõst:",
"allpagesto": " Nägţ līedidi sīe pēļikēra sōņõ:",
"talkpagelinktext": "Ciciarada",
"specialpage": "Pagina speciala",
"personaltools": "Istrüment persunaj",
- "postcomment": "Sezión növa",
"articlepage": "Varda l'articul",
"talk": "Discüssión",
"views": "Vìste",
"externaldberror": "Gh'è 'n erùr söl server de autenticasiù estèrno o sedenò se g'ha mìa le autorizasiù nesesàre per agiurnà i dati de registrasiù estèrni.",
"login": "Va dent",
"nav-login-createaccount": "Vena denter / Crea un cünt",
- "loginprompt": "Par cunett a {{SITENAME}}, a duvii abilitá i galet.",
"userlogin": "Vegní denter - Creè un cünt",
"userloginnocreate": "Vegn denter",
"logout": "Va fö",
"searchprofile-everything-tooltip": "Cerca depertüt (anca int i paginn de discüssion)",
"searchprofile-advanced-tooltip": "Cerca int i namespace persunalizaa",
"search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 paroll}})",
- "search-result-score": "Atinènsa: $1%",
"search-redirect": "(redirezión $1)",
"search-section": "(sessión $1)",
"search-file-match": "(corespondènsa endèl test de l'archivi)",
"ignorewarnings": "Ignora tücc i avertimeent",
"largefileserver": "Chel archivi-chí al è püssee graant che ul serviduur al sía cunfigüraa da permett.",
"savefile": "Salva l'archivi",
- "uploadedimage": "l'ha cargaa \"[[$1]]\"",
"sourcefilename": "Nomm da l'archivi surgeent:",
"destfilename": "Nomm da l'archivi da destinazziun:",
"imgfile": "archivi",
"authors": [
"Bombo (on ln.wikipedia.org)",
"Eruedin",
- "Moyogo"
+ "Moyogo",
+ "TMg"
]
},
"tog-underline": "Kotíya sulimá na bikangisi:",
"tog-showtoolbar": "Komɔ́nisa ndámbo-ndámbo (esengélí JavaScript)",
- "tog-rememberpassword": "Komíkundola bokitoli na molúki (ekosúkisa na {{PLURAL:$1|mokɔlɔ|mikɔlɔ}} $1)",
"underline-always": "Mikɔlɔ yɔ́nsɔ",
"underline-never": "Libélá tɛ́",
"sunday": "Lomíngo",
"feb": "s2",
"mar": "s3",
"apr": "s4",
- "may": "s4",
- "jun": "s5",
+ "may": "s5",
+ "jun": "s6",
"jul": "s7",
"aug": "s8",
"sep": "s9",
"qbpageoptions": "Lonkásá óyo",
"qbmyoptions": "Lonkásá na ngáí",
"faq": "Mitúná Mizóngelaka (MM)",
- "vector-action-addsection": "Kobakisa mpɔ̂",
- "vector-action-delete": "Kolímwisa",
- "vector-action-move": "Kobóngola nkómbó",
- "vector-action-protect": "Kobátela",
- "vector-action-undelete": "Kolímwisa tɛ̂",
- "vector-action-unprotect": " Kobátela tɛ̂",
- "vector-view-create": "Kokela",
- "vector-view-edit": "Kobɔngisa",
- "vector-view-history": "Komɔ́nisa mokóló",
- "vector-view-view": "Kotánga",
- "vector-view-viewsource": "Komɔ́nisa mosólo",
"namespaces": "Ntáká ya nkómbó",
"errorpagetitle": "Mbéba",
"returnto": "Kozóngisa na $1.",
"talkpagelinktext": "Ntembe",
"specialpage": "Lonkásá gudi",
"personaltools": "Bisáleli ya moto-mɛ́i",
- "postcomment": "Sɛksió sika",
"articlepage": "Komɔ́nisa káti",
"talk": "Ntembe",
"views": "Bomɔ́nisi",
"searchprofile-images": "Mitímediá",
"searchprofile-everything": "Yɔ́nsɔ",
"searchprofile-articles-tooltip": "Koluka na $1",
- "searchprofile-project-tooltip": "Koluka na $1",
"search-result-size": "$1 ({{PLURAL:$2|lokomá 1|nkomá $2}})",
- "search-result-score": "Ntína : $1%",
"search-redirect": "(boyendisi útá $1)",
"search-section": "(sɛksió ya $1)",
"search-suggest": "Ómeka na lokomá : $1",
"searchall": "nyɔ́nsɔ",
"powersearch-legend": "Boluki bopúsání",
"powersearch-ns": "Koluka o ntáká ya nkómbó :",
- "powersearch-redir": "Kotíya molɔngɔ́ mwa mayendisi",
"powersearch-toggleall": "Nyɔ́nsɔ",
"powersearch-togglenone": "Mɔ́kɔ́ tɛ́",
"preferences": "Malúli",
"uploadlogpage": "Zuluná ya botómbisi likoló",
"filedesc": "Likwé ya mokusé:",
"savefile": "kobómbisa kásá-kásá",
- "uploadedimage": "«[[$1]]» etómbísámí likoló",
"listfiles_date": "Mokɔlɔ",
"file-anchor-link": "Elilingi",
"filehist": "Mokóló mwa kásá",
"booksources-go": "Kɛndɛ́",
"log": "Bapasɔ́",
"allpages": "Nkásá ínsɔ",
- "alphaindexline": "$1 kina $2",
"nextpage": "Lonkásá ya nsima ($1)",
"prevpage": "Lonkasá o libosó ($1)",
"allarticles": "Nkásá ínsɔ",
"watchthispage": "Kolanda lonkásá óyo",
"unwatch": "Kolanda tɛ́",
"watchlist-details": "{{PLURAL:$1|Lonkásá $1 elandámí|Nkásá $1 bilandámí}}, longola nkásá ya ntembe.",
+ "wlnote": "Áwa o nsé {{PLURAL:$1|ezalí mbóngwana ya nsúka|izalí mbóngwana '''$1''' ya nsúka}} o {{PLURAL:$2|ngonga|ngonga '''$2'''}} ya nsúka.",
"wlshowlast": "Komɔ́nisa ngónga $1 ya nsúka, mikɔlɔ $2 mya nsúka tǒ $3",
"watching": "Kolanda...",
"unwatching": "Kolanda tɛ́...",
"yourdomainname": "ໂດເມນ ຂອງ ທ່ານ",
"login": "ເຊັນເຂົ້າ",
"nav-login-createaccount": "ເຊັນເຂົ້າ / ສ້າງບັນຊີ",
- "loginprompt": "ທ່ານຕ້ອງຮັບຄຸກກີ້ ເພື່ອ ເຊັນເຂົ້າ {{SITENAME}}.",
"userlogin": "ເຊັນເຂົ້າ / ສ້າງບັນຊີ",
"logout": "ເຊັນອອກ",
"userlogout": "ເຊັນອອກ",
"nextn": "{{PLURAL:$1|$1}} ຕໍ່ໄປ",
"viewprevnext": "ເບິ່ງ ($1 {{int:pipe-separator}} $2) ($3).",
"search-result-size": "$1 ({{PLURAL:$2|1 ຄຳ|$2 ຄຳ}})",
- "search-result-score": "ຄວາມກ່ຽວຂ້ອງ: $1%",
"search-redirect": "(ໂອນ $1)",
"search-relatedarticle": "ກ່ຽວຂ້ອງ",
"searchrelated": "ກ່ຽວຂ້ອງ",
"talkpagelinktext": "Bulelezi",
"specialpage": "Petulo Zwenti",
"personaltools": "Solume sisebelisoni",
- "postcomment": "Bulelezi mulumiwa",
"articlepage": "Kamukile petulo",
"talk": "Bulelezi",
"views": "Kamukile",
"yourdomainname": "Zwa domeni:",
"login": "Menuhile",
"nav-login-createaccount": "Menuhile / ipupezi sebelu",
- "loginprompt": "A sa nyembulisize di kukina di menuhile kwa {{SITENAME}}.",
"userlogin": "Menuhile / ipupezi sebelu",
"logout": "Ile",
"userlogout": "Ile",
"fileuploadsummary": "Lyangutukezi:",
"filesource": "Ng'i",
"savefile": "Bulukezi imegi",
- "uploadedimage": "sa uplodezi \"[[$1]]\"",
- "overwroteimage": "sa uplodezi nca imegi petuho di \"[[$1]]\"",
"sourcefilename": "Ng'i di imegi",
"watchthisupload": "Kentezi bye petulo",
"upload-file-error": "Interni bufosi",
"tog-watchdefault": "بلگیا و فایلایی که مه ویرایشت کمه اضاف کو د سیل برگم",
"tog-watchmoves": "بلگیاو فایلیایی که مه جاوه جا کمه د سیل برگم اضاف کو",
"tog-watchdeletion": "بلگیا و فایلایی که مه پاک کمه اضاف کو د سیل برگم",
+ "tog-watchrollback": "همه بلگه یا نه د جایی که مه د سیل برگم می کم اضاف کو.",
"tog-minordefault": "همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.",
"tog-previewontop": "پیش سیل نه دما جعوه ویرایشت نشو بیئه",
"tog-previewonfirst": "پیش سیل نه د اولین ویرایشت نشو بیئه",
"jumpto": "پئرستن د",
"jumptonavigation": "ناوگشتن",
"jumptosearch": "پی جوری",
- "view-pool-error": "د بدبختی،",
- "generic-pool-error": "د بدبختی",
+ "view-pool-error": "د بدبختی،ایسنی سروریا فره شلوغ.\nکاریاریا فره زیادی میهان ای بلگه نه بوینن.\nیه گری صب بکیتو دما یه که میهات دوواره ای بلگه نه بوینیت.",
+ "generic-pool-error": "د بدبختی،ایسنی سروریا فره شلوغ.\nکاریاریا فره زیادی میهان ای بلگه نه بوینن.\nیه گری صب بکیتو دما یه که میهات دوواره ای بلگه نه بوینیت.",
"pool-timeout": "وخت سی تیه وه ره منن سی قلف بیئن تموم بی",
"pool-queuefull": "ذخیره گی گرتن پر بیه",
"pool-errorunknown": "خطا ناشناس",
"mainpage-description": "سرآسونه",
"policy-url": "پروجه:خط و مش",
"portal": "درآسونه کومله یکی",
- "portal-url": "پرÙ\88جÙ\87:تÙ\84Ú¯ه کومله یکی",
+ "portal-url": "پرÙ\88جÙ\87:سرآسÙ\88Ù\86ه کومله یکی",
"privacy": "رهبرد رازداری",
"privacypage": "پروجه: خط مشی راز واداشتن",
"badaccess": "خطا :اجازه بئیر",
"hidetoc": "قام كردن",
"collapsible-collapse": "جم كردن",
"collapsible-expand": "وا كردن",
+ "confirmable-confirm": "{{GENDER:$1|شما}} مطئمنیت?",
+ "confirmable-yes": "هری",
+ "confirmable-no": "نه",
"thisisdeleted": "دیئن یا ورگنين $1?",
"viewdeleted": "دیئن$1?",
"restorelink": "{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}",
"protectedpagetext": "دای بلگه نبوئه ویرایشت یا کاریا هنی بکید",
"viewsourcetext": "شما تونیت سرچشمه ای بلگه نه بوینیت و دش ورداریت:",
"viewyourtext": "شما تونیت سرچشمه ویرایشتیا تونه ای د بلگه بوینیت و دشو ورداریت",
+ "protectedinterface": "ای بلگه سی نرم افزار د ای ویکی نیسسه آماده می که، و د .\nسی اضاف کردن یا آلشت دئن د همه ویکی یا لطفا [//translatewiki.net/ translatewiki.net] نه به کار بؤریت، ولات نشین کنی پروجه ویکی وارسگر.",
+ "editinginterface": "<strong>زئنار دئن:</strong> شما داریت بلگه ای نه که سی بیه ویرایشت می کید.",
+ "cascadeprotected": "ای بلگه د ویرایشت محافظت بیه سی یه که {{جمی:$1|وه بلگه یه |ونو بلگه یان}} که ها دش د :\n$2",
+ "namespaceprotected": "شما حقی سی ویرایشت بلگه یایی که هان د نومجا <strong>$1</strong> ناریت.",
+ "customcssprotected": "شما سی ویرایشت ای بلگه سی اس اس اجازه ناریت سی یه که میزونکاری دونسمنیا شخصی یه کاریار هنی ها د وه.",
+ "customjsprotected": "شما سی ویرایشت ای بلگه جاوا اسکریپت اجازه ناریت سی یه که میزونکاری دونسمنیا شخصی یه کاریار هنی ها د وه.",
"mycustomcssprotected": "شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید",
"mycustomjsprotected": "شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید",
"myprivateinfoprotected": "شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید",
"mypreferencesprotected": "شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید",
"ns-specialprotected": "بلگیا ویجه نتونن ویرایشت بوئن",
+ "titleprotected": "ای دیارگر د دروس بیئن وه دس [[کاریار:$1|$1]].\n نهاگری بیه.\nدلیلش ونه\"<em>$2</em>\".",
+ "filereadonlyerror": "نبوئه جانیا \"$1\" آلشت بکیتو سی یه که اماییه گه \"$2\" فقط د حال و بال حننیه.\n\nدیوونداری که یه نه قلف کرده موئه د واشکافت \"$3\" بکیتو.",
"invalidtitle-knownnamespace": "نوم نامعتور سی نوم جا \"$2\" و نیسه \"$3\"",
"invalidtitle-unknownnamespace": "نوم نامعتور سی شماره نومجا ناشناس $1 و نیسه \"$2\"",
"exception-nologin": "نبوئه وارد بوئيد",
+ "exception-nologin-text": "شما وارد [[ویجه:وامین اومائن کاریار|وامین اومائن]] بوئیت سی یه تونستویت که د ای بلگه یا کنشت دسرسی داشتویت.",
"exception-nologin-text-manual": "خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.",
+ "virus-badscanner": "سازواره گن:ویروس ناشناس:<em>$1</em>",
"virus-scanfailed": "زل بیئن شکست حرد($1)",
"virus-unknownscanner": "ويروس كش ناآشگار",
+ "logouttext": "<strong>شما هنی نریتته وه در.</strong>\n\nد ویرتو با که ویرگه نهو انجومیارتو نه پاکسا نکیت، سی یه پاره ای د بلگه یا ممکنه جوری نشو دئه بوئن چی یه که منیستی شما هنی هایین وامین.",
"welcomeuser": "خوش اومايت،$1!",
+ "welcomecreation-msg": "حساوتو دروس بیه.\nد ویرتو نروئه که{{نوم دیارگه}} [[Special:Preferences|preferences]] خوتونه آلشت بکیت",
"yourname": "نوم کاریاری:",
"userlogin-yourname": "نوم كاروری",
"userlogin-yourname-ph": "نوم کاریاری تو نه وارد بكيد",
"userlogin-signwithsecure": "د وصل بيئن امن استفاده كو",
"yourdomainname": "پوشگیر شما:",
"password-change-forbidden": "شما نتونید پاسوردیانه د ای ویکی آلشت بکید",
+ "externaldberror": "اشتوایی د ارتواط وا رسینه گا پیش اومائه یا ینه که شما اجازه وه هنگوم سازی حساو خارجی تونه ناریت.",
"login": "اومائن",
"nav-login-createaccount": " اومائن د سيستم/راس كردن حساو",
"userlogin": " اومائن د سيستم/راس كردن حساو",
"noname": "شما یه گل نوم کاروری خو ناریت",
"loginsuccesstitle": "اومائن د سيستم موفق بی",
"loginsuccess": "شما ایسه وارد بیته {{SITENAME}} د دعنوان \"$1\".'",
- "nosuchuser": "چنی کاروری و نوم \"$1\" نئیش.\nنوم کاروری وه حرفیا حساس هئ.\nروشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کارور/ثوت نام کردن|یه گل حساو تازه راس بکید]].",
+ "nosuchuser": "چنی کاریاری و نوم \"$1\" نئیش.\nنوم کاریاری وه حرفیا حساس هئ.\nروشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کاریار/ثوت نام کردن|یه گل حساو تازه راس بکید]].",
"nosuchusershort": "چنو کاروری وا ای نوم $1 نی ئیش.\nنیسنن تونه دوواره نئری بکیتو",
"nouserspecified": "شما باید یه نوم کارور اختصاص بئیتو",
"login-userblocked": "کارور قلف بیه.وامین اومائن اجازه نی ئن",
"password-login-forbidden": "وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.",
"mailmypassword": "د نۈ وارد كردن رمز",
"passwordremindertitle": "پاسورد موقت تازه سی {{SITENAME}}",
+ "passwordremindertext": "یه نفر(شات خوتو،د تیرنشون آی پی $1) یه گل رازینه گواردن هنی سی {{نوم دیارگه}}($4) حاسته.یه گل رازینه گواردن موقتی سی کاریاری\"$2\" دروس بیه و د \"$3\" جاگر بیه. ار قصدتو یه بیه،شما واس ایسه روئیت وامین و یه گل رازینه گواردن هنی انتخاو بکید.\nرازینه گورادن موقتی د {{جمی:$5|یه رو|$5 رو}} تموم بوئه.\n\nار یه نفر هنی یه حاست داشتوئه،یا ار رازینه گورادن تونه د ویرتو اوما، و ار نحاستیت ونه آلشت بکیت، شما شایت د ای پیغوم تیه پوش بکیت و بحایت د وه کار بسن رازینه گواردن دماترتو دماداری بکیت.",
"noemail": "هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.",
"noemailcreate": "شما باید یه نشونی نومه معتور فراهم بکید",
+ "passwordsent": "یه گل پاسورد هنی سی تیرنشون انجانامه ای که \"$1\" واش ثوت نام کرده بی کل بیه.\nخواهش میکیم هنی رویئت وامین و اوسه بئریتش.",
+ "blocked-mailpassword": "نها آی پی شما سی ویرایشت گرته بیه، و",
+ "eauthentsent": "یه گل انجومانامه پشت راس کردنی د یه گل تیرنشون ویجه کل بیه.\nدما یه که یه گل انجومانامه هنی د حساو کل بوئه، شما واس دما رئنمونی نه د انجومانامه بئریت، سی یه که حساو شما راستکی پشت راست بوئه.",
+ "throttled-mailpassword": "یه گل پسورد دواره زنه بیه ایسه کل بیه، د آخری {{جمی:$1|ساعت|$1 ساعتیا}}.\nسی نهاگری د اذیت دئن،فقط یه گل رازینه گواردن د انجومانامه دواره زنه بیه د هر {{جمی:$1|ساعت|$1 ساعتیا}} کل بیه.",
"mailerror": "خطا داره کل موئه:$1",
+ "acct_creation_throttle_hit": "سیل کریا ای ویکی د تیرنشون آی پی شما استفاده کردنه د روز دمایی {{جمی:$1|1 حساو|$1 حساویا}} نه دروس کردنه، و وه د بیشترونه صلا دئن د ای دوره گاتی انجوم بیه.\nد نتیجه، سیل کریایی که د ای تیرنشون آی پی استفاده کردنه نمی تونن حساویا بیشتری د ای گات دروس بکن.",
"emailauthenticated": "نشونی انجومانامه تونه د $2 سی 3$ مئکم بیه.",
+ "emailnotauthenticated": "تیرنشون انجومانامه شما تا ایسه پشت راسگری نبیه.\nهنی انجومانامه ای سی چیا ری به نها کل نبیه.",
+ "noemailprefs": "یه گل تیرنشون انجومانامه د الویتیاتو سی یه که ای ویجه گیا کار بکن انتخاو بکیت.",
"emailconfirmlink": "نشونی ايملتو نه محكم بكيد",
+ "invalidemailaddress": "تیرنشون انجومانامه حاستنی نئ شکل وه چوئه خوئی ناره.\nلطفن یه گل تیرنشون چوئه دار وارد بکیت یا ای رشنه گه نه حالی بنیت.",
"cannotchangeemail": "نشونی ایمیل حساو نتونه د ای ویکی آلشت بوئه.",
"emaildisabled": "ای مالگه نتونه ایمیل بفرسنه",
"accountcreated": "حساو راس بی",
+ "accountcreatedtext": "حساو کاریاری سی [[{{ns:کاریار}}:$1|$1]] ([[{{ns:کاریار چک چنه}}:$1|چک چنه]]) دروس بیه.",
"createaccount-title": "حساو راس کرده سی {{SITENAME}}",
+ "createaccount-text": "یه نفر وا تیرنشون انجونامه تو یه گل حساو راس کرده{{نوم دیارگه}} ($4) نومشه نیائه\"$2\", با پاسورد \"$3\".\nشما همی ایسه باید روئیت وامین و پاسوردتونه آلشت بکیت.\n\nار شما ای پیغوم نه وش التفات نکیت، د راس بیین ای حساو خطا دروس موئه.",
"login-throttled": "شما ایسنی فره سی وامین اومائن تلاش کردیته.\n$1 لطفن سی تلاش هنی صبر بکید",
"login-abort-generic": "اومائن وامین تو شکست حرد-شکست حرده",
"loginlanguagelabel": "زون:$1",
+ "suspicious-userlogout": "درحاست وه در رئتن شما انکار بیه سی یه کل وه نظر میا که د یه گل دووارته نیئر گن یا یه گل پروکسی که ها د ویرگه نهو کل بیه",
+ "createacct-another-realname-tip": "نوم راستکی دل به حائه.\nار شما وه نه نهااماییه بکیت، یه سی هوم نسبت دئن وه کاریار سی کاریاش استفاده بوئه.",
"pt-login": "وا مین اومائن",
"pt-login-button": "وا مین اومائن",
"pt-createaccount": "يه گل حساو راست بكيد",
"retypenew": "رمز تازه نه دوواره بنیسید:",
"resetpass_submit": "پاسور بنیت و وامین بیایت",
"changepassword-success": "پاسورد شما وا موفقیت آلشت بی",
+ "changepassword-throttled": "شما ایسنی فره سی وامین اومائن تلاش کردیته.\n$1 لطفن سی تلاش هنی صبر بکید",
"resetpass_forbidden": "پاسوردیا نتونن آلشت بوئن",
"resetpass-no-info": "شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت",
"resetpass-submit-loggedin": "پاسورد نه آلشت بكيت",
"resetpass-submit-cancel": "انجوم شیوسن",
+ "resetpass-wrong-oldpass": "رازینه گواردن تازه یا موقتی نامعتور.\nشات شما ایسنی یا رازینه گواردن خوتونه د خوئی آلشت دئیته یا یه گل رازینه گواردن موقت هنی درحاست دئیته.",
+ "resetpass-recycled": "لطفن رازینه گواردن خوتونه سی چیا تر د رازینه گواردن ایسنی د نو زنه بکیت",
+ "resetpass-temp-emailed": "شما وا یه گل رازینه موقتی که انجوما گر بیه اومایته وامین.\nسی تموم کردن اومائن وامین، یه گل رازینه گواردن هنی د ایچه جاگر بکیت.",
"resetpass-temp-password": "رمز موقت:",
+ "resetpass-abort-generic": "آلشت دئن رازینه گواردن وا یه گل فره پوش خرو بیه.",
+ "resetpass-expired": "رازینه گواردن شما منقضی بیه. لطفن یه گل رازینه گواردن هنی سی وامین اومائن جاگری بکیت.",
+ "resetpass-expired-soft": "رازینه گواردن شما منقضی بیه و واس د نو زنه با. لطفن یه گل رازینه هنی انتخاو بکیت، یا سی د نو زنه کردن د نهاتر د ایچه \"{{int:resetpass-submit-cancel}}\" بپورنیت.",
+ "resetpass-validity-soft": "زازینه گواردتون تو معتور نئ:$1\n\nلطفن یه گل رازینه گواردن هنی انتخاو بکیت، یا ری ایچه \"{{int:resetpass-submit-cancel}}\" سی د نو زنه کردن وه د نهاتر بپورنیت.",
"passwordreset": "د نۈ وارد كردن رمز",
+ "passwordreset-text-one": "ای نوم بلگه نه سی گرتن یه گل رازینه گواردن موقتی وا انجومانامه پر بکیت.",
+ "passwordreset-text-many": "{{جمی:$1|یه گل د رشنه گه یا نه سی یه که رازینه گواردن موقتی وا انجومانامه گرته بوئه پر بکیت}}",
"passwordreset-legend": "د نۈ وارد كردن رمز",
"passwordreset-disabled": "نو کرد پاسورد د ای ویکی غیرفعال بیه.",
"passwordreset-emaildisabled": "چی یا هنی ایمیل د ای ویکی غیرفعال بیه.",
"passwordreset-emailelement": "نوم کاروری: $1\nپاسورد موقتی: $2",
"passwordreset-emailsent": "پاسورد هنی سی ایمیل کل بیه.",
"passwordreset-emailsent-capture": "پاسورد تازه تو د ایمیلتو که د هار نشو دئه بیه کل بیه",
+ "passwordreset-emailerror-capture": "رازینه گواردن د انجومانامه د نو زنه کننه راس بیه، و وه د هار دیاری می که، اما کل بیین وه د{{جنس:$2|کاریار}} شکست حرده:$1",
"changeemail": "ایمیل تو نه آلشت بکید",
"changeemail-header": "ایمیل حساوتونه آلشت بکید",
+ "changeemail-text": "ای نوم بلگه نه سی آلشت دئن تیرنشون انجومانامه تو پر بکیت. شما سی پشت راس کردن ای آلشت واس رازینه گواردن خوتونه وارد بکیت.",
"changeemail-no-info": "شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت",
"changeemail-oldemail": "نشونی ایمیل تازه باو:",
"changeemail-newemail": "نشونی ایمیل تازه",
"changeemail-password": "شما {{SITENAME}} پاسورد:",
"changeemail-submit": "آلشت کردن ایمیل",
"changeemail-cancel": "انجوم شیوسن",
+ "changeemail-throttled": "شما ایسنی فره سی وامین اومائن تلاش کردیته.\n$1 لطفن سی تلاش هنی صبر بکید.",
"resettokens": "تازه کردن نشونه یا",
+ "resettokens-text": "شما سی صلا دئن دسرسی وه رسینه یا خصوصی که ها د حساو ایچنی تو می تونیت دیارگریا نه د نو زنه بکیت.\n\nشما اوسنی واس ای کار بکیت که رسینه یا شما سی یه کسی تر بئر بیه یا د حساو شما چل بیه.",
"resettokens-no-tokens": "هیژ نشونه ای سی تازه کردن نئ.",
"resettokens-legend": "تازه کردن نشونه یا",
"resettokens-tokens": "نشونه یا:",
"resettokens-token-label": "$1 (ارزشت تازه: $2)",
+ "resettokens-watchlist-token": "دیارگر سی حردنی تورگه(اتم/آر اس اس) سی [[ویجه:سیل برگ|آلشت دئن بلگه یا د سیل برگتو]]",
"resettokens-done": "نشونه یا تازه بیه.",
"resettokens-resetbutton": "نشونه یا انتخاو بیه تازه بوئن",
"bold_sample": "متن توپر بيه",
"preview": "پيش سيل",
"showpreview": "پيش نمائش نشون بيئه",
"showdiff": "آلشتيانه نشون بيئه",
+ "blankarticle": "<strong>زنئار:</strong> بلگه ای که شما دروس کردیته حالیه.\nار شما د نو ری \"{{int:savearticle}}\" بپورنیت, بلگه وه شکل که هیچ مینونه ای دش نبا دروس بوئه.",
"anoneditwarning": "زنهار شما وامین نیومایته.\nنشونی آی پی تو د ویرگار ویرایشت ای بلگه ضفط بوئه",
+ "anonpreviewwarning": "<em>شما نیومائته وامین. تیرنشون آی پی شما د ویرگار ویرایشت ای بلگه اماییه بوئه.</em>",
+ "missingsummary": "<strong>د ویر ونا:</strong> شما هنی یه گل چکسته ویرایشتی نها اماییه نکردیته.\nار شما د نو د ری\"{{int:savearticle}}\" بپورنیت, ویرایشت شما حالی اماییه بوئه.",
"missingcommenttext": "لطفن د ایچه نظر بیئتو",
+ "missingcommentheader": "<strong>د ویر ونا:</strong> شما هنی یه گل موضوع/سرخط سی ای ویر و باور نها اماییه نکردیته.\nار شما د نو د ری\"{{int:savearticle}}\" بپورنیت, ویرایشت شما حالی اماییه بوئه.",
"summary-preview": "چکسته پیش سیل:",
"subject-preview": "پیش سیل موضو سرخط",
"blockedtitle": "كارور قلف بيه",
+ "blockedtext": "<strong>نوم کاریاری شما یا تیرنشون آی پی شما قلف بیه.</strong>\n\n\n$1 ونه قلف کرده.\nدلیل ها د ایچه<em>$2</em>.\n\nشرو د قلف بیین:$8\nآخر قلف بیین:$6\nکاریار ورتیه قلف بیه:$7\n\nشما می تونیت وا $1 یا [[{{MediaWiki:Grouppage-sysop}}|دیووندار]] هنی پیوند بئریت و سی قلف کردن چک چنه بزنیت.\nالوت د ویر داشتویت که شما نمی تونیت د خصوصیت انجومانامه کل کردن سی ای کاربر استفاده بکیت مئر یه گل تیرنشون انجومانامه معتور د [[Special:Preferences|ترجیحیا کاریاری]] خوتو معلوم کرده بویت و باید امکان وه کار بستن وه نه داشتویتو\nتیرنشون آی پی ایسنی شما $3 ئه، و نوم دیارکن قلف کردن #$5 ئه.\nلطفا همه جزئیات نه د هر حاسته ای که داریت بوئیت.",
+ "autoblockedtext": "نوم کاریاری شما یا تیرنشون آی پی شما سی یه که یه گل کاریاری هنی وه کارش بسته خودانجومن قلف بیه $1 ونه قلف کرده.\nدلیل ها د ایچه\n\n:<em>$2</em>.\n\nشرو د قلف بیین:$8\nآخر قلف بیین:$6\nکاریار ورتیه قلف بیه:$7\n\nشما می تونیت وا $1 یا [[{{MediaWiki:Grouppage-sysop}}|دیووندار]] هنی پیوند بئریت و سی قلف کردن چک چنه بزنیت.\n\nالوت د ویر داشتویت که شما نمی تونیت د خصوصیت انجومانامه کل کردن سی ای کاربر استفاده بکیت مئر یه گل تیرنشون انجومانامه معتور د [[Special:Preferences|ترجیحیا کاریاری]] خوتو معلوم کرده بویت و باید امکان وه کار بستن وه نه داشتویت.\n\nتیرنشون آی پی ایسنی شما $3 ئه، و نوم دیارکن قلف کردن #$5 ئه.\nلطفا همه جزئیات نه د هر حاسته ای که داریت بوئیت.",
"blockednoreason": "هیژ دلیلی دئه نبیه",
"whitelistedittext": "شما باید $1 سی ویرایشت بلگیا",
+ "confirmedittext": "شما واس دما ویرایشت کردن بلگه یا تیرنشون انجومانامه تونه پشت راس بکیت.\nلطفا یه گل تیرنشون خو سی [[Special:اولویتیا|اولویتیا کاریار]] بنیت.",
"nosuchsectiontitle": "نبوئه بشخ پیدا بوئه",
+ "nosuchsectiontext": "شما سی ویرایشت کردن جایی که وجود ناره تلاش کردیته.\nشات وه اوسه که شما بلگه نه می دیئته جا وه جا بیه یا پاکسا بیه.",
"loginreqtitle": "وامین اومائن لازمه",
"loginreqlink": "اومائن",
"loginreqpagetext": "$1 لطف بکید بلگه یا هنی نه بوینیت",
"accmailtitle": "پاسورد کل بی",
+ "accmailtext": "یه گل رازینه گواردن شامسکی سی[[چک چنه کاریار:$1|$1]] سی $2 کل بیه.بوئه وه نه د گات وه کار بستن بلگه اومائن وامین د <em>[[Special:آلشت دئن رازینه گواردن|آلشت دئن رازینه گواردن]]</em> آلشت دئه بوئه.",
"newarticle": "تازه",
"newarticletext": "شما وادما هوم پیوندی هئیت که وجود ناره.\nسی راس کردن بلگه.شرو د نیسنن مئن جعوه هاری بکید(سیل[$1 ] سی دونسمنی بیشتر بکید).\nار شما سی اشتوا کردن هایئن ایچه، دگمه وادما رئتن مرورگر تونه بپورنیت.",
+ "anontalkpagetext": "----",
"noarticletext": "د تازه یا د ای بلگه متن نی.\nشما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هنی پی جوری بوئه logs]</span> \n [{{fullurl:{{FULLPAGENAME}}|action=edit}} یای ای بلگه نه ویرایشت بکیدpage]</span>.",
"noarticletext-nopermission": "د تازه یا د ای بلگه متن نی.\nشما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د هنی پی جوری بوئه logs]</span> اما شما حق ناریتو ای بلگه نه راس بکیت",
+ "missing-revision": "وانئیری #$1 د بلگه ای که نومش ونه \"{{FULLPAGENAME}}\" وجود ناره.\n\nشایت بانی جاونه وه وا یه گل ویرگار وه هنگوم نبیه که د یه گل بلگه پاکسا بیه هوم پیوند بیه بوئه.\nشایت جزئیات د [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] پیدا بوئن.",
+ "userpage-userdoesnotexist": "حساو کاریاری\"$1\" ثوت نام نبیه.\nار میهایت ای بلگه نه بسازیتو یا ویرایشت بکیت یه گل وارسی انجوم بئیت.",
"userpage-userdoesnotexist-view": "حساو کارور\"$1\" ثوت نبیه.",
"blocked-notice-logextract": "ای کارور ایسنی دسرسی ناره.\nآخری نشون قلف ورودی د هار ایچه سی سرچشمه آماده بیه:",
+ "clearyourcache": "<strong>توجه داشتویت:</strong> نها اماییه کاری, شات مژبور وه وه کار ونن ویرگه نهو دوارته نیئر خوتو سی دیئن ای آلشتیا بوئیت .\n* <strong>فایرفاکس/ سفری:</strong> بپورنیت ری<em>شیفت</em> اوسه که می پورنیت<em>د نو سوار بوئه</em>یا هنی ری <em>Ctrl-F5</em> بپورنیت یا<em>Ctrl-R</em> (<em>⌘-R</em> د سامونه مک)\n* <strong>گوگل کروم:</ strong>بپورنیت ری <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> یا د سامونه)\n* <strong>اینترنت اکسپلورر:</strong> <em>Ctrl</em> واداریت اوسه که می پورنیت ری <em>Refresh</em>, یل بپورنیت ری<em>Ctrl-F5</em>\n* <strong>اوپرا:</strong> ویرگه نهو نه د <em>اوزاریا→ اولویتیا پاک بکیت</em>",
+ "usercssyoucanpreview": "<strong>نکته:</strong> د دگمه \"{{int:showpreview}}\" سی آزماشت کردن سی اس اس تازه دما اماییه کاری استفاده بکیت .",
+ "userjsyoucanpreview": "<strong>نکته:</strong> د دگمه \"{{int:showpreview}}\" سی آزماشت کردن دما اماییه کاری جاوا اسکریپت تازه استفاده بکیت .",
+ "usercsspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت سی اس اس کاریاری تونه پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
+ "userjspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت جاوا اسکریپت کاریاری تونه پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
+ "sitecsspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای سی اس اس نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
+ "sitejspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای ای جاوا اسکریپت نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
+ "userinvalidcssjstitle": "<strong>زئنار:</strong> پوسه \"$1\" نیئش.\nسی اس اس جاونه و بلگه یا جاوا اسکریپت سرون وا حرف کؤچک نه وه کار بسته، همچنو{{ns:کاریار}}:فو/وکتور.سی اس اس چی د ضد{{ns:کاریار}}:فو/وکتور. سی اس اسه.",
"updated": "(تازه بيه)",
"note": "'''نيسنن:'''",
"previewnote": "فقط ای پیش سیل د ویرتو با.\nآلشتیاتو هنی اماییه نبیه.",
"continue-editing": "رو د راساگه ویرایشت",
+ "previewconflict": "ورگشت پیش سیل د نیسسه د راساگه وارو ویرایشت چی شکل دیار بیین بوئه ار شما وه نه سی اماییه کردن انتخاو بکیت.",
+ "session_fail_preview": "<strong>د بدبختی ما سی یه که رسینه یا جلسه مونه د دس دئیمه نمی تونیم کار پردازشت ویرایشت شمانه انجوم بیئمو.</strong>\nلطفن هنی تلاش بکیت.\nار هنی کار وه دروس کار نکرد،[[Special:UserLogout|اومائن وه در]] نه ازمایشت بکیت و د نو بیایت وامین.",
+ "session_fail_preview_html": "<strong>د بدبختی ما سی یه که رسینه یا جلسه مونه د دس دئیمه نمی تونیم کار پردازشت ویرایشت شمانه انجوم بیئمو.</strong>\nلطفن هنی تلاش بکیت.\n\n<em>سی یه که {{نوم دیارگه}} یه گل ردیف اچ تی ام ال کنشتگر بیه داره، پیش سیل سی یه که د دس حمله یا جاوا اسکریپ د امون با قام کرده بیه..</em>\n\n<strong>ار وه گات قانونی تلاش سی ویرایشته،لطفا د نو تلاش بکیت.</strong>\nار هنی کار وه دروس کار نکرد،[[Special:UserLogout|اومائن وه در]] نه ازمایشت بکیت و د نو بیایت وامین.",
+ "token_suffix_mismatch": "<strong>ویرایشتیا شما سی یه که دووارته نئر شما نیسسه یا نقطه نیائن نه د رازینه امنیتی ویرایشت د یک تیچسه.</strong>\nویرایشت سی یه که د خراو بیئن نیسسه بلگه نهاگری با رد بیه.\nای رخ ون د گاتیایی پیش میا که شما د یه گل رسینه جا پروکسی استفاده می کیت.",
+ "edit_form_incomplete": "<strong>پاره ای د ویرایشتا وه رسینه جا نمی رسن، هنی وارسی بکیت سی یه که بوینیت ویرایشتیا شما خوئه و هنی تلاش بکیت .</strong>",
"editing": "د حالت ويرايشت$1",
"creating": "راس كردن $1",
"editingsection": "د حال ویرایشت$1(بشخ)",
"explainconflict": "داوسه که شما شرو د ویرایشت ای بلگه کردیته، یه نفر هنی ای بلگه نه آلشت دئه.\nراساگه روئی متن بلگه متن نه چی یه که وجود داشتوه د ور میئره.\nآلشتیا شما د متن هاری نشو دئه هئ.\nشما با آلشتیاتونه د متن که هئش یکی بکید.\nفقط متنی که ها د رو د وختی که شما\"{{رقم:ذخیره گوتار}}\" نه گزارشت می کید اماییه بوئه",
"yourtext": "متن شما",
"storedversion": "دوواره دیئن انبار بیه.",
+ "nonunicodebrowser": "<strong>زئنار:دووارته نئر شما وا نیسسه یا یونیکد سازگاری ناره.</strong>\nیه گل راحل وه کار گرته بیه سی یه که شما بلگه یا نه وا امنیت ویرایشت بکیت:\nنیسه یا غیر-ASCII د پایه رازینه یا 16 تایی دتو نشو دئه بوئه.",
+ "editingold": "<strong>زئنار:شما داریت یه گل وانئری نا به هنگوم بیه نه سی ای بلگه ویرایشت می کید</strong>\nار شما ونه اماییه بکیت،هر آلشتی که د اول سی ای وانئری انجوم بیه گم بوئه.",
"yourdiff": "فرخيا",
- "templatesused": "{{جمی:$1|قالو|قالویا}}د ای بلگه استفاده بیه:",
- "templatesusedpreview": "{{جمی:$1|قالو|قالویا}}استفاده بیه د ای پیش سیل:",
- "templatesusedsection": "{{جمی:$1|قالو|قالویا}} استفاده بیه د ای بخش:",
+ "longpageerror": "<strong>خطا:نیسسه شما {{جمی:$1|یه کلوبایت|$1 کلوبایت}} درازی نه دئه، که ونو د بیشرونه انازه{{جمی:$2|یه کلوبایت|$2 کلوبایت}} گپترن.</strong>\nنبوئه وه اماییه با.",
+ "readonlywarning": "<strong>زئنار:رسینه گا سی واداشت قلف بیه، سی یه نه که شما ایسه نمی تونیت ویرایشتیاتونه اماییه بکیت.</strong>\nشات شما بحایت که نیسسه خوتونه د جانیا نیسسه ای وردار بدیس بکیت و ونه سی نهاتر اماییه بکیت.\n\nدیوونداری که ونه قلف کرده چنی گوته:$1",
+ "protectedpagewarning": "<strong>زئنار:ای بلگه سی یه پر و پیم بیه که کاریاریایی که دسرسی دیوونداری دارن فقط بتونن دش ویرایشت بکن.</strong>\nآخرین سیائه سی سرچشمه یا د هار اماییه کاری بیه:",
+ "semiprotectedpagewarning": "<strong>د ویر داشتویت:</strong> ای بلگه سی یه که فقط کاریاریا ثوت نام کرده تونستون دش ویرایشت بکه ن پر و پیم بیه.\nآخرین پهرستنومه دئه بیه سی سرچشمه هار نها اماییه بیه:",
+ "cascadeprotectedwarning": "<strong>زئنار:</strong> ای بلگه",
+ "templatesused": "{{جمی:$1|چوئه|چوئه یا}}د ای بلگه استفاده بیه:",
+ "templatesusedpreview": "{{جمی:$1|چوئه|چوئه یا}}استفاده بیه د ای پیش سیل:",
+ "templatesusedsection": "{{جمی:$1|چوئه|چوئه یا}} استفاده بیه د ای بخش:",
"template-protected": "(حمايت بيه)",
"template-semiprotected": "(نيم-حفاظت بيه)",
"hiddencategories": "ای بلگه يه اندوم د{{PLURAL:$1|1 hidden category|$1 hidden categories}}: هئ",
- "nocreatetext": "{{نوم مالگه}} سی راس کردن بلگه یا تازه محدود بیه.\nشما تونید روئیت وادما و بلگه ای که هئیش ویرایشت بکید ، یا [[ویجه:وامین اومائن کارور|بیایت وامین یا یه گل حساو بسازیت]].",
+ "nocreatetext": "{{نوم مالگه}} سی راس کردن بلگه یا تازه محدود بیه.\nشما تونید روئیت وادما و بلگه ای که هئیش ویرایشت بکید ، یا [[ویجه:وامین اومائن کاریار|بیایت وامین یا یه گل حساو بسازیت]].",
"nocreate-loggedin": "شما حق ناریت که بلگه یا تازه نه راس بکید.",
"sectioneditnotsupported-title": "ویرایشت بخش حمایت نبوئه",
"sectioneditnotsupported-text": "ویرایشت بشقی د ای بلگه نئیش.",
"recreate-moveddeleted-warn": "'''زنهار شما بلگه ای که وادما پاکسا بیه هنی راس کردیته'''\nشما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.\nپاکسا بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
"moveddeleted-notice": "ای بلگه پاک بیه.\nپاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه",
"log-fulllog": "دیئن همه پهرستنومه یا",
+ "edit-hook-aborted": "ویرایشت وا قلاو جلوگری بیه.\nهیچ توضیئ سیش نئ.",
+ "edit-gone-missing": "نبوئه ای بلگه نه وه هنگوم بکیت.\nوه نظر میا که وه پاکسا بیه.",
"edit-conflict": "مخالفت نه ویرایشت بکید",
+ "edit-no-change": "سی یه که آلشتیا د یه گل نیسسه دروس بیه د ویرایشت شما تیه پوشی بیه.",
+ "postedit-confirmation-created": "بلگه دروس بیه.",
+ "postedit-confirmation-restored": "بلگه د نو اماییه بیه.",
"postedit-confirmation-saved": "ویرایشتتو اماییه بی",
"edit-already-exists": "نبوئه یه گل بلگه تازه راس بکید.\nوه هئیش.",
"defaultmessagetext": "متن پیغوم پیش فرض",
"content-failed-to-parse": "د یک تیچیسن چیا مئن $2 د مدل $1:$3",
"invalid-content-data": "دنسمنی مینونه نامعتور",
"content-not-allowed-here": " مینونه\"$1\" سی بلگه [[$2]] اجازه نه دئه بیه",
+ "editwarning-warning": "ار ای بلگه نه ول بکیت هر آلشتی که دئیته پاک بوئه.\nار شما هاییت وا مین،شما می تونیت ای زئنار نه د \"{{int:prefs-editing}}\" که ها د بخش اولویتیا شما ناکشتگر بکیت.",
"editpage-notsupportedcontentformat-title": "شلک مینونه دماگری نبیه",
+ "editpage-notsupportedcontentformat-text": "وضع و بار مینونه $1 د مدل مینونه $2 حامین نبوئه.",
"content-model-wikitext": "ويكی متن",
"content-model-text": "متن ساده",
"content-model-javascript": "جاوا اسكريپت",
"content-model-css": "سی اس اس",
+ "expensive-parserfunction-warning": "<strong>زئنار:</strong>ای بلگه مینونه دار واحونی دستوریا مئن اشکافت فره ای هئ.\n\nانازه و باید د کمتر با$2 {{جمی:$2|واحونی|واحونیا}}، ایسه {{جمی:$1|$1 واحونی|$1 واحونیا}}ئه.",
+ "expensive-parserfunction-category": "بلگه یایی که واحونی پیوندگر خطا گرون فره ای ها دشو",
"post-expand-template-inclusion-warning": "زنئار قالو شومل انازه ای یه که فره گپه.پاره ای د قالویا نه د بر نگره",
"post-expand-template-inclusion-category": "بلگیا شومل قالوی ین که انازش د حد اومائه وه در",
"post-expand-template-argument-warning": "زنهار ای بلگه شومل حداقل یه قالو سی چک چنه یه که انازه فره گپه.\nگپسنیا پاک بینه.",
"post-expand-template-argument-category": "بلگه شومل قالو چک چنیا د بین رئته",
"parser-template-loop-warning": "حلقه قالو کشف بیه:[[$1]]",
+ "parser-template-recursion-depth-warning": "محدودیت پی یا ورئشتن چوئه رد بی($1)",
+ "language-converter-depth-warning": "محدودیت پی یا زون والرن رد بی($1)",
+ "node-count-exceeded-category": "بلگه یا که د بیشرونه شماره گرو فره پئشکرد کردنه",
+ "node-count-exceeded-category-desc": "زیردسه سی بلگه یایی که د ونو اشمارنه فره پئشکرد کرده.",
+ "node-count-exceeded-warning": "بلگه د بیشترونه شماره گرو فره پئشکرد کرد",
+ "expansion-depth-exceeded-category": "بلگه یایی که د بیشترونه پی یا ووله کردن فره پئشکرد کردنه",
+ "expansion-depth-exceeded-category-desc": "زیر دسه سی بلگه یایی که د ونو پی یا ووله بیین فره پئشکرد کرده.",
+ "expansion-depth-exceeded-warning": "بلگه د پی یا ووله بیین پئشکرد کرد",
+ "parser-unstrip-loop-warning": "گردوله د فرمونه Unstrip پیدا بیه",
+ "parser-unstrip-recursion-limit": "د بیشترونه د سرچشمه رئتن د دستور Unstrip واروتر رئتیته($1)",
+ "converter-manual-rule-error": "خطا د قانون دسی زون",
+ "undo-success": "نبوئه ویرایشت نه انجومشیو بکیت.\nلطفا ای فرخی که ها د هار نه وارسی بکیت تا یه کاریه که میهات انجوم بئیت، و اوسه آلشتیا هار نه اماییه بکیت سی یه که خمثی کردن ویرایشت نه انجوم بئیت.",
+ "undo-failure": "سی ری به ری بیئن ای ویرایشت وا ویرایشتیا مینجایی، نبوئه ای ویرایشت نه خومثی بکیت.",
+ "undo-norev": "نبوئه ای ویرایشت نه خومثی بکیت سی یه که یا وجود ناره یا پاکسا بیه.",
+ "undo-nochange": "وه نظر میا که ای ویرایشت د ایسنیا خومثی بیه.",
+ "undo-summary": "خومثی بیئن وانئری وا $1[[ویجه:هومیاریا/$2|$2]] ([[چک چنه کاریار:$2|چک چنه]])",
+ "undo-summary-username-hidden": "خومثی بیئن وانئری $1 وا یه گل کاریار قام بیه",
"cantcreateaccounttitle": "نبوئه حساو راس بکید",
+ "cantcreateaccount-text": "حساو دروس بیه و ا ای تیرنشون آی پی(<strong>$1</strong>) وه دس ای [[کاریار:$3|$3]] قلف بیه.\n\n\nدلیل دئه بیه وا $3 ها د<em>$2</em>",
+ "cantcreateaccount-range-text": "حساو دروس بیه وا تیرنشون آی پی که د پوشینه '''$1''' ، که وه ئم مینونه دار تیرنشون آی پی شما ئم هئ('''$4''')، وه دس [[کاریار:$3|$3]]قلف بیه.\n\nدلیل دئه بیه وا $3، \"$2\" ئه.",
"viewpagelogs": "سی ای بلگه بوینتو.",
"nohistory": "هیچ ویرگار ویرایشتی د ای بلگه نئ.",
"currentrev": "آخرین دوواره دیئن",
"rev-deleted-user": "(نوم کاروری جا وه جا بیه)",
"rev-deleted-event": "(انجوم گر پهرستنومه جا وه جا بیه)",
"rev-deleted-user-contribs": "[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]",
+ "rev-deleted-text-permission": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
+ "rev-suppressed-text-permission": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+ "rev-deleted-text-unhide": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+ "rev-suppressed-text-unhide": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+ "rev-deleted-text-view": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
+ "rev-suppressed-text-view": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+ "rev-deleted-unhide-diff": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+ "rev-suppressed-unhide-diff": "وانئری ای بلگه <strong>پاکساگری بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
"rev-delundel": "آلشت وضئيت ديئن",
"rev-showdeleted": "نشو دائن",
"revisiondelete": "پاکسا کردن/زنه کردن وانئریا",
"revdelete-show-file-submit": "هری",
"revdelete-selected-text": "{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
"revdelete-selected-file": "{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
+ "revdelete-legend": "میزونکاری محدودیتیا دیار بیین.",
"revdelete-hide-text": "متن دوواره دیئن",
"revdelete-hide-image": "چی یا مئن فایل قام کو",
"revdelete-hide-name": "آرمون و انجوم گر نه قام بکید",
"revdelete-reasonotherlist": "دلیل هنی",
"revdelete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
"revdelete-offender": "نیسنه وانیری:",
+ "suppressionlog": "پهرستنومه پاکسازی",
"mergehistory": "ویرگاریا بلگه نه یکی بکید",
"mergehistory-header": "ای بلگه وه شما اجازه می ئه که وانیریانه ویرگار سرچشمه بلگه نه د یه گل بلگه تازه سریک سازی بکید.\nمطمئن بویت که ای آلشت د لحاظ ویرگاری د مین بلگه موندگار هئ.",
"mergehistory-box": "دوواره دیئن دوبلگه ای نه سر یک سازی کو:",
"searchresults": "نتيجه يا پی جوری",
"searchresults-title": "نتيجه يا پی جوری سی \"$1\"",
"titlematches": "عنوان بلگه مطاوقت داره",
+ "textmatches": "هومسازی نیسسه بلگه.",
+ "notextmatches": "نیسسه بلگه هومسازی ناره",
"prevn": "وادما {{PLURAL:$1|$1}}",
"nextn": "نيايی {{PLURAL:$1|$1}}",
"prevn-title": "پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}",
"searchprofile-images-tooltip": "بگرد سی فايليا",
"searchprofile-everything-tooltip": "همه محتوا نه پی جوری كو (شاملا بلگيا چك چنه)",
"searchprofile-advanced-tooltip": "نوم جايا نوم ديار بگرد",
- "search-result-size": "$1 ({{جمی:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})",
+ "search-result-size": "$1 ({{جمی:$2|1 کلیمه|$2 کلیمه یا}})",
"search-result-category-size": "{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 جانیا|$3 جانیایا}}",
"search-redirect": "(ورگشتن $1)",
"search-section": "(بشق $1)",
"prefs-rc": "آلشتیا تازه باو",
"prefs-watchlist": "سیل برگ",
"prefs-watchlist-days": "روزیا نه د سیل برگ نشو دئه بو:",
+ "prefs-watchlist-days-max": "$1 بیشترونه {{جمی:$1|روز|روزیا}}",
"prefs-watchlist-edits-max": "شماره بیشترونه:1000",
+ "prefs-watchlist-token": "نشونه سیل برگ:",
"prefs-misc": "شيوسن",
"prefs-resetpass": "پاسورد نه آلشت بكيت",
"prefs-changeemail": "نشونی ایمیل تو نه آلشت بکید",
"stub-threshold-disabled": "د كار ونن",
"recentchangesdays": "روزیا آلشتیا تازه باو نه نشو بیه:",
"recentchangesdays-max": "$1 بیشترونه {{جمی:$1|روز|روزیا}}",
+ "recentchangescount": "انازه ویرایشتیایی که دیاری می که:",
"prefs-help-recentchangescount": "یه شامل آلشتیا تازه،ویرگاریا بلگه و پهرستنومه یا هئ.",
"savedprefs": "ویجه گیا هنی تو اماییه بیه.",
"timezonelegend": "وخت راساگه",
"localtime": "وخت ولاتی:",
"timezoneuseserverdefault": "وخت راساگه",
+ "timezoneuseoffset": "هنی",
"servertime": "وخت سرور:",
"guesstimezone": "وا جاگرد پر بوئه",
"timezoneregion-africa": "افرقا",
"prefs-i18n": "جهون ولاتمنی",
"prefs-signature": "امضا",
"prefs-dateformat": "شلک وخت",
+ "prefs-timeoffset": "جا وه جایی زمونی",
"prefs-advancedediting": "گزینه یا عمومی",
"prefs-editor": "ويرايشتگر",
"prefs-preview": "پیش سیل",
"prefs-advancedwatchlist": "گزینه یا پیشکرده",
"prefs-displayrc": "گزینه یا نه نشو بیه",
"prefs-displaywatchlist": "گزینه یا نه نشو بیه",
+ "prefs-tokenwatchlist": "نشو",
"prefs-diffs": "فرخیا",
"email-address-validity-valid": "نشونی ایمیل دیار بیه خوئه",
"email-address-validity-invalid": "یه گل نشونی ایمیل خو وارد بکید",
+ "userrights": "حقوق دیوونداری کاریار",
"userrights-lookup-user": "دسه یا کاروری نه دیوون داری بکیت",
"userrights-user-editname": "نوم كاروری ته وارد كو",
"editusergroup": "ویرایشت گرویا کاروری",
"group-bureaucrat": "بروکراتیا",
"group-all": "(همه)",
"group-user-member": "{{جنس:$1|کارور}}",
+ "group-autoconfirmed-member": "{{جنس:$1|کاریار خودانجومکار}}",
"group-bot-member": "{{حنس:$1|بوت}}",
"group-sysop-member": "{{جنس:$1|مدیر}}",
"group-bureaucrat-member": "{{جنس:$1|بروکرات}}",
"grouppage-user": "{{ns:project}}:کاروریا",
+ "grouppage-autoconfirmed": "{{ns:project}}:کاریار خودانجومکار",
"grouppage-bot": "{{ns:project}}:بوت یا",
+ "grouppage-sysop": "{{ns:project}}:دیوونداریا",
"grouppage-bureaucrat": "{{ns:project}}:دیوونداریا",
"right-read": "حنن بلگیا",
"right-edit": "ویرایشت بلگیا",
+ "right-createpage": "بلگه یا نه راس بکیت(ونو که دشو بلگه یا چک چنه نئ)",
"right-createtalk": "بلگه یا چک چنه نه راس بکید",
"right-createaccount": "یه گل حساو کاروری تازه راس بکیت",
"right-move": "بلگه یا جا وه جا کو",
"right-move-subpages": "بلگه یا و زیر بلگه یا شونه جا وه جا کو",
"right-move-rootuserpages": "بلگه یا ریشه ای کارور نه جا وه جا کو",
+ "right-move-categorypages": "دسه بلگه یا نه جا وه جا بکیت",
"right-movefile": "فایلیا نه جا وه جا کو",
"right-suppressredirect": "اوسه که بلگه یا د بین رئتنه هیچ واگردونی سی بلگه یا سرچشمه دروس نبیه",
"right-upload": "سوار کردن فايلا",
"right-upload_by_url": "سوار کرد فایلیا د یو آر ال",
"right-writeapi": "د نیسنن ای پی آی استفاده بکید",
"right-delete": "بلگیا نه پاکسا کو",
+ "right-bigdelete": "بلگه یایی که ویرگار گپی دارن پاکسا بکیت",
"right-browsearchive": "بلگه یا پاک بیه نه پی جوری کو",
"right-undelete": "ای بلگه نه حذف نكيد",
"right-suppressionlog": "دیئن پهرستنومه یا خصوصی",
+ "right-block": "کاریاریا هنی د ویرایشت منع بوئن",
+ "right-blockemail": "کاریار نه د کل کردن انجومانامه منع کو",
"right-unblockself": "خوشه قلف نکید",
"right-editinterface": "راوط کارور نه ویرایشت کو",
"right-editusercssjs": "فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو",
"right-viewmywatchlist": "سیل برگ خوتونه بوینیت",
"right-viewmyprivateinfo": "دونسمنیا شصقی خوتونه بوینیت(چی نشونی ایمیل،نوم راستکی)",
"right-editmyprivateinfo": "دونسمنیا شصقی خوتونه ویرایشت بکید(چی نشونی ایمیل،نوم راستکی)",
+ "right-editmyoptions": "اولویتیا تونه ویرایشت بکیت",
"right-importupload": "دئن بلگه یا د یه گل جانیا سوار بیه",
"right-unwatchedpages": "دیئن نوم گه بلگه یا دیئه نبیه",
"right-userrights": "حقوق همه کاروریانه ویرایشت بکید",
"action-createpage": "راس کردن بلگیا",
"action-createtalk": "بلگه یا چک چنه نه راس بکید",
"action-createaccount": "حساو ای کارور نه راس بکید",
+ "action-history": "ویرگار ای بلگه نه بوینیت",
"action-minoredit": "ای ویرایشت نه چی یه حیرده ویرایشت نشو بیئت",
"action-move": "لی بلگه جا وه جا کو",
"action-move-subpages": "ای بلگه و زیر بلگه یاشه جا وه جا بکید",
"recentchanges-label-minor": "يه ويرايشت كؤچكيه",
"recentchanges-label-bot": "ای ويرايشت نه يه بوت انجوم ديئه",
"recentchanges-label-unpatrolled": "ای ويرايشت هنی تيه واداشت نبيه",
+ "recentchanges-label-plusminus": "انازه بلگه وه شمار ای بایتیا آلشت کرده.",
"recentchanges-legend-heading": "'''میراث:'''",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنو بوینیت [[ویجه:بلگیا تازه|نوم گه بلگیا تازه]])",
"rcnotefrom": "د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)",
"uploadnologin": "وارد نبیه",
"uploadnologintext": "لطفن $1 سی سوارکرد جانیایا.",
"uploaderror": "خطا د سوار کردن",
+ "upload-permitted": "جورا جانیا مجاز:$1.",
+ "upload-preferred": "جورا جانیا مجاز:$1.",
+ "upload-prohibited": "جورا جانیا مجاز:$1.",
"uploadlogpage": "سوارکرد",
"filename": "نوم فایل",
"filedesc": "چكسته",
"filestatus": "حال و بال کپی رایت",
"filesource": "سرچشمه:",
"ignorewarnings": "د هر زنهار تیه پوشی کو",
+ "filename-toolong": "نوم جانیا شایت گپتر د 240 بایت نبا.",
"badfilename": "نوم جانیا د \"$1\" آلشت بیه.",
"empty-file": "فایلی که دئی ته حالی بیه.",
"file-too-large": "فایلی که دئی ته فره گپ بی.",
"filename-tooshort": "نوم فایل فره کؤچکه.",
+ "filetype-banned": "چنی جانیا قدقه بیه.",
"illegal-filename": "نوم فایل اجاره ندئه بیه.",
"unknown-error": "یه گل خطا نادیار ری ون کرده.",
+ "tmp-create-error": "نبوئه جانیا موقتی نه راس بکیتو.",
+ "tmp-write-error": "خطا د نیسنن جانیا موقتی.",
+ "uploadwarning": "هشدار سوارکرد",
"savefile": "جانیا نه اماییه کو",
- "uploadedimage": "سوارکرد\"[[$1]]\"",
- "overwroteimage": "یه گل نسقه تازه د \"[[$1]]\" سوار بیه",
"uploaddisabled": "سوار کردن د کار نئ.",
"copyuploaddisabled": "سوار کردن وا یو آر ال د کار نئ.",
"uploaddisabledtext": "سوار کرد فایلیا د کار نئ.",
"uploadinvalidxml": "ایکس ام الی که سوار بیه نبوئه نوتیج با.",
+ "uploadvirus": "د ای جانیا ویروس هئ!\nجزیات:$1",
"upload-source": "سرچشمه فایل",
"sourcefilename": "سرچشمه نوم جانیا:",
"sourceurl": "سرچشمه يو آر ال:",
"destfilename": "نوم فایل مقصد:",
+ "upload-maxfilesize": "بیشترونه انازه جانیا:$1",
"watchthisupload": "ای جانیا نه بوینیت",
"upload-success-subj": "سوار کرد خوش سرانجوم",
"upload-success-msg": "سوارکرد شما سی [$2] خوو بی.وه د ایچه هئش:[[:{{ns:file}}:$1]]",
"upload-failure-subj": "مشگل د سوارکردن",
"upload-failure-msg": "یه گل مشلگل د سوارکردتو سی [$2] بی:$1",
+ "upload-warning-subj": "هشدار سوارکرد",
"upload-proto-error": "پروتکل نادروس",
"upload-file-error": "خطا مینونه",
"upload-misc-error": "خطا سوار کرد ناشناخته",
"upload-too-many-redirects": "ای یو آر ال د ورگیرنه واگردونیا فرئی هئ",
+ "upload-http-error": "یه گل خطا اچ تی تی پی پیش اومائه:$1",
"upload-copy-upload-invalid-domain": "ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.",
"backend-fail-notexists": "فایل $1 وجود ناره.",
+ "backend-fail-invalidpath": "\"$1\" ره خوئی سی امائیه کردن نئ.",
"backend-fail-delete": "نبوئه جانیا $1 پاکسا بوئه",
"backend-fail-describe": "نبوئه گپ دونسمنیا سی جانیا\"$1\" آلشت بوئه.",
+ "backend-fail-alreadyexists": "جانیا \"$1\" ایسه هیئش.",
"backend-fail-store": "نبوئه جانیا \"$1\" د \"$2\" امبار بوئه.",
+ "backend-fail-copy": "نبوئه جانیا $1 د $2 ورداشته بوئه",
"backend-fail-move": "نبوئه جانیا \"$1\" د \"$2\" جا وه جا بوئه",
"backend-fail-opentemp": "نبوئه جانیا موقتی وا بوئه.",
"backend-fail-writetemp": "نبوئه د جانیا موقتی چی بنیسیت.",
+ "backend-fail-closetemp": "نبوئه جانیا موقتی بسته با.",
"backend-fail-read": "نبوئه جانیا\"$1\" حنه بوئه.",
+ "backend-fail-create": "نبوئه د جانیا\"$1\" نوشته با.",
"lockmanager-fail-closelock": "نبوئه قلف جانیا سی \"$1\" بسه بوئه.",
"lockmanager-fail-openlock": "نبوئه قلف جانیا سی \"$1\" وا بوئه.",
+ "uploadstash": "اماییه جا سوارکرد",
+ "uploadstash-clear": "پاک کردن جانیایا اماییه بیه",
+ "uploadstash-nofiles": "شما هیژ جانیا اماییه بیه ای ناریت.",
"uploadstash-refresh": "نومه گه جانیایا نه د نو تازه کو",
+ "invalid-chunk-offset": "جا وه جایی نامعتور برشت",
"img-auth-accessdenied": "دسرسی منع بی",
"img-auth-nofile": "فایل $1 وجود ناره.",
"http-invalid-url": "یو آر ال نامعتور:$1",
"license-header": "د شكل ليسانس دار بيئن",
"nolicense": "هیچی انتخاو نبیه",
"license-nopreview": "(پیش سیل د دسرس نئ)",
- "upload_source_file": "(یه گل فایل د انجومیار تو)",
+ "upload_source_file": "(یه گل جانیا د انجومیار تو انتخاو بکیت)",
"listfiles-delete": "پاکسا کردن",
"listfiles-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
"listfiles_search_for": "پی جوری سی نوم رسانه:",
"imagelinks": "استفاده د فايل",
"linkstoimage": "دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:",
"nolinkstoimage": "ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی",
- "morelinkstoimage": " [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای فایل بونیت.",
+ "morelinkstoimage": " [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای جانیا نه بونیت.",
"linkstoimage-redirect": "$1 (واگردونی جانیا) $2",
"sharedupload": "ای جانیا که د $1 هئ شایت د پروجه یا هنی استفاده بیه.",
"sharedupload-desc-here": "فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.\nتوضی دباره[$2 file description page] د هار نشو دئئه بیه",
"filepage-nofile": "چنو فایلی وا ای نوم نئ.",
"uploadnewversion-linktext": "یه گل نسقه تازه د ای جانیا سوار بکید",
"shared-repo-from": "د $1",
+ "filerevert": "د سرگرتن سی $1",
+ "filerevert-legend": "د سرگرتن جانیا",
"filerevert-comment": "دليل:",
"filerevert-submit": "ورگنین",
"filedelete": "$1 پاکسا کو",
"doubleredirects": "واگردونیا دوتایی",
"double-redirect-fixed-move": "[[$1]]جا وه جا بیه .\nوه خودکارونه وه روز بیه و ایسه وه د[[$2]] واگردونی بیه.",
"double-redirect-fixer": "تعمیر کننه واگردونی",
+ "brokenredirects": "واگردونیا بی سرانجوم",
"brokenredirectstext": "واگردونیا نهاتر د بلگه یایی که وجود نارن هوم پیوند بینه.",
"brokenredirects-edit": "ویرایشت",
"brokenredirects-delete": "پاكسا كردن",
"withoutinterwiki": "بلگه یایی که هوم پیوند زون نارن",
"withoutinterwiki-legend": "پیشون",
"withoutinterwiki-submit": "نشون دائن",
- "nbytes": "$1{{جمی:$1|كلی|بايت|بايت}}",
- "ncategories": "{{جمی:$1|دسه|دسه يا}}",
+ "fewestrevisions": "بلگه یایی که کمتری وانئری نه دارن",
+ "nbytes": "$1{{جمی:$1|بايت|بایتیا}}",
+ "ncategories": "$1{{جمی:$1|دسه|دسه يا}}",
"ninterwikis": "$1 {{جمی:$1|مئن ویکی|مئن ویکیا}}",
"nlinks": "$1 {{جمی:$1|هوم پیوند|هوم پیوندیا}}",
"nmembers": "$1 {{PLURAL:$1|اندوم|اندوميا}}",
"nmemberschanged": "$1 → $2 {{جمی:$2|اندوم|اندومیا}}",
+ "nrevisions": "$1 {{جمس:$1|وانئری|وانئریا}}",
"nviews": "$1 {{جمی:$1|دیئن|دیئنیا}}",
"nimagelinks": "$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه",
"ntransclusions": "$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه",
+ "specialpage-empty": "نتیجه ای د ای گزارشت نئ.",
"lonelypages": "بلگه یا تک منه",
"uncategorizedpages": "بلگه یا دسه بنی نبیه",
"uncategorizedcategories": "دسه یا دسه بنی نبیه",
"wantedtemplates": "قالویا حاستنی",
"mostlinked": "بلگه یا که بیشتر هوم پیوند بینه",
"mostlinkedcategories": "دسه یایی که بیشتر هوم پیوند بیه",
- "mostlinkedtemplates": "قالویایی که بیشتر هوم پیوند بینه",
+ "mostlinkedtemplates": "چوئه یایی که بیشتر هوم پیوند بینه",
"mostcategories": "بلگه یا که بیشتر دسه بنی بینه",
"mostimages": "فایلیایی که بیشتر هوم پیوند بینه",
+ "mostinterwikis": "بلگه یایی که بیشتری مینجا ویکی نه دارن",
+ "mostrevisions": "بلگه یایی که بیشتری وانئری نه دارن",
"prefixindex": "همه بلگيا وا پيشون",
"shortpages": "بلگه یا کؤچک",
"longpages": "بلگه یا گپ",
"deadendpages": "بلگه یا نابود بیئنی",
"protectedpages": "بلگه یا حفاظت بيه",
"protectedpages-noredirect": "واگردونیا قام بیه",
+ "protectedpages-timestamp": "سردیس گات",
"protectedpages-page": "بلگه",
"protectedpages-expiry": "تموم بیه آ",
"protectedpages-performer": "کارور حفاظت بیه",
"protectedpages-unknown-performer": "کارور ناشناس",
"listusers": "نوم گه کارور",
"listusers-editsonly": "فقط کاروریایی که ویرایشت می کن نشو بیه",
+ "listusers-creationsort": "سرجاخودگری د اساس گات دروس بیین",
+ "listusers-desc": "سرجاخودگری د اساس گپ د کؤچک",
+ "usereditcount": "$1{{جمی:$1|ویرایشت|ویرایشتیا}}",
"usercreated": "{{جنسیت:$3|راس بیه}}د $1 at $2",
"newpages": "بلگيا نو",
"newpages-username": "نوم كاروری:",
"booksources": "سرچشمه يل كتاو",
"booksources-search-legend": "پی جوری سی سرچشمه یا کتاو",
"booksources-go": "رو",
+ "specialloguserlabel": "انجومکار:",
"log": "نیسنن رخ ونیا",
"all-logs-page": "همه پهرستنومه یا عمومی",
"allpages": "همه بلگيا",
"nextpage": "بلگه نهایی($1)",
"prevpage": "بلگه دمایی($1)",
+ "allpagesfrom": "بلگه یای که د شرو بینه نشو بیه:",
+ "allpagesto": "بلگه یایی که د تموم بینه نشو بیه.",
"allarticles": "همه بلگيا",
+ "allinnamespace": "همه بلگه یا($1 نوم جا)",
"allpagessubmit": "رو",
+ "allpagesprefix": "بلگه یایی که پس نوم دارن نشو بیه:",
"allpagesbadtitle": "عنوان بلگه حاسته بیه معتور نی،یا یه گل مئن زونی یا مئن ویکی عنوان غلطه.\nیه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه که سی ای موضوعیا استفاده بوئن",
+ "allpages-bad-ns": "{{نوم دیارگه}} د ای نوم جا نئ \"$1\".",
"allpages-hide-redirects": "واگردونیا قام بیه",
"cachedspecial-refresh-now": "دیئن آخری.",
"categories": "دسه يا",
+ "special-categories-sort-count": "سرجاخودگری د اساس شمارشت",
+ "special-categories-sort-abc": "سرجاخودگری د اساس الفبا",
"deletedcontributions": "هومیاریا پاکسا بیه کارور",
"deletedcontributions-title": "هومیاریا پاک بیه کارور",
"sp-deletedcontributions-contribs": "هومیاریا",
+ "linksearch": "هوم پیوند پی جوری خارجی",
+ "linksearch-pat": "سازه یار پی جوری:",
"linksearch-ns": "نوم جا:",
"linksearch-ok": "پی جوری",
"linksearch-line": "$1 داره د $2 هوم پیوند بوئه",
+ "listusersfrom": "کاریاریایی که د شرو بینه نشو بیه:",
"listusers-submit": "نشو دئن",
"listusers-noresult": "هیچ کاروری پیدا نبی",
"listusers-blocked": "(قلف بيه)",
"activeusers": "نوم گه کاروریا کارکو",
+ "activeusers-from": "کاریاریایی که د شرو بینه نشو بیه:",
"activeusers-hidebots": "بوتیا قام کو",
"activeusers-hidesysops": "دیوون داریا نه قام کو",
"activeusers-noresult": "هیچ کاروری پیدا نبی",
+ "listgrouprights": "حقوق گرو کاریاری",
+ "listgrouprights-key": "Legend:\n* <span class=\"listgrouprights-granted\">دئه بیه د سمت راست</span>\n* <span class=\"listgrouprights-revoked\">انجوم شیو بیه د سمت راست</span>",
"listgrouprights-group": "دسه",
"listgrouprights-rights": "حقوقیا",
+ "listgrouprights-helppage": "هومیاری:حقوق گرو",
"listgrouprights-members": "(نوم گه اندومیا)",
+ "listgrouprights-addgroup": "{{جمی:$2|گرویا|گرویا}} اضاف بکیتو: $1",
+ "listgrouprights-removegroup": "{{جمی:$2|گرویا|گرویا}} ورداریت: $1",
"listgrouprights-addgroup-all": "همه گرویا نه اضاف کو",
"listgrouprights-removegroup-all": "همه گرویا نه وردار",
"listgrouprights-addgroup-self": " {{جمی:$2|گروه|گرویا}} نه د حساو: $1 اضاف کو",
+ "listgrouprights-removegroup-self": "{{جمی:$2|گرویا|گرویا}} نه د حساو ورداریت: $1",
+ "listgrouprights-addgroup-self-all": "همه گرویا نه د حساو خوشو اضاف بکیت",
+ "listgrouprights-removegroup-self-all": "همه گرویا نه د حساو خوشو ورداریت",
+ "listgrouprights-namespaceprotection-namespace": "نوم جا",
+ "trackingcategories-name": "نوم پیغوم",
+ "trackingcategories-disabled": "دسه ناکشتگر بیه",
"mailnologin": "هیپچ نشونی یی کل نبیه",
"emailuser": "ای كارور نه ايميل كو",
"emailuser-title-target": "ایمیل سی ای {{جنس:$1|کارور}}",
"defemailsubject": "{{نوم سیل جا}} ایمیل د کارور \"$1\"",
"usermaildisabled": "ایمیل کارور د کار افتائه",
"noemailtitle": "هیچ نشونی ایمیلی نئ",
+ "emailtarget": "یه گل نوم کاریاری سی پذریشتگر وارد بکیت",
"emailusername": "نوم كاروری:",
"emailusernamesubmit": "دئن",
"emailfrom": "د:",
"emailccsubject": " پیغومتو سی $1:$2 ورداشته بی",
"emailsent": "ایمیل کل بیه",
"emailsenttext": "پیغوم ایمیلی تو کل بیه.",
+ "usermessage-summary": "رئتن د سامونه پیغوم",
"usermessage-editor": "پیغوم فرسن سیستم",
"watchlist": "سیل برگ",
"mywatchlist": "سیل برگ",
"watchlistfor2": "سي $1 $2",
+ "nowatchlist": "شما هیچی د سیل برگ خوتو ناریت",
"watchnologin": "وارد نبیه",
+ "addwatch": "اضاف کردن د سیل برگ",
+ "removewatch": "جا وه جا کردن د سیل برگ",
+ "removedwatchtext": "بلگه\"[[:$1]]\" د [[Special:سیل برگ|سیل برگ خوتو]] جا وه جا بیه.",
+ "removedwatchtext-short": "بلگه \"$1\" د سیل برگ جا وه جا بیه.",
"watch": "سيل كردن",
"watchthispage": "ديئن ای بلگه",
"unwatch": "ديه نبيه",
"unwatchthispage": "واداشتن دیئن",
"notanarticle": "مینونه هیچ بلگه ای نئ",
+ "notvisiblerev": "آخری وانئری که د دس یه کاریار هنی انجوم بیه پاکسا بیه.",
"watchlist-details": "{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .",
"wlheader-enotif": "وارسیاری ایمیل فعال بیه.",
"wlheader-showupdated": "بلگه یایی که د آخرین کرتی که شما دشو دیئن کردیته آلشت بینه د <strong>توپر</strong>نشون دئه بینه",
"deleteotherreason": "دليليا هنی:",
"deletereasonotherlist": "دلیل هنی",
"deletereason-dropdown": "* دلیلیا پاکسا کردن رسم بیه\n** اسپم\n** خراوکاری\n** رعایت نبین کپی رایت\n** درحاست نیسنه\n** نهاورگشت شکست حرده",
+ "delete-edit-reasonlist": "دلیلیا پاکسا کردنه نه ویرایشت بکید",
"rollbacklink": "ورگشتن",
"sessionfailure-title": "شکست حردن نشینگه",
"protectlogpage": "حفاظت کردن",
"modifiedarticleprotection": "ریتراز حفاظت د \"[[$1]]\" آلشت بیه",
"protect-title": "ریتراز حفاظت د \"$1\" آلشت بیه",
"prot_1movedto2": "[[$1]] د [[$2]] جا وه جا بی",
+ "protectcomment": "دلیل:",
"protect-default": "همه کاروریا اجازه دارن",
"protect-othertime": "وخت هنی:",
+ "protect-othertime-op": "گات هنی",
+ "protect-otherreason-op": "دلیل هنی",
"protect-expiry-options": "1 ساعت:1 ساعت,1 روز:1 روز,1 هفته:1 هفته,2 هفته:2 هفته,1 ما:1 ما,3 ما:3 ما,6 ما:6 ما,1 سال:1 سال,بی حساو:بی حساو",
"restriction-type": "دسرسی:",
+ "minimum-size": "انازه کمترونه",
+ "maximum-size": "انازه بیشترونه",
+ "pagesize": "(بایتیا)",
"restriction-edit": "ويرايشت",
"restriction-move": "جاوه جا بوئيت",
"restriction-create": "راس كردن",
"whatlinkshere-filters": "فيلتريا",
"block": "منع کارور",
"blockip": "منع کارور",
+ "ipaddressorusername": "نوم نشون آی پی يا نوم كاروری:",
"ipbreason": "دليل:",
+ "ipbemailban": "نهاگرتن کاریار د کل کردن انجومانامه",
"ipbother": "وخت هنی:",
"ipboptions": "2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,بی حساو:بی حساو",
"ipbhidename": "نوم کاروری نه سی ویرایشت یا و نوم گه یا قام کو",
+ "ipb-disableusertalk": "نها ای کاریار نه اوسه که میها د بلگه چک چنه ش ویرایشت بکه و وه قلف بیه بئر",
"unblockip": "کارور منع نبیه",
"blocklist": "كاروريا منع بيه",
"ipblocklist": "كاروريا منع بيه",
"unblocklink": "بی قطی",
"change-blocklink": "اجازه نديئن سی آلشت",
"contribslink": "هومكاری",
+ "emaillink": "انجومانامه نه کل کو",
"blocklogpage": "قلف",
"blocklogentry": " [[$1]] وا یه گل وخت تموم بیئن $2 و $3 قلف بیه",
"block-log-flags-nocreate": "حساو راس کردن عاجز بیه.",
"block-log-flags-nousertalk": "نبوئه بلگه چک چنه خوتونه ویرایشت بکید",
+ "proxyblocker": "قلف کننه پروکسی",
"lockdb": "قلف کردن رسینه گا",
"unlockconfirm": "هره، مه واقعند میهام که رسینه گا وا بوئه.",
+ "lockbtn": "قلف کردن رسینه گا",
"unlockbtn": "رسینه گا قلف نبیه",
"lockdbsuccesssub": "رسینه گا د خوئی قلف بیه",
"move-page": "$1 جا وه جا کو",
+ "move-page-legend": "بلگه نه جا وه جا کو",
"movenotallowed": "شما وه جا وه جا کردن بلگه دسرسی ناریت",
"movenotallowedfile": "شما وه جا وه جا کردن جانیایا دسرسی ناریت",
"movepagebtn": "بلگه جا وه جا کو",
+ "pagemovedsub": "د خوئی جا وه جا بیه",
"movepage-moved-redirect": "یه گل واگردونی دروس بیه.",
"movelogpage": "جاوه جا کردن",
"movelogpagetext": "د هار یه گل نوم گه د جا وه جایی یا بلگه هئ",
+ "movereason": "دلیل:",
"revertmove": "لرستن",
"delete_and_move": "پاکسا و جا وه جا بوئه",
"export": "وه صحرا ديئن بلگيا",
+ "export-addcat": "اضاف کو",
+ "export-addns": "اضاف كو",
"export-download": "ذخیره کردن جانیا",
+ "export-templates": "شامل چوئه یا",
+ "allmessages": "سامونه پیغومیا",
"allmessagesname": "نوم",
"allmessagesdefault": "سفارشت متنی پيش فرض",
+ "allmessages-filter-legend": "فیلتر",
+ "allmessages-filter-all": "همه",
+ "allmessages-filter-modified": "آلشت بیه",
+ "allmessages-prefix": "فیلتر بیه وا نهاون:",
"allmessages-language": "زون:",
"allmessages-filter-submit": "رو",
+ "allmessages-filter-translate": "والرن",
"thumbnail-more": "گپ كردن",
"filemissing": "گم بیئن جانیا",
"thumbnail_error": "خطا د راس بیئن بن کلئکی:$1",
"watchlisttools-edit": "سیل برگ بوینیتو و ویرایشت بکید",
"watchlisttools-raw": "سیل برگ نه ردیفی ویرایشت کو",
"duplicate-defaultsort": "زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.",
+ "version-antispam": "نهاگرتن هرزنومه",
"version-ext-license": "ليسانس",
"version-ext-colheader-version": "نسقه",
"version-ext-colheader-license": "ليسانس",
"talkpagelinktext": "Aptarimas",
"specialpage": "Specialusis puslapis",
"personaltools": "Asmeniniai įrankiai",
- "postcomment": "Rašyti komentarą",
"articlepage": "Rodyti turinio puslapį",
"talk": "Aptarimas",
"views": "Žiūrėti",
"hidetoc": "slėpti",
"collapsible-collapse": "Sutraukti",
"collapsible-expand": "Išplėsti",
+ "confirmable-yes": "Taip",
+ "confirmable-no": "Ne",
"thisisdeleted": "Žiūrėti ar atkurti $1?",
"viewdeleted": "Rodyti $1?",
"restorelink": "$1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}",
"externaldberror": "Yra arba išorinė autorizacijos duomenų bazės klaida arba jums neleidžiama atnaujinti jūsų išorinės paskyros.",
"login": "Prisijungti",
"nav-login-createaccount": "Prisijungti / sukurti paskyrą",
- "loginprompt": "Įjunkite slapukus, jei norite prisijungti prie {{SITENAME}}.",
"userlogin": "Prisijungti / sukurti paskyrą",
"userloginnocreate": "Prisijungti",
"logout": "Atsijungti",
"searchprofile-advanced-tooltip": "Ieškoti skirtingose vardų srityse",
"search-result-size": "$1 ({{PLURAL:$2|1 žodis|$2 žodžiai|$2 žodžių}})",
"search-result-category-size": "{{PLURAL:$1|1 narys|$1 narių}} ({{PLURAL:$2|1 subkategorijoje|$2 subkategorijų}}, {{PLURAL:$3|1 failas|$3 failų}})",
- "search-result-score": "Tinkamumas: $1%",
"search-redirect": "(peradresavimas $1)",
"search-section": "(skyrius $1)",
"search-suggest": "Galbūt norėjote $1",
"uploadwarning": "Dėmesio",
"uploadwarning-text": "Prašome pakeisti failo aprašymą ir bandykite dar kartą.",
"savefile": "Išsaugoti failą",
- "uploadedimage": "įkėlė „[[$1]]“",
- "overwroteimage": "įkėlė naują „[[$1]]“ versiją",
"uploaddisabled": "Įkėlimai uždrausti",
"copyuploaddisabled": "Įkėlimas pagal URL išjungtas.",
"uploaddisabledtext": "Failų įkėlimai yra uždrausti.",
"watchlist-details": "Stebima {{PLURAL:$1|$1 puslapis|$1 puslapiai|$1 puslapių}} neskaičiuojant aptarimų puslapių.",
"wlheader-enotif": "El. pašto pranešimai yra įjungti.",
"wlheader-showupdated": "Puslapiai pakeisti nuo tada, kai paskutinį kartą apsilankėte juose, yra pažymėti '''pastorintai'''",
+ "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",
"watching": "Įtraukiama į stebimųjų sąrašą...",
"pageinfo-article-id": "Puslapio ID",
"pageinfo-language": "Puslapio turinio kalba",
"pageinfo-robot-policy": "Paieškos variklio būsena",
- "pageinfo-robot-index": "Indeksuotas",
- "pageinfo-robot-noindex": "Neindeksuotas",
+ "pageinfo-robot-index": "Leidžiama",
+ "pageinfo-robot-noindex": "Neleidžiama",
"pageinfo-views": "Peržiūrų skaičius",
"pageinfo-watchers": "Puslapio stebėtojų skaičius",
"pageinfo-redirects-name": "Nukreipimai į šį puslapį",
"duplicate-defaultsort": "Įspėjimas: Numatytasis rikiavimo raktas „$2“ pakeičia ankstesnį numatytąjį rikiavimo raktą „$1“.",
"version": "Versija",
"version-extensions": "Įdiegti priedai",
+ "version-skins": "Išvaizda",
"version-specialpages": "Specialieji puslapiai",
"version-parserhooks": "Analizatoriaus gaudliai",
"version-variables": "Kintamieji",
"version-antispam": "Apsauga nuo šlamšto",
- "version-skins": "Išvaizda",
"version-other": "Kita",
"version-mediahandlers": "Daugialypės terpės grotuvai",
"version-hooks": "Gaudliai",
"version-hook-name": "Gaudlio pavadinimas",
"version-hook-subscribedby": "Užsakyta",
"version-version": "(Versija $1)",
- "version-license": "Licencija",
+ "version-license": "MediaWiki licencija",
"version-poweredby-credits": "Šis projektas naudoja '''[https://www.mediawiki.org/ MediaWiki]''', autorystės teisės © 2001-$1 $2.",
"version-poweredby-others": "kiti",
"version-credits-summary": "Už indėlį kuriant [[Special:Version|MediaWiki]] dėkojame",
"talkpagelinktext": "sprīža",
"specialpage": "Specialuo puslopa",
"personaltools": "Muni reiki",
- "postcomment": "Dalikt komentaru",
"articlepage": "Apsavērt rakstīņu",
"talk": "Sprīža",
"views": "Vierīņi",
"uploadbtn": "Īsyuteit failu",
"uploadlogpage": "Davīnuotūs failu registrs",
"savefile": "Izglobuot failu",
- "uploadedimage": "davīnuots \"[[$1]]\"",
"license": "Liceņceja:",
"license-header": "Liceņceja",
"imgfile": "fails",
"talkpagelinktext": "Sawihona",
"specialpage": "Vohbik phek",
"personaltools": "Mimal hmanruate",
- "postcomment": "Thuhlawm thar",
"articlepage": "A chhungthu enna",
"talk": "Sawihona",
"views": "Thlirna",
"externaldberror": "Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.",
"login": "Luhna",
"nav-login-createaccount": "Luhna / siangchan siamna",
- "loginprompt": "{{SITENAME}}-a lût tùrin cookie i zuah zalen a ngai.",
"userlogin": "Luhna/Siangchan siamna",
"userloginnocreate": "Inziah luhna",
"logout": "Chhuahna",
"searchprofile-advanced-tooltip": "Hminghmun thlansa-ah zawng rawh",
"search-result-size": "$1 ({{PLURAL:$2|Thumal 1 |Thumal $2 }})",
"search-result-category-size": "{{PLURAL:$1|Tel 1 |Tel $1 }} ({{PLURAL:$2|Pawlpéng 1 |Pawlpéng $2}}, {{PLURAL:$3|Taksa 1 |Taksa $3 f}})",
- "search-result-score": "Intûkna: $1%",
"search-redirect": "($1 aţanga hruailuh)",
"search-section": "(hlawm $1)",
"search-suggest": "$1 i tihna a ni a ni zawk em?",
"largefileserver": "Hë taksa hi rawngbawltu phaltir zât aia ritsak a ni.",
"windows-nonascii-filename": "Hë wiki hian taksahminga chhinchhiahna bîk tel a pawm thei lo.",
"savefile": "Taksa dahṭhatna",
- "uploadedimage": "hlankai: \"[[$1]]\"",
"uploadvirus": "I taksa hlànkài tumin hrik a päi!\nChanchin kimchang: $1",
"upload-source": "Hnar taksa",
"sourcefilename": "Hnar taksahming:",
"searchprofile-advanced-tooltip": "Izvēlēties nosaukumvietas, kurās meklēt",
"search-result-size": "$1 ({{PLURAL:$2|1 vārds|$2 vārdi}})",
"search-result-category-size": "$1 {{PLURAL:$1|apakšelements|apakšelementi}} ($2 {{PLURAL:$2|apakškategorija|apakškategorijas}}, $3 {{PLURAL:$3|fails|faili}})",
- "search-result-score": "Atbilstība: $1%",
"search-redirect": "(pāradresēts no $1)",
"search-section": "(sadaļa $1)",
"search-file-match": "(atbilst faila saturam)",
"powersearch-togglelabel": "Pārbaudīt:",
"powersearch-toggleall": "Viss",
"powersearch-togglenone": "Neviena",
+ "powersearch-remember": "Atcerēties izvēli turpmākajā meklēšanā",
"search-external": "Ārējā meklēšana",
"searchdisabled": "Meklēšana {{grammar:lokatīvs|{{SITENAME}}}} šobrīd ir atslēgta darbības traucējumu dēļ.\nPagaidām vari meklēt, izmantojot Google vai Yahoo.\nŅem vērā, ka meklētāju indeksētais {{grammar:ģenitīvs|{{SITENAME}}}} saturs var būt novecojis.",
"preferences": "Izvēles",
"uploadwarning": "Augšupielādes brīdinājums",
"uploadwarning-text": "Lūdzu, pārveido zemāk esošo faila aprakstu un mēģini vēlreiz.",
"savefile": "Saglabāt failu",
- "uploadedimage": "augšupielādēja \"[[$1]]\"",
- "overwroteimage": "augšupielādēta jauna \"[[$1]]\" versija",
"uploaddisabled": "Augšupielāde atslēgta",
"copyuploaddisabled": "URL augšupielādes nav atļautas.",
"uploaddisabledtext": "Failu augšupielāde ir atslēgta.",
"Xiaomingyan",
"Yanteng3",
"아라",
- "LNDDYL"
+ "LNDDYL",
+ "Jason924tw"
]
},
"tog-underline": "鏈墊線:",
"history_short": "誌",
"updatedmarker": "新也",
"printableversion": "印本",
- "permalink": "æ\81\86é\8f\88",
+ "permalink": "æ\81\86é\80\9a",
"print": "印",
"view": "察",
"edit": "纂",
"copyright": "文奉$1行。",
"copyrightpage": "{{ns:project}}:版權",
"currentevents": "世事",
- "currentevents-url": "Project:世事",
+ "currentevents-url": "Wikipedia:世事",
"disclaimers": "免責宣",
"disclaimerpage": "Project:免責宣",
"edithelp": "助纂塾",
"revertmerge": "悔併",
"mergelogpagetext": "下乃近頁之誌併至二頁之表也。",
"history-title": "$1之誌",
- "difference-title": "$1各本之异",
+ "difference-title": "$1各本之異",
"difference-title-multipage": "$1、$2之异",
"difference-multipage": "(辨頁)",
"lineno": "第$1行:",
"shown-title": "每頁示 $1",
"viewprevnext": "見($1 {{int:pipe-separator}} $2)($3)",
"searchmenu-exists": "'''在此wiki中有頁為\"[[:$1]]\"。'''",
- "searchmenu-new": "'''在此wiki上建頁\"[[:$1]]\"!'''",
+ "searchmenu-new": "'''在此共筆上建頁\"[[:$1]]\"!'''",
"searchprofile-articles": "容",
"searchprofile-images": "媒",
"searchprofile-everything": "全",
"searchprofile-advanced-tooltip": "自定名集中尋",
"search-result-size": "$1 ($2字)",
"search-result-category-size": "{{PLURAL:$1|一員|員有$1}}({{PLURAL:$2|一子類有|子類有$2}},{{PLURAL:$3|檔有一|檔有$3}})",
- "search-result-score": "關:$1%",
"search-redirect": "(轉 $1)",
"search-section": "(節 $1)",
"search-suggest": "爾否解之:$1",
"recentchanges-label-minor": "此乃細纂",
"recentchanges-label-bot": "此乃機纂",
"recentchanges-label-unpatrolled": "是纂未巡",
- "recentchanges-legend-newpage": "$1 - 新頁",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}}([[Special:NewPages|新灶]])",
"rcnotefrom": "下為自'''$2'''至'''$1'''之易也。",
"rclistfrom": "自$3 $2起之易也",
"rcshowhideminor": "$1校",
"uploadwarning": "慎焉!",
"uploadwarning-text": "改下檔述再試之。",
"savefile": "存之",
- "uploadedimage": "進獻\"[[$1]]\"",
- "overwroteimage": "新置「[[$1]]」矣",
"uploaddisabled": "進獻已阻",
"copyuploaddisabled": "由URL之貢被禁也。",
"uploaddisabledtext": "檔之貢被禁也。",
"unusedtemplates": "墨乾",
"unusedtemplatestext": "此表閒模,篤刪前惠考支鏈。",
"unusedtemplateswlh": "支鏈",
- "randompage": "風掀",
+ "randompage": "清風翻書",
"randompage-nopages": "下列{{PLURAL:$2|名集}}中無頁也:$1",
"randomincategory-selectcategory-submit": "往",
"randomredirect": "任渡",
"mostcategories": "跨船",
"mostimages": "名檔",
"mostrevisions": "屢審",
- "prefixindex": "以é\8f\88å¤\96æ\9f¥",
+ "prefixindex": "ä¾\9då\90\8dç´¢å¼\95",
"shortpages": "短篇",
"longpages": "長言",
"deadendpages": "此無路也",
"namespace": "名冊:",
"invert": "反相",
"blanknamespace": "主",
- "contributions": "{{GENDER:$1|簿}} 之功績",
+ "contributions": "功績",
"contributions-title": "$1之功績",
"mycontris": "吾績",
"contribsub2": "$1勛($2)",
"spambot_username": "MediaWiki清濫",
"spam_reverting": "還新審之無鏈$1者。",
"spam_blanking": "審皆鏈$1,遂令白頁。",
+ "pageinfo-header-restrictions": "頁錮",
"pageinfo-toolboxlink": "文訊",
"markaspatrolleddiff": "派哨",
"markaspatrolledtext": "哨此報",
"recentchangeslinked-to": "Na niçinen butʼkʼa yeine na niçinen butʼkʼaşa kʼontʼaktʼi meçameri na renan butʼkʼape ko3ʼiri",
"upload": "Dosya doloxe kamaxvi",
"uploadlogpage": "Dosya oncğonu kʼayitʼepe",
- "uploadedimage": "Siteşa na incğonen resimi: \"[[$1]]\"",
"license-header": "Lisans",
"file-anchor-link": "Dosya",
"filehist": "Dosyaşi tarixi",
"Rillke",
"Umeshberma",
"Vinitutpal",
- "아라"
+ "아라",
+ "बिप्लब आनन्द"
]
},
"tog-underline": "लिंककेँ रेखांकित करू:",
"tog-hidepatrolled": "सन्निकट परिवर्त्तनमे छोट परिवर्त्तन नुकाऊ",
"tog-newpageshidepatrolled": "नियंत्रित सम्पादनकेँ नव पन्ना सूचीसँ नुकाऊ",
"tog-extendwatchlist": "ध्यानसूचीमे सभ परिवर्तन देखाऊ,खाली हालक परिवर्तन नै",
- "tog-usenewrc": "नà¥\80à¤\95 सनà¥\8dनिà¤\95à¤\9f परिवरà¥\8dतà¥\8dतन पà¥\8dरयà¥\8bà¤\97 à¤\95रà¥\82 (à¤\9cावासà¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\9aाहà¥\80)",
+ "tog-usenewrc": "नीक सन्निकट परिवर्तन प्रयोग करू (जावास्क्रिप्ट चाही)",
"tog-numberheadings": "शीर्षक स्वयं-क्रमांकित करू",
"tog-showtoolbar": "संपादन ओजारपेटी देखाऊ (जावास्क्रीप्ट)",
"tog-editondblclick": "दू बेर क्लीक कए पन्ना संपादित करू (जावास्क्रीप्ट)",
"tog-watchdefault": "हमर संपादित पृष्ठ हमर साकांक्ष सूचीमे देखाऊ",
"tog-watchmoves": "हमरा द्वारा हटाओल पृष्ठ हमर साकांक्ष सूचीमे राखू",
"tog-watchdeletion": "हमरा द्वारा हटाओल पृष्ठ हमर साकांक्ष सूचीमे राखू",
+ "tog-watchrollback": "हमरा द्वारा जोडलगेल पृष्ठ हमार सांकक्ष सूचीमे राखू",
"tog-minordefault": "हमर सभ सम्पादन पूर्वन्यस्त रूपेँ मामूली कहू",
"tog-previewontop": "संपादन पेटीक ऊपर दृश्य देखाऊ",
"tog-previewonfirst": "पहिल सम्पादनक बाद पूर्वावलोकन देखाउ",
"tog-diffonly": "फाइल-अन्तर प्रणालीक नीचाँ पन्नाक सामिग्री नै देखाउ",
"tog-showhiddencats": "नुकाएल संवर्ग देखाउ",
"tog-norollbackdiff": "प्रत्यावर्तनक बाद फाइल-अन्तर प्रणालीकेँ बिसरू",
+ "tog-useeditwarning": "जब हम कोनो संपादन पृष्ठके बिना सुरक्षित केनै बदलाव संग छोइड दि त हमरा सूचित करु ।",
+ "tog-prefershttps": "सम्प्रवेशित करलाक बाद सदैव सुरक्षित कनेक्शनके प्रयोग करु",
"underline-always": "सदिखन",
"underline-never": "कखनो नै",
"underline-default": "पूर्वन्यस्त गवेषक",
"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",
"pagecategories": "{{PLURAL:$1|खाढी|कएटा खाढी}}",
"category_header": "संवर्ग \"$1\" मे पन्ना सभ",
"subcategories": "उपसंवर्ग",
"newwindow": "(नव खिड़कीसँ खुजैछ)",
"cancel": "समाप्त",
"moredotdotdot": "आर...",
+ "morenotlisted": "ई पुरा सूची नै अछी ।",
"mypage": "हमर पन्ना",
"mytalk": "वार्त्ता",
"anontalk": "ऐ अनिकेत पता लेल विमर्श",
"actions": "क्रिया सभ",
"namespaces": "चेन्हासी समूह सभ",
"variants": "प्रकार सभ",
+ "navigation-heading": "दिक्चालन सूची",
"errorpagetitle": "गलती",
"returnto": "$1 पर घुरु।",
"tagline": "कतयसँ {{SITENAME}}",
"permalink": "स्थायी लिंक",
"print": "छापू",
"view": "देखू",
+ "view-foreign": "$1 पर देखु",
"edit": "संपादन",
+ "edit-local": "स्थानीय विवरण संपादन",
"create": "बनाउ",
+ "create-local": "स्थानीय विवरण निर्माण",
"editthispage": "एहि पृष्ठक संपादन",
"create-this-page": "ई पन्ना बनाउ",
"delete": "मेटाउ",
"deletethispage": "ई पन्ना मेटाउ",
+ "undeletethispage": "ई पन्ना मेटाउ",
"undelete_short": "आपस आनू {{PLURAL:$1|एक सम्पादनt|$1 सम्पादन सभ}}",
"viewdeleted_short": "देखू {{PLURAL:$1|एकटा मेटाएल सम्पादन|$1 मेटाएल सम्पादन सभ}}",
"protect": "बचाउ",
"talkpagelinktext": "कहू",
"specialpage": "विशेष पन्ना",
"personaltools": "व्यक्तिगत उपकरण",
- "postcomment": "नव खण्ड",
"articlepage": "विषय-सूची पन्ना देखू",
"talk": "वार्तालाप",
"views": "दृष्टि",
"jumptonavigation": "हेलू",
"jumptosearch": "ताकू",
"view-pool-error": "दुखी छी, वितरक सभ एखन व्यस्त अछि।\nबड्ड बेशी लोक ऐ पन्नाकेँ देखबामे लागल छथि।\nऐ पन्नाकेँ फेरसँ देखबा लेल कनी बिलमू। \n$1",
+ "generic-pool-error": "दुखी छी, वितरक सभ एखन व्यस्त अछि।\nबड्ड बेशी लोक ऐ पन्नाकेँ देखबामे लागल छथि।\nऐ पन्नाकेँ फेरसँ देखबा लेल कनी बिलमू। \n$1",
"pool-timeout": "प्रतीक्षा निगृहीत कालावसान",
"pool-queuefull": "प्रतीक्षा-पाँती पौती भरल",
"pool-errorunknown": "अज्ञात भ्रम",
+ "pool-servererror": "पूल काउंटर सेवा उपलब्ध नै अछि ($1)।",
"aboutsite": "विषयमे {{SITENAME}}",
"aboutpage": "Project:विवरण",
"copyright": "$1क अंतर्गत विषय सूची उपलब्ध अछि",
"backlinksubtitle": "← $1",
"retrievedfrom": "प्राप्ति स्थल \"$1\"",
"youhavenewmessages": "अहाँ लग अछि $1 ($2).",
+ "youhavenewmessagesfromusers": "अहाके लेल {{PLURAL:$3|एक अन्य सदस्य|$3 अन्य सदस्यसभ}} के $1 छि । ($2)",
+ "youhavenewmessagesmanyusers": "अहाके $1 छि । ($2)",
+ "newmessageslinkplural": "{{PLURAL:$1|एगो नया पत्र|999=नया पत्र}}",
+ "newmessagesdifflinkplural": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तन सभ}}",
"youhavenewmessagesmulti": "$1 पर अहाँ लेल नव सन्देश अछि",
"editsection": "संपादन करू",
"editold": "सम्पादित करू",
"hidetoc": "नुकाऊ",
"collapsible-collapse": "भखड़ाउ",
"collapsible-expand": "बढ़ाउ",
+ "confirmable-confirm": "कि {{GENDER:$1|अहाँ}} छी?",
+ "confirmable-yes": "हँ",
+ "confirmable-no": "नै",
"thisisdeleted": "देखू वा जाउ $1?",
"viewdeleted": "देखू $1?",
"restorelink": "{{PLURAL:$1|एकटा मेटाएल सम्पादन|$1 मेटाएल सम्पादन सभ}}",
"nospecialpagetext": "<strong> अहाँ एकटा अमान्य पन्नाक आग्रह केने छी। </strong>\nमान्य विशेष पन्नाक सूची एतए अछि [[Special:SpecialPages|{{int:specialpages}}]]।",
"error": "भ्रम",
"databaseerror": "दत्तनिधि भ्रम",
+ "databaseerror-text": "डाटाबेस अनुरोध त्रुटि भेल अछि।\nसंभवतः सफ्टवेयरमे गड़बड़ी अछि।",
+ "databaseerror-textcl": "डाटाबेस अनुरोध त्रुटि भेल अछि।",
+ "databaseerror-query": "अनुरोध: $1",
+ "databaseerror-function": "फंक्सन: $1",
+ "databaseerror-error": "त्रुटि: $1",
"laggedslavemode": "'''चेतौनी:''' पन्नापर सम्भव जे अद्यतन परिवर्तन नै हुअए।",
"readonly": "दत्तनिधि प्रतिबन्धित",
"enterlockreason": "प्रतिबन्ध लेल कारण बताउ, संगमे एकटा अंदाज सेहो बताउ जे कखन ई प्रतिबन्ध हटाएल जाएत।",
"badarticleerror": "ई क्रिया ऐ पन्नापर नै कएल जा सकैए।",
"cannotdelete": "पन्ना व संचिका \"$1\" मेटाएल नै जा सकल।",
"cannotdelete-title": "पन्ना \"$1\" नै मेटा सकल",
+ "delete-hook-aborted": "सम्पादन नोकसीसँ खतम भेल।\nई कोनो कारण नै देलक।",
"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": "ऐ पन्नाक नवीनीकरण अखन बन्न अछि।\nएतुक्का दत्तांश अखन नवीकरण नै कएल जाएत।",
"viewsource": "जड़ि देखू",
"namespaceprotected": "अहाँकेँ '''$1''' नाम-पेटारमे सम्पादनक अनुमति नै अछि।",
"customcssprotected": "अहांकें ऐ सी.एस.एस.पन्नाकें सम्पादित करबाक अधिकार नै अछि, कारण ऐमे दोसर प्रयोक्ताक व्यक्तिगत विकल्प छै।",
"customjsprotected": "अहांकें ऐ जावास्क्रिप्ट पन्नाकें सम्पादित करबाक अधिकार नै अछि, कारण ऐमे दोसर प्रयोक्ताक व्यक्तिगत विकल्प छै।",
+ "mycustomcssprotected": "अहाके लेल ई CSS पन्नाके सम्पादित करवाक अधिकार नै अछि।",
+ "mycustomjsprotected": "अहके लेल इ जावास्क्रिप्ट पन्नाके सम्पादित करवाक अधिकार नै अछि।",
+ "myprivateinfoprotected": "अहाके अपन व्यक्तिगत जानकारी बदलैक अनुमति नै अछि।",
+ "mypreferencesprotected": "अहाके अपन प्राथमिकता बदलैक अनुमति नै अछि।",
"ns-specialprotected": "विशेष पन्ना सभकेँ सम्पादित नै कएल जा सकैए।",
"titleprotected": "ऐ शीर्षकक निर्माण प्रतिबन्धित अछि [[User:$1|$1]] द्वारा।\nकारण एतऽ देल अछि \"''$2''\"।",
+ "filereadonlyerror": "\"$1\" फाइलके बदलैलेल अक्षम कियाक भण्डार \"$2\" इ समय 'मात्र पाठन के लेल' (रीड ओनली) अछि।\n\nजे प्रबंधक इ प्रबंध लगोनै अछि हुनका निम्न विवरण प्रदान कएल गेल अछि: \"$3\"।",
+ "invalidtitle-knownnamespace": "\"$2\" नामस्थान आर \"$3\" नाम बला गलत शीर्षक",
+ "invalidtitle-unknownnamespace": "अज्ञात नामस्थान संख्या $1 आर नाम \"$2\" वाला गलत शीर्षक",
+ "exception-nologin": "सम्प्रवेशित नै",
+ "exception-nologin-text-manual": "इ पन्ना वा काजके सक्षम करवाक लेल कृपया $1 करु।",
"virus-badscanner": "खराप विन्यास: अज्ञात विषविधि बिम्बक: ''$1''",
"virus-scanfailed": "बिम्ब विफल (विध्यादेश $1)",
"virus-unknownscanner": "अज्ञात विषविधि निरोधक",
"logouttext": "'''अहाँ निष्क्रमण कऽ गेल छी।'''\n\nअहाँ {{अन्तर्जाल}} प्रयोग अनाम भऽ कऽ सकै छी, वा अहाँ <span class='plainlinks'>[$1 log in again]</span> वएह आकि कोनो आन प्रयोक्ताक रूपमे सेहू प्रयोक कऽ सकै छी।\nई मोन राखू जे किछु पन्ना एना देखा पड़ि सकैए जेना अहाँ अखनो सम्प्रवेशित होइ, जावत अहाँ अपन गवेषकक उपस्मृति मेटा नै दै छी।",
+ "welcomeuser": "अहाके स्वागत अछि, $1!",
+ "welcomecreation-msg": "अहाके खाता बनावोल गेल अछि ।\nअपन [[Special:Preferences|{{SITENAME}} प्राथमिकतासभ]] बदलैल नै बिसरब।",
"yourname": "प्रयोक्ता:",
+ "userlogin-yourname": "प्रयोक्ता:",
+ "userlogin-yourname-ph": "अपन प्रयोक्तानाम लिखु",
+ "createacct-another-username-ph": "एकटा प्रयोक्तानाम लिखू:",
"yourpassword": "कूटशब्द:",
+ "userlogin-yourpassword": "कूटशब्द:",
+ "userlogin-yourpassword-ph": "अपन कूटशब्द लिखु",
+ "createacct-yourpassword-ph": "कूटशब्द ई ठाम राखु",
"yourpasswordagain": "कूटशब्द फेरसँ टाइप करू:",
+ "createacct-yourpasswordagain": "कूटशब्दके जाँच करु",
+ "createacct-yourpasswordagain-ph": "कूटशब्द पुनः लिखु",
"remembermypassword": "हमर सम्प्रवेश ऐ गवेषकपर मोन राखू (बेशीसँ बेशी $1 {{PLURAL:$1|दिन|दिन}})",
+ "userlogin-remembermypassword": "हमरा सम्प्रवेशित राखु",
+ "userlogin-signwithsecure": "सुरक्षित कनेक्शनके प्रयोग करु",
"yourdomainname": "अहाँक प्रभावक्षेत्र:",
+ "password-change-forbidden": "अहा इ विकिमे कूटशब्द नै बदल सकैत छि ।",
"externaldberror": "खाहे सत्यापन दतांश भ्रम छल वा अहाँ अपन बाह्य खाताकेँ अद्यतन करबामे असमर्थ छी।",
"login": "सम्प्रवेश",
"nav-login-createaccount": "सदस्य लॉग इन",
- "loginprompt": "{{अन्तर्जाल}} सम्प्रवेश लेल अहाँकेँ आवश्यक रूपेँ ज्ञापक सक्रिय करबाक चाही।",
"userlogin": "लॉग इन / खेसरा बनाऊ",
"userloginnocreate": "सम्प्रवेश",
"logout": "निष्क्रमण",
"userlogout": "फेर आयब",
"notloggedin": "सम्प्रवेशित नै छी",
+ "userlogin-noaccount": "खाता नै अछि?",
+ "userlogin-joinproject": "{{SITENAME}} से जोडु",
"nologin": "खाता नै अछि? $1।",
"nologinlink": "नव खाता खोलू",
"createaccount": "खाता खोली",
"gotaccount": "पहिनहियेसँ खाता अछि? $1",
"gotaccountlink": "सम्प्रवेश",
"userlogin-resetlink": "अपन सम्प्रवेश विवरण बिसरि गेलहुँ?",
+ "userlogin-resetpassword-link": "अपन कूटशब्द बिसर गेलौ ?",
+ "userlogin-helplink2": "सम्प्रवेशित करवाकलेल मदत",
+ "userlogin-loggedin": "अहा {{GENDER:$1|$1}} के रूपमे पहिले स सम्प्रवेशित छि।\nकोनो दोसर सदस्यके रुपमे सम्प्रवेशित करवाक लेल देल गेल फारमके प्रयोग करु।",
+ "userlogin-createanother": "दोसर खाता बनाउ",
+ "createacct-emailrequired": "ई-पत्र संकेत",
+ "createacct-emailoptional": "ई-पत्र संकेत (वैकल्पिक)",
+ "createacct-email-ph": "अपन ई-पत्र संकेत सत्यापित करू",
+ "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": "{{SITENAME}} अहि जोका लोकनिसभ द्वारा बनावल गेल अछि।",
+ "createacct-benefit-body1": "$1 {{PLURAL:$1|सम्पादन|सम्पादन सभ}}",
+ "createacct-benefit-body2": "{{PLURAL:$1|पन्ना}}",
+ "createacct-benefit-body3": "{{PLURAL:$1|योगदानकर्ता}}",
"badretype": "कूटशब्द जे अहाँ भरलहुँ से मेल नै खाइए।",
"userexists": "सम्प्रवेशित प्रयोक्तानाम पहिनहियेसँ प्रयोगमे अछि।\nकृपा कऽ कोनो दोसर नाम चुनू।",
"loginerror": "सम्प्रवेश भ्रम",
+ "createacct-error": "खाता निर्माण त्रुटि",
"createaccounterror": "खाता नै बना सकल: $1",
"nocookiesnew": "प्रयोक्ता खाता खुजि गेल, मुदा अहाँ सम्प्रवेशित नै छी।\n{{अन्तर्जाल}} सम्प्रवेशित प्रयोक्ताक लेल ज्ञापकक प्रयोग करैत अछि।\nअहाँ ज्ञापककेँ अशक्त केने छी।\nकृपा कऽ ओकरा सक्रिप करू, तखन अपन प्रयोक्तानाम आ कूटशब्दक संग सम्प्रवेश करू।",
"nocookieslogin": "{{अन्तर्जाल}} प्रयोक्ताकेँ सम्प्रवेशित करबा लेल ज्ञापकक प्रयोग करैत अछि।\nअहाँ ज्ञापककेँ अशक्त केने छी।\nकृपा कऽ ओकरा सक्रिय करू आ फेरसँ प्रयास करू।",
"emailconfirmlink": "अपन ई-पत्र संकेत सत्यापित करू",
"invalidemailaddress": "अमान्य प्रारूपक कारण ऐ ई-पत्र संकेतकेँ स्वीकार नै कएल जा सकैए।\nएकटा मान्य ई-पत्र संकेत लिखू वा ओइ स्थानकेँ खाली करू।",
"cannotchangeemail": "खाता ई-पत्र संकेत ऐ विकीपर बदलल नै जा सकैए।",
+ "emaildisabled": "ई साइट ई-पत्र नै पठाएत।",
"accountcreated": "खाता खुजि गेल",
"accountcreatedtext": "$1 लेल प्रयोक्ता खाता खुजि गेल।",
"createaccount-title": "{{अन्तर्जाल}} लेल खाता निर्माण",
"login-abort-generic": "अहाँक सम्प्रवेश सफल नै भेल- खतम",
"loginlanguagelabel": "भाषा : $1",
"suspicious-userlogout": "अहाँक निष्क्रमणक अनुरोध नै मानल गेल कारण ई लागल जे ई पुरान गवेषकक लागि वा दोसराइत उपस्मृति द्वारा पठाओल गेल छल।",
+ "createacct-another-realname-tip": "मूल नाम वैकल्पिक अछि।\nजँ अहाँ एकरा देबा लेल प्रयोग करै छी, ई अहाँकेँ काजक श्रेय देबा लेल एकर प्रयोग कएल जाएत।",
+ "pt-login": "सम्प्रवेश",
+ "pt-login-button": "सम्प्रवेश",
+ "pt-createaccount": "खाता खोली",
+ "pt-userlogout": "निष्क्रमण",
"php-mail-error-unknown": "पी.एच.पी.क संदेश कार्य() मे अज्ञात दोष",
"user-mail-no-addy": "बिन ई-पत्र संकेतक ई-पत्र पठेबाक प्रयास",
+ "user-mail-no-body": "एकटा खाली वा बहुत कनिका ई-पत्र भेजवाक प्रयास कल गेल ।",
"changepassword": "कूटशब्द बदलू",
- "resetpass_announce": "अहाँ अस्थायी ई-पत्र विध्यादेशसँ सम्प्रवेश केने छी।\nसम्प्रवेश सम्पूर्ण करबा लेल, अहाँ एकटा नव कूटशब्द एतए निर्धारित करू:",
+ "resetpass_announce": "अहाँक अस्थायी ई-पत्र विध्यादेशसँ सम्प्रवेश केने छी।\nसम्प्रवेश सम्पूर्ण करबा लेल, अहाँ एकटा नव कूटशब्द एतए निर्धारित करू:",
"resetpass_text": "<!-- पाठ एतऽ लिखू -->",
"resetpass_header": "खाता कूटशब्द बदलू",
"oldpassword": "पुरान कूटशब्द",
"newpassword": "नव कूटशब्द",
"retypenew": "नव कूटशब्द फेरसँ टंकित करू",
"resetpass_submit": "कूटशब्द बनाउ आ सम्प्रवेश करू",
- "changepassword-success": "अहाँक कूटशब्द सफलतासँ बदलि देल गेल!\nआब अहाँकेँ सम्प्रवेशित कऽ रहल छी...",
+ "changepassword-success": "अहाँक कूटशब्द सफलतासँ बदलि देल गेल!",
+ "changepassword-throttled": "अहाँ ढ़ेर रास सम्प्रवेश प्रयास केलहुँ।\nफेर प्रयास करबासँ पहिने कने काल थम्हू।",
"resetpass_forbidden": "कूटशब्द सभ नै बदलल जा सकैए।",
"resetpass-no-info": "अहाँकेँ ऐ पन्नाकेँ पढ़बाले सम्प्रवेशित हुअए पड़त।",
"resetpass-submit-loggedin": "कूटशब्द बदलू",
"resetpass-wrong-oldpass": "अमान्य अस्थायी वा अखुनका कूटशब्द।\nअहाँ पहिनहिये सफलतासँ कूटशब्द बदलि लेने छी वा एकटा नव अस्थायी कूटशब्द लेल आग्रह केने छी।",
"resetpass-temp-password": "तात्कालिक कूटशब्द",
"passwordreset": "कूटशब्द फेरसँ बनाउ",
+ "passwordreset-text-one": "अपन कूटशब्द रीसेट करवाक लेल इ फारम भरु ।",
+ "passwordreset-text-many": "{{PLURAL:$1|ई-पत्रके माध्यमसऽ एकटा अस्थायी कूटशब्द पावैलेल कोनो एकटा डिब्बा भरु ।}}",
"passwordreset-legend": "कूटशब्द फेरसँ बनाउ",
"passwordreset-disabled": "कूटशब्द फेरसँ बनाएब ऐ विकीपर अक्षम कएल अछि।",
+ "passwordreset-emaildisabled": "कूटशब्द फेरसँ बनाएब ऐ विकीपर अक्षम कएल अछि।",
"passwordreset-username": "प्रयोक्तानाम",
"passwordreset-domain": "क्षेत्र:",
"passwordreset-capture": "परिणाम ई-पत्र देखू?",
"changeemail-oldemail": "अखुनका ई-पत्र संकेत:",
"changeemail-newemail": "नव ई-पत्र संकेत:",
"changeemail-none": "(कोनो नै)",
+ "changeemail-password": "अहाके {{SITENAME}} कूटशब्द:",
"changeemail-submit": "ई-पत्र संकेत बदलू",
"changeemail-cancel": "खतम",
+ "changeemail-throttled": "अहाँ ढ़ेर रास सम्प्रवेश प्रयास केलहुँ।\nफेर प्रयास करबासँ पहिने कने काल थम्हू।",
+ "resettokens": "टोकन रीसेट करी",
+ "resettokens-no-tokens": "रीसेट करवाक लेल कोनो टोकन नै अछि।",
+ "resettokens-legend": "टोकन रीसेट करी",
+ "resettokens-tokens": "टोकन:",
+ "resettokens-token-label": "$1 (वर्तमान मूल्य: $2)",
+ "resettokens-done": "टोकन रीसेट भेल अछि।",
+ "resettokens-resetbutton": "छानल टोकन रीसेट करु",
"bold_sample": "गँहीर लेखन",
"bold_tip": "गँहीर लेखन",
"italic_sample": "कटि लेखन",
"updated": "(अद्यतन कएल)",
"note": "'''टिप्पणी:'''",
"previewnote": "'''मोन राखू ई मातर पूर्वावलोकन छी।'''\nअहाँक परिवर्तन अखन धरि सँचिआएल नै गेल अछि!",
+ "continue-editing": "संपादन क्षेत्र जाउ",
"previewconflict": "ई पूर्वदृश्य देखबैए उपरका सम्पादन क्षेत्रक पाठ , ई आएत जखन अहाँ संरक्षित करब।",
"session_fail_preview": "''' दुखी छी! अहाँक सत्रक दत्तांश खतम भऽ गेल तै कारणसँ अहाँक सम्पादनक निपटारा नै भऽ सकल।'''\nफेरसँ प्रयास करू।\nजँ ई फेरसँ काज नै करैए, प्रयोग करू [[Special:UserLogout|निष्क्रमण]] आ फेर सम्प्रवेश करू।",
"session_fail_preview_html": "''' दुखी छी! हम अहाँक सम्पादनक निष्पादन नै कऽ सकलहुँ कारण सत्रक दत्तांश खतम भऽ गेल।'''\n''कारण {{अन्तर्जाल}} लग काँच एच.टी.एम.एल. दत्तांश सक्रिय छै, पूर्वदृश्य जावास्क्रिप्ट आक्रमणक डरसँ नुकाएल राखल गेल अछि।''\n'''जँ ई वैध सम्पादन प्रयास अछि, कृपा कऽ पुनः प्रयास करू।'''\nजँ ई अखनो काज नै कऽ रहल अछि, प्रयास करू [[Special:UserLogout|निष्क्रमण कऽ रहल छी]] आ फेरसँ सम्प्रवेश।",
"token_suffix_mismatch": "'''अहाँक सम्पादन अस्वीकार कऽ देल गेल अछि कारण अहाँक ग्राहक प्रेष्यमान अंक विधानक विराम चेन्ह सभकेँ नष्ट कऽ देलन्हि।'''\nई सम्पादन पन्नाक पाठकेँ दूषित होएबासँ बचेबा लेल अमान्य कऽ देल गेल।\nई कखनो काल होइए जखन अहाँ जाल आधारित अनाम दोसरा लेल चल सेवा प्रयुक्त करै छी।",
"edit_form_incomplete": "'''सम्पादन आवेदनक किछु भाग वितरक धरि नै पहुँचल; एक बेर फेर देखू जे अहाँक सम्पादन दुरुस्त अछि आ फेरसँ प्रयास करू।'''",
"editing": "सम्पादन होइए $1",
+ "creating": "$1 बनाउ",
"editingsection": "सम्पादन कऽ रहल छी $1 (खण्ड)",
"editingcomment": "सम्पादन कऽ रहल छी $1 (नव खण्ड)",
"editconflict": "सम्पादन अन्तर: $1",
"edit-gone-missing": "पन्ना अद्यतन नै भऽ सकल।\nलगैए जे ई मेटा देल गेल अछि।",
"edit-conflict": "सम्पादन अन्तर",
"edit-no-change": "अहाँक सम्पादनपर ध्यान नै देल गेल, कारण ऐ सँ पाठमे कोनो परिवर्तन नै आएल।",
+ "postedit-confirmation-created": "पन्ना निर्माण करल गेल अछि ।",
+ "postedit-confirmation-restored": "पन्नाके पुराण स्थितिमे लौने गेल अछि ।",
+ "postedit-confirmation-saved": "अहाके संपादनके सुरक्षित भेल ।",
"edit-already-exists": "नव पन्नाक निर्माण नै भऽ सकल।\nई पहिनहियेसँ वर्तमान अछि।",
+ "defaultmessagetext": "पूर्वनिर्धारित संदेश पाठ",
+ "invalid-content-data": "अवैध डाटा सामग्री",
+ "editpage-notsupportedcontentformat-title": "सामग्री स्वरूप समर्थित नै अछि",
+ "content-model-wikitext": "विकिटेक्स्ट",
+ "content-model-text": "सामान्य पाठ",
+ "content-model-javascript": "जावास्क्रिप्ट",
+ "content-model-css": "सी॰एस॰एस",
"expensive-parserfunction-warning": "'''चेतौनी:''' ई पन्ना बड्ड बेसी महग विभाजक प्रकार्य आह्वान करैत अछि।\n एकरा $2 सँ कम {{PLURAL:$2|call|calls}}, ओतऽ {{PLURAL:$1|ई अछि $1 call|ई सभ अछि $1 calls}}",
"expensive-parserfunction-category": "बड बेसी महग विभाजक आह्वानबला पन्ना सभ",
"post-expand-template-inclusion-warning": "'''चेतौनी:''' नमूना लेबाक आकार बड्ड पैघ अछि।\nकिछु नमूना नै लेल जा सकत।",
"revertmerge": "नै मिज्झर",
"mergelogpagetext": "नीचाँ एक पन्ना इतिहासक दोसरमे अद्यतन मिश्रणक सूची अछि।",
"history-title": "\"$1\" क संशोधन इतिहास",
+ "difference-title": "\"$1\" के अवतरणसभमे अंतर",
+ "difference-title-multipage": "\"$1\" आर \"$2\" पृष्ठसभ मे अंतर",
"difference-multipage": "(पन्ना सभक बीचमे अन्तर)",
"lineno": "पंक्त्ति $1:",
"compareselectedversions": "चयन कएल संशोधन सभक तुलना करू",
"showhideselectedversions": "देखाउ/ नुकाउ चयनित संशोधन सभ",
"editundo": "असंपादन",
+ "diff-empty": "(कोनो अंतर नै)",
+ "diff-multi-sameuser": "(इ प्रयोक्ताद्वारा {{PLURAL:$1|कएल गेल बीचके एक अवतरण नै देखाओल गेल |कएल गेल बीचके $1 अवतरण नै देखाओल गेल}})",
+ "diff-multi-otherusers": "({{PLURAL:$1|एकटा मध्यस्थ संशोधन|$1 मध्यस्थ संशोधन सभ}} $2 सँ बेसी {{PLURAL:$2|प्रयोक्ता|प्रयोक्ता सभ}} नै देखाएल)",
"diff-multi-manyusers": "({{PLURAL:$1|एकटा मध्यस्थ संशोधन|$1 मध्यस्थ संशोधन सभ}} $2 सँ बेसी {{PLURAL:$2|प्रयोक्ता|प्रयोक्ता सभ}} नै देखाएल)",
+ "difference-missing-revision": "इ अंतर {{PLURAL:$2|के एकटा अवतरण|के $2 अवतरण}} ($1) नै {{PLURAL:$2|पाओल गेल|पाओल गेल}}।\n\nइ सामन्य ढंगमे हटाओल गेल पृष्ठके अवतरसभ मे अंतर खोजला स होएत अछि । आर जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाओल लग] मे भेट सकैत अछि।",
"searchresults": "तकबाक फलाफल",
"searchresults-title": "तकबाक फलाफल \"$1\" लेल",
"titlematches": "पन्ना शीर्ष मेल",
"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 सभटा परिणाम:",
"searchrelated": "सम्बन्धी",
"searchall": "सभटा",
"showingresults": "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}} #'''$2''' सँ प्रारम्भ भऽ कऽ।",
+ "showingresultsinrange": "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}} #'''$2''' सँ प्रारम्भ भऽ कऽ।",
"showingresultsheader": "{{PLURAL:$5|परिणाम '''$1''' एकर '''$3'''|परिणाम सभ '''$1 - $2''' एकर '''$3'''}} ऐ लेल '''$4'''",
"search-nonefound": "अभ्यर्थनासँ मेल खाइत कोनो परिणाम नै भेटल।",
"powersearch-legend": "विशेष खोज",
"powersearch-togglelabel": "जाँचू:",
"powersearch-toggleall": "सभटा",
"powersearch-togglenone": "कोनो नै",
+ "powersearch-remember": "याद राखु भविष्यकऽ खोजीके लेल",
"search-external": "बाह्य खोज",
"searchdisabled": "{{अन्तर्जाल}} खोज बन्न अछि।\nअहाँक गूगलक माध्यमसँ ऐ बीच ताकि सकै छी।\nमोन राखू जे तकर विवरणी {{अन्तर्जाल}} सामिग्री समयातीत भऽ सकैए।",
+ "search-error": "खोजवाके समय निम्न त्रुटि उत्पन्न भेल: $1",
"preferences": "विकल्प",
"mypreferences": "खासमखास",
"prefs-edits": "सम्पादनक संख्या",
+ "prefsnologintext2": "अपन वरीयतासभके बदलैक लेल $1 करू।",
"prefs-skin": "रूप",
"skin-preview": "पूर्वावलोकन",
"datedefault": "कोनो मोनपसंद नै",
"prefs-labs": "प्रायोगिक गुण सभ",
+ "prefs-user-pages": "उपयोगकर्ताक पृष्ठ",
"prefs-personal": "प्रयोक्ता परिचय",
"prefs-rc": "हालक परिवर्तन",
"prefs-watchlist": "साकांक्ष-सूची",
"prefs-watchlist-days": "साकांक्ष-सूचीमे एतेक दिन देखाएल:",
- "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}",
+ "prefs-watchlist-days-max": "बेसीसँ बेसी $1 {{PLURAL:$1|दिन|दिन}}",
"prefs-watchlist-edits": "बढ़ाएल साकांक्ष सूचीमे अधिकतम परिवर्तन देखाएब:",
"prefs-watchlist-edits-max": "बेसीसँ बेसी:१०००",
"prefs-watchlist-token": "साकांक्ष-सूची खेप:",
"recentchangesdays-max": "बेसीसँ बेसी $1 {{PLURAL:$1|दिन|दिन}}",
"recentchangescount": "पूर्वनिर्धारित रूपेँ एतेक सम्पादन देखाएल गेल:",
"prefs-help-recentchangescount": "ऐ मे सम्मिलित अछि आइ-काल्हिक परिवर्तन, पन्नाक इतिहास आ वृत्तलेख",
+ "prefs-help-watchlist-token2": "इ अहाँके कंक्षाकसूचीके वेब फिडके गोपनीय चाभी छी ।\nइ जे कोइ लंग अछि उ अपन कंक्षाकसूची पैढ सकैत अछि, ऐ लेल इ क्यों गोटा स नै बाटब ।\n[[Special:ResetTokens|एकरा रीसेट करवाक लेल यै ठाम क्लिक करु]]।",
"savedprefs": "अहाँक पसिन्न सुरक्षित कएल गेल",
"timezonelegend": "समय क्षेत्र",
"localtime": "स्थानीय समए:",
"prefs-dateformat": "तिथिक बगेबानी",
"prefs-timeoffset": "समए संशोधक",
"prefs-advancedediting": "विशिष्ट विकल्प सभ",
+ "prefs-editor": "संपादक",
+ "prefs-preview": "पूर्वावलोकन",
"prefs-advancedrc": "विशिष्ट विकल्प सभ",
"prefs-advancedrendering": "विशिष्ट विकल्प सभ",
"prefs-advancedsearchoptions": "विशिष्ट विकल्प सभ",
"prefs-advancedwatchlist": "विशिष्ट विकल्प सभ",
"prefs-displayrc": "दृश्य विकल्प सभ",
"prefs-displaywatchlist": "दृश्य विकल्प सभ",
+ "prefs-tokenwatchlist": "टोकन",
"prefs-diffs": "अन्तर निर्धारक सभ",
+ "prefs-help-prefershttps": "इ प्राथमिकता अहाँके फेर स सम्प्रवेश करलाक बाद प्रभाव पडत।",
+ "prefs-tabs-navigation-hint": "सुझाव: अहाँ टैब्स सूचीमे टैब्सके बीच आवागमन करवाक लेल बाम आर दाहिना बागलके कुंजिसभके उपयोग कइर सकैत छी।",
"email-address-validity-valid": "ई-पत्र संकेत मान्य बुझाइत अछि",
"email-address-validity-invalid": "एकटा मान्य ई-पत्र संकेत लिखू",
"userrights": "प्रयोक्ता अधिकारक प्रबन्धन",
"userrights-changeable-col": "वर्ग जे अहाँ बदलि सकै छी",
"userrights-unchangeable-col": "वर्ग जे अहाँ नै बदलि सकै छी",
"userrights-irreversible-marker": "$1*",
+ "userrights-conflict": "प्रयोक्ता अधिकार बदलावक समयमे अंतर्विरोध! कृपया अपन बदलाव जाँच करु आ पुनः सुनिश्चित करु।",
+ "userrights-removed-self": "अहाँ सफलतापूर्वक अपन अधिकार हटा देने छी। अतः अहाँ आब ई पृष्ठ नै देख सकैत छी।",
"group": "वर्ग:",
"group-user": "प्रयोक्ता सभ",
"group-autoconfirmed": "स्वतःअनुमोदित प्रयोक्ता सभ",
"right-move": "पन्ना सभ घसकाउ",
"right-move-subpages": "पन्ना सभकेँ उपपन्ना सभक संग घसकाउ",
"right-move-rootuserpages": "मूल प्रयोक्ता पन्ना सभ घसकाउ",
+ "right-move-categorypages": "श्रेणी पृष्ठ स्थानांतरित करू",
"right-movefile": "संचिका सभकेँ घसकाउ",
"right-suppressredirect": "पन्ना घसकेबा काल मूल पन्ना सभसँ लागि सभ नै बनाउ",
"right-upload": "संचिका सभ उपारोपित करू",
"right-writeapi": "लेख्य ए.पी.आइ.क प्रयोग",
"right-delete": "पन्ना सभकेँ मेटाउ",
"right-bigdelete": "बेशी इतिहास बला पन्ना सभकेँ मेटाउ",
+ "right-deletelogentry": "विशिष्ट लग प्रविष्टिसभके नुकाउ आ देखाउ",
"right-deleterevision": "निर्धारित संशोधित पन्ना मेटाउ आ फेरसँ आनू",
"right-deletedhistory": "मेटाएल इतिहास प्रविष्टि देखू, बिना लागिक पाठक",
"right-deletedtext": "मेटाएल पाठ आ दूटा मेटाएल संशोधनक बीचक परिवर्तन देखू",
"right-browsearchive": "मेटाएल पन्ना सभकेँ ताकू",
"right-undelete": "पन्ना फेरसँ आनू",
"right-suppressrevision": "संचालकसँ नुकाएल संशोधनकेँ पुनरीक्षित करू आ फेरसँ आनू",
+ "right-viewsuppressed": "कोनो प्रयोक्ताके नुकाएल संसोधन देखु",
"right-suppressionlog": "व्यक्तिगत वृत्तलेख देखू",
"right-block": "दोसर प्रयोक्ताकेँ सम्पादनसँ रोकू",
"right-blockemail": "प्रयोक्ताकेँ ई-पत्र पठेबासँ रोकू",
"right-unblockself": "स्वयंकेँ प्रतिबन्धसँ हटाउ",
"right-protect": "सुरक्षा स्तर बदलू आ संरक्षित पन्ना सम्पादित करू",
"right-editprotected": "संरक्षित पन्ना सम्पादित करू (बिना तराउपड़ी सुरक्षाक)",
+ "right-editsemiprotected": "संरक्षित पन्ना सम्पादित करू (बिना तराउपड़ी सुरक्षाक)",
"right-editinterface": "प्रयोक्ता मध्यस्थक सम्पादन करू",
"right-editusercssjs": "दोसर प्रयोक्ताक सी.एस.एस. आ जावास्क्रिप्ट संचिका सभक सम्पादन करू",
"right-editusercss": "दोसर प्रयोक्ता सभक सी.एस.एस. संचिका सभक सम्पादन करू",
"right-edituserjs": "दोसर प्रयोक्ताक जावास्क्रिप्ट संचिका सभक सम्पादन करू",
+ "right-editmyusercss": "अपन प्रयोक्ता स्तरके सी.एस.एस.फाइल स संपादित करु",
+ "right-editmyuserjs": "दोसर प्रयोक्ताक जावास्क्रिप्ट संचिका सभक सम्पादन करू",
+ "right-viewmywatchlist": "अपन काँच साकांक्षसूची देखु",
+ "right-editmywatchlist": "अपनी साकांक्षसूची सम्पादित करु । ध्यान दियो कि कोनो काज इ अधिकारके नै भेलाके बादो साकांक्षसूचीमे पृष्ठ जोडत।",
+ "right-viewmyprivateinfo": "अपन व्यक्तिगत डाटा देखु (जेना ई-मेल पता, असली नाम)",
+ "right-editmyprivateinfo": "अपन व्यक्तिगत डाटा सम्पादित करू (जेना ई-मेल पता, असली नाम)",
+ "right-editmyoptions": "अपन वरीयतासभ सम्पादित करु",
"right-rollback": "कृपा कऽ अन्तिम प्रयोक्ताक सम्पादन सभकेँ प्रत्यावर्तित करू जे एक खास पन्नाकेँ सम्पादित केलन्हि",
"right-markbotedits": "प्रत्यावर्तित सम्पादन सभकेँ स्वचालित सम्पादन देखाउ",
"right-noratelimit": "दरक सीमासँ प्रभावित नै",
"action-createpage": "पन्ना सभ बनाउ",
"action-createtalk": "वार्ता पन्ना सभ बनाउ",
"action-createaccount": "ई प्रयोक्ता खाता बनाउ",
+ "action-history": "पन्नाक इतिहासकेँ मिज्झर करू",
"action-minoredit": "ऐ सम्पादनकेँ मामूली कहू",
"action-move": "ऐ पृष्ठकेँ घसकाउ",
"action-move-subpages": "ऐ पन्ना आ एकर उपपन्नाकेँ घसकाउ",
"action-move-rootuserpages": "मूल प्रयोक्ता पन्ना सभ घसकाउ",
+ "action-move-categorypages": "श्रेणी पृष्ठ स्थानांतरित करू",
"action-movefile": "ऐ संचिकाकेँ घसकाउ",
"action-upload": "ऐ संचिकाकेँ उपारोपित करू",
"action-reupload": "ऐ संचिकाक पुनर्लेखन करू",
"action-userrights-interwiki": "दोसर विकीपर प्रयोक्ताक प्रयोक्ता अधिकारक सम्पादन करू",
"action-siteadmin": "दत्तनिधिकेँ प्रतिबन्धित करू आ फेर प्रतिबन्ध हटाउ",
"action-sendemail": "ई-पत्र पठाउ",
+ "action-editmywatchlist": "काँच साकांक्षसूची संपादित करू",
+ "action-viewmywatchlist": "अपन काँच साकांक्षसूची देखु",
+ "action-viewmyprivateinfo": "अपन व्यक्तिगत जानकारी देखु",
+ "action-editmyprivateinfo": "अपन व्यक्तिगत जानकारी संपादित करु",
"nchanges": "$1 {{PLURAL:$1|परिवर्त्तन|परिवर्त्तन}}",
+ "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|अंतिम बेर देखला के बाद स}}",
+ "enhancedrc-history": "इतिहास",
"recentchanges": "लगक परिवर्तन सभ",
"recentchanges-legend": "नव परिवर्तन सभक विकल्प सभ",
"recentchanges-summary": "ऐ पन्नापर विकीमे भेल सभसँ अद्यतन परिवर्तनपर नजरि राखू।",
+ "recentchanges-noresult": "इ अवधिके दौरान इ मापदंडके पूर्ण करेत समय कोनो परिवर्तन नै केएल गेल अछि।",
"recentchanges-feed-description": "ऐ सूचना-तंत्रांशमे विकीमे भेल सभसँ लगक परिवर्तन ताकू",
"recentchanges-label-newpage": "ई सम्पादन एकटा नव पन्नाक निर्माण केलक।",
"recentchanges-label-minor": "ई एकटा लघु सम्पादन छी",
"recentchanges-label-bot": "ई सम्पादन यांत्रिक छल।",
"recentchanges-label-unpatrolled": "ऐ सम्पादनक पुनरीक्षण अखन धरि नै कएल गेल अछि।",
+ "recentchanges-label-plusminus": "पन्नाके आकार इ बाइट संख्यासे बदलल गेल",
+ "recentchanges-legend-heading": "'''कुंजी:'''",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नयाँ पन्नसभके सूची]] सहो देखु)",
"rcnotefrom": "नीचाँमे '''$2''' सँ भेल परिवर्तन अछि ('''$1''' धरि देखाएल)।",
"rclistfrom": "$3 $2 सँ शुरू भेल नव परिवर्तन देखू",
"rcshowhideminor": "$1 अल्प संपादन",
+ "rcshowhideminor-show": "देखाउ",
+ "rcshowhideminor-hide": "नुकाऊ",
"rcshowhidebots": "$1 स्वचालक सभ",
+ "rcshowhidebots-show": "देखाउ",
+ "rcshowhidebots-hide": "नुकाऊ",
"rcshowhideliu": "$1 सम्प्रवेशित प्रयोक्ता सभ",
+ "rcshowhideliu-show": "देखाउ",
+ "rcshowhideliu-hide": "नुकाऊ",
"rcshowhideanons": "$1 अज्ञात प्रयोक्ता सभ",
+ "rcshowhideanons-show": "देखाऊ",
+ "rcshowhideanons-hide": "नुकाऊ",
"rcshowhidepatr": "$1 संचालित सम्पादन",
+ "rcshowhidepatr-show": "देखाउ",
+ "rcshowhidepatr-hide": "नुकाऊ",
"rcshowhidemine": "$1 हमर सम्पादन सभ",
+ "rcshowhidemine-show": "देखाउ",
+ "rcshowhidemine-hide": "नुकाऊ",
"rclinks": "देखाऊ अंतिम $1 परिवर्त्तन अंतिम $2 दिनमे<br />$3",
"diff": "अंतर",
"hist": "इति.",
"rc_categories": "संवर्ग सीमित (\"|\" सँ हटाउ)",
"rc_categories_any": "कोनो",
"rc-change-size": "$1",
+ "rc-change-size-new": "बदललाके बाद $1 {{PLURAL:$1|बाइट}}",
"newsectionsummary": "/* $1 */ नव संवर्ग",
"rc-enhanced-expand": "वर्णन देखाउ (जावास्क्रिप्ट चाही)",
"rc-enhanced-hide": "वर्णन नुकाउ",
+ "rc-old-title": "मूल रूप स \"$1\" नाम स बनाएल गेल रह",
"recentchangeslinked": "संबंधित परिवर्त्तन",
"recentchangeslinked-feed": "संबंधित परिवर्त्तन",
"recentchangeslinked-toolbox": "संबंधित परिवर्त्तन",
"fileexists-shared-forbidden": "ऐ नामसँ एकटा संचिका साझी संचिका बखारीमे पहिनहियेसँ अछि।\nजँ अहाँ अखनो अपन संचिका उपारोपित करए चाहै छी, कृपा कऽ पाछाँ जाउ आ एकटा नव नाम चुनू।\n[[File:$1|thumb|center|$1]]",
"file-exists-duplicate": "ई फाइल एकर {{PLURAL:$1|file|files}} द्वितीयक अछि:",
"file-deleted-duplicate": "ऐ संचिका ([[:$1]]) सँ मेल खाइत संचिका पहिनहिये मेटा देल गेल अछि।\nअहाँ ओइ संचिकाक मेटाएल जएबाक इतिहास फेरसँ उपारोपित करबासँ पहिने देखू।",
+ "file-deleted-duplicate-notitle": "ऐ स पहिले इ फाइलके अहिने एगो फाइलके हटाएल गेल अछि , आर शीर्षक नुकाएल गेल अछि।\nएकरा फेर स अपलोड करै स पहिले अहाँ कोनो एहन व्यक्ति स स्थितिके समीक्षा करै लेल कहु जेकरा लंग नुकाएल गेल फाइल देखवाक क्षमता अछि।",
"uploadwarning": "उपारोपण चेतौनी",
"uploadwarning-text": "कृपा कऽ नीचाँ देल संचिका वर्णनकेँ संशोधित करू आ फेरसँ प्रयास करू।",
"savefile": "संचिका संरक्षण करू",
- "uploadedimage": "अपलोड भेल \"[[$1]]\"",
- "overwroteimage": "एकर \"[[$1]]\" नव संस्करण उपारोपित भेल।",
"uploaddisabled": "उपारोपण सभ अशक्त कएल गेल।",
"copyuploaddisabled": "सार्वत्रिक विभव संकेत उपारोपण अशक्त कएल गेल।",
"uploaddisabledtext": "संचिका उपारोपण सभ अशक्त अछि।",
"php-uploaddisabledtext": "पी.एच.पी.मे संचिका उपारोपण अशक्त अछि।\nकृपा कऽ संचिका उपारोपण विकल्प जाँचू।",
"uploadscripted": "ई संचिका पर्यंकभाषा वा कूटलिपि युक्त अछि जे गवेषक द्वारा गलत रूपमे व्याख्यायित कएल जा सकैए।",
+ "uploadscriptednamespace": "इ एस॰वी॰जी फाइलमे अमान्य नामस्थान \"$1\" अछि।",
+ "uploadinvalidxml": "अपलोड केएल गेल फाइलमे स्थित XML पार्स नै केएल जा सकैत अछि।",
"uploadvirus": "ई संचिका विषविधियुक्त अछि।\nवर्णन:$1",
"uploadjava": "ई संचिका एकटा संकुचित संचिका अछि जइमे अछि एकटा जावा .class संचिका।\nजावा संचिका सभक उपारोपण प्रतिबन्धित अछि, कारण ओ सभ सुरक्षा प्रतिबन्ध सभ छी जकरासँ ई तड़पल जा सकैए।",
"upload-source": "मूल संचिका",
"upload-misc-error-text": "उपारोपण काल एकटा विचित्र भ्रम आएल।\nकृपा कऽ जाँचू कि सार्वत्रिक विभव संकेत मान्य आ प्रवेश-उपयुक्त अछि आ फेरसँ प्रयास करू।\nजँ समस्या रहिते अछि तँ [[Special:ListUsers/sysop|संचालक]] सँ सम्पर्क करू।",
"upload-too-many-redirects": "ई सार्वत्रिक विभव संकेत बड्ड बेसी घुमौआ लागिक संग अछि।",
"upload-http-error": "परिसंविद भ्रम आएल:$1",
+ "upload-copy-upload-invalid-domain": "कपि अपलोड इ डोमेन स उपलब्ध नै अछि।",
+ "backend-fail-stream": "\"$1\" केँ नै स्ट्रिम क सकल।",
+ "backend-fail-backup": "\"$1\" केँ नै ब्याकअप क सकल।",
+ "backend-fail-notexists": "फाइल $1 नै अछि।",
+ "backend-fail-hashes": "तुलना के लेल फाइलसहके हैश नै मिलल।",
+ "backend-fail-notsame": "एकटा गैर-समान फाइल $1 मे पहिले स अछि।",
+ "backend-fail-invalidpath": "$1 मान्य भंडारण पथ नै छी।",
+ "backend-fail-delete": "\"$1\" फाइल केँ नै मेटा सकल।",
+ "backend-fail-describe": "फाइल \"$1\" के मेटाडाटा बदल नै सकल।",
+ "backend-fail-alreadyexists": "फाइल $1 पहिने स अछि।",
+ "backend-fail-store": "फाइल $1, $2 मे संग्रहीत नै कऽ सकल।",
+ "backend-fail-copy": "फाइल $1 के $2 मे प्रतिलिपि नै कऽ सकल।",
+ "backend-fail-move": "फाइल $1 सऽ $2 मे स्थानांतरित नै भऽ सकल।",
+ "backend-fail-opentemp": "अस्थायी संचिका नै खोइज सकल।",
+ "backend-fail-writetemp": "अस्थायी संचिका पर नै लिखाल जा सकल।",
+ "backend-fail-closetemp": "अस्थायी संचिका नै बन्द भऽ सकल।",
+ "backend-fail-read": "फाइल $1 पैढ नै जा सकल ।",
+ "backend-fail-create": "फाइल $1 नै लिखल जा सकल।",
+ "backend-fail-maxsize": "फाइल $1 नै लिखल जा सकल कियाक कि ई {{PLURAL:$2|$2 बाईट}} सऽ बडका अछि।",
"zip-file-open-error": "संकुचित संचिका जाँचमे संचिका खोललापर एकटा भ्रम आएल।",
"zip-wrong-format": "खास संचिका संकुचित संचिका नै छी।",
"zip-bad": "ई संचिका एकटा टूटल आ ओहिनो बिन पढ़बा योग्य संकुचित फाइल छी।",
"license-nopreview": "(पूर्वावलोकन उपलब्ध नै अछि)",
"upload_source_url": "(एकटा मान्य, सार्वजनिक प्रवेशबला सार्वत्रिक विभव संकेत)",
"upload_source_file": "(अहाँक संगणकपर एकटा संचिका)",
+ "listfiles-delete": "मिटाउ",
"listfiles-summary": "ई विशिष्ट पन्ना सभटा उपारोपित संचिका देखबैए।\nप्रयोक्ता द्वारा चुनलापर अन्तिम उपारोपित संचिका देखबैत अछि।",
"listfiles_search_for": "ऐ दृश्य-श्रव्य नामले ताकू:",
"imgfile": "संचिका",
"listfiles_size": "आकार",
"listfiles_description": "वर्णन",
"listfiles_count": "संस्करण सभ",
+ "listfiles-latestversion": "बर्तमान भर्जन",
+ "listfiles-latestversion-yes": "हँ",
+ "listfiles-latestversion-no": "नै",
"file-anchor-link": "संचिका",
"filehist": "फाइल इतिहास",
"filehist-help": "तखुनका तिथि/ समए पर क्लिक करू जखुनका फाइल देखबाक अछि",
"protectedpages": "संरक्षित पन्ना सभ",
"protectedpages-indef": "अनन्तकालिक सुरक्षा मात्र",
"protectedpages-cascade": "तराउपड़ी सुरक्षा मात्र",
+ "protectedpages-noredirect": "पुनर्निर्देश नुकाऊँ",
"protectedpagesempty": "कोनो पन्ना ऐ सभ परिमिति लेल सुरक्षित नै राखल गेल अछि।",
+ "protectedpages-timestamp": "समएकाल",
+ "protectedpages-page": "पृष्ठ",
+ "protectedpages-expiry": "खतम हएत:",
+ "protectedpages-performer": "सुरक्षित करै वाला सदस्य",
+ "protectedpages-params": "सुरक्षा प्राचल",
+ "protectedpages-reason": "कारण:",
+ "protectedpages-unknown-timestamp": "अज्ञात",
+ "protectedpages-unknown-performer": "अज्ञात सदस्य",
"protectedtitles": "संरक्षित शीर्षक सभ",
"protectedtitlesempty": "कोनो पन्ना ऐ सभ परिमिति लेल सुरक्षित नै राखल गेल अछि।",
"listusers": "प्रयोक्ता सूची",
"allpagesprefix": "उपसर्गक संग दृश्य पन्ना सभ:",
"allpagesbadtitle": "देल पन्नाक शीर्षक गलत, गलत सम्बन्धित अन्तर-भाषा अन्तर विकी शीर्षक छी। ई एक वा बेशी कलाकार युक्त भऽ सकैए जे शीर्षकमे प्रयुक्त नै कएल जा सकैए।",
"allpages-bad-ns": "{{जालस्थल}} मे \"$1\" नामगाम नै अछि।",
+ "cachedspecial-refresh-now": "लब्का देखु",
"categories": "संवर्ग सभ",
"categoriespagetext": "ई {{PLURAL:$1|संवर्गमे अछि|संवर्ग सभमे अछि}} पन्ना वा मीडिया।\n[[Special:UnusedCategories|Unused categories]] एतए देखाएल नै अछि।\nईहो देखू [[Special:WantedCategories|wanted categories]]।",
"categoriesfrom": "पन्ना प्रदर्शन प्रारम्भ भेल:",
"listgrouprights-removegroup-self": "निकालू {{PLURAL:$2|वर्ग|वर्ग}} अपन खातामे: $1",
"listgrouprights-addgroup-self-all": "सभटा वर्गकेँ अपन खातामे जोड़ू",
"listgrouprights-removegroup-self-all": "सभटा वर्गकेँ अपन खातासँ निकालू",
+ "listgrouprights-namespaceprotection-header": "नामस्थान वर्जित",
+ "listgrouprights-namespaceprotection-namespace": "नामस्थान :",
+ "listgrouprights-namespaceprotection-restrictedto": "सांच(सभ) के संपादन करए लेल",
+ "trackingcategories": "श्रेणीके ट्रयाक करु",
"mailnologin": "कोनो पठेबाक पता नै",
"mailnologintext": "अहाँ [[Special:UserLogin|सम्प्रवेशित]] हेबाक चाही आ अहाँक विकल्प [[Special:Preferences|preferences]] मे एकटा मान्य ई-पत्र संकेत दोसर प्रयोक्ताकेँ पठेबा लेल हेबाक चाही।",
"emailuser": "ऐ प्रयोक्ताकेँ ई-पत्र पठाउ",
"watchlist-details": "{{PLURAL:$1|$1 पन्ना|$1 पन्ना सभ}} अहाँक साकांक्षसूचीमे, चौबटिया पन्ना नै गानल गेल।",
"wlheader-enotif": "ई-पत्र सूचना लागू अछि।",
"wlheader-showupdated": "पन्ना सभ जे अहाँक एतए अन्तिम बेर अएलाक बाद बदलल अछि तकर सूची देल अछि '''गाढ़''' मे",
+ "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": "साकांक्षसूचीक विकल्प सभ",
"watching": "ताकिमे...",
"enotif_lastvisited": "देखू $1 अपन अन्तिम बेर अएलाक बादक परिवर्तन लेल।",
"enotif_lastdiff": "ऐ परिवर्तनकेँ देखबा लेल $1 देखू।",
"enotif_anon_editor": "गुप्त प्रयोक्ता $1",
- "enotif_body": "पà¥\8dरिय $WATCHINGUSERNAME,\n\n\nà¤\88 {{à¤\85नà¥\8dतरà¥\8dà¤\9cाल}} पनà¥\8dना $पनà¥\8dनाशà¥\80रà¥\8dषà¤\95 $CHANGEDORCREATED à¤\95à¤\8fल à¤\97à¥\87ल $PAGEEDITDATE तिथिà¤\95à¥\87à¤\81 $PAGEEDITOR दà¥\8dवारा, दà¥\87à¤\96à¥\82 $PAGETITLE_URL वरà¥\8dतमान सà¤\82सà¥\8dà¤\95रण लà¥\87ल।\n\n$NEWPAGE\n\nसमà¥\8dपादà¤\95à¥\80य: $PAGESUMMARY $PAGEMINOREDIT\n\nसमà¥\8dपादà¤\95सà¤\81 समà¥\8dपरà¥\8dà¤\95 à¤\95रà¥\82:\nà¤\88-पतà¥\8dर: $PAGEEDITOR_EMAIL\nविà¤\95à¥\80: $PAGEEDITOR_WIKI\n\nà¤\86न परिवरà¥\8dतन à¤à¥\87लापर à¤\95à¥\8bनà¥\8b सà¥\82à¤\9aना नà¥\88 दà¥\87ल à¤\9cाà¤\8fत à¤\9cà¤\81 à¤\85हाà¤\81 à¤\88 पनà¥\8dना नà¥\88 दà¥\87à¤\96ब।\nà¤\85पन साà¤\95ाà¤\82à¤\95à¥\8dष सà¥\82à¤\9aà¥\80à¤\95 सà¥\82à¤\9aना पà¥\87बाà¤\95 पà¥\8dरà¤\95ार à¤\85हाà¤\81 बदलि सà¤\95à¥\88 à¤\9bà¥\80।\n\n à¤\85हाà¤\81à¤\95 पà¥\8dरिय {{ानà¥\8dतर्जाल}} सूचना प्रणाली\n\n--\nअपन ई-पत्र सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:Preferences}}}}\nअपन साकांक्ष-सूची सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nअपन साकांक्ष-सूचीसँ कोनो पन्ना मेटेबाक लेल देखू\n$UNWATCHURL\n\nअपन अनुभव बतेबा वा कोनो सहायता लेल:\n$HELPPAGE",
+ "enotif_body": "पà¥\8dरिय $WATCHINGUSERNAME,\n\n\nà¤\88 {{à¤\85नà¥\8dतरà¥\8dà¤\9cाल}} पनà¥\8dना $पनà¥\8dनाशà¥\80रà¥\8dषà¤\95 $CHANGEDORCREATED à¤\95à¤\8fल à¤\97à¥\87ल $PAGEEDITDATE तिथिà¤\95à¥\87à¤\81 $PAGEEDITOR दà¥\8dवारा, दà¥\87à¤\96à¥\82 $PAGETITLE_URL वरà¥\8dतमान सà¤\82सà¥\8dà¤\95रण लà¥\87ल।\n\n$NEWPAGE\n\nसमà¥\8dपादà¤\95à¥\80य: $PAGESUMMARY $PAGEMINOREDIT\n\nसमà¥\8dपादà¤\95सà¤\81 समà¥\8dपरà¥\8dà¤\95 à¤\95रà¥\82:\nà¤\88-पतà¥\8dर: $PAGEEDITOR_EMAIL\nविà¤\95à¥\80: $PAGEEDITOR_WIKI\n\nà¤\86न परिवरà¥\8dतन à¤à¥\87लापर à¤\95à¥\8bनà¥\8b सà¥\82à¤\9aना नà¥\88 दà¥\87ल à¤\9cाà¤\8fत à¤\9cà¤\81 à¤\85हाà¤\81 à¤\88 पनà¥\8dना नà¥\88 दà¥\87à¤\96ब।\nà¤\85पन साà¤\95ाà¤\82à¤\95à¥\8dष सà¥\82à¤\9aà¥\80à¤\95 सà¥\82à¤\9aना पà¥\87बाà¤\95 पà¥\8dरà¤\95ार à¤\85हाà¤\81 बदलि सà¤\95à¥\88 à¤\9bà¥\80।\n\n à¤\85हाà¤\81à¤\95 पà¥\8dरिय {{à¤\85à¤\82तर्जाल}} सूचना प्रणाली\n\n--\nअपन ई-पत्र सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:Preferences}}}}\nअपन साकांक्ष-सूची सूचना प्रकार बदलबाक लेल देखू\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nअपन साकांक्ष-सूचीसँ कोनो पन्ना मेटेबाक लेल देखू\n$UNWATCHURL\n\nअपन अनुभव बतेबा वा कोनो सहायता लेल:\n$HELPPAGE",
"created": "बनाएल गेल",
"changed": "बदलल गेल",
"deletepage": "पन्ना मेटाउ",
"import-logentry-upload-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}}",
"import-logentry-interwiki": "$1 क विकीअन्तरण",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}} $2 सँ",
+ "javascripttest": "जावास्क्रिप्ट परिक्षण",
"tooltip-pt-userpage": "अहाँक खेसरा पन्ना",
"tooltip-pt-anonuserpage": "सम्पाद्न कएल जा रहल स्थानक अनिकेतक प्रयोक्ता पन्ना",
"tooltip-pt-mytalk": "अहाँक वार्त्ता पृष्ठ",
"spam_blanking": "सभटा संशोधन $1 लागिसँ युक्त अि, खतम कऽ रहल छी",
"pageinfo-title": "\"$1\"पृष्ठक लेल नब गप",
"pageinfo-header-edits": "संपादन",
+ "pageinfo-header-restrictions": "पन्ना संरक्षण",
"pageinfo-views": "देखहि बला के संख्या",
"pageinfo-watchers": "जानकारक संख्या",
"pageinfo-edits": "सम्पादनक संख्या",
"duplicate-defaultsort": "'''चेतौनी:''' पूर्वनिर्धारित विन्यास चाभी \"$2\" पहिलुका पूर्वनिर्धारित विन्यास चाभी \"$1\" केँ खतम करैए।",
"version": "संस्करण",
"version-extensions": "संस्करणक आगाँ",
+ "version-skins": "रूप",
"version-specialpages": "खास पन्ना",
"version-parserhooks": "पार्सर हूक",
"version-variables": "विकारी",
"version-antispam": "अनिष्ट संदेश प्रतिबन्ध",
- "version-skins": "रूप",
"version-other": "आन",
"version-mediahandlers": "मीडिया संचालक",
"version-hooks": "हूक",
"version-hook-name": "खुट्टीक नाम",
"version-hook-subscribedby": "ई सदस्यता लेलनि",
"version-version": "(संस्करण $1)",
+ "version-no-ext-name": "[कोनो नाम नै]",
"version-license": "अधिकार",
+ "version-ext-license": "अधिकार",
+ "version-ext-colheader-name": "एक्सटेंसन",
+ "version-skin-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-poweredby-credits": "ई विकी चालित अछि '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2",
"version-poweredby-others": "आन",
+ "version-poweredby-translators": "translatewiki.net अनुवादक",
+ "version-credits-summary": "[[Special:Version|मिडियाविकि]]",
"version-license-info": "मीडियाविकी एकटा मंगनीक तंत्रांश अछि; अहाँ एकरा बाँटि सकै छी आ/ वा संशोधित कऽ सकै छीगी.एन.यू. सामान्य जन लाइसेन्सक अन्तर्गत जेना फ्री सॉफ्टवेयर फाउन्डेशन एकरा प्रकाशित केने अछि; चाहे तँ लाइसेन्सक संस्करण २, वा (अहाँक विकल्पपर) कोनो बादक दोसर संस्करणक अन्तर्गत।\n\nमीडियाविकी ऐ आशामेँ बाँटल जा रहल अछि कि ई उपयोगी हएत, मुदा बिना कोनो गारन्टीक; बिना कोनो व्यापारिक अन्तर्निहित वारन्टीक वा कोनो विशेष काजक लेल उपयोगी हेबाले। देखू गी.एन.यू. सामान्य जन लाइसेन्स विशेष वर्णन लेल।\n\nअहाँ प्राप्त केने हएब [{{SERVER}}{{SCRIPTPATH}}/ अनुकरण गी.एन.यू. सामान्य जन लाइसेन्सक प्रति] ऐ तंत्रांशक संग; जँ नै, लिखू फ्री सॉफ्टवेयर फाउन्डेशन, आइ.एन.सी., ५१, फ्रैंकलिन स्ट्रीट, पाँचम तल, बोस्टन, एम.ए. ०२११०-१३०१, यू.एस.ए. वा [//www.gnu.org/licenses/old-licenses/gpl-2.0.html अन्तर्भूत पढ़बा लेल]।",
"version-software": "प्रतिष्ठापित तंत्रांश",
"version-software-product": "उत्पाद",
"version-software-version": "संस्करण",
+ "version-entrypoints-header-url": "यू॰आर॰एल",
"fileduplicatesearch": "द्वितीयक संचिका ताकू",
"fileduplicatesearch-summary": "हैश मानक आधारपर द्वितीयक संचिका ताकू।",
"fileduplicatesearch-legend": "द्वितीयक ताकू",
"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|परिवर्तन|परिवर्तन सभ}}",
"comparepages": "पन्ना सभक तुलना करू",
"dberr-problems": "दुखी छी! ई जालस्थल तकनीकी समस्या अनुभव कऽ अछि।",
"dberr-again": "किछु काल बाट ताकू आ फेरसँ भारित करू।",
"dberr-info": "(दत्तनिधि वितरककेँ सम्पर्क नै कऽ सकल: $1)",
+ "dberr-info-hidden": "(दत्तनिधि वितरककेँ सम्पर्क नै कऽ सकल: $1)",
"dberr-usegoogle": "ऐ बीचमे अहाँ गूगलसँ खोज कऽ सकै छी।",
"dberr-outofdate": "मोन राखू जे हमर सामिग्रीक ओकर सूची पुरान भऽ सकैए।",
"dberr-cachederror": "ई आग्रह कएल पन्नाक उपस्मृति संरक्षित द्वितीयक अछि, आ भऽ सकैए जे अद्यतन नै हुअए।",
"htmlform-submit": "दिअ",
"htmlform-reset": "परिवर्तन खतम करू",
"htmlform-selectorother-other": "आन",
+ "htmlform-no": "नै",
+ "htmlform-yes": "हँ",
+ "htmlform-chosen-placeholder": "एकटा विकल्प चुनु",
+ "htmlform-cloner-create": "आर जोडु",
+ "htmlform-cloner-delete": "हटाउ",
"sqlite-has-fts": "$1 पूर्ण-पाठ खोज सहायता युक्त",
"sqlite-no-fts": "$1 बिन पूर्ण-पाठ खोज सहायताक",
"logentry-delete-delete": "$1 {{लिंग:$2|deleted}} page $3",
"logentry-newusers-create2": "$1 {{लिंग:$2|बनाएल}} {{लिंग:$4|एकटा प्रयोक्ता खाता}} $3",
"logentry-newusers-autocreate": "खाता $1 छल {{लिंग:$2|बनाएल}} स्वतः",
"rightsnone": "(कोनो नै)",
+ "feedback-subject": "विषय:",
+ "feedback-message": "संदेश:",
+ "feedback-cancel": "रद्द करु",
+ "feedback-submit": "प्रतिक्रिया भेजु",
+ "feedback-adding": "पन्ना उपर प्रतिक्रिया जोडु ...",
+ "feedback-error2": "त्रुटि: संपादन विफल भेल",
+ "feedback-close": "भ गेल",
+ "feedback-bugcheck": "बहुत निक! जांच करु कि [ $1 known bugs] पहिले स त नै अछि ।",
+ "searchsuggest-search": "ताकू",
+ "searchsuggest-containing": "...सऽ युक्त",
"api-error-badaccess-groups": "अहि विकी सें अहां कोनो प्रारूप लोड नहि क सकब.",
"api-error-filename-tooshort": "ई संचिका नाम बड छोट अछि |",
"api-error-filetype-banned": "ऐ तरहक संचिका नाम प्रतिबंधित अछि।",
"api-error-ok-but-empty": "आन्तरिक भ्रम: वितरकसँ कोनो सम्पर्क नै",
"api-error-unclassified": "एकटा अबूझ भ्रम आएल",
"api-error-unknown-code": "अबूझ भ्रम:\"$1\"",
- "api-error-uploaddisabled": "ऐ विकीपर उपारोपण अशक्त कएल गेल अछि।"
+ "api-error-uploaddisabled": "ऐ विकीपर उपारोपण अशक्त कएल गेल अछि।",
+ "pagelang-name": "पन्ना",
+ "pagelang-language": "भाषा"
}
"talkpagelinktext": "Dopokan",
"specialpage": "Kaca khusus",
"personaltools": "Piranti pribadi",
- "postcomment": "Bagéyan anyar",
"articlepage": "Deleng isi tulisan",
"talk": "bahas",
"views": "Tampilan",
"externaldberror": "Ana kesalahan otentikasi basis data utawa Rika ora olih nglakokna pemutakhiran maring akun eksternale Rika.",
"login": "Melebu",
"nav-login-createaccount": "Mlebu / gawe kaca anggota (akun)",
- "loginprompt": "Rika kudu ngaktifna ''cookies'' ben teyeng mlebu log maring {{SITENAME}}.",
"userlogin": "Melebu / gawe kaca anggota (account)",
"userloginnocreate": "Mlebu log",
"logout": "Metu Log",
"searchprofile-advanced-tooltip": "Goleti nang bilik jeneng biasa",
"search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})",
"search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
- "search-result-score": "Relevansi: $1%",
"search-redirect": "(pangalihan $1)",
"search-section": "(bagiyan $1)",
"search-suggest": "Apa maksude Rika kuwe: $1",
"ignorewarning": "Lirwakna pèngetan lan langsung simpen berkas.",
"ignorewarnings": "Lirwakna pèngetan apa baen",
"minlength1": "Jeneng berkas seora-orane kudu ana seaksara.",
- "uploadedimage": "ngunggahna\"[[$1]]\"",
"license": "Jenis lisènsi:",
"license-header": "Jinis lisènsi",
"listfiles_date": "Tanggal",
"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",
"pagecategories": "{{PLURAL:$1|Категорие|Категориет}}",
"category_header": "\"$1\" категориеса лопатне",
"subcategories": "Субкатегориет",
"newwindow": "(панчсеви од вальмаса)",
"cancel": "Мърдамс меки",
"moredotdotdot": "Сяда лама...",
- "mypage": "Монь лопазе",
- "mytalk": "Монь корхтамазе",
+ "morenotlisted": "Лемгярькссь апак тик",
+ "mypage": "Лопазе",
+ "mytalk": "Корхтамазе",
"anontalk": "Корхтамс тя IP-ть мархта",
"navigation": "Навигацие",
"and": " эди",
"actions": "Тефне",
"namespaces": "Лемботмот",
"variants": "Вариатт",
+ "navigation-heading": "Навигациень меню",
"errorpagetitle": "Эльбятькс",
"returnto": "Мърдамс $1-с.",
"tagline": "{{SITENAME}}ста",
"permalink": "Ялань сюлмафкс",
"print": "Нолдамс",
"view": "Ваномс",
+ "view-foreign": "Ванк $1са",
"edit": "Петнеме",
+ "edit-local": "Петнемс тя азондомать",
"create": "Тиемс",
+ "create-local": "Поладомс азондомать",
"editthispage": "Петнемс тя лопать",
"create-this-page": "Тиемс тя лопать",
"delete": "Нардамс",
"deletethispage": "Нардамс тя лопать",
+ "undeletethispage": "Мърдафтомс лопать",
"undelete_short": "Мърдафтомс {{PLURAL:$1|петнема|$1 петнемат}}",
"viewdeleted_short": "Ваномс {{PLURAL:$1|фкя нардаф видептема|$1 нардаф видептемат}}",
"protect": "Араламс",
"talkpagelinktext": "Корхтама",
"specialpage": "Башка тевонь лопа",
"personaltools": "Эсь кядьёнкст",
- "postcomment": "Од пакш",
"articlepage": "Ваномс потмакслопать",
"talk": "Корхнема",
"views": "Ванфт",
- "toolbox": "Кядьёнкс кярькс",
+ "toolbox": "Кядьёнкст",
"userpage": "Ваномс тиить лопанц",
"projectpage": "Ваномс проектть лопанц",
"imagepage": "Ваномс файлонь лопать",
"jumptonavigation": "навигацие",
"jumptosearch": "вешендема",
"view-pool-error": "Ужяль, тя пингть серверхнень вийсна аф сатовихть.\nВельф лама тиихть тяряфнихть ваномс тя лопать.\nЭняльттяма учт аф ламос тя лопанди одукс сама инголе.\n$1",
+ "generic-pool-error": "Ужяль, тя пингть серверхнень вийсна аф сатыхть.\nВельф лама тиида тяряфнихть ваномс тя лопать лангс.\nЭняльттяма учт аф ламос тя лопанди одукс самда инголе.",
"pool-timeout": "Пигонь кирдемась учи пякстаманц",
"pool-queuefull": "Тяряфнемада вельф лама",
"pool-errorunknown": "Аф содаф эльбятькс",
+ "pool-servererror": "Пърдафкс лувома лезкссь аф сатови ($1).",
"aboutsite": "{{SITENAME}} колга",
"aboutpage": "Project:Колга",
- "copyright": "Сёрматфсь ули кода мумс $1-са.",
+ "copyright": "Сёрматфсь ули кода мумс $1са, къда илякс апак аст.",
"copyrightpage": "{{ns:project}}:Копияма видекст",
"currentevents": "Мезе тяса моли",
"currentevents-url": "Project:Мезе тяса моли",
"nospecialpagetext": "<strong>Аш стама башка лопа.</strong>\n\nВанк [[Special:SpecialPages|{{int:specialpages}}]].",
"error": "Эльбятькс",
"databaseerror": "Датабаза эльбятькс",
+ "databaseerror-text": "Содамошинь паргонь вешемста лиссь эльбятькс.\nУлема, програмонь лездомбяльсь аржиясь.",
"laggedslavemode": "Шарфтк мяльце: Тя лопась, улема, сирелгодсь.",
"readonly": "Датабазась пякстаф",
"enterlockreason": "Сёрматк тязк пякстама туфтал тонь арьсемацень мархта эли няфтть тяса мъзярда ули кода пякстамать валхтомс.",
"externaldberror": "Лиссь эльбятькс ушеширень датабазонь вельде кемокстакшнембачк эли тондейть аф мярьгови полафнемс тонь ушеширень сёрматфтомацень.",
"login": "Сувама",
"nav-login-createaccount": "Сувама / сёрматфтома",
- "loginprompt": "Тондейть эряви нолдамс тевс cookies {{SITENAME}}с суваманди.",
"userlogin": "Сувама / сёрматфтома",
"userloginnocreate": "Сувамс",
"logout": "Лисема",
"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-suggest": "Афкукс тонь мяльсот: $1",
"file-deleted-duplicate": "Файлсь сяка кода файл ([[:$1]]) нардафоль. Ванк файлонь нардама историянц сонь одукс тонгоманза инголе.",
"uploadwarning": "Тонгодемань инголе кардама",
"savefile": "Ванфтомс файл",
- "uploadedimage": "тонгозь \"[[$1]]\"",
- "overwroteimage": "тонгозь \"[[$1]]\" од верзиенц",
"uploaddisabled": "Тонгодемать лоткозь",
"uploaddisabledtext": "Файл тонгодемась лоткаф.",
"uploadscripted": "Тя файлса ащи HTML эли програм, конат аф морафтовихть интернет полатксть вельде.",
"watchlist-details": "{{PLURAL:$1|$1 лопа|$1 лопат}} мельгеваномацень ала корхнема лопат аф лувомок.",
"wlheader-enotif": "Электрононь сёрма вельде пачфнема нолдаф тевс.",
"wlheader-showupdated": "Лопат конань полафтозь тонь мекольце сувсемадот меле няфтевсть '''эчке тяшкса'''.",
+ "wlnote": "Ала {{PLURAL:$1|мекольце полафнема|'''$1''' мекольце полафнемат}} ётай {{PLURAL:$2| ойста (часста)|'''$2''' ойста (часста)}}.",
"wlshowlast": "Няфтемс мекольце $1 ойхть (част) $2 шит $3",
"watchlist-options": "Мельгеваномать латцемасна",
"watching": "Ванома...",
"searchprofile-advanced-tooltip": "Hitady ny anaran-tsehatra ho an'ny fikarohana",
"search-result-size": "$1 ({{PLURAL:$2|teny|teny}} $2)",
"search-result-category-size": "Mpiray sokajy $1{{PLURAL:$1}} (zana-tsokajy $2{{PLURAL:}}, rakitra $3{{PLURAL:}})",
- "search-result-score": "Fifanarahana : $1%",
"search-redirect": "(redirect avy amin'ny/amin'i $1)",
"search-section": "(fizaràna $1)",
"search-file-match": "(miady amin'ny votoatin-drakitra)",
"uploadwarning": "Fampitandremana",
"uploadwarning-text": "Ovay ny fanoritan' ilay rakitra ary andrao fanindroany.",
"savefile": "Tehirizo ny rakitra",
- "uploadedimage": "tonga ny rakitra\"[[$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.",
"uploaddisabledtext": "Tsy afaka andefasana rakitra aloha eto amin'ity wiki ity.",
"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.",
+ "wlnote": "Eo ambany dia ahitana ny {{PLURAL:$1|fiovana farany indrindra|ny fiovana ''$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",
"watching": "Fanarahana...",
"talkpagelinktext": "Каҥашымаш",
"specialpage": "Лӱмын ыштыме лаштык",
"personaltools": "Паша ӱзгар",
- "postcomment": "У ужаш",
"articlepage": "Лаштыкыште возымым ончыкташ",
"talk": "Каҥашымаш",
"views": "Ончалаш",
"yourdomainname": "Тендан домен:",
"login": "Шке денет палдаре",
"nav-login-createaccount": "Пураш/Регистрацийым эрте",
- "loginprompt": "{{SITENAME}} шке денет палдарыме деч ончыч компьютерыштет «cookies»-ым чӱктыман.",
"userlogin": "Пураш/Регистрацийым эрташ",
"logout": "Лекташ",
"userlogout": "Лекташ",
"uploadlogpage": "Оптымаш-влак журнал",
"filedesc": "Файл нерген кӱчыкын увертараш",
"fileuploadsummary": "Тидын нерген кӱчыкын:",
- "uploadedimage": "«[[$1]]» пуртыш",
"watchthisupload": "Тиде файлым эскераш",
"license-header": "Лицензирований",
"imgfile": "файл",
"talkpagelinktext": "maota",
"specialpage": "Laman istimewa",
"personaltools": "Pakakeh pribadi",
- "postcomment": "Bagian baru",
"articlepage": "Lihek isi laman",
"talk": "Rundiang",
"views": "Caliak",
"externaldberror": "Alah tajadi kasalahan otentikasi basis data eksternal atau Sanak indak diizinan malakuan pabaruan tahadok akun eksternal Sanak.",
"login": "Masuak log",
"nav-login-createaccount": "Masuak log / buek akun",
- "loginprompt": "Sanak musti mangaktipan ''cookies'' pado paramban Sanak untuak dapek masuak log ka {{SITENAME}} ko.",
"userlogin": "Masuak log / buek akun",
"userloginnocreate": "Masuak log",
"logout": "Kalua log",
"searchprofile-advanced-tooltip": "Pacarian di ruang namo tatantu",
"search-result-size": "$1 ({{PLURAL:$2|$2 kato}})",
"search-result-category-size": "{{PLURAL:$1|$1 anggota}} ({{PLURAL:$2|$2 subkategori}}, {{PLURAL:$3|$3 berkas}})",
- "search-result-score": "Relevansi: $1%",
"search-redirect": "(pangaliahan $1)",
"search-section": "(bagian $1)",
"search-suggest": "Mungkin makasuiknyo: $1",
"filetype-bad-ie-mime": "Indak dapek mamuek berkas dek Internet Explorer mandeteksinyo sabagai \"$1\", nan indak diizinkan dan marupokan tipe berkas bapotensi bahayo.",
"fileexists-thumbnail-yes": "Berkas ko nampaknyo marupoan gambar nan ukurannyo dipaketek ''(miniatua)''. [[$1|thumb]]\nCubo pareso berkas <strong>[[:$1]]</strong> tasabuik.\nKoq berkas tu samemang marupoan gambar dalam ukuran aslinyo, Sanak indak paralu untuak mamuak baliak miniatur lainnyo.",
"file-thumbnail-no": "Namo berkas dimulai jo <strong>$1</strong>.\nNampaknyo berkas ko marupoan gambar jo ukuran dipaketek ''(miniatua)''.\nKoq Sanak ado versi resolusi panuah dari gambar ko, cubolah muekan berkas tasabuik. Koq indak, harap ubah namo berkas ko.",
- "uploadedimage": "mamuek \"[[$1]]\"",
"upload-source": "Berkas sumber",
"sourcefilename": "Namo berkas sumber:",
"sourceurl": "URL sumber:",
"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",
"watching": "Mamantau...",
"duplicate-defaultsort": "'''Peringatan:''' Kunci panguruitan default \"$2\" sabalunnyo mangabaikan kunci panguruitan default \"$1\".",
"version": "Versi",
"version-extensions": "Ekstensi tarinstal",
+ "version-skins": "Kulik",
"version-specialpages": "Laman istimewa",
"version-parserhooks": "Kaik parser",
"version-variables": "Variabel",
"version-antispam": "Pancagahan spam",
- "version-skins": "Kulik",
"version-other": "Lain-lain",
"version-version": "(Versi $1)",
"version-license": "Lisensi",
"Spacebirdy",
"Urhixidur",
"לערי ריינהארט",
- "아라"
+ "아라",
+ "Milicevic01"
]
},
"tog-underline": "Потцртување на врски:",
"hidetoc": "скриј",
"collapsible-collapse": "Собери",
"collapsible-expand": "прикажи",
+ "confirmable-confirm": "Дали {{GENDER:$1|сте}} сигурни?",
+ "confirmable-yes": "Да",
+ "confirmable-no": "Не",
"thisisdeleted": "Да прикажам или вратам $1?",
"viewdeleted": "Да погледате $1?",
"restorelink": "{{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}",
"invalidtitle-knownnamespace": "Неважечки наслов со именски простор „$2“ и текст „$3“",
"invalidtitle-unknownnamespace": "Неважечки наслов со именски простор бр. $1 и текст „$2“",
"exception-nologin": "Не сте најавени",
- "exception-nologin-text": "[[Special:Userlogin|Најавете се]] за да добиете пристап до страницата или дејството.",
+ "exception-nologin-text": "Најавете се за да добиете пристап до страницата или дејството.",
"exception-nologin-text-manual": "Треба да сте $1 за да имате пристап до страницата или дејството.",
"virus-badscanner": "Лоша поставка: непознат проверувач на вируси: ''$1''",
"virus-scanfailed": "неуспешно скенирање (код $1)",
"parser-template-recursion-depth-warning": "Пречекорена е границата на длабочината на рекурзијата во шаблонот ($1)",
"language-converter-depth-warning": "Пречекорена е границата на длабочината на јазичниот претворач ($1)",
"node-count-exceeded-category": "Страници каде е надминат бројот на јазли",
- "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80иÑ\98а за Ñ\81Ñ\82Ñ\80аниÑ\86и каде е надминаÑ\82 бÑ\80оÑ\98оÑ\82 на јазли.",
+ "node-count-exceeded-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а го надминÑ\83ва макÑ\81ималниоÑ\82 бÑ\80оÑ\98 на јазли.",
"node-count-exceeded-warning": "Страницата го надмина бројот на јазли",
"expansion-depth-exceeded-category": "Страници каде е пречекорена длабочината на проширувањето",
- "expansion-depth-exceeded-category-desc": "Ð\9eва е каÑ\82егоÑ\80иÑ\98а наменеÑ\82а за Ñ\81Ñ\82Ñ\80аниÑ\86и Ñ\81о надмината длабочина на проширување.",
+ "expansion-depth-exceeded-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ñ\98а надминÑ\83ва макÑ\81ималната длабочина на проширување.",
"expansion-depth-exceeded-warning": "Страницата ја надмина длабочината на проширувањето",
"parser-unstrip-loop-warning": "Утврдена е јамка",
"parser-unstrip-recursion-limit": "Пречекорена е границата на рекурзија ($1)",
"undo-failure": "Уредувањето не можеше да се откаже заради меѓувремени спротиставени уредувања.",
"undo-norev": "Измената не можеше да биде вратена бидејќи не постои или била избришана.",
"undo-nochange": "Се чини дека измената (уредувањето) е веќе вратена.",
- "undo-summary": "Откажано уредувањето $1 на уредникот [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]])",
+ "undo-summary": "Откажано уредувањето $1 на уредникот [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]])",
"undo-summary-username-hidden": "Поништи ја преработката $1 на скриен корисник",
"cantcreateaccounttitle": "Не може да се создаде корисничка сметка",
"cantcreateaccount-text": "Создавањето на корисничка сметка од оваа IP-адреса ('''$1''') е блокирано од страна на [[User:$3|$3]].\n\nОбразложението дадено од страна на $3 е ''$2''",
"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-score": "Релевантност: $1%",
"search-redirect": "(пренасочување $1)",
"search-section": "(пасус $1)",
"search-file-match": "(се совпаѓа со содржината на податотеката)",
"preferences": "Нагодувања",
"mypreferences": "нагодувања",
"prefs-edits": "Број на уредувања:",
- "prefsnologintext2": "ТÑ\80еба да Ñ\81Ñ\82е $1 за да можеÑ\82е да ги поÑ\81Ñ\82авÑ\83вате корисничките нагодувања.",
+ "prefsnologintext2": "Ð\9dаÑ\98авеÑ\82е Ñ\81е за да ги измените корисничките нагодувања.",
"prefs-skin": "Руво",
"skin-preview": "Преглед",
"datedefault": "Небитно",
"uploadwarning": "Предупредување при подигање",
"uploadwarning-text": "Изменете го описот на податотеката подолу и обидете се повторно.",
"savefile": "Зачувај податотека",
- "uploadedimage": "подигнато „[[$1]]“",
- "overwroteimage": "подигнато нова верзија на „[[$1]]“",
"uploaddisabled": "Забрана за подигања",
"copyuploaddisabled": "Подигањето од URL е оневозможено.",
"uploaddisabledtext": "Подигањето на податотеки е оневозможено.",
"trackingcategories-desc": "Критериуми за вклучување",
"noindex-category-desc": "Роботите не ја индексираат страницава бидејќи го содржи волшебниот збор <code><nowiki>__NOINDEX__</nowiki></code> и се наоѓа во именски простор кајшто е дозволен.",
"index-category-desc": "Страницата содржи <code><nowiki>__INDEX__</nowiki></code> (и се наоѓа во именски простор кајшто ова е дозволено), па затоа се индексира од роботи, што инаку не би било.",
- "post-expand-template-inclusion-category-desc": "Ð\9fо пÑ\80оÑ\88иÑ\80Ñ\83ваÑ\9aеÑ\82о на Ñ\81иÑ\82е Ñ\88аблони, Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а е поголема од <code>$wgMaxArticleSize</code>, па заÑ\82оа некои шаблони не се проширени.",
- "post-expand-template-argument-category-desc": "Ð\9fо пÑ\80оÑ\88иÑ\80Ñ\83ваÑ\9aе на Ñ\88аблонÑ\81ки аÑ\80гÑ\83менÑ\82 (неÑ\88Ñ\82о во Ñ\82Ñ\80оÑ\98ни кадÑ\80ави загÑ\80ади, како на пÑ\80. <code>{{{Foo}}})</code>, Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а е поголема од <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Ð\92о Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а има премногу оптоварувачки расчленувачки функции (како <code>#ifexist</code>). Погл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Ð\9aаÑ\82егоÑ\80Ñ\98аÑ\82а Ñ\81е Ñ\81Ñ\82ава ако Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а Ñ\81одÑ\80жи неиÑ\81пÑ\80авна подаÑ\82оÑ\82еÑ\87ка врска (врска за вметнување на податотека што не постои).",
- "hidden-category-category-desc": "Ð\9eва е каÑ\82егоÑ\80иÑ\98а Ñ\88Ñ\82о содржи <code><nowiki>__HIDDENCAT__</nowiki></code>, што значи дека по основно не се прикажува во страниците.",
+ "post-expand-template-inclusion-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а е поголема од <code>$wgMaxArticleSize</code> по пÑ\80оÑ\88иÑ\80Ñ\83ваÑ\9aеÑ\82о на Ñ\81иÑ\82е Ñ\88аблони. Ð\97аÑ\82оа, некои шаблони не се проширени.",
+ "post-expand-template-argument-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а е поголема од <code>$wgMaxArticleSize</code> по пÑ\80оÑ\88иÑ\80Ñ\83ваÑ\9aе на Ñ\88аблонÑ\81киоÑ\82 аÑ\80гÑ\83менÑ\82 (неÑ\88Ñ\82о во Ñ\82Ñ\80оÑ\98ни кадÑ\80ави загÑ\80ади, како <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а коÑ\80иÑ\81Ñ\82и премногу оптоварувачки расчленувачки функции (како <code>#ifexist</code>). Погл. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "СÑ\82Ñ\80аниÑ\86аÑ\82а Ñ\81одÑ\80жи неиÑ\81пÑ\80авна подаÑ\82оÑ\82еÑ\87на врска (врска за вметнување на податотека што не постои).",
+ "hidden-category-category-desc": "Ð\9aаÑ\82егоÑ\80иÑ\98аÑ\82а содржи <code><nowiki>__HIDDENCAT__</nowiki></code>, што значи дека по основно не се прикажува во страниците.",
"trackingcategories-nodesc": "Нема опис.",
"trackingcategories-disabled": "Категоријата е оневозможена",
"mailnologin": "Нема адреса за праќање",
"mywatchlist": "Набљудувања",
"watchlistfor2": "За $1 $2",
"nowatchlist": "Немате ништо во списокот на набљудувања.",
- "watchlistanontext": "ТÑ\80еба да Ñ\81Ñ\82е $1 за да можете да го прегледувате и уредувате списокот на набљудувања.",
+ "watchlistanontext": "Ð\9dаÑ\98авеÑ\82е Ñ\81е за да можете да го прегледувате и уредувате списокот на набљудувања.",
"watchnologin": "Не сте најавени",
"addwatch": "Додај во списокот на набљудувања",
"addedwatchtext": "Страницата „[[:$1]]“ е додадена во [[Special:Watchlist|списокот на набљудувања]].\nИдните промени на оваа страница и нејзината страница за разговор ќе се прикажуваат таму.",
"delete-edit-reasonlist": "Уреди причини за бришење",
"delete-toobig": "Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|преработка|преработки}}.\nБришењето на ваквии страници е забрането со цел {{SITENAME}} да се заштити од оштетувања.",
"delete-warning-toobig": "Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|преработка|преработки}}.\nБришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};\nпродолжете доколку сте сигруни дека треба тоа да го сторите.",
+ "delete-cantedit": "Не можете да ја избришете страницава зошто немате дозвола да ја уредувате.",
"deleting-backlinks-warning": "'''Предупредување:''' До страницата што сакате да ја избришете водат [[Special:WhatLinksHere/{{FULLPAGENAME}}|други страници]] или пак се превметнуваат во неа.",
"rollback": "Отповикај промени",
"rollback_short": "Отповикај",
"autoblockid": "Автоблок бр. $1",
"block": "Блокирај корисник",
"unblock": "Одблокирај корисник",
- "blockip": "Блокирај корисник",
+ "blockip": "Блокирај {{GENDER:$1|корисник}}",
"blockip-legend": "Блокирај корисник",
"blockiptext": "Користете го долниот образец за да го забраните пристапот за пишување од одредена IP-адреса или корисничко име.\nОва единствено треба да се прави за да се спречи вандализам, во согласност со [[{{MediaWiki:Policy-url}}|правилата на Википедија]].\nИзберете конкретна причина подолу (на пр. наведувајќи ги страниците што биле вандализирани).",
"ipaddressorusername": "IP-адреса или корисничко име:",
"ipb-unblock-addr": "Одблокирај го $1",
"ipb-unblock": "Одблокирај корисник или IP-адреса",
"ipb-blocklist": "Преглед на активни блокирања",
- "ipb-blocklist-contribs": "Придонеси на $1",
+ "ipb-blocklist-contribs": "Придонеси на {{GENDER:$1|$1}}",
"unblockip": "Деблокирај корисник",
"unblockiptext": "Користете го долниот образец да го вратите правото на пишување на претходно блокирана IP-адреса или корисничко име.",
"ipusubmit": "Избриши го ова блокирање",
"logentry-rights-rights": "$1 {{GENDER:$2|го измени}} групното членство на $3 од $4 во $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|го измени}} групното членство во $3",
"logentry-rights-autopromote": "$1 автоматски {{GENDER:$2|унапреден|унапредена}} од $4 во $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|ја подигна}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|подигна}} нова верзија на $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|ја подигна}} $3",
"rightsnone": "(нема)",
"feedback-bugornote": "Ако сте спремни подробно да го опишете техничкиот проблем, тогаш [$1 пријавете грешка]. \nВо спротивно, послужете се со едноставниот образец подолу. Вашиот коментар ќе стои на страницата „[$3 $2]“, заедно со корисничкото име и прелистувачот што го користите.",
"feedback-subject": "Наслов:",
"action-pagelang": "менување јазик на страница",
"log-name-pagelang": "Дневник на менување на јазикот",
"log-description-pagelang": "Ова е дневник на менувања на јазикот на страницата.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|го смени}} јазикот на страницата $3 од $4 на $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|го смени}} јазикот на страницата $3 од $4 на $5.",
+ "default-skin-not-found": "За жал, основното руво на вашето вики (<code>$wgDefaultSkin</code>) — <code>$1</code> — не е достапно.\n\nВашата воспоставка ги опфаќа следниве рува. Погледајте [https://www.mediawiki.org/wiki/Manual:Skin_configuration Прирачник: Поставување на рува] за да дознаете како да ги вклучите и како да го изберете основното.\n\n$2\n\n; Ако штотуку го имате воспоставено МедијаВики:\n: Веројатно сте го воспоставиле од git, или пак непосредно од изворниот код на некој друг начин. Ова е очекувано. Пробајте да воспоставите некои рува од [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's именикот на рува] вака:\n* Со преземање на [https://www.mediawiki.org/wiki/Download tarball-воспоставувачот], кој самиот содржи неколку рува и додатоци. Можете да ја прекопирате папката <code>skins/</code> од него.\n* Клонирајќи едно од складиштата <code>mediawiki/skins/*</code> преку git во папката <code>skins/</code> на вашата воспоставка на МедијаВики.\n: Ова не би требало да прави пречки на вашето git-складиште ако сте програмер на МедијаВики.\n\n; Ако штотуку го имате надградено МедијаВики:\n: МедијаВики 1.24 и поновите верзии повеќе не ги вклучуваат воспоставените рува автоматски (погл. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Прирачник: Самооткривање на рува]). Можете да ги прекопирате следниве редови во <code>LocalSettings.php</code> за да ги вклучите сите моментално воспоставени рува:\n\n<pre>$3</pre>\n\n; Ако штотуку го имате изменето <code>LocalSettings.php</code>:\n: Проверете дали правилно се напишани називите на рувата.",
+ "default-skin-not-found-no-skins": "За жал, основното руво на вашето вики (<code>$wgDefaultSkin</code>) — <code>$1</code> — не е достапно.\n\nНемате воспоставено ниедно руво.\n\n; Ако штотуку го имате воспоставено или надградено МедијаВики:\n: Веројатно сте го воспоставиле од git, или пак непосредно од изворниот код на некој друг начин. Ова е очекувано. МедијаВики 1.24 и поновите верзии немаат рува во главното складиште. Пробајте да воспоставите некои рува од [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's именикот на рува] вака:\n:* Со преземање на [https://www.mediawiki.org/wiki/Download tarball-воспоставувачот], кој самиот содржи неколку рува и додатоци. Можете да ја прекопирате папката <code>skins/</code> од него.\n: Ова не би требало да прави пречки на вашето git-складиште ако сте програмер на МедијаВики. Погледајте [https://www.mediawiki.org/wiki/Manual:Skin_configuration Прирачник: Поставување на рува] за да дознаете како да ги вклучите и како да го изберете основното.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (вклучено)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''исклучено''')"
}
"hidetoc": "മറയ്ക്കുക",
"collapsible-collapse": "ചുരുക്കുക",
"collapsible-expand": "വികസിപ്പിക്കുക",
+ "confirmable-confirm": "{{GENDER:$1|താങ്കൾക്ക്}} ഉറപ്പാണോ?",
+ "confirmable-yes": "അതെ",
+ "confirmable-no": "അല്ല",
"thisisdeleted": "$1 കാണുകയോ പുനഃസ്ഥാപിക്കുകയോ ചെയ്യേണ്ടതുണ്ടോ?",
"viewdeleted": "$1 കാണണോ?",
"restorelink": "{{PLURAL:$1|നീക്കംചെയ്ത ഒരു തിരുത്ത്|നീക്കംചെയ്ത $1 തിരുത്തുകൾ}}",
"searchprofile-advanced-tooltip": "തിരഞ്ഞെടുത്ത നാമമേഖലകളിൽ തിരച്ചിൽ നടത്തുവാൻ",
"search-result-size": "$1 ({{PLURAL:$2|ഒരു വാക്ക്|$2 വാക്കുകൾ}})",
"search-result-category-size": "{{PLURAL:$1|ഒരു അംഗം|$1 അംഗങ്ങൾ}} ({{PLURAL:$2|ഒരു ഉപവർഗ്ഗം|$2 ഉപവർഗ്ഗങ്ങൾ}}, {{PLURAL:$3|ഒരു പ്രമാണം|$3 പ്രമാണങ്ങൾ}})",
- "search-result-score": "സാംഗത്യം: $1%",
"search-redirect": "(തിരിച്ചുവിടൽ താൾ $1)",
"search-section": "(വിഭാഗം $1)",
"search-file-match": "(പ്രമാണ ഉള്ളടക്കവുമായി ഒത്തുപോകുന്നുണ്ട്)",
"uploadwarning": "അപ്ലോഡ് മുന്നറിയിപ്പ്",
"uploadwarning-text": "ദയവായി താഴെയുള്ള പ്രമാണ വിവരണങ്ങൾ പുതുക്കി വീണ്ടും ശ്രമിക്കുക.",
"savefile": "പ്രമാണം കാത്ത് സൂക്ഷിക്കുക",
- "uploadedimage": "\"[[$1]]\" അപ്ലോഡ് ചെയ്തു.",
- "overwroteimage": "\"[[$1]]\" എന്ന പ്രമാണത്തിന്റെ പുതിയ പതിപ്പ് അപ്ലോഡ് ചെയ്തിരിക്കുന്നു",
"uploaddisabled": "അപ്ലോഡുകൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.",
"copyuploaddisabled": "യൂ.ആർ.എൽ. വഴിയുള്ള അപ്ലോഡ് നിർജ്ജീവമാക്കിയിരിക്കുന്നു.",
"uploaddisabledtext": "പ്രമാണം അപ്ലോഡ് ചെയ്യുന്നതു സാദ്ധ്യമല്ലാതാക്കിയിരിക്കുന്നു.",
"logentry-rights-rights": "$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം, $4 എന്നതിൽ നിന്നു $5 എന്നതിലേക്കു, $1 {{GENDER:$2|മാറ്റിയിരിക്കുന്നു}}",
"logentry-rights-rights-legacy": "$3 എന്ന ഉപയോക്താവിന്റെ സംഘ അംഗത്വം $1 {{GENDER:$2|മാറ്റിയിരിക്കുന്നു}}",
"logentry-rights-autopromote": "$1 എന്ന ഉപയോക്താവ് $4 എന്നതിൽ നിന്നും $5 എന്നതിലേയ്ക്ക് സ്വയമേവ {{GENDER:$2|ഉയർത്തപ്പെട്ടിരിക്കുന്നു}}",
+ "logentry-upload-upload": "$1 $3 {{GENDER:$2|അപ്ലോഡ് ചെയ്തു}}",
+ "logentry-upload-overwrite": "$1 ഒരു പുതിയ പതിപ്പ് $3 {{GENDER:$2|അപ്ലോഡ് ചെയ്തു}}",
+ "logentry-upload-revert": "$1 $3 {{GENDER:$2|അപ്ലോഡ് ചെയ്തു}}",
"rightsnone": "(ഒന്നുമില്ല)",
"feedback-bugornote": "സാങ്കേതിക പ്രശ്നം എന്താണെന്ന് വിവരിച്ചെഴുതാൻ താങ്കൾ തയ്യാറാണെങ്കിൽ [$1 ബഗ് അറിയിക്കുക].\nഅല്ലെങ്കിൽ താങ്കൾക്ക് താഴെ എളുപ്പത്തിനായി നൽകിയിരിക്കുന്ന ഫോം ഉപയോഗിക്കാം. താങ്കളുടെ കുറിപ്പ് \"[$3 $2]\" താളിൽ, താങ്കളുടെ ഉപയോക്തൃനാമത്തിന്റെയും ഉപയോഗിക്കുന്ന ബ്രൗസറിന്റെ പേരിന്റെയും ഒപ്പം ചേർക്കുന്നതായിരിക്കും.",
"feedback-subject": "വിഷയം:",
"action-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക",
"log-name-pagelang": "ഭാഷ മാറ്റലിന്റെ രേഖ",
"log-description-pagelang": "താളുകളുടെ ഭാഷകൾ മാറ്റിയതിന്റെ രേഖകൾ ഇവിടെക്കാണാം.",
- "logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}."
+ "logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (സജ്ജം)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''സജ്ജമല്ല''')"
}
"talkpagelinktext": "Яриа",
"specialpage": "Тусгай хуудас",
"personaltools": "Өөрийн багаж хэрэгслүүд",
- "postcomment": "Шинэ хэсэг",
"articlepage": "Өгүүллийг үзэх",
"talk": "Хэлэлцүүлэг",
"views": "Харагдацууд",
"externaldberror": "Нэг бол гадны баталгаажуулах мэдээллийн сангийн алдаа гарсан, эсвэл та өөрийн гадны бүртгэлээ шинэчлэх эрхгүй байна.",
"login": "Нэвтрэх",
"nav-login-createaccount": "Нэвтрэх / Бүртгүүлэх",
- "loginprompt": "Та {{SITENAME}}-д нэвтрэхийн тулд күүкинүүд ашиглагдана.",
"userlogin": "Нэвтрэх / Бүртгүүлэх",
"userloginnocreate": "Нэвтрэх",
"logout": "Гарах",
"searchprofile-advanced-tooltip": "Сонгосон нэрний зайнуудаас хайх",
"search-result-size": "$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-suggest": "Та $1 гэж хайя гэсэн үү?",
"uploadwarning": "Хуулах үеийн анхааруулга",
"uploadwarning-text": "Доорх файлын тодорхойлолтыг өөрчлөөд дахин оролдоно уу.",
"savefile": "Файлыг хадгалах",
- "uploadedimage": "\"[[$1]]\"-г орууллаа",
- "overwroteimage": "\"[[$1]]\"-н шинэ хувилбарыг орууллаа",
"uploaddisabled": "Файл оруулах боломжгүй байна.",
"copyuploaddisabled": "URL-аас оруулж болохгүй.",
"uploaddisabledtext": "Файл оруулалтуудыг идэвхижүүлээгүй байна.",
"watchlist-details": "Хяналтын жагсаалтад {{PLURAL:$1|$1 хуудас|$1 хуудаснууд}} байна.",
"wlheader-enotif": "И-мэйл мэдэгдэл хүчинтэй боллоо.",
"wlheader-showupdated": "Таны хамгийн сүүлд айлчилснаас хойш өөрчлөгдсөн хуудсууд '''тодоор''' бичигдсэн байгаа",
+ "wlnote": "Энд нь {{PLURAL:$2|цагийн|'''$2''' цагийн}} өмнө хамгийн сүүлд хийсэн {{PLURAL:$1|өөрчлөлт| '''$1''' өөрчлөлтүүд}} байна.",
"wlshowlast": "Сүүлийн $1 цагийн $2 өдрийн $3-г харуул",
"watchlist-options": "Хянаж буй хуудсуудын жагсаалтны сонголтууд",
"watching": "Хянаж байна...",
"duplicate-defaultsort": "'''Анхаар:''' \"$2\" гэсэн default sort key нь \"$1\" гэсэн өмнөх key-н дээгүүр бичигдэх болж байна.",
"version": "Хувилбар",
"version-extensions": "Суулгасан өргөтгөлүүд",
+ "version-skins": "Арьс",
"version-specialpages": "Тусгай хуудсууд",
"version-parserhooks": "Парсер хүүкүүд",
"version-variables": "Хувьсагчууд",
"version-antispam": "Спамаас сэргийлэх",
- "version-skins": "Арьс",
"version-other": "Бусад",
"version-mediahandlers": "Медиа боловсруулагч",
"version-hooks": "Гогцоо",
"talkpagelinktext": "चर्चा",
"specialpage": "विशेष पृष्ठ",
"personaltools": "वैयक्तिक साधने",
- "postcomment": "नवीन विभाग",
"articlepage": "लेख पृष्ठ",
"talk": "चर्चा",
"views": "दृष्ये",
"externaldberror": "विदागार ’खातरजमा’ (प्रमाणितीकरण) त्रुटी होती अथवा तुम्हाला तुमचे बाह्य खाते अद्ययावत करण्याची परवानगी नाही.",
"login": "सनोंद-प्रवेश(लॉग-ईन)",
"nav-login-createaccount": "सनोंद-प्रवेश / सदस्यखाते उघडा",
- "loginprompt": "{{SITENAME}}मध्ये सनोंद-प्रवेशासाठी स्मृतिशेष सक्षम (कुकिज एनेबल)असणे आवश्यक आहे.",
"userlogin": "सनोंद-प्रवेश करा /सदस्यखाते उघडा",
"userloginnocreate": "सनोंद-प्रवेश",
"logout": "सनोंद-निर्गम",
"searchprofile-advanced-tooltip": "निवडलेल्या नामविश्वांमध्ये शोधा:",
"search-result-size": "$1 ({{PLURAL:$2|१ शब्द|$2 शब्द}})",
"search-result-category-size": "{{PLURAL:$1|१ सदस्य|$1 सदस्य}} ({{PLURAL:$2|१ उपवर्ग|$2 उपवर्ग}}, {{PLURAL:$3|1 संचिका|$3 संचिका}})",
- "search-result-score": "अन्वर्थकता: $1%",
"search-redirect": "(पुनर्निर्देशन $1)",
"search-section": "(विभाग $1)",
"search-suggest": "तुम्हाला हेच म्हणायचे का: $1",
"uploadwarning": "चढवताना सूचना",
"uploadwarning-text": "कृपया खालील संचिका वर्णन संपादित करून पुनर्प्रयत्न करा.",
"savefile": "संचिका जतन करा",
- "uploadedimage": "\"[[$1]]\" चे अपभारण केले",
- "overwroteimage": "\"[[$1]]\" या संचिकेची नवीन आवृत्ती चढविली.",
"uploaddisabled": "संचिका चढविण्यास बंदी घालण्यात आलेली आहे.",
"copyuploaddisabled": "आंतरजालपत्त्याद्वारे चढवणे प्रतिबंधित आहे.",
"uploaddisabledtext": "{{SITENAME}} वर संचिका चढविण्यास बंदी घालण्यात आलेली आहे.",
"watchlist-details": "पहाऱ्याच्या सूचीमधील {{PLURAL:$1|$1 पान|$1 पाने}}, यात चर्चा पाने मोजलेली नाहीत.",
"wlheader-enotif": "विपत्र अधिसूचना सुविधा शक्य केली.",
"wlheader-showupdated": "ती पाने, जी आपण दिलेल्या शेवटच्या भेटीनंतर बदललेली आहेत, '''ठळक''' दाखवली आहेत.",
+ "wlnote": "खाली $3, $4 पर्यंतचे गेल्या {{PLURAL:$2| '''१''' तासातील|'''$2''' तासातील}} {{PLURAL:$1|शेवटचा बदल दिला आहे|शेवटाचे '''$1'''बदल दिले आहेत}}.",
"wlshowlast": "मागील $1 तास $2 दिवस $3 पहा",
"watchlist-options": "पहाऱ्याच्या सूचीचे पर्याय",
"watching": "पहारा देत आहे...",
"duplicate-defaultsort": "'''ताकिद:''' डिफॉल्ट सॉर्ट की \"$2\" ओवर्राइड्स अर्लीयर डिफॉल्ट सॉर्ट की \"$1\".",
"version": "आवृत्ती",
"version-extensions": "स्थापित विस्तार",
+ "version-skins": "त्वचा",
"version-specialpages": "विशेष पाने",
"version-parserhooks": "पृथकक अंकुश",
"version-variables": "चल",
"version-antispam": "उत्पात प्रतिबंधन",
- "version-skins": "त्वचा",
"version-other": "इतर",
"version-mediahandlers": "मिडिया हॅंडलर",
"version-hooks": "अंकुश",
"@metadata": {
"authors": [
"Amdf",
- "Andrijko Z."
+ "Andrijko Z.",
+ "아라"
]
},
"tog-underline": "Ажедмӓшвлӓм ыдыралаш",
"tog-showtoolbar": "Текстӹм тӧрлӹмӹ годым кӱшӹл панельӹм анжыкташ (JavaScript)",
"tog-editondblclick": "Ӹлӹшташвлӓм кок гӓнӓ темдӓл, тӧрлӓш (JavaScript)",
"tog-editsectiononrightclick": "Секцим тӧрлӹмӹ годым артикль лӹмӹм каля доно вургымлашты темдӓлӓш (JavaScript)",
- "tog-rememberpassword": "Мӹньӹн шотыш нӓлмӹ сирмӓшем ти компьютерӹштӹ ӓштӓш (максимум $1 {{PLURAL:$1|1=кечы|кечы}})",
"tog-watchcreations": "Мӹньӹн ӹштӹмӹ ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ",
"tog-watchdefault": "Мӹньӹн вашталтымы ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ",
"tog-watchmoves": "Мӹньӹн лӹмӹм вашталтымы ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ",
"navigation": "Навигаци",
"qbfind": "Кӹчӓлӓш",
"qbedit": "Торлӓш",
- "vector-action-delete": "Карангдаш",
- "vector-action-move": "Лӹмӹм вашталташ",
- "vector-action-protect": "Ӹшӹклӓш",
- "vector-view-create": "Ӹштӓш",
- "vector-view-edit": "Тӧрлӹмӓш",
- "vector-view-history": "Историм анжымаш",
- "vector-view-view": "Лыдмаш",
- "vector-view-viewsource": "Сек пӹтӓриш кодым анжалаш",
"errorpagetitle": "Самынь",
"returnto": "Мӹнгеш ӹлӹштӓшӹш $1.",
"tagline": "гӹц материал {{grammar:genitive|{{SITENAME}}}}",
"search-interwiki-more": "(эче)",
"powersearch-legend": "Кымдан кӹчӓлмӓш",
"powersearch-ns": "Кымдецвлӓштӹ лӹмвлӓм кӹчӓлмӓш:",
- "powersearch-redir": "Ажедмӓшвлӓм анжыкташ",
"preferences": "Настройкывлӓ",
"mypreferences": "Настройкывлӓ",
"group-sysop": "Администраторвлӓ",
"recentchanges": "У тӧрлӹмӓшвлӓ",
"recentchanges-legend": "У тӧрлӹмашвлӓн настройкышты",
"recentchanges-feed-description": "Ти лиништӹ Викиштӹш вашталтмашвлӓм анжалаш.",
- "rclistfrom": "$1 доно вашталтмашвлӓм анжыкташ",
+ "rclistfrom": "$3 $2 доно вашталтмашвлӓм анжыкташ",
"rcshowhideminor": "$1 изи тӧрлӹмаш",
"rcshowhidebots": "$1 бот",
"rcshowhideliu": "$1 тинӓрӹн сирӓлтӹнӹт",
"recentchangeslinked-to": "Анешлӓ, тӹ ӹлыштӓшвлӓштӹш вашталтымашвлӓм анжыкташ, кыдывлӓ ти ӹлӹштӓшӹшкӹ ажедӹт",
"upload": "Файлым темӓш",
"uploadlogpage": "Оптымашвлӓн журналышты",
- "uploadedimage": "оптымы «[[$1]]»",
"filehist": "Файлын историжӹ",
"filehist-help": "Файл тӹнӓм махань ылын, тидӹм ужаш манын датым темдӓлдӓ.",
"filehist-current": "кӹзӹтшӹ",
"booksources-go": "Моаш",
"log": "Журналвлӓ",
"allpages": "Цилӓ ӹлӹштӓш",
- "alphaindexline": "$1 гӹц $2 якте",
"prevpage": "Анзыл ӹлӹштӓш ($1)",
"allpagesfrom": "Анжыкташ тӹ ӹлӹштӓшвлӓм , кыдывлӓ тӹнгӓлӓлтӹт:",
"allpagesto": "Лыкмашым тишӓк шагалташ:",
]
},
"tog-underline": "Garis bawah pautan:",
- "tog-hideminor": "Sembunyikan suntingan kecil dalam laman perubahan terkini",
- "tog-hidepatrolled": "Sorokkan suntingan yang telah dironda daripada laman perubahan terkini",
+ "tog-hideminor": "Sembunyikan suntingan kecil dalam perubahan terkini",
+ "tog-hidepatrolled": "Sorokkan suntingan yang telah dironda daripada perubahan terkini",
"tog-newpageshidepatrolled": "Sorokkan laman yang telah dironda daripada senarai laman baru",
"tog-extendwatchlist": "Kembangkan senarai pantau untuk memaparkan semua perubahan, bukan hanya yang terkini",
- "tog-usenewrc": "Perubahan kumpulan mengikut laman dalam perubahan terkini dan senarai pantau",
+ "tog-usenewrc": "Kumpulkan perubahan mengikut laman dalam perubahan terkini dan senarai pantau",
"tog-numberheadings": "Nomborkan tajuk secara automatik",
- "tog-showtoolbar": "Tunjukkan palang sunting (perlukan JavaScript)",
- "tog-editondblclick": "Dwiklik untuk sunting laman (JavaScript)",
+ "tog-showtoolbar": "Tunjukkan palang alat sunting",
+ "tog-editondblclick": "Dwiklik untuk menyunting laman",
"tog-editsectiononrightclick": "Bolehkan penyuntingan bahagian dengan mengklik kanan pada tajuk bahagian",
- "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",
- "tog-watchmoves": "Tambahkan laman dan fail yang saya pindahkan ke dalam senarai pantau",
- "tog-watchdeletion": "Tambahkan laman dan fail yang saya hapuskan ke dalam senarai pantau",
- "tog-minordefault": "Tandakan semua suntingan sebagai kecil secara asali",
+ "tog-watchcreations": "Tambahkan laman-laman yang saya mencipta dan fail-fail yang saya memuat naik ke dalam senarai pantau saya",
+ "tog-watchdefault": "Tambahkan laman-laman dan fail-fail yang saya menyunting ke dalam senarai pantau saya",
+ "tog-watchmoves": "Tambahkan laman-laman dan fail-fail yang saya memindah ke dalam senarai pantau saya",
+ "tog-watchdeletion": "Tambahkan laman-laman dan fail-fail yang saya menghapus ke dalam senarai pantau saya",
+ "tog-watchrollback": "Tambahkan laman-laman di mana saya telah membuat unduran ke senarai pantau saya",
+ "tog-minordefault": "Tandakan semua suntingan sebagai kecil secara asli",
"tog-previewontop": "Tunjukkan pralihat di atas kotak sunting",
"tog-previewonfirst": "Tunjukkan pralihat pada suntingan pertama",
- "tog-enotifwatchlistpages": "E-mel kepada saya tentang perubahan pada halaman-halaman dan fail-fail dalam senarai pantau saya",
- "tog-enotifusertalkpages": "E-melkan saya apabila berlaku perubahan pada laman perbincangan saya",
- "tog-enotifminoredits": "Juga e-mel kepada saya tentang suntingan kecil pada halaman-halaman dan fail-fail",
+ "tog-enotifwatchlistpages": "E-melkan saya apabila sebuah laman atau fail dalam senarai pantau saya telah diubahkan",
+ "tog-enotifusertalkpages": "E-melkan saya apabila laman perbincangan saya telah diubahkan",
+ "tog-enotifminoredits": "Juga e-melkan saya untuk suntingan-suntingan laman dan fail yang kecil",
"tog-enotifrevealaddr": "Serlahkan alamat e-mel saya dalam e-mel pemberitahuan",
"tog-shownumberswatching": "Tunjukkan bilangan pemantau",
- "tog-oldsig": "Tanda tangan yang sedia ada:",
+ "tog-oldsig": "Tandatangan yang sedia ada:",
"tog-fancysig": "Anggap tandatangan sebagai teks wiki (tanpa pautan automatik)",
"tog-uselivepreview": "Gunakan pralihat langsung (dalam percubaan)",
"tog-forceeditsummary": "Tanya saya jika ringkasan suntingan kosong",
"tog-watchlisthideown": "Sembunyikan suntingan saya daripada senarai pantau",
"tog-watchlisthidebots": "Sembunyikan suntingan bot daripada senarai pantau",
"tog-watchlisthideminor": "Sembunyikan suntingan kecil daripada senarai pantau",
- "tog-watchlisthideliu": "Sembunyikan suntingan oleh pengguna log masuk daripada senarai pantau",
+ "tog-watchlisthideliu": "Sembunyikan suntingan oleh pengguna yang dilog masuk daripada senarai pantau",
"tog-watchlisthideanons": "Sembunyikan suntingan oleh pengguna tanpa nama daripada senarai pantau",
- "tog-watchlisthidepatrolled": "Sorokkan suntingan yang telah dironda daripada senarai pantau",
+ "tog-watchlisthidepatrolled": "Sembunyikan suntingan yang telah dironda daripada senarai pantau",
"tog-ccmeonemails": "Kirimkan saya salinan e-mel yang saya hantar kepada pengguna lain",
"tog-diffonly": "Jangan tunjukkan kandungan laman di bawah perbezaan",
"tog-showhiddencats": "Tunjukkan kategori tersembunyi",
"pool-timeout": "Menunggu sebentar untuk dikunci",
"pool-queuefull": "Giliran kolam telah penuh",
"pool-errorunknown": "Ralat tak diketahui",
+ "pool-servererror": "Perkhidmatan kaunter tabung tidak disediakan ($1).",
"aboutsite": "Perihal {{SITENAME}}",
"aboutpage": "Project:Perihal",
"copyright": "Kandungan disediakan di bawah $1 melainkan dinyatakan sebaliknya.",
"hidetoc": "sorokkan",
"collapsible-collapse": "Lipat",
"collapsible-expand": "Kembangkan",
+ "confirmable-confirm": "Pastikah {{GENDER:$1|anda}}?",
+ "confirmable-yes": "Ya",
+ "confirmable-no": "Tidak",
"thisisdeleted": "Lihat atau pulihkan $1?",
"viewdeleted": "Lihat $1?",
"restorelink": "{{PLURAL:$1|satu|$1}} suntingan dihapuskan",
"laggedslavemode": "Amaran: Laman ini mungkin bukan yang terkini.",
"readonly": "Pangkalan data dikunci",
"enterlockreason": "Sila nyatakan sebab penguncian dan jangkaan\nbila kunci ini akan dibuka.",
- "readonlytext": "Pangkalan data sedang dikunci. Hal ini mungkin disebabkan oleh penyenggaraan rutin, dan akan dibuka semula selepas proses penyenggaraan ini siap.\n\nPentadbir yang menguncinya memberi penjelasan ini: $1",
- "missing-article": "Teks bagi laman \"$1\" $2 tidak dijumpai dalam pangkalan data.\n\nPerkara ini biasanya disebabkan oleh perbuatan mengikuti pautan perbezaan yang lama atau pautan ke laman yang telah dihapuskan.\n\nJika bukan ini sebabnya, anda mungkin telah menjumpai pepijat dalam perisian ini.\nSila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:ListUsers/sysop|pentadbir]].",
+ "readonlytext": "Pangkalan data telah dikunci daripada penyertaan baru dan perubahan-perubahan lain, mungkin untuk penyenggaraan pangkalan data yang rutin, dan akan dibuka semula selepas ia disiapkan.\n\nPenyelia yang menguncinya telah memberi penjelasan ini: $1",
+ "missing-article": "Teks bagi laman \"$1\" $2 tidak dijumpai dalam pangkalan data.\n\nPerkara ini biasanya disebabkan oleh perbuatan mengikuti pautan perbezaan yang lama atau pautan ke sejarah laman yang telah dihapuskan.\n\nJika ini bukan sebabnya, anda mungkin telah menjumpai pepijat dalam perisian ini.\nSila catat URL bagi laman ini dan laporkan perkara ini kepada seorang [[Special:ListUsers/sysop|penyelia]].",
"missingarticle-rev": "(semakan $1)",
"missingarticle-diff": "(Beza: $1, $2)",
"readonly_lag": "Pangkalan data telah dikunci secara automatik sementara semua pelayan pangkalan data diselaraskan.",
"mypreferencesprotected": "Anda tidak mempunyai kebenaran untuk menyunting tetapan keutamaan anda.",
"ns-specialprotected": "Laman khas tidak boleh disunting.",
"titleprotected": "Tajuk ini telah dilindungi oleh [[User:$1|$1]] daripada dicipta. Sebab yang diberikan ialah ''$2''.",
- "filereadonlyerror": "Fail \"$1\" tidak dapat diubah suai kerana repositori fail \"$2\" berada dalam ragam baca sahaja.\n\nPentadbir yang menguncinya memberikan penjelasan yang berikut: \"$3\".",
+ "filereadonlyerror": "Fail \"$1\" tidak dapat diubah suai kerana repositori fail \"$2\" berada dalam mod baca sahaja.\n\nPenyelia yang telah menguncinya memberikan penjelasan berikut: \"$3\".",
"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": "Sila [[Special:Userlogin|log masuk]] untuk dapat mengakses halaman atau tindakan ini.",
+ "exception-nologin-text": "Sila log masuk untuk mendapat akses kepada laman atau tindakan ini.",
"exception-nologin-text-manual": "Sila $1 untuk dapat mengakses halaman atau tindakan ini.",
"virus-badscanner": "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
"virus-scanfailed": "pengimbasan gagal (kod $1)",
"summary-preview": "Pralihat ringkasan:",
"subject-preview": "Pralihat tajuk:",
"blockedtitle": "Pengguna disekat",
- "blockedtext": "'''Nama pengguna atau alamat IP anda telah disekat.'''\n\nSekatan ini dilakukan oleh $1 dengan sebab ''$2''.\n\n* Mula: $8\n* Tamat: $6\n* Pengguna sasaran: $7\n\nSila hubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|pentadbir]] yang lain untuk untuk berunding mengenai sekatan ini.\n\nAnda tidak boleh menggunakan ciri \"e-melkan pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|keutamaan]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5. Sila sertakan maklumat-maklumat ini dalam pertanyaan nanti.",
- "autoblockedtext": "Alamat IP anda telah disekat secara automatik kerana ia digunakan oleh pengguna lain yang disekat oleh $1.\nYang berikut ialah sebab yang dinyatakan:\n\n:''$2''\n\n* Mula: $8\n* Tamat: $6\n* Pengguna sasaran: $7\n\nAnda boleh menghubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|pentadbir]] lain untuk berunding mengenai sekatan ini.\n\nSila ambil perhatian bahawa anda tidak boleh menggunakan ciri \"e-melkan pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|laman keutamaan]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5. Sila sertakan maklumat-maklumat ini dalam pertanyaan nanti.",
+ "blockedtext": "<strong>Nama pengguna atau alamat IP anda telah disekat.</strong>\n\nSekatan ini dilakukan oleh $1.\nSebab yang telah diberikan ialah <em>$2</em>.\n\n* Sekatan mula: $8\n* Sekatan tamat: $6\n* Pengguna sasaran: $7\n\nAnda boleh hubungi $1 atau [[{{MediaWiki:Grouppage-sysop}}|penyelia]] yang lain untuk membincangkan sekatan ini.\n\nSila ambil perhatian bahawa anda tidak boleh menggunakan ciri \"kirim e-mel kepada pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|keutamaan pengguna]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5.\nSila sertakan maklumat-maklumat di atas dalam sebarang pertanyaan yang anda membuat.",
+ "autoblockedtext": "Alamat IP anda telah disekat secara automatik kerana ia digunakan oleh pengguna lain yang disekat oleh $1.\nSebab yang dinyatakan ialah:\n\n:<em>$2</em>\n\n* Sekatan mula: $8\n* Sekatan tamat: $6\n* Pengguna sasaran: $7\n\nAnda boleh menghubungi $1 atau seorang [[{{MediaWiki:Grouppage-sysop}}|penyelia]] yang lain untuk membincangkan sekatan ini.\n\nSila ambil perhatian bahawa anda tidak boleh menggunakan ciri \"kirim e-mel kepada pengguna ini\" kecuali sekiranya anda telah menetapkan alamat e-mel yang sah dalam [[Special:Preferences|keutamaan pengguna]] anda dan anda tidak disekat daripada menggunakannya.\n\nAlamat IP semasa anda ialah $3, dan ID sekatan ialah #$5.\nSila sertakan maklumat-maklumat di atas dalam sebarang pertanyaan yang anda membuat.",
"blockednoreason": "tiada sebab diberikan",
"whitelistedittext": "Anda hendaklah $1 terlebih dahulu untuk menyunting laman.",
"confirmedittext": "Anda perlu mengesahkan alamat e-mel anda terlebih dahulu untuk menyunting mana-mana laman. Sila tetapkan dan sahkan alamat e-mel anda melalui [[Special:Preferences|laman keutamaan]].",
"token_suffix_mismatch": "'''Suntingan anda telah ditolak kerana pelanggan anda memusnahkan aksara tanda baca\ndalam token suntingan. Suntingan tersebut telah ditolak untuk menghalang kerosakan teks laman.\nHal ini kadangkala berlaku apabila anda menggunakan khidmat proksi tanpa nama berdasarkan web yang bermasalah.'''",
"edit_form_incomplete": "'''Beberapa bahagian dari bentuk edit tidak mencapai pelayan, periksa bahawa suntingan anda utuh dan cuba lagi'.'''",
"editing": "Menyunting $1",
- "creating": "Membuat $1",
+ "creating": "Mencipta $1",
"editingsection": "Menyunting $1 (bahagian)",
"editingcomment": "Menyunting $1 (bahagian baru)",
"editconflict": "Percanggahan penyuntingan: $1",
"parser-template-recursion-depth-warning": "Had pengulangan templat dilebihi ($1)",
"language-converter-depth-warning": "Had kedalaman penukar bahasa dilepasi ($1)",
"node-count-exceeded-category": "Laman yang melebihi had kiraan nod",
- "node-count-exceeded-warning": "Laman terlebih kiraan nod",
+ "node-count-exceeded-category-desc": "Laman telah melebihi kiraan kod maksimum.",
+ "node-count-exceeded-warning": "Laman telah melebihi bilangan nod",
"expansion-depth-exceeded-category": "Laman yang melebihi had kedalaman peluasan",
+ "expansion-depth-exceeded-category-desc": "Laman telah melebihi kedalaman peluasan maksimum.",
"expansion-depth-exceeded-warning": "Laman terlebih dalam peluasan",
"parser-unstrip-loop-warning": "Gelung unstrip dikesan",
"parser-unstrip-recursion-limit": "Had rekursi unstrip dilampaui ($1)",
"rev-suppressed-no-diff": "Anda tidak boleh melihat perbezaan ini kerana salah satu semakannya telah '''dihapuskan'''.",
"rev-deleted-unhide-diff": "Salah satu semakan perbezaan ini telah '''dihapuskan'''.\nButiran lanjut boleh didapati dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].\nAnda masih boleh [$1 melihat semakan ini] jika anda ingin teruskan.",
"rev-suppressed-unhide-diff": "Salah satu semakan perbezaan ini telah '''diselindungkan'''.\nButiran lanjut boleh didapati dalam [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log penyelindungan].\nAnda masih boleh [$1 melihat perbezaan ini] jika anda ingin teruskan.",
- "rev-deleted-diff-view": "Salah satu semakan perbezaan ini telah '''dihapuskan'''.\nSebagai pentadbir anda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
+ "rev-deleted-diff-view": "Salah satu semakan perbezaan ini telah <strong>dihapuskan</strong>.\nAnda boleh melihat perbezaan ini; butiran boleh didapati di dalam [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].",
"rev-suppressed-diff-view": "Salah satu semakan perbezaan ini telah '''dipendam'''.\nAnda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penyelindungan].",
"rev-delundel": "tunjukkan/sorokkan",
"rev-showdeleted": "tunjukkan",
"revdelete-modify-missing": "Ralat menyunting item ID $1: ia tiada dalam pangkalan data!",
"revdelete-no-change": "'''Amaran:''' item bertarikh $2, $1 telah mempunyai aturan penglihatan yang diminta.",
"revdelete-concurrent-change": "Ralat ketika mengubahsuai item bertarikh $2, $1: kelihatan statusnya telah diubah oleh orang lain ketika anda cuba untuk mengubahsuainya.\nMohon semak log.",
- "revdelete-only-restricted": "Ralat menyembunyikan item bertarikh $2, $1: anda tidak boleh menyekat item-item dari pandangan pentadbir-pentadbir tanpa memilih juga salah satu pilihan pandangan lain.",
+ "revdelete-only-restricted": "Ralat menyembunyikan item bertarikh $2, $1: Anda tidak boleh menyekat item-item dari pandangan penyelia-penyelia tanpa memilih juga salah satu pilihan pandangan yang lain.",
"revdelete-reason-dropdown": "*Sebab penghapusan yang biasa\n** Pencabulan hak cipta\n** Ulasan atau maklumat peribadi tidak sesuai\n** Nama pengguna tidak sesuai\n** Maklumat berkemungkinan fitnah",
"revdelete-otherreason": "Sebab lain/tambahan:",
"revdelete-reasonotherlist": "Sebab lain",
"revdelete-edit-reasonlist": "Ubah sebab-sebab hapus",
"revdelete-offender": "Pengarang semakan:",
"suppressionlog": "Log penahanan",
- "suppressionlogtext": "Berikut adalah daftar penghapusan dan sekatan yang melibatkan kandungan yang disembunyikan daripada pentadbir.\nLihat [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan semasa.",
+ "suppressionlogtext": "Berikut adalah senarai penghapusan dan sekatan yang melibatkan kandungan yang telah disembunyikan daripada penyelia.\nLihat [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan semasa.",
"mergehistory": "Gabungkan sejarah laman",
"mergehistory-header": "Anda boleh menggabungkan semua semakan dalam sejarah bagi sesebuah laman sumber ke dalam laman lain.\nSila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.\n\n'''Setidak-tidaknya semakan semasa bagi laman sumber akan ditinggalkan.'''",
"mergehistory-box": "Gabungkan semakan bagi dua laman:",
"searchprofile-advanced-tooltip": "Cari dalam ruang nama yang tersuai",
"search-result-size": "$1 ({{PLURAL:$2|$2 patah perkataan}})",
"search-result-category-size": "$1 {{PLURAL:$1|ahli|ahli}} ($2 {{PLURAL:$2|subkategori|subkategori}}, $3 {{PLURAL:$3|fail|fail}})",
- "search-result-score": "Kaitan: $1%",
"search-redirect": "(pelencongan $1)",
"search-section": "(bahagian $1)",
"search-file-match": "(sepadan dengan kandungan fail)",
"preferences": "Keutamaan",
"mypreferences": "Keutamaan",
"prefs-edits": "Jumlah suntingan:",
- "prefsnologintext2": "Sila $1 untuk melihat hasil suntingan anda.",
+ "prefsnologintext2": "Sila log masuk untuk mengubah keutamaan anda.",
"prefs-skin": "Rupa",
"skin-preview": "Pralihat",
"datedefault": "Tiada keutamaan",
"prefs-advancedwatchlist": "Pilihan lanjutan",
"prefs-displayrc": "Pilihan paparan",
"prefs-displaywatchlist": "Pilihan paparan",
+ "prefs-tokenwatchlist": "Token",
"prefs-diffs": "Beza",
"prefs-help-prefershttps": "Keutamaan inu akan berkuatkuasa pada lain kali anda log masuk.",
"prefs-tabs-navigation-hint": "Petua: Anda boleh menggunakan kekunci anak panah kiri atau kanan untuk beralihan dari tab ke tab pada senarai tab.",
"userrights-reason": "Sebab:",
"userrights-no-interwiki": "Anda tidak mempunyai keizinan untuk mengubah hak-hak pengguna di wiki lain.",
"userrights-nodatabase": "Pangkalan data $1 tiada atau bukan tempatan.",
- "userrights-nologin": "Anda mesti [[Special:UserLogin|log masuk]] dengan akaun pentadbir terlebih dahulu untuk memperuntukkan hak-hak pengguna.",
+ "userrights-nologin": "Anda mesti [[Special:UserLogin|log masuk]] dengan akaun penyelia terlebih dahulu untuk memperuntukkan hak-hak pengguna.",
"userrights-notallowed": "Akuan anda tidak dibenarkan untuk menambah atau membuang hak pengguna.",
"userrights-changeable-col": "Kumpulan yang anda boleh ubah",
"userrights-unchangeable-col": "Kumpulan yang anda tak boleh ubah",
"group-user": "Pengguna",
"group-autoconfirmed": "Pengguna sah automatik",
"group-bot": "Bot",
- "group-sysop": "Pentadbir",
+ "group-sysop": "Penyelia",
"group-bureaucrat": "Birokrat",
"group-suppress": "Penyemak",
"group-all": "(semua)",
"group-user-member": "{{GENDER:$1|pengguna}}",
"group-autoconfirmed-member": "{{GENDER:$1|pengguna sah automatik}}",
"group-bot-member": "{{GENDER:$1|bot}}",
- "group-sysop-member": "{{GENDER:$1|pentadbir}}",
+ "group-sysop-member": "{{GENDER:$1|penyelia}}",
"group-bureaucrat-member": "{{GENDER:$1|birokrat}}",
"group-suppress-member": "{{GENDER:$1|penyemak}}",
"grouppage-user": "{{ns:project}}:Pengguna",
"grouppage-autoconfirmed": "{{ns:project}}:Pengguna yang disahkan secara automatik",
"grouppage-bot": "{{ns:project}}:Bot",
- "grouppage-sysop": "{{ns:project}}:Pentadbir",
+ "grouppage-sysop": "{{ns:project}}:Penyelia",
"grouppage-bureaucrat": "{{ns:project}}:Birokrat",
"grouppage-suppress": "{{ns:project}}:Penyemak",
"right-read": "Membaca laman",
"uploadwarning": "Amaran muat naik",
"uploadwarning-text": "Sila ubah keterangan fail di bawah dan cuba lagi.",
"savefile": "Simpan fail",
- "uploadedimage": "memuat naik \"[[$1]]\"",
- "overwroteimage": "memuat naik versi baru bagi \"[[$1]]\"",
"uploaddisabled": "Ciri muat naik dimatikan",
"copyuploaddisabled": "Ciri muat naik melalui URL telah dilumpuhkan.",
"uploaddisabledtext": "Ciri muat naik fail dimatikan.",
"upload-proto-error": "Protokol salah",
"upload-proto-error-text": "Muat naik jauh memerlukan URL yang dimulakan dengan <code>http://</code> atau <code>ftp://</code>.",
"upload-file-error": "Ralat dalaman",
- "upload-file-error-text": "Ralat dalaman telah berlaku ketika cuba mencipta fail sementara pada komputer pelayan.\nSila hubungi [[Special:ListUsers/sysop|pentadbir sistem]].",
+ "upload-file-error-text": "Ralat dalaman telah berlaku ketika mencubai menciptakan fail sementara pada komputer pelayan.\nSila hubungi seorang [[Special:ListUsers/sysop|penyelia]].",
"upload-misc-error": "Ralat muat naik yang tidak diketahui",
- "upload-misc-error-text": "Ralat yang tidak diketahui telah berlaku ketika muat naik. Sila pastikan bahawa URL tersebut sah dan boleh dicapai kemudian cuba lagi. Jika masalah ini berterusan, sila hubungi pentadbir sistem.",
+ "upload-misc-error-text": "Ralat yang tidak diketahui telah berlaku ketika muat naik.\nSila pastikan bahawa URL tersebut sah dan boleh dicapai, kemudian cuba lagi.\nJika masalah ini berterusan, sila hubungi seorang [[Special:ListUsers/sysop|penyelia]].",
"upload-too-many-redirects": "URL ini mengandungi terlalu banyak lencongan",
"upload-http-error": "Berlaku ralat HTTP: $1",
"upload-copy-upload-invalid-domain": "Muat naik salin tidak terdapat dari domain ini.",
"nolicense": "Tidak dipilih",
"licenses-edit": "Ubah tetapan lesen",
"license-nopreview": "(Tiada pralihat)",
- "upload_source_url": " (URL yang boleh diakses oleh orang awam)",
- "upload_source_file": " (fail dalam komputer anda)",
+ "upload_source_url": "(fail pilihan anda dari URL sah yang boleh dimasuki oleh orang awam)",
+ "upload_source_file": "(fail pilihan anda dari komputer anda)",
"listfiles-delete": "hapus",
"listfiles-summary": "Laman khas ini memaparkan semua fail yang telah dimuat naik.",
"listfiles_search_for": "Cari nama imej:",
"filedelete-maintenance": "Ciri penghapusan dan pemulihan fail telah dilumpuhkan buat sementara sepanjang proses penyenggaraan.",
"filedelete-maintenance-title": "Fail tidak boleh dihapuskan",
"mimesearch": "Carian MIME",
- "mimesearch-summary": "Anda boleh menggunakan laman ini untuk mencari fail mengikut jenis MIME. Format input ialah \"jenis/subjenis\", contohnya <code>image/jpeg</code>.",
+ "mimesearch-summary": "Laman ini membolehkan turasan fail-fail untuk jenis MIME mereka.\nMasukkan: jeniskandungan/subjenis atau jeniskandungan/*, contohnya <code>image/jpeg</code>.",
"mimetype": "Jenis MIME:",
"download": "muat turun",
"unwatchedpages": "Laman tidak dipantau",
"wantedpages": "Laman dikehendaki",
"wantedpages-badtitle": "Tajuk tidak sah dalam set keputusan: $1",
"wantedfiles": "Fail dikehendaki",
- "wantedfiletext-cat": "Fail-fail yang berikut digunakan tetapi tidak wujud. Fail-fail dari repositori asing mungkin tersenarai walaupun wujud. Sebarang positif palsu sedemikian akan <del>dipotong</del>. Begitu juga, laman-laman yang terbenam fail-fail yang tidak wujud adalah tersenarai dalam [[:$1]].",
- "wantedfiletext-nocat": "Fail-fail yang berikut digunakan tetapi tidak wujud. Fail-fail dari repositori asing mungkin tersenarai walaupun wujud. Sebarang positif palsu sedemikian akan <del>dipotong</del>.",
+ "wantedfiletext-cat": "Fail-fail berikut sedang digunakan tetapi tidak wujud. Fail-fail dari repositori asing mungkin tersenarai walaupun wujud. Sebarang positif palsu sedemikian akan <del>dipotong</del>. Tambahannya, laman-laman yang membenamkan fail-fail yang tidak wujud disenaraikan dalam [[:$1]].",
+ "wantedfiletext-cat-noforeign": "Fail-fail berikut sedang digunakan tetapi tidak wujud. Juga, laman-laman yang membenamkan fail-fail yang tidak wujud disenaraikan dalam [[:$1]].",
+ "wantedfiletext-nocat": "Fail-fail berikut sedang digunakan tetapi tidak wujud. Fail-fail dari repositori asing mungkin tersenarai walaupun wujud. Sebarang positif palsu sedemikian akan <del>dipotong</del>.",
+ "wantedfiletext-nocat-noforeign": "Fail-fail berikut sedang digunakan tetapi tidak wujud.",
"wantedtemplates": "Templat dikehendaki",
"mostlinked": "Laman dipaut terbanyak",
"mostlinkedcategories": "Kategori dipaut terbanyak",
- "mostlinkedtemplates": "Templat dipaut terbanyak",
+ "mostlinkedtemplates": "Laman dipaut terbanyak",
"mostcategories": "Rencana dengan kategori terbanyak",
"mostimages": "Imej dipaut terbanyak",
"mostinterwikis": "Laman yang paling banyak pautan interwiki",
"protectedpages-unknown-timestamp": "Tidak diketahui",
"protectedpages-unknown-performer": "Pengguna tidak dikenali",
"protectedtitles": "Tajuk dilindungi",
+ "protectedtitles-summary": "Laman ini menyenaraikan tajuk-tajuk yang telah dilindungi daripada penciptaan. Untuk senarai semua laman sedia ada yang telah dilindungi, lihat [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
"protectedtitlesempty": "Tiada tajuk yang dilindungi yang sepadan dengan kriteria yang diberikan.",
"listusers": "Senarai pengguna",
"listusers-editsonly": "Hanya papar pengguna yang telah membuat suntingan",
"activeusers-count": "$1 tindakan sejak {{PLURAL:$3|semalam|$3 hari lalu}}",
"activeusers-from": "Tunjukkan pengguna bermula pada:",
"activeusers-hidebots": "Sorokkan bot",
- "activeusers-hidesysops": "Sorokkan pentadbir",
+ "activeusers-hidesysops": "Sorokkan penyelia",
"activeusers-noresult": "Tiada pengguna dijumpai.",
"listgrouprights": "Hak kumpulan pengguna",
- "listgrouprights-summary": "Yang berikut ialah senarai kumpulan pengguna yang ditubuhkan di wiki ini dengan hak-hak masing-masing.\nAnda boleh mengetahui [[{{MediaWiki:Listgrouprights-helppage}}|maklumat tambahan]] mengenai setiap hak.",
+ "listgrouprights-summary": "Berikut adalah senarai kumpulan pengguna yang ditubuhkan di wiki ini, dengan hak-hak mereka masing-masing.\nMungkin terdapat [[{{MediaWiki:Listgrouprights-helppage}}|maklumat tambahan]] mengenai setiap hak.",
"listgrouprights-key": "Petunjuk:\n* <span class=\"listgrouprights-granted\">Hak ditunaikan</span>\n* <span class=\"listgrouprights-revoked\">Hak dibatalkan</span>",
"listgrouprights-group": "Kumpulan",
"listgrouprights-rights": "Hak",
"listgrouprights-removegroup-self": "Keluar daripada {{PLURAL:$2|kumpulan|kumpulan-kumpulan}}: $1",
"listgrouprights-addgroup-self-all": "Menyertai semua kumpulan",
"listgrouprights-removegroup-self-all": "Keluar daripada semua kumpulan",
- "listgrouprights-namespaceprotection-header": "Sekatan ruang nama",
+ "listgrouprights-namespaceprotection-header": "Batasan ruang nama",
"listgrouprights-namespaceprotection-namespace": "Ruang nama",
- "trackingcategories": "Kategori penjejak",
+ "listgrouprights-namespaceprotection-restrictedto": "Hak(-hak) yang membenarkan pengguna untuk menyunting",
+ "trackingcategories": "Kategori-kategori penjejak",
+ "trackingcategories-summary": "Laman ini menyenaraikan kategori-kategori penjejak yang diisikan oleh perisian MediaWiki secara automatik. Nama-nama mereka boleh ditukarkan dengan mengubah pesanan-pesanan sistem berkenaan dalam ruang nama {{ns:8}}.",
"trackingcategories-msg": "Kategori penjejak",
"trackingcategories-name": "Nama pesanan",
+ "trackingcategories-desc": "Kriteria kemasukan kategori",
+ "noindex-category-desc": "Laman tidak didaftar oleh robot kerana ia mempunyai kata ajaib <code><nowiki>__NOINDEX__</nowiki></code> padanya dan terdapat dalam ruang nama di mana tanda tersebut adalah dibenarkan.",
+ "index-category-desc": "Laman mempunyai <code><nowiki>__INDEX__</nowiki></code> padanya (dan terdapat dalam ruang nama di mana tanda tersebut dibenarkan), dan oleh itu adalah didaftar oleh robot di mana ia biasanya tidak akan.",
+ "post-expand-template-inclusion-category-desc": "Saiz laman melebihi <code>$wgMaxArticleSize</code> setelah semua templat telah dikembangkan; oleh itu beberapa templat tidak dikembangkan.",
+ "post-expand-template-argument-category-desc": "Laman menjadi lebih besar daripada <code>$wgMaxArticleSize</code> setelah mengembangkan sebuah hujah templat (sebarang dalam tiga kurungan, seperti <code>{{{Foo}}}</code>.)",
+ "expensive-parserfunction-category-desc": "Laman menggunakan terlalu banyak fungsi parser yang mahal (seperti <code>#ifexist</code>). Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "Laman mempunyai pautan fail yang putus (pautan untuk membenam sebuah fail apabila fail tersebut tidak wujud).",
+ "hidden-category-category-desc": "Kategori mengandungi <code><nowiki>__HIDDENCAT__</nowiki></code> dalam kandungan laman, menghalangkannya daripada paparan dalam kotak pautan kategori pada laman-laman secara asli.",
"trackingcategories-nodesc": "Tiada keterangan tersedia.",
+ "trackingcategories-disabled": "Kategori telah dimatikan",
"mailnologin": "Tiada alamat e-mel",
"mailnologintext": "Anda perlu [[Special:UserLogin|log masuk]]\nterlebih dahulu dan mempunyai alamat e-mel yang sah dalam\n[[Special:Preferences|laman keutamaan]] untuk mengirim e-mel kepada pengguna lain.",
"emailuser": "Kirim e-mel kepada pengguna ini",
"mywatchlist": "Senarai pantau",
"watchlistfor2": "Bagi $1 $2",
"nowatchlist": "Tiada item dalam senarai pantau anda.",
- "watchlistanontext": "Sila $1 terlebih dahulu untuk melihat atau menyunting senarai pantau anda.",
+ "watchlistanontext": "Sila log masuk untuk melihat atau menyunting senarai pantau anda.",
"watchnologin": "Belum log masuk",
"addwatch": "Tambahkan ke senarai pantau",
"addedwatchtext": "Halaman \"[[:$1]]\" telah dimasukkan ke dalam [[Special:Watchlist|senarai pantau anda]].\nPerubahan-perubahan pada halaman ini dan halaman perbualannya pada masa akan datang akan tersenarai di dalam senarai itu.",
+ "addedwatchtext-short": "Laman \"$1\" telah ditambahkan kepada senarai pantau anda.",
"removewatch": "Buang dari senarai pantau",
"removedwatchtext": "Laman \"[[:$1]]\" telah dibuang daripada [[Special:Watchlist|senarai pantau anda]].",
+ "removedwatchtext-short": "Laman \"$1\" telah dikeluarkan dari senarai pantau anda.",
"watch": "Pantau",
"watchthispage": "Pantau laman ini",
"unwatch": "Nyahpantau",
"watchlist-details": "$1 laman dipantau ,tidak termasuk laman perbincangan.",
"wlheader-enotif": "Pemberitahuan melalui e-mel dibolehkan.",
"wlheader-showupdated": "Laman-laman yang telah diubah sejak kunjungan terakhir anda dipaparkan dalam '''teks tebal'''.",
- "wlnote": "Berikut ialah {{PLURAL:$1|perubahan|'''$1''' perubahan}} yang terkini dalam {{PLURAL:$2|sejam|'''$2''' jam}} yang lalu, tepat pada $3, $4.",
+ "wlnote": "Berikut adalah {{PLURAL:$1|perubahan|<strong>$1</strong> perubahan}} yang terkini dalam {{PLURAL:$2|sejam|<strong>$2</strong> jam}} yang lalu, tepat pada $3, $4.",
"wlshowlast": "Tunjukkan $1 jam / $2 hari yang lalu / $3.",
"watchlist-options": "Pilihan senarai pantau",
"watching": "Memantau...",
"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.",
+ "delete-cantedit": "Anda tidak boleh menghapuskan laman ini kerana anda tiada kebenaran untuk menyuntingkannya.",
"deleting-backlinks-warning": "'''Amaran:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Terdapat laman lain]] yang berpaut atau bertransklusi dengan laman yang hendak anda hapus ini.",
"rollback": "Undurkan suntingan.",
"rollback_short": "Undur",
"protect-default": "Benarkan semua pengguna",
"protect-fallback": "Benarkan pengguna yang berizin \"$1\" sahaja",
"protect-level-autoconfirmed": "Benarkan pengguna yang diautosahkan sahaja",
- "protect-level-sysop": "Benarkan pentadbir sahaja",
+ "protect-level-sysop": "Benarkan penyelia sahaja",
"protect-summary-cascade": "melata",
"protect-expiring": "sehingga $1 (UTC)",
"protect-expiring-local": "luput $1",
"undeleterevisions": "$1 semakan telah diarkibkan.",
"undeletehistory": "Jika anda memulihkan laman tersebut, semua semakan akan dipulihkan kepada sejarahnya. Jika sebuah laman baru yang mempunyai nama yang sama telah dicipta sejak penghapusan, semakan yang dipulihkan akan muncul dalam sejarah terdahulu.",
"undeleterevdel": "Penyahhapusan tidak akan dilaksanakan sekiranya ia menyebabkan sebahagian semakan puncak dihapuskan.\nDalam hal tersebut, anda perlu membuang semak atau menyemak semakan yang baru dihapuskan. Semakan fail\nyang anda tidak dibenarkan melihatnya tidak akan dipulihkan.",
- "undeletehistorynoadmin": "Rencana ini telah dihapuskan. Sebab penghapusan\nditunjukkan dalam ringkasan di bawah, berserta butiran bagi pengguna-pengguna yang telah menyunting laman ini\nsebelum penghapusan. Teks sebenar bagi semua semakan yang dihapuskan hanya boleh dilihat oleh para pentadbir.",
+ "undeletehistorynoadmin": "Laman ini telah dihapuskan.\nSebab penghapusan ditunjukkan dalam ringkasan di bawah, berserta butiran pengguna-pengguna yang telah menyunting laman ini sebelum penghapusan.\nTeks sebenar bagi semakan yang dihapuskan berikut hanya boleh dilihat oleh para penyelia.",
"undelete-revision": "Menghapuskan semakan bagi $1 (pada $4, $5) oleh $3:",
"undeleterevision-missing": "Semakan tersebut tidak sah atau tidak dijumpai. Mungkin anda telah mengikuti pautan yang rosak\natau semakan tersebut telah dipulihkan atau dibuang daripada arkib.",
"undelete-nodiff": "Tiada semakan sebelumnya.",
"sp-contributions-newbies-sub": "Bagi akaun-akaun baru",
"sp-contributions-newbies-title": "Sumbangan oleh pengguna baru",
"sp-contributions-blocklog": "log sekatan",
+ "sp-contributions-suppresslog": "sumbangan pengguna tersembunyi",
"sp-contributions-deleted": "sumbangan dihapuskan",
"sp-contributions-uploads": "muat naik",
"sp-contributions-logs": "log",
"autoblockid": "Sekat #$1 secara automatik",
"block": "Sekat pengguna",
"unblock": "Nyahsekat pengguna",
- "blockip": "Sekat pengguna",
+ "blockip": "Sekat {{GENDER:$1|pengguna}}",
"blockip-legend": "Sekat pengguna",
"blockiptext": "Gunakan borang di bawah untuk menyekat\npenyuntingan daripada alamat IP atau pengguna tertentu.\nTindakan ini perlu dilakukan untuk menentang vandalisme sahaja dan selaras\ndengan [[{{MediaWiki:Policy-url}}|dasar {{SITENAME}}]].\nSila masukkan sebab sekatan di bawah (umpamannya, sebutkan laman yang telah\ndirosakkan).",
"ipaddressorusername": "Alamat IP atau nama pengguna:",
"ipb-unblock-addr": "Nyahsekat $1",
"ipb-unblock": "Nyahsekat nama pengguna atau alamat IP",
"ipb-blocklist": "Lihat sekatan sedia ada",
- "ipb-blocklist-contribs": "Sumbangan oleh $1",
+ "ipb-blocklist-contribs": "Sumbangan oleh {{GENDER:$1|$1}}",
"unblockip": "Nyahsekat pengguna",
"unblockiptext": "Gunakan borang di bawah untuk membuang sekatan bagialamat IP atau nama pengguna yang telah disekat.",
"ipusubmit": "Tarik balik sekatan ini",
"blocklist-timestamp": "Cop masa",
"blocklist-target": "Sasaran",
"blocklist-expiry": "Luput",
- "blocklist-by": "Pentadbir sekatan",
+ "blocklist-by": "Penyelia sekatan",
"blocklist-params": "Parameter sekatan",
"blocklist-reason": "Sebab",
"ipblocklist-submit": "Cari",
"movepagetalktext": "Laman perbincangan yang berkaitan, jika ada, akan dipindahkan bersama-sama laman ini secara automatik '''kecuali''':\n* Sebuah laman perbincangan dengan nama baru telah pun wujud, atau\n* Anda membuang tanda kotak di bawah.\n\nDalam kes tersebut, anda terpaksa melencongkan atau menggabungkan laman secara manual, jika perlu.",
"movearticle": "Pindahkan laman:",
"moveuserpage-warning": "'''Amaran:''' Anda sudah hendak memindahkan suatu laman pengguna. Sila ambil perhatian bahawa hanya laman tersebut akan dipindahkan dan nama pengguna yang berkenaan ''tidak'' berubah.",
+ "movecategorypage-warning": "<strong>Amaran:</strong> Anda hendak memindahkan sebuah laman kategori. Sila ambil perhatian bahawa hanya laman akan dipindahkan dan sebarang laman dalam kategori laman <em>tidak</em> akan dikategorikan semula ke dalam yang baru.",
"movenologintext": "Anda mesti [[Special:UserLogin|log masuk]] terlebih dahulu untuk memindahkan laman.",
"movenotallowed": "Anda tidak mempunyai keizinan untuk memindahkan laman.",
"movenotallowedfile": "Anda tidak mempunyai keizinan untuk memindahkan fail.",
"thumbnail_image-type": "Jenis imej tidak disokong",
"thumbnail_gd-library": "Tatarajah perpustakaan GD tidak lengkap: kehilangan fungsi $1",
"thumbnail_image-missing": "Fail ini nampaknya hilang: $1",
+ "thumbnail_image-failure-limit": "Terdapat terlalu banyak percubaan yang gagal ($1 atau lebih) untuk memaparkan thumbnail ini. Sila cuba lagi kemudian.",
"import": "Import laman",
"importinterwiki": "Import transwiki",
"import-interwiki-text": "Sila pilih wiki dan tajuk laman yang ingin diimport.\nSemua tarikh semakan dan nama penyunting akan dikekalkan.\nSemua tindakan import transwiki dicatatkan dalam [[Special:Log/import|log import]].",
"import-error-create": "Laman \"$1\" tidak diimport kerana anda tidak dibenarkan untuk menciptanya.",
"import-error-interwiki": "Laman \"$1\" tidak diimport kerana namanya ditempah untuk pemautan luaran (antara wiki).",
"import-error-special": "Laman \"$1\" tidak diimport kerana ia tergolong dalam ruang nama khas yang tidak membenarkan laman.",
- "import-error-invalid": "Laman \"$1\" tidak diimport kerana namanya tidak sah.",
+ "import-error-invalid": "Laman \"$1\" tidak diimport kerana nama yang ia akan diimport kepada tidak sah pada wiki ini.",
"import-error-unserialize": "Semakan $2 dari halaman \"$1\" tidak dapat dinyahsirikan. Semakan ini dilaporkan telah menggunakan model kandungan $3 yang disirikan sebagai $4.",
"import-error-bad-location": "Semakan $2 yang menggunakan model kandungan $3 tidak boleh disimpan pada \"$1\" di wiki ini kerana model itu tidak disokong pada halaman tersebut.",
"import-options-wrong": "{{PLURAL:$2|Pilihan|Pilihan-pilihan}} salah: <nowiki>$1</nowiki>",
"importlogpage": "Log import",
"importlogpagetext": "Senarai tindakan import laman dengan keseluruhan sejarah suntingannya daripada wiki lain.",
"import-logentry-upload": "mengimport [[$1]] dengan memuat naik fail",
- "import-logentry-upload-detail": "$1 semakan",
+ "import-logentry-upload-detail": "$1 semakan diimportkan",
"import-logentry-interwiki": "$1 dipindahkan ke wiki lain",
- "import-logentry-interwiki-detail": "$1 semakan daripada $2",
+ "import-logentry-interwiki-detail": "$1 semakan diimportkan daripada $2",
"javascripttest": "Ujian JavaScript",
"javascripttest-title": "Ujian $1 sedang dijalankan",
"javascripttest-pagetext-noframework": "Laman ini ditempah untuk menjalankan ujian JavaScript.",
"tooltip-preferences-save": "Simpan keutamaan",
"tooltip-summary": "Berikan ringkasan",
"common.css": "/* CSS yang terletak di sini akan digunakan pada semua kulit */",
+ "print.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada hasil cetak */",
+ "noscript.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada pengguna dengan JavaScript dimatikan */",
+ "group-autoconfirmed.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada pengguna-pengguna sah automatik sahaja */",
+ "group-user.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada pengguna-pengguna berdaftar sahaja */",
+ "group-bot.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada bot sahaja */",
+ "group-sysop.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada penyelia-penyelia sahaja */",
+ "group-bureaucrat.css": "/* CSS yang diletakkan di sini akan memberi kesan kepada birokrat-birokrat sahaja */",
+ "common.js": "/* Sebarang JavaScript di sini akan dimuatkan untuk semua pengguna pada setiap pemuatan laman. */",
+ "group-autoconfirmed.js": "/* Sebarang JavaScript di sini akan dimuatkan untuk pengguna-pengguna sah automatik sahaja */",
+ "group-user.js": "/* Sebarang JavaScript di sini akan dimuatkan untuk pengguna-pengguna berdaftar sahaja */",
+ "group-bot.js": "/* Sebarang JavaScript di sini akan dimuatkan untuk bot sahaja */",
+ "group-sysop.js": "/* Sebarang JavaScript di sini akan dimuatkan untuk penyelia-penyelia sahaja */",
+ "group-bureaucrat.js": "/* Sebarang JavaScript di sini akan dimuatkan untuk birokrat-birokrat sahaja */",
"anonymous": "{{PLURAL:$1|Pengguna|Pengguna-pengguna}} {{SITENAME}} tanpa nama",
"siteuser": "Pengguna {{SITENAME}}, $1",
"anonuser": "Pengguna {{SITENAME}} tanpa nama $1",
"newimages-summary": "Laman khas ini memaparkan senarai fail muat naik terakhir.",
"newimages-legend": "Penapis",
"newimages-label": "Nama fail (atau sebahagian daripadanya):",
+ "newimages-showbots": "Paparkan muat naik oleh bot",
"noimages": "Tiada imej.",
"ilsubmit": "Cari",
"bydate": "mengikut tarikh",
"confirm-watch-top": "Tambahkan laman ini ke dalam senarai pantau anda?",
"confirm-unwatch-button": "OK",
"confirm-unwatch-top": "Buang laman ini daripada senarai pantau anda?",
+ "quotation-marks": "\"$1\"",
"imgmultipageprev": "← halaman sebelumnya",
"imgmultipagenext": "halaman berikutnya →",
"imgmultigo": "Pergi!",
"autosumm-replace": "Mengganti laman dengan '$1'",
"autoredircomment": "Melencong ke [[$1]]",
"autosumm-new": "Mencipta laman baru dengan kandungan '$1'",
+ "autosumm-newblank": "Mencipta laman kosong",
"lag-warn-normal": "Sebarang perubahan baru yang melebihi $1 saat mungkin tidak ditunjukkan dalam senarai ini.",
"lag-warn-high": "Disebabkan oleh kelambatan pelayan pangkalan data, sebarang perubahan baru yang melebihi $1 saat mungkin tidak ditunjukkan dalam senarai ini.",
"watchlistedit-normal-title": "Sunting senarai pantau",
"watchlistedit-raw-done": "Senarai pantau anda telah dikemaskinikan.",
"watchlistedit-raw-added": "$1 tajuk ditambah:",
"watchlistedit-raw-removed": "$1 tajuk telah dibuang:",
+ "watchlistedit-clear-title": "Senarai pantau kosong",
+ "watchlistedit-clear-legend": "Kosongkan senarai pantau",
+ "watchlistedit-clear-explain": "Semua tajuk akan dikeluarkan dari senarai pantau anda",
+ "watchlistedit-clear-titles": "Tajuk-tajuk:",
+ "watchlistedit-clear-submit": "Kosongkan senarai pantau (Ini adalah kekal!)",
+ "watchlistedit-clear-done": "Senarai pantau anda telah dikosongkan.",
+ "watchlistedit-clear-removed": "{{PLURAL:$1|Satu|$1}} tajuk telah dikeluarkan.",
+ "watchlistedit-too-many": "Terdapat terlalu banyak laman untuk dipaparkan di sini.",
+ "watchlisttools-clear": "Kosongkan senarai pantau",
"watchlisttools-view": "Lihat perubahan",
"watchlisttools-edit": "Sunting senarai pantau",
"watchlisttools-raw": "Sunting senarai pantau mentah",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|bincang]])",
"unknown_extension_tag": "Tag penyambung \"$1\" tidak dikenali",
"duplicate-defaultsort": "'''Amaran''': Kunci susunan asali \"$2\" membatalkan kunci susunan asali \"$1\" yang sebelumnya.",
+ "duplicate-displaytitle": "<strong>Amaran:</strong> Tajuk paparan \"$2\" mengatasi tajuk paparan awal \"$1\".",
"version": "Versi",
"version-extensions": "Penyambung yang dipasang",
- "version-skins": "Rupa",
+ "version-skins": "Rupa-rupa yang telah dipasangkan",
"version-specialpages": "Laman khas",
"version-parserhooks": "Penyangkuk penghurai",
"version-variables": "Pemboleh ubah",
"version-hook-name": "Nama penyangkuk",
"version-hook-subscribedby": "Dilanggan oleh",
"version-version": "(Versi $1)",
+ "version-no-ext-name": "[tiada nama]",
"version-license": "Lesen MediaWiki",
"version-ext-license": "Lesen",
"version-ext-colheader-name": "Sambungan",
+ "version-skin-colheader-name": "Rupa",
"version-ext-colheader-version": "Versi",
"version-ext-colheader-license": "Lesen",
"version-ext-colheader-description": "Keterangan",
"htmlform-no": "Tidak",
"htmlform-yes": "Ya",
"htmlform-chosen-placeholder": "Pilih satu pilihan",
+ "htmlform-cloner-create": "Tambah lebih",
+ "htmlform-cloner-delete": "Buang",
+ "htmlform-cloner-required": "Sekurang-kurangnya satu nilai diperlukan.",
"sqlite-has-fts": "$1 dengan sokongan carian teks penuh",
"sqlite-no-fts": "$1 tanpa sokongan carian teks penuh",
"logentry-delete-delete": "$1 telah {{GENDER:$2|menghapuskan}} laman $3",
"logentry-rights-rights": "$1 telah {{GENDER:$2|menukar}} keahlian kumpulan untuk $3 dari $4 ke $5",
"logentry-rights-rights-legacy": "$1 telah {{GENDER:$2|menukar}} keahlian kumpulan untuk $3",
"logentry-rights-autopromote": "$1 telah {{GENDER:$2|dinaik pangkat}} secara automatik dari $4 ke $5",
+ "logentry-upload-upload": "$1 telah {{GENDER:$2|muat naik}} $3",
+ "logentry-upload-overwrite": "$1 telah {{GENDER:$2|muat naik}} versi baru $3",
+ "logentry-upload-revert": "$1 telah {{GENDER:$2|muat naik}} $3",
"rightsnone": "(tiada)",
"feedback-bugornote": "Jika anda bersedia untuk menerangkan masalah teknikal secara terperinci, sila [$1 laporkan pepijat]. \nAtaupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dicatatkan pada laman \"[$3 $2]\", beserta nama pengguna anda dan pelayar yang anda gunakan.",
"feedback-subject": "Perkara:",
"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"
+ "expand_templates_preview": "Pralihat",
+ "pagelanguage": "Pemilih bahasa laman",
+ "pagelang-name": "Laman",
+ "pagelang-language": "Bahasa",
+ "pagelang-use-default": "Gunakan bahasa asli",
+ "pagelang-select-lang": "Pilih bahasa",
+ "right-pagelang": "Mengubah bahasa laman",
+ "action-pagelang": "mengubah bahasa laman",
+ "log-name-pagelang": "Log perubahan bahasa",
+ "log-description-pagelang": "Ini adalah log untuk perubahan-perubahan bahasa laman.",
+ "logentry-pagelang-pagelang": "$1 telah {{GENDER:$2|mengubahkan}} bahasa untuk laman $3 dari $4 ke $5.",
+ "default-skin-not-found": "Whoops! Rupa asli untuk wiki anda (<code>$wgDefaultSkin</code>), <code>$1</code>, tidak disediakan.\n\nPasangan anda kelihatan untuk mempunyai rupa-rupa berikut. Lihat [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] untuk maklumat cara membolehkan mereka dan memilih yang asli.\n\n$2\n\n; Jika anda baru sahaja memasang MediaWiki:\n: Anda kemungkinan memasang dari git, atau terus dari kod sumber melalui cara lain. Ini adalah dijangka. Cubalah memasang beberapa rupa dari [https://www.mediawiki.org/wiki/Category:All_skins panduan rupa mediawiki.org], dengan:\n:* Memuat turun [https://www.mediawiki.org/wiki/Download pemasang tarball] yang terlengkap dengan beberapa rupa dan sambungan. Anda boleh menyalin dan menampal direktori <code>skins/</code> terus darinya.\n:* Mengeklon salah satu repositori <code>mediawiki/skins/*</code> melalui git ke dalam direktori <code>skins/</code> pasangan MediaWiki anda.\n: Perbuatan ini tidak patut mengganggu repositori git anda jika anda seorang pembangun MediaWiki.\n\n; Jika anda baru sahaja menaik taraf MediaWiki:\n: MediaWiki 1.24 dan ke atas tidak lagi membolehkan rupa-rupa yang dipasang secara automatik (lihat [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:Skin autodiscovery]). Anda boleh menampalkan baris-baris berikut ke dalam <code>LocalSettings.php</code> untuk membolehkan semua rupa yang semasa dipasang:\n\n<pre>$3</pre>\n\n; Jika anda baru sahaja mengubah <code>LocalSettings.php</code>:\n: Semakkan lagi nama-nama rupa untuk kesalahan ejaan.",
+ "default-skin-not-found-no-skins": "Whoops! Rupa asli untuk wiki anda (<code>$wgDefaultSkin</code>), <code>$1</code>, tidak disediakan.\n\nAnda tidak mempunyai rupa-rupa yang dipasang.\n\n; Jika anda baru sahaja memasang atau menaik taraf MediaWiki:\n: Anda kemungkinan memasang dari git, atau terus dari kod sumber melalui cara lain. Ini adalah dijangka. MediaWiki 1.24 dan ke atas tidak memasuki sebarang rupa dalam repositori utama. Cubalah memasang beberapa rupa dari [https://www.mediawiki.org/wiki/Category:All_skins panduan rupa mediawiki.org], dengan:\n:* Memuat turun [https://www.mediawiki.org/wiki/Download pemasang tarball] yang terlengkap dengan beberapa rupa dan sambungan. Anda boleh menyalin dan menampal direktori <code>skins/</code> terus darinya.\n:* Mengeklon salah satu repositori <code>mediawiki/skins/*</code> melalui git ke dalam direktori <code>skins/</code> pasangan MediaWiki anda.\n: Perbuatan ini tidak patut mengganggu repositori git anda jika anda seorang pembangun MediaWiki. Lihat [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] untuk maklumat cara membolehkan mereka dan memilih yang asli.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (dibolehkan)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''dimatikan''')"
}
"searchprofile-advanced-tooltip": "Fittex fi spazji tal-isem personalizzati",
"search-result-size": "$1 ({{PLURAL:$2|1 word|$2 kliem}})",
"search-result-category-size": "{{PLURAL:$1|membru wieħed|$1 membri}} ({{PLURAL:$2|sottokategorija waħda|$2 sottokategoriji}}, {{PLURAL:$3|fajl wieħed|$3 fajls}})",
- "search-result-score": "Relevanza: $1%",
"search-redirect": "(rindirizza $1)",
"search-section": "(sezzjoni $1)",
"search-suggest": "Trid tfisser: $1",
"uploadwarning": "Twissija dwar it-tlugħ tal-fajls",
"uploadwarning-text": "Jekk jogħġbok immodifika hawn taħt id-deskrizzjoni tal-fajl u pprova mill-ġdid.",
"savefile": "Salva l-fajl",
- "uploadedimage": "tella' \"[[$1]]\"",
- "overwroteimage": "Verżjoni ġdida ġiet imtella' \"[[$1]]\"",
"uploaddisabled": "Skuzana, però ''uploads'' ta' fajls huwa temporalment sospiż.",
"copyuploaddisabled": "It-tlugħ mill-URL huwa diżattivat.",
"uploaddisabledtext": "It-tlugħ ta' fajls mhuwiex attiv.",
"watchlist-details": "Il-lista ta' osservazzjoni fiha {{PLURAL:$1|paġna waħda (u l-paġna ta' diskussjoni tagħha)|$1 paġni (u l-paġni ta' diskussjoni tagħhom)}}.",
"wlheader-enotif": "In-notifikazzjoni bl-użu tal-posta elettronika hija attivata.",
"wlheader-showupdated": "Il-paġni li ġew editjati wara l-aħħar żjara tiegħek qed jiġu murija b'tipa '''ħoxna'''",
+ "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",
"watching": "Imsegwi...",
"talkpagelinktext": "Cumbersar",
"specialpage": "Páigina special",
"personaltools": "Ferramientas pessonales",
- "postcomment": "Nuobo cacho",
"articlepage": "Ber páigina de cuntenido",
"talk": "Çcusson",
"views": "Besitas",
"yourdomainname": "L tou domínio",
"login": "Antrar",
"nav-login-createaccount": "Antrar / criar cuonta",
- "loginprompt": "Tenes que tener ls <i>cookies</i> atibos para te outenticares an{{SITENAME}}.",
"userlogin": "Antrar / criar cuonta",
"logout": "Salir",
"userlogout": "Salir",
"filesource": "Fuonte:",
"ignorewarnings": "Eignorar qualquiera abiso",
"savefile": "Grabar fexeiro",
- "uploadedimage": "cargou \"[[$1]]\"",
"watchthisupload": "Begiar este fexeiro",
"upload-curl-error28": "Ultrapassado l tiempo lhemite pa l ambio de l fexeiro",
"license": "Lhicença:",
"talkpagelinktext": "ဆွေးနွေးရန်",
"specialpage": "အထူး စာမျက်နှာ",
"personaltools": "ကိုယ်ပိုင် ကိရိယာများ",
- "postcomment": "အပိုင်းသစ်",
"articlepage": "မာတိကာ ကြည့်ရန်",
"talk": "ဆွေးနွေးချက်များ",
"views": "ပုံပန်းသွင်ပြင်",
"yourdomainname": "သင့်ဒိုမိန်း -",
"login": "Log in ဝင်ရန်",
"nav-login-createaccount": "Log in ဝင်ရန်/ အကောင့် လုပ်ရန်",
- "loginprompt": "{{SITENAME}} သို့ လော့အင်ဝင်ရန် ကွတ်ကီးသုံးနိုင်ရန် ပြုလုပ်ပေးထားရမည်။",
"userlogin": "Log in ဝင်ရန်/ အကောင့် လုပ်ရန်",
"userloginnocreate": "Log in ဝင်ရန်",
"logout": "ထွက်ရန်",
"searchprofile-advanced-tooltip": "စိတ်ကြိုက်အမည်ညွှန်းများတွင် ရှာရန်",
"search-result-size": "$1 ({{PLURAL:$2|စကားလုံး 1 လုံး|စကားလုံး $2 လုံး}})",
"search-result-category-size": "{{PLURAL:$1|အသင်းဝင်တစ်ခု|အသင်းဝင် $1 ခု}} ({{PLURAL:$2|ကဏ္ဍခွဲတစ်ခု|ကဏ္ဍခွဲ $2 ခု}}, {{PLURAL:$3|ဖိုင်တစ်ခု|ဖိုင် $3 ခု}})",
- "search-result-score": "ကိုက်ညီမှုရာနှုန်း - $1%",
"search-redirect": "($1 သို့ ပြန်ညွှန်းသည်)",
"search-section": "(အပိုင်း $1)",
"search-suggest": "$1 ဟု ဆိုလိုပါသလား။",
"largefileserver": "ဤဖိုင်သည် ဆာဗာတွင် ခွင့်ပြုရန်သတ်မှတ်ထားသော ဖိုင်အရွယ်အစားထက် ကြီးနေသည်။",
"uploadwarning": "Upload တင်ရာတွင် သတ်ပေးချက်",
"savefile": "ဖိုင်သိမ်းရန်",
- "uploadedimage": "\"[[$1]]\" ပုံကို တင်ပြီးပြီဖြစ်သည်",
- "overwroteimage": "\"[[$1]]\" ၏ မူသစ်ကို upload တင်လိုက်ပြီ",
"uploaddisabled": "Upload တင်ခြင်း ပိတ်ထားသည်။",
"copyuploaddisabled": "URL လင့်မှ Upload တင်ခြင်း ပိတ်ထားသည်။",
"uploaddisabledtext": "ဖိုင်တင်ခြင်းများကို ပိတ်ထားသည်။",
"talkpagelinktext": "Кортнеме",
"specialpage": "Башка тевень лопа",
"personaltools": "Эсень кедьёнкст",
- "postcomment": "Од явкс",
"articlepage": "Ваномс потмокслопанть",
"talk": "Кортнеме",
"views": "Ваномкат",
"password-change-forbidden": "Те викисэнть а полавтсак салававалот.",
"login": "Совамо",
"nav-login-createaccount": "Совамо / тейть совамотарка",
- "loginprompt": "{{SITENAME}} сайтэнтень совамга эряви нолдамс тевс cookies.",
"userlogin": "Совамо / тейть совамотарка",
"userloginnocreate": "Совамо",
"logout": "Лисеме",
"file-exists-duplicate": "Те кавонзавкс файла вана {{PLURAL:$1|1=те файланть|неть файлатнень}} эйстэ:",
"uploadwarning": "Совавтомадо кардамонь пачтямо",
"savefile": "Ванстомс файланть",
- "uploadedimage": "йовкстазь \"[[$1]]\"",
- "overwroteimage": "Ёвкстамс \"[[$1]]\" файлань од версия",
"uploaddisabled": "Совавтомась лоткавтозь",
"uploadvirus": "Те файласонть вирус програм! Информация: $1",
"upload-source": "Лисьмапрякс файла",
"watchlisttools-raw": "Витнеме-петнеме верек ваномалопанть",
"duplicate-defaultsort": "'''Ванок!''' Рядс аравтомань те \"$2\" панжомась саеви те \"$1\" панжомадо икеле.",
"version": "Версия",
+ "version-skins": "Лангт",
"version-specialpages": "Башка тевень лопат",
"version-variables": "Полавтневикс тевть",
- "version-skins": "Лангт",
"version-other": "Лия",
"version-hooks": "Кечказт",
"version-hook-name": "Кечказонть лемезэ",
"may_long": "مه",
"june": "ژوئن",
"july": "ژوئیه",
- "august": "ئÙ\80Ù\88Ú¯Ù\80Ù\87â\80\8cسÙ\80ت",
+ "august": "Ø¢Ú¯Ù\88ست",
"september": "سـهپـتـهمـبـر",
"october": "اکتبر",
"november": "نـووهمـبـر",
"may-gen": "مه",
"june-gen": "جـون",
"july-gen": "ژوئیه",
- "august-gen": "ئÙ\88Ú¯Ù\80Ù\87â\80\8cسÙ\80ت",
+ "august-gen": "Ø¢Ú¯Ù\88ست",
"september-gen": "سـهپـتـهمـبـر",
"october-gen": "اکتبر",
"november-gen": "نـووهمـبـر",
"uploadbtn": "باربییشتن فایل",
"uploadtext": "فرم زیر جه باربییشتن نو پروندهئون وسّه استفاده هاکنین.\nبدیین پروندهئونی که قبلاً باربییشته بَینه به [[Special:FileList|فهرست پروندهها]] بورین. باربییشتن مجدد [[Special:Log/upload|سیاههٔ بارگذاریها]] و حذف پروندهئون [[Special:Log/delete|deletion log]] دله ثبت وانه.\n\nبعد از این که پروندهیی ره باربییشتنی، به این سه شکل بنشنه وه ره صفحهئون دله بییشتن:\n\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' استفاده از نسخه کامل پرونده وسّه\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' استفاده از اتا نسخه ۲۰۰ پیکسلی از پرونده که اتا جعبه سمت چپ متن دله دره و عبارت alt text ونه دله به عنوان توضیح استفاده بیّه وسّه\n*'''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' بساتن اتا پیوند مستقیم به پرونده بدون نمایش پرونده",
"uploadlogpage": "باربییشتن گزارش",
- "uploadedimage": "\"[[$1]]\" ره باربییشته",
"imgfile": "فایل",
"listfiles": "هارشی ئون ره لیست",
"listfiles_name": "نـوم",
"talkpagelinktext": "Tèìxnàmikilistli",
"specialpage": "Nònkuâkìskàtlaìxtlapalli",
"personaltools": "In tlein nitēquitiltilia",
- "postcomment": "Yancuīc xeliuhcāyōtl",
"articlepage": "Xiquittaz in tlahcuilōlli",
"talk": "tēixnāmiquiliztli",
"views": "Tlachiyaliztli",
"yourdomainname": "Moāxcāyō",
"login": "Ximomachiyōmaca/Ximocalaqui",
"nav-login-createaccount": "Ximocalaqui / ximomachiyōmaca",
- "loginprompt": "Tihuīquilia tiquimpiyāz cookies ic ticalaquīz {{SITENAME}}.",
"userlogin": "Ximomachiyōmaca/Ximocalaqui",
"userloginnocreate": "Ximocalaqui",
"logout": "Tiquīzāz",
"large-file": "Mā tlahcuilōlli ahmo achi huēiyac $1; inīn cah $2.",
"fileexists-extension": "Tlahcuilōlli zan iuh tōcātica ia: [[$2|thumb]]\n* Tlahcuilōlli moquetzacah: <strong>[[:$1]]</strong>\n* Tlahcuilōlli tlein ia ītōca: <strong>[[:$2]]</strong>\nTimitztlātlauhtiah, xitlahcuiloa occē tōcāitl.",
"savefile": "Quipiyāz tlahcuilōlli",
- "uploadedimage": "ōmoquetz \"[[$1]]\"",
- "overwroteimage": "ōmoquetz yancuīc \"[[$1]]\" iuhcāyōtl",
"uploaddisabled": "Ahmo mohuelīti tlahcuilōlquetzā",
"uploaddisabledtext": "Ahmo huelīti moquetzazqueh tlahcuilōlli.",
"sourcefilename": "Tōcāhuīcpa:",
"badfilename": "Iáⁿ-siōng ê miâ í-keng kái chò \"$1\".",
"uploadwarning": "Upload kéng-kò",
"savefile": "Pó-chûn tóng-àn",
- "uploadedimage": "thoân \"[[$1]]\" chiūⁿ-bāng",
"uploaddisabled": "Pháiⁿ-sè, sàng chiūⁿ-bāng ê kong-lêng bô khui.",
"sourcefilename": "Tóng-àn goân miâ:",
"destfilename": "Tóng-àn sin miâ:",
"tog-underline": "Sottolinia 'e jonte:",
"tog-hideminor": "Annascunne 'e cagne piccirille 'int'a ll'úrdeme cagne",
"tog-hidepatrolled": "Annascunne 'e cagne 'verificate' 'int'a ll'úrdeme cagne",
+ "tog-newpageshidepatrolled": "Annascunne 'e paggene cuntrullate 'a ll'elenco 'e ppaggene",
"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",
"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-watchcreations": "Azzecca 'e ppaggene criate e li files carrecate ncopp'â l'elenco 'e cuntrollo",
+ "tog-watchdefault": "Azzecca 'e paggene e li files cagnàte a l'elenco 'e cuntrollo",
+ "tog-watchmoves": "Azzecca 'e paggene e li files spustate a l'elenco 'e cuntrollo",
+ "tog-watchdeletion": "Azzecca 'e paggene e li files scancellate a l'elenco 'e cuntrollo",
+ "tog-watchrollback": "Azzecca 'e paggene addò aggio fatto nu rollback a l'elenco 'e cuntrollo",
+ "tog-minordefault": "Indica ogne cagnamento comme piccerillo (predefinito)",
+ "tog-previewontop": "Vide previsióne primma d''a casella 'e modifica",
+ "tog-previewonfirst": "Vide previsióne 'a primma vota",
+ "tog-enotifwatchlistpages": "Famme na mmasciata mail quanno na paggena o nu file dint'a l'elenco 'e cuntrollo se fosse cagnàta",
+ "tog-enotifusertalkpages": "Famme na masciata mail quanno 'a paggena 'e cchiacchiera mmia se fosse cagnàta",
+ "tog-enotifminoredits": "Famme na masciata mail pure quanno se fanno cagnamiente piccerille 'e paggene e files",
+ "tog-enotifrevealaddr": "Fa' vedé 'o ndirizzo mail ncopp'e mmasciate 'e notifica",
+ "tog-shownumberswatching": "Fa' vedé 'o nummero d'utente che teneno 'a paggena cuntrullata",
+ "tog-oldsig": "Firma 'e mmo:",
+ "tog-fancysig": "Piglia 'a firma comme fosse nu wikitesto (senza fà link automatico)",
+ "tog-uselivepreview": "Abilita 'o \"Live preview\" (sperimentale)",
+ "tog-forceeditsummary": "Chiere a mme quanno se sta azzeccanno nu campo oggetto abbacante",
+ "tog-watchlisthideown": "Annascunne 'e cagnamiente d''a lista 'e cuntrollo mia",
+ "tog-watchlisthidebots": "Annasconne 'e cagnamiènte d''e bot ncopp'a l'elenco 'e cuntrollo",
+ "tog-watchlisthideminor": "Annascunne 'e cagnamiente piccerille d''a lista 'e cuntrollo mia",
+ "tog-watchlisthideliu": "Annascunne 'e cagnamiénte 'e l'utente riggistrate 'a l'elenco 'e cuntrollo",
+ "tog-watchlisthideanons": "Annascunne 'e cagnamiente fatte d'anonime 'a l'elenco 'e cuntrollo",
+ "tog-watchlisthidepatrolled": "Annascunne 'e modifiche cuntrullate 'a l'elenco 'e cuntrollo",
+ "tog-ccmeonemails": "Famme na masciata pùre c''a copia 'e le mail mannate a l'ati utente",
+ "tog-diffonly": "Nun me fà vedé cuntenute aropp'o cunfronto nfra verziune",
+ "tog-showhiddencats": "Fa' vedé 'e categurie annascunnute",
+ "tog-norollbackdiff": "Nun fà vedé 'o cunfronto nfra verziune quanno se fà nu rollback",
"underline-always": "Sèmpe",
"underline-never": "Màje",
"sunday": "dumméneca",
"moredotdotdot": "Cchiù...",
"morenotlisted": "Chisto elenco nun è cumpreto.",
"mypage": "Paggena",
- "mytalk": "'E mmie chiàcchieriate",
+ "mytalk": "'E chiàcchieriate mmie",
"anontalk": "Chiacchierate pe chisto IP",
"navigation": "Navigazzione",
"and": " e",
"recentchangeslinked-page": "Nomme dda paggena",
"upload": "Careca file",
"filedesc": "Énnece",
- "uploadedimage": "ha carecato \"[[$1]]\"",
"license": "Licenze:",
"license-header": "Licenza",
"licenses-edit": "Càgna opzziune 'e licenza",
"tog-watchdefault": "Legg til sider og filer jeg endrer på i min overvåkingsliste",
"tog-watchmoves": "Legg til sider og filer jeg flytter til min overvåkingsliste",
"tog-watchdeletion": "Legg til sider og filer jeg sletter i min overvåkingsliste",
+ "tog-watchrollback": "Legg til sider jeg har utført tilbakestilling på i min overvåkningsliste",
"tog-minordefault": "Merk i utgangspunktet alle redigeringer som mindre",
"tog-previewontop": "Vis forhåndsvisningen over redigeringsboksen",
"tog-previewonfirst": "Vis forhåndsvisning når du begynner å redigere",
"hidetoc": "skjul",
"collapsible-collapse": "skjul",
"collapsible-expand": "vis",
+ "confirmable-confirm": "Er {{GENDER:$1|du}} sikker?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nei",
"thisisdeleted": "Se eller gjenopprett $1?",
"viewdeleted": "Vis $1?",
"restorelink": "{{PLURAL:$1|én slettet revisjon|$1 slettede revisjoner}}",
"searchprofile-advanced-tooltip": "Søk i visse navnerom",
"search-result-size": "$1 ({{PLURAL:$2|ett|$2}} ord)",
"search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})",
- "search-result-score": "Relevans: $1 %",
"search-redirect": "(omdirigering $1)",
"search-section": "(avsnitt $1)",
"search-file-match": "(matcher filinnhold)",
"uploadwarning": "Opplastingsadvarsel",
"uploadwarning-text": "Vennligst endre filbeskrivelsen nedenfor og prøv igjen.",
"savefile": "Lagre fil",
- "uploadedimage": "lastet opp «[[$1]]»",
- "overwroteimage": "last opp en ny versjon av «[[$1]]»",
"uploaddisabled": "Opplastingsfunksjonen er slått av",
"copyuploaddisabled": "Opplasting via nettadresse deaktivert.",
"uploaddisabledtext": "Opplasting er slått av.",
"nolicense": "Ingen spesifisert",
"licenses-edit": "Rediger lisensvalg",
"license-nopreview": "(Forhåndsvisning ikke tilgjengelig)",
- "upload_source_url": " (en gyldig, offentlig tilgjengelig adresse)",
- "upload_source_file": " (en fil på din datamaskin)",
+ "upload_source_url": "(din fil fra en gyldig, offentlig tilgjengelig adresse)",
+ "upload_source_file": "(en fil på din datamaskin)",
"listfiles-delete": "slett",
"listfiles-summary": "Denne spesialsiden viser alle opplastede filer.",
"listfiles_search_for": "Søk etter filnavn:",
"watchlist-details": "{{PLURAL:$1|Én side|$1 sider}} på din overvåkningsliste, teller ikke diskusjonssider.",
"wlheader-enotif": "E-postvarsling er slått på.",
"wlheader-showupdated": "Sider som har blitt forandret siden du sist besøkte dem vises i '''fet tekst'''",
- "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",
+ "wlnote": "Nedenfor er {{PLURAL:$1|den siste endringen|de siste <strong>$1</strong> endringene}} {{PLURAL:$2|den siste timen|de siste <strong>$2</strong> timene}}, per $3 kl. $4",
"wlshowlast": "Vis siste $1 timer $2 dager $3",
"watchlist-options": "Alternativ for overvåkningslisten",
"watching": "Overvåker…",
"logentry-rights-rights": "$1 {{GENDER:$2|endret}} gruppemedlemskap for $3 fra $4 til $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|endret}} gruppemedlemskap for $3",
"logentry-rights-autopromote": "$1 ble automatisk {{GENDER:$2|forfremmet}} fra $4 til $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|lastet opp}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|lastet opp}} en ny versjon av $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|lastet opp}} $3",
"rightsnone": "(ingen)",
"feedback-bugornote": "Hvis du er klar til å sende inn en detaljert feilrapport, vennligst [$1 rapporter en feil].\nOm det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. Kommentaren din vil bli lagt til siden \"[$3 $2]\", sammen med brukernavnet ditt og informasjon om hvilken nettleser du bruker.",
"feedback-subject": "Emne:",
"action-pagelang": "endre sidespråket",
"log-name-pagelang": "Endre språklogg",
"log-description-pagelang": "Dette er en logg som viser endringer i sidespråk",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|endret}} sidespråk for $3 fra $4 til $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|endret}} sidespråk for $3 fra $4 til $5.",
+ "default-skin-not-found": "Ops! Standarddrakten for wikien din (<code>$wgDefaultSkin</code>), <code>$1</code>, er ikke tilgjengelig.\n\nInstallasjonen din inkluderer følgende drakter. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for informasjon om hvordan du an slå det på og velge en standarddrakt.\n\n$2\n\n; Om du nettopp har installert MediaWiki:\n: Du har trolig installert fra git, eller direkte fra kildekoden med en annen metode. Dette er forventet.\n:* Prøv å installere flere drakter fra [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.orgs draktbase]\n:* Last ned [https://www.mediawiki.org/wiki/Download tarball-installereren], som kommer med flere drakter og utvidelser. Du kan kopiere og lime inn <code>skins/</code>-mappen fra denne.\n: Å gjøre dette skal ikke forstyrre git-mappen din om du er en MediaWiki-utvikler.\n\n; Om du nettopp har oppgradert MediaWiki:\n: MediaWiki 1.24 og nyere slår ikke lenger automatisk på installerte drakter (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). du kan lime inn følgende linjer i <code>LocalSettings.php</code> for å slå på alle installerte drakter:\n\n<pre>$3</pre>\n\n; Om du nettopp har endret <code>LocalSettings.php</code>:\n: Dobbeltsjekk draktnavnene for skrivefeil.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (slått på)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''slått av''')"
}
"hidetoc": "Verbarg",
"collapsible-collapse": "Inklappen",
"collapsible-expand": "Uutklappen",
+ "confirmable-confirm": "{{GENDER:$1|Bi'j}} daor wisse van?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nee",
"thisisdeleted": "Bekieken of herstellen van $1?",
"viewdeleted": "Bekiek $1?",
"restorelink": "{{PLURAL:$1|versie die vortedaon is|versies die vortedaon bin}}",
"invalidtitle-knownnamespace": "Ongeldige titel mit naamruumte \"$2\" en tekste \"$3\"",
"invalidtitle-unknownnamespace": "Ongeldige titel mit onbekend naamruumtenummer $1 en tekste \"$2\"",
"exception-nologin": "Niet an-emeld",
- "exception-nologin-text": "Um disse zied te bekieken of disse haandeling uut te kunnen voeren mu'j an-emeld ween bie disse wiki.",
+ "exception-nologin-text": "Um disse zied te bekieken of disse haandeling uut te kunnen voeren mu'j [[Special:Userlogin|an-emeld]] ween bie disse wiki.",
"virus-badscanner": "Slichte konfigurasie: onbekend antivirusprogramma: ''$1''",
"virus-scanfailed": "inlezen is mislokt (kode $1)",
"virus-unknownscanner": "onbekend antivirusprogramma:",
"searchprofile-advanced-tooltip": "Zeuken in de an-egeven naamruumtes",
"search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorden}})",
"search-result-category-size": "{{PLURAL:$1|1 kategorielid|$1 kategorielejen}} ({{PLURAL:$2|1 onderkategorie|$2 onderkategorieën}}, {{PLURAL:$3|1 bestaand|$3 bestaanden}})",
- "search-result-score": "Relevansie: $1%",
"search-redirect": "(deurverwiezing $1)",
"search-section": "(onderwarp $1)",
"search-suggest": "Bedoelden je: $1",
"uploadwarning": "Waorschuwing",
"uploadwarning-text": "Pas de bestaandsbeschrieving hieronder an en probeer t opniej",
"savefile": "Bestaand opslaon",
- "uploadedimage": "Op-estuurd: [[$1]]",
- "overwroteimage": "Nieje versie van \"[[$1]]\" op-estuurd",
"uploaddisabled": "t Opsturen van bestaanden is uutezet.",
"copyuploaddisabled": "t Opsturen van bestaanden via n webadres is uutezet.",
"uploaddisabledtext": "t Opsturen van bestaanden is uutezet.",
"talkpagelinktext": "Diskuschoon",
"specialpage": "Spezialsiet",
"personaltools": "Persönliche Warktüüch",
- "postcomment": "Afsnidd tofögen",
"articlepage": "Artikel",
"talk": "Diskuschoon",
"views": "Ansichten",
"externaldberror": "Dat geev en Fehler bi de externe Authentifizerungsdatenbank oder du dröffst dien extern Brukerkonto nich ännern.",
"login": "Anmellen",
"nav-login-createaccount": "Nee Konto anleggen oder anmellen",
- "loginprompt": "Dat du di bi {{SITENAME}} anmellen kannst, musst du Cookies anstellt hebben.",
"userlogin": "Nee Konto anleggen oder anmellen",
"userloginnocreate": "Anmellen",
"logout": "Afmellen",
"searchprofile-advanced-tooltip": "Söök in angevene Naamrüüm",
"search-result-size": "$1 ({{PLURAL:$2|een Woort|$2 Wöör}})",
"search-result-category-size": "{{PLURAL:$1|1 Sied|$1 Sieden}} ({{PLURAL:$2|1 Ünnerkategorie|$2 Ünnerkategorien}}, {{PLURAL:$3|1 Datei|$3 Datein}})",
- "search-result-score": "Relevanz: $1 %",
"search-redirect": "(Redirect $1)",
"search-section": "(Afsnitt $1)",
"search-suggest": "Hest du „$1“ meent?",
"file-deleted-duplicate": "Jüst disse Datei ([[:$1]]) is al mal löscht worrn. Kiek man eerst, wat in dat Löschlogbook steiht, ehrdat du ehr noch wedder hoochlaadst.",
"uploadwarning": "Wohrschau",
"savefile": "Datei spiekern",
- "uploadedimage": "„$1“ hoochladen",
- "overwroteimage": "Ne’e Version vun „[[$1]]“ hoochlaadt",
"uploaddisabled": "Dat Hoochladen is deaktiveert.",
"uploaddisabledtext": "Dat Hoochladen vun Datein is utschalt.",
"php-uploaddisabledtext": "Dat Hoochladen vun Datein is in PHP utstellt. Kiek de file_uploads-Instellungen na.",
"watchlist-details": "{{PLURAL:$1|Ene Siet is|$1 Sieden sünd}} op dien Oppasslist (ahn Diskuschoonssieden).",
"wlheader-enotif": "Benarichtigen per E-Mail is anstellt.",
"wlheader-showupdated": "Sieden, de siet dien letzten Besöök ännert worrn sünd, warrt '''fett''' wiest.",
+ "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",
"watching": "warrt op de Oppasslist ropsett...",
"searchprofile-advanced-tooltip": "अनुकुल नेमस्पेसमा खोज्ने",
"search-result-size": "$1 ({{PLURAL:$2|1 शव्द|$2 शव्दहरु}})",
"search-result-category-size": "{{PLURAL:$1|एक सदस्य|$1 सदस्यहरु}} ({{PLURAL:$2|1 उपश्रेणी|$2 उपश्रेणीहरु}}, {{PLURAL:$3|एउटा फाइल|$3 फाइलहरु}})",
- "search-result-score": "मिल्ने :$1%",
"search-redirect": "(जाने $1)",
"search-section": "(खण्ड $1)",
"search-suggest": "के तपाईको खोजाई : $1 हो?",
"uploadwarning": "उर्ध्वभरण चेतावनी",
"uploadwarning-text": "कृपया तल फाइलको वर्णन परिवर्तन गर्नुहोस र पुन: प्रयास गर्नुहोस् ।",
"savefile": "फाइल बचत गर्नुहोस्",
- "uploadedimage": "उर्ध्वभरण(upload) गरियो \"[[$1]]\"",
- "overwroteimage": " \"[[$1]]\"को एउटा नयाँ संस्करण उर्ध्वभरण गरियो",
"uploaddisabled": "उर्ध्वभरण अक्षम पारिएकोछ",
"copyuploaddisabled": " URL प्रयोग गरी उर्ध्वभरण निश्कृय पारिएको छ।",
"uploaddisabledtext": "फाइल उर्ध्वभरण अक्षम पारिएकोछ",
"hidetoc": "verbergen",
"collapsible-collapse": "Inklappen",
"collapsible-expand": "Uitvouwen",
+ "confirmable-confirm": "Weet {{GENDER:$1|u}} het zeker?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nee",
"thisisdeleted": "$1 bekijken of terugplaatsen?",
"viewdeleted": "$1 bekijken?",
"restorelink": "$1 verwijderde {{PLURAL:$1|versie|versies}}",
"invalidtitle-knownnamespace": "Ongeldige titel met naamruimte \"$2\" en tekst \"$3\"",
"invalidtitle-unknownnamespace": "Ongeldige titel met onbekend naamruimtenummer $1 en tekst \"$2\"",
"exception-nologin": "Niet aangemeld",
- "exception-nologin-text": "[[Special:Userlogin|Meld u aan]] om deze pagina te bekijken of deze handeling uit te voeren.",
+ "exception-nologin-text": "Meld u aan om deze pagina te bekijken of deze handeling uit te voeren.",
"exception-nologin-text-manual": "U moet $1 om deze pagina te kunnen bekijken of de handeling uit te voeren.",
"virus-badscanner": "Onjuiste configuratie: onbekende virusscanner: ''$1''.",
"virus-scanfailed": "scannen is mislukt (code $1)",
"noname": "U hebt geen geldige gebruikersnaam opgegeven.",
"loginsuccesstitle": "Aanmelden geslaagd",
"loginsuccess": "'''U bent nu aangemeld bij {{SITENAME}} als \"$1\".'''",
- "nosuchuser": "De gebruiker \"$1\" bestaat niet.\nGebruikersnamen zijn hoofdlettergevoelig.\nControleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuwe gebruiker aan]].",
+ "nosuchuser": "De gebruiker \"$1\" bestaat niet.\nGebruikersnamen zijn hoofdlettergevoelig.\nControleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuw account aan]].",
"nosuchusershort": "De gebruiker \"$1\" bestaat niet.\nControleer de schrijfwijze.",
"nouserspecified": "Geef een gebruikersnaam op.",
"login-userblocked": "Deze gebruiker is geblokkeerd.\nAanmelden is niet mogelijk.",
"parser-template-recursion-depth-warning": "De recursiediepte voor sjablonen is overschreden ($1)",
"language-converter-depth-warning": "De dieptelimiet voor de taalconvertor is overschreden ($1)",
"node-count-exceeded-category": "Pagina's waar het maximaal aantal nodes is overschreden",
- "node-count-exceeded-category-desc": "Een categorie voor pagina's waar het aantal knooppunten is overschreden.",
- "node-count-exceeded-warning": "Op de pagina is het maximale aantal nodes overschreden",
+ "node-count-exceeded-category-desc": "De pagina overschrijdt het maximale aantal knooppunten.",
+ "node-count-exceeded-warning": "De pagina overschrijdt het maximale aantal nodes",
"expansion-depth-exceeded-category": "Pagina's waar de expansiediepte is overschreden",
- "expansion-depth-exceeded-category-desc": "Dit is een categorie voor pagina's waar de expansiediepte is overschreden.",
+ "expansion-depth-exceeded-category-desc": "De pagina overschrijdt de maximale expansiediepte.",
"expansion-depth-exceeded-warning": "De pagina bevat te veel sjablonen",
"parser-unstrip-loop-warning": "Er is een \"unstrip\"-lus gedetecteerd",
"parser-unstrip-recursion-limit": "De recursielimiet ($1) voor \"unstrip\" is overschreden",
"searchprofile-advanced-tooltip": "Zoeken in opgegeven naamruimten",
"search-result-size": "$1 ({{PLURAL:$2|1 woord|$2 woorden}})",
"search-result-category-size": "{{PLURAL:$1|1 categorielid|$1 categorieleden}} ({{PLURAL:$2|1 ondercategorie|$2 ondercategorieën}}, {{PLURAL:$3|1 bestand|$3 bestanden}})",
- "search-result-score": "Relevantie: $1%",
"search-redirect": "(doorverwijzing $1)",
"search-section": "(subkop $1)",
"search-file-match": "(komt overeen met de inhoud van het bestand)",
"preferences": "Voorkeuren",
"mypreferences": "Voorkeuren",
"prefs-edits": "Aantal bewerkingen:",
- "prefsnologintext2": "U moet $1 om voorkeuren in te stellen.",
+ "prefsnologintext2": "U moet aanmelden om voorkeuren in te stellen.",
"prefs-skin": "Vormgeving",
"skin-preview": "Voorvertoning",
"datedefault": "Geen voorkeur",
"recentchanges-summary": "Op deze pagina kunt u de recentste wijzigingen in deze wiki bekijken.",
"recentchanges-noresult": "Er zijn in deze periode geen wijzigingen gemaakt die aan de criteria voldoen.",
"recentchanges-feed-description": "Met deze feed kunt u de recentste wijzigingen in deze wiki bekijken.",
- "recentchanges-label-newpage": "Met deze bewerking is een nieuwe pagina aangemaakt.",
+ "recentchanges-label-newpage": "Met deze bewerking is een nieuwe pagina aangemaakt",
"recentchanges-label-minor": "Dit is een kleine bewerking",
"recentchanges-label-bot": "Deze bewerking is uitgevoerd door een bot",
"recentchanges-label-unpatrolled": "Deze bewerking is nog niet gecontroleerd",
"uploadwarning": "Uploadwaarschuwing",
"uploadwarning-text": "Pas de onderstaande bestandsbeschrijving aan en probeer het daarna opnieuw.",
"savefile": "Bestand opslaan",
- "uploadedimage": "heeft \"[[$1]]\" geüpload",
- "overwroteimage": "heeft een nieuwe versie van \"[[$1]]\" toegevoegd",
"uploaddisabled": "Uploaden is uitgeschakeld",
"copyuploaddisabled": "Het uploaden van bestanden via een URL is uitgeschakeld.",
"uploaddisabledtext": "Het uploaden van bestanden is uitgeschakeld.",
"nolicense": "Maak een keuze",
"licenses-edit": "Licentieopties bewerken",
"license-nopreview": "(Voorvertoning niet beschikbaar)",
- "upload_source_url": " (een geldige, publiek toegankelijke URL)",
- "upload_source_file": " (een bestand op uw computer)",
+ "upload_source_url": "(een bestanden van een geldige, publiek toegankelijke URL)",
+ "upload_source_file": "(een bestand op uw computer)",
"listfiles-delete": "verwijderen",
"listfiles-summary": "Op deze speciale pagina zijn alle toegevoegde bestanden te bekijken.",
"listfiles_search_for": "Zoeken naar bestand:",
"trackingcategories-desc": "Opnamecriteria",
"noindex-category-desc": "De pagina bevat het magische woord <code><nowiki>__NOINDEX__</nowiki></code> (en bevindt zich in een naamruimte waarin dat magische woord is toegestaan), en wordt niet geïndexeerd door robots.",
"index-category-desc": "De pagina bevat het magische woord <code><nowiki>__INDEX__</nowiki></code> (en bevindt zich in een naamruimte waarin dat magische woord is toegestaan), en wordt geïndexeerd door robots, terwijl dat normaliter niet zou gebeuren.",
- "post-expand-template-inclusion-category-desc": "Na het uitbreiden van alle sjablonen, is de pagina groter dan <code>$wgMaxArticleSize</code>, dus zijn sommige sjablonen niet uitgebreid.",
- "post-expand-template-argument-category-desc": "Na het uitbreiden van een sjabloonparameter (iets in de drievoudige accolades, zoals <code>{{{Foo}}})</code>), is de pagina groter dan <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Op de pagina worden te veel kostbare parserfuncties (zoals <code>#ifexist</code>) gebruikt. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Meer informatie].",
- "broken-file-category-desc": "Een categorie die wordt toegevoegd als een pagina een niet-bestaande koppeling bevat (een koppeling om een bestand toe te voegen als dat bestand niet bestaat).",
- "hidden-category-category-desc": "Dit is een categoriepagina die het magische woord <code><nowiki>__HIDDENCAT__</nowiki></code> bevat, waardoor de categorie standaard niet zichtbaar is in de lijst met categorieën op pagina's.",
+ "post-expand-template-inclusion-category-desc": "De pagina groter dan <code>$wgMaxArticleSize</code> na het uitbreiden van alle sjablonen, dus zijn sommige sjablonen niet uitgebreid.",
+ "post-expand-template-argument-category-desc": "De pagina is groter dan <code>$wgMaxArticleSize</code> na het uitbreiden van een sjabloonparameter (iets in de drievoudige accolades, zoals <code>{{{Foo}}})</code>).",
+ "expensive-parserfunction-category-desc": "De pagina gebruikt te veel kostbare parserfuncties (zoals <code>#ifexist</code>) gebruikt. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Meer informatie].",
+ "broken-file-category-desc": "De pagina bevat een niet-bestaande koppeling (een koppeling om een bestand toe te voegen als dat bestand niet bestaat).",
+ "hidden-category-category-desc": "De categorie heeft het magische woord <code><nowiki>__HIDDENCAT__</nowiki></code> in de inhoud, waardoor de categorie standaard niet zichtbaar is in de lijst met categorieën op pagina's.",
"trackingcategories-nodesc": "Geen beschrijving beschikbaar.",
"trackingcategories-disabled": "Categorie uitgeschakeld",
"mailnologin": "Geen verzendadres beschikbaar",
"mywatchlist": "Volglijst",
"watchlistfor2": "Voor $1 $2",
"nowatchlist": "Uw volglijst is leeg.",
- "watchlistanontext": "Om uw volglijst te bekijken of te bewerken moet u zich $1.",
+ "watchlistanontext": "Om uw volglijst te bekijken of te bewerken moet u zich aanmelden.",
"watchnologin": "U bent niet aangemeld",
"addwatch": "Toevoegen aan volglijst",
"addedwatchtext": "De pagina \"[[:$1]]\" is toegevoegd aan uw [[Special:Watchlist|volglijst]].\nToekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden daar weergegeven.",
"autoblockid": "Automatische blokkade #$1",
"block": "Gebruiker blokkeren",
"unblock": "Gebruiker deblokkeren",
- "blockip": "Gebruiker blokkeren",
+ "blockip": "{{GENDER:$1|Gebruiker}} blokkeren",
"blockip-legend": "Gebruiker blokkeren",
"blockiptext": "Gebruik het onderstaande formulier om schrijftoegang voor een gebruiker of IP-adres in te trekken.\nDoe dit alleen als bescherming tegen vandalisme en in overeenstemming met het [[{{MediaWiki:Policy-url}}|beleid]].\nGeef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
"ipaddressorusername": "IP-adres of gebruikersnaam:",
"ipb-unblock-addr": "$1 deblokkeren",
"ipb-unblock": "Een gebruiker of IP-adres deblokkeren",
"ipb-blocklist": "Bestaande blokkades bekijken",
- "ipb-blocklist-contribs": "Bijdragen van $1",
+ "ipb-blocklist-contribs": "Bijdragen van {{GENDER:$1|$1}}",
"unblockip": "Gebruiker deblokkeren",
"unblockiptext": "Gebruik het onderstaande formulier om opnieuw schrijftoegang te geven aan een geblokkeerde gebruiker of IP-adres.",
"ipusubmit": "Blokkade opheffen",
"logentry-rights-rights": "$1 {{GENDER:$2|heeft}} groepslidmaatschap voor $3 gewijzigd van $4 naar $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|heeft}} het groepslidmaatschap gewijzigd voor $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|is}} automatisch gepromoveerd van $4 naar $5",
+ "logentry-upload-upload": "$1 heeft $3 {{GENDER:$2|geupload}}",
+ "logentry-upload-overwrite": "$1 heeft een nieuwe versie van $3 {{GENDER:$2|geupload}}",
+ "logentry-upload-revert": "$1 heeft $3 {{GENDER:$2|geupload}}",
"rightsnone": "(geen)",
"feedback-bugornote": "Als u zover bent om een technisch probleem in detail te beschrijven, [$1 rapporteer dan een bug].\nAnders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt dan toegevoegd aan de pagina \"[$3 $2]\", samen met uw gebruikersnaam en de browser die u gebruikt.",
"feedback-subject": "Onderwerp:",
"action-pagelang": "Taal van de pagina wijzigen",
"log-name-pagelang": "Logboek van taalwijzigingen",
"log-description-pagelang": "Dit is een logboek van wijzigingen van de taal van pagina's.",
- "logentry-pagelang-pagelang": "$1 wijzigde de taal van de pagina '$3' van $4 naar $5."
+ "logentry-pagelang-pagelang": "$1 wijzigde de taal van de pagina '$3' van $4 naar $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ingeschakeld)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>uitgeschakeld</strong>)"
}
"hidetoc": "gøym",
"collapsible-collapse": "Slå saman.",
"collapsible-expand": "Vid ut",
+ "confirmable-confirm": "Er {{GENDER:$1|du}} viss på dette?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nei",
"thisisdeleted": "Sjå eller attopprett $1?",
"viewdeleted": "Sjå historikk for $1?",
"restorelink": "{{PLURAL:$1|Éin sletta versjon|$1 sletta versjonar}}",
"searchprofile-advanced-tooltip": "Søk i visse namnerom",
"search-result-size": "$1 ({{PLURAL:$2|eitt|$2}} ord)",
"search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategoriar}}, {{PLURAL:$3|1 fil|$3 filer}})",
- "search-result-score": "Relevans: $1 %",
"search-redirect": "(omdirigering $1)",
"search-section": "(bolken $1)",
"search-suggest": "Meinte du: «$1»",
"search-interwiki-caption": "Systerprosjekt",
- "search-interwiki-default": "$1-resultat:",
+ "search-interwiki-default": "Resultat frå $1:",
"search-interwiki-more": "(meir)",
"search-relatedarticle": "Relatert",
"searchrelated": "relatert",
"uploadwarning": "Opplastingsåtvaring",
"uploadwarning-text": "Ver venleg og endra filskildringa nedanfor og prøv på nytt",
"savefile": "Lagre fil",
- "uploadedimage": "lasta opp «[[$1]]»",
- "overwroteimage": "lasta opp ein ny versjon av «[[$1]]»",
"uploaddisabled": "Beklagar, funksjonen for opplasting er deaktivert på denne nettenaren.",
"copyuploaddisabled": "Opplasting gjennom URL er slege av.",
"uploaddisabledtext": "Filopplasting er slått av.",
"download": "last ned",
"unwatchedpages": "Uovervaka sider",
"listredirects": "Omdirigeringsliste",
+ "listduplicatedfiles": "Liste over filer med duplikat",
+ "listduplicatedfiles-summary": "Dette er ei liste over filer der den siste versjonen av fila er eit duplikat av den siste versjonen av ei anna fil. Berre lokale filer vert rekna med.",
+ "listduplicatedfiles-entry": "[[:File:$1|$1]] har [[$3|{{PLURAL:$2|eit duplikat|$2 duplikat}}]].",
"unusedtemplates": "Ubrukte malar",
"unusedtemplatestext": "Denne sida viser alle sidene i mal-namnerommet ({{ns:template}}:) som ikkje er brukte på andre sider. Hugs også å sjå etter andre lenkjer til malane før du slettar dei.",
"unusedtemplateswlh": "andre lenkjer",
"randompage": "Tilfeldig side",
"randompage-nopages": "Det finst ingen sider i {{PLURAL:$2|dette namnerommet|desse namneromma}}: $1.",
+ "randomincategory": "Tilfeldig side frå kategori",
+ "randomincategory-invalidcategory": "«$1» er ikkje eit gildt kategorinamn.",
+ "randomincategory-nopages": "Det er ingen sider i kategorien [[:Category:$1|$1]].",
"randomincategory-selectcategory": "Hent tilfeldig side frå kategori: $1 $2.",
"randomincategory-selectcategory-submit": "Hent",
"randomredirect": "Tilfeldig omdirigering",
"trackingcategories-name": "Meldingsnamn",
"trackingcategories-desc": "Inkluderingsgrunnlag",
"noindex-category-desc": "Sida vert ikkje indeksert av robotar av di ho inneheld trylleordet <code><nowiki>__NOINDEX__</nowiki></code> og er i eit namnerom der dette flagget er tillate.",
+ "trackingcategories-disabled": "Kategorien er avslegen",
"mailnologin": "Inga avsendaradresse",
"mailnologintext": "Du lyt vera [[Special:UserLogin|innlogga]] og ha ei gyldig e-postadresse sett i [[Special:Preferences|brukarinnstillingane]] for å sende e-post åt andre brukarar.",
"emailuser": "Send e-post åt denne brukaren",
"watchnologin": "Ikkje innlogga",
"addwatch": "↓Legg til i overvakingslista",
"addedwatchtext": "Sida «[[:$1]]» er lagd til i [[Special:Watchlist|overvakingslista]] di. Framtidige endringar av henne og den tilhøyrande diskusjonssida hennar vil bli oppførte der.",
+ "addedwatchtext-short": "Sida «$1» vart lagd til i overvakingslista di.",
"removewatch": "Fjerna frå overvakingslista",
"removedwatchtext": "Sida «[[:$1]]» er fjerna frå [[Special:Watchlist|overvakingslista di]].",
+ "removedwatchtext-short": "Sida «$1» vart fjerna frå overvakingslista di.",
"watch": "Overvak",
"watchthispage": "Overvak sida",
"unwatch": "Fjern overvaking",
"unwatchthispage": "Fjern overvaking",
"notanarticle": "Ikkje innhaldsside",
"notvisiblerev": "Sideversjonen er sletta",
- "watchlist-details": "{{PLURAL:$1|Éi side|$1 sider}} er overvaka, utanom diskusjonssider.",
+ "watchlist-details": "{{PLURAL:$1|Éi side|$1 sider}} på overvakingslista di, utan separat teljing av diskusjonssider.",
"wlheader-enotif": "Funksjonen for endringsmeldingar per e-post er på.",
"wlheader-showupdated": "Sider som har vorte endra sidan du sist såg på dei er '''utheva'''",
"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.",
"talkpagelinktext": "Bolela",
"specialpage": "Matlaka a itšeng",
"personaltools": "Dithulusu tša gago (''personal'')",
- "postcomment": "Sekgao se sempsha",
"articlepage": "Nyakoretša letlakala la mateng",
"talk": "Poledišano",
"views": "Dinyakorêtšo",
"remembermypassword": "Gopola sedi yaka ya go tsena khomphutha ye (bogolo bja $1 ya {{PLURAL:$1| letšatši le|matšatši a}})",
"login": "Tsena",
"nav-login-createaccount": "Tsena / Tlhola tšhupaleloko (''account'')",
- "loginprompt": "O swanela ke go dumella ''cookies'' go ''browser'' go tsena go {{SITENAME}}.",
"userlogin": "Tsena / tlhola tšhupaleloko (''account'')",
"logout": "Etšwa/Tswalela",
"userlogout": "Etšwa/Tswalela",
"fileuploadsummary": "Kakaretšo:",
"filesource": "Mothopo:",
"savefile": "Boloka faele",
- "uploadedimage": "\"[[$1]]\" e loketšwe",
"watchthisupload": "Tlhapetša ''faele'' ye",
"license": "Laesense/Tumello:",
"license-header": "Laesense",
"searchprofile-advanced-tooltip": "Recercar dins d'espacis de noms personalizats",
"search-result-size": "$1 ({{PLURAL:$2|1 mot|$2 mots}})",
"search-result-category-size": "$1 membre{{PLURAL:$1||s}} ($2 soscategoria{{PLURAL:$2||s}}, $3 fichièr{{PLURAL:$3||s}})",
- "search-result-score": "Pertinéncia : $1%",
"search-redirect": "(redireccion cap a $1)",
"search-section": "(seccion $1)",
"search-file-match": "(correspond al contengut del fichièr)",
"uploadwarning": "Atencion !",
"uploadwarning-text": "Modificatz la descripcion del fichièr e ensajatz tornarmai.",
"savefile": "Salvar lo fichièr",
- "uploadedimage": "«[[$1]]» copiat sul servidor",
- "overwroteimage": "a importat una version novèla de « [[$1]] »",
"uploaddisabled": "O planhèm, lo mandadís de fichièr es desactivat.",
"copyuploaddisabled": "Mandadís de fichièr per URL desactivat.",
"uploaddisabledtext": "L'impòrt de fichièrs cap al servidor es desactivat.",
"watchlist-details": "I a {{PLURAL:$1|$1 pagina|$1 paginas}} dins vòstra lista de seguiment, sens comptar las paginas de discussion.",
"wlheader-enotif": "La notificacion per corrièr electronic es activada.",
"wlheader-showupdated": "Las paginas que son estadas modificadas dempuèi vòstra darrièra visita son afichadas en '''gras'''.",
+ "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",
"watching": "Seguit...",
"talkpagelinktext": "କଥାଭାଷା",
"specialpage": "ବିଶେଷ ପୃଷ୍ଠା",
"personaltools": "ନିଜର ଟୁଲ",
- "postcomment": "ନୂଆ ଭାଗ",
"articlepage": "ସୂଚୀ ପୃଷ୍ଠାଟି ଦେଖାଇବେ",
"talk": "ଆଲୋଚନା",
"views": "ଦେଖା",
"externaldberror": "ବୋଧ ହୁଏ ଚିହ୍ନଟ ଡାଟାବେସ ଭୁଲଟିଏ ହୋଇଥିଲା ବା ଆପଣଙ୍କୁ ନିଜର ବାହାର ଖାତା ଅପଡେଟ କରିବା ନିମନ୍ତେ ଅନୁମତି ମିଳିନାହିଁ ।",
"login": "ଲଗ-ଇନ (Log in)",
"nav-login-createaccount": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ",
- "loginprompt": "{{SITENAME}}ରେ ଲଗ ଇନ କରିବାପାଇଁ ଆପଣଙ୍କୁ '''କୁକି''' ସଚଳ କରିବାକୁ ପଡ଼ିବ ।",
"userlogin": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ",
"userloginnocreate": "ଲଗ-ଇନ (Log in)",
"logout": "ଲଗଆଉଟ",
"searchprofile-advanced-tooltip": "ନିଜେ ତିଆରିକରିହେବା ଭଳି ନେମସ୍ପେସରେ ଖୋଜିବେ",
"search-result-size": "$1 ({{PLURAL:$2|1 ଶବ୍ଦ|$2 ଶବ୍ଦ}})",
"search-result-category-size": "{{PLURAL:$1|ଜଣେ ସଭ୍ୟ|$1 ଜଣ ସଭ୍ୟ}} ({{PLURAL:$2|ଗୋଟିଏ ଶ୍ରେଣୀy|$2ଟି ଶ୍ରେଣୀ ସମୂହ}}, {{PLURAL:$3|ଗୋଟିଏ ଫାଇଲ|$3ଟି ଫାଇଲ}})",
- "search-result-score": "ପ୍ରାସଙ୍ଗିକତା: $1%",
"search-redirect": "($1 କୁ ଆଗକୁ ବଢେଇନିଅ )",
"search-section": "(ଭାଗ $1)",
"search-suggest": "ଆପଣ $1 ଭାବି ଖୋଜିଥିଲେ କି?",
"uploadwarning": "ଅପଲୋଡ଼ ଚେତାବନୀ",
"uploadwarning-text": "ତଳେ ଥିବା ଫାଇଲର ବିବରଣୀ ବଦଳାଇ ଆଉ ଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।",
"savefile": "ଫାଇଲ ସାଇତିବା",
- "uploadedimage": "\"[[$1]]\" ଅପଲୋଡ କରାଗଲା",
- "overwroteimage": "\"[[$1]]\"ର ନୂଆ ସଙ୍କଳନଟିଏ ଅପଲୋଡ଼ କରାଗଲା",
"uploaddisabled": "ଅପଲୋଡ଼ କରିବା ଅଚଳ କରାଯାଇଅଛି ।",
"copyuploaddisabled": "URL ଦେଇ ଅପଲୋଡ଼ କରିବାକୁ ଅଚଳ କରାଯାଇଅଛି ।",
"uploaddisabledtext": "ଫାଇଲ ଅପଲୋଡ଼ ଅଚଳ କରାଯାଇଅଛି ।",
"watchlist-details": "ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାରେ {{PLURAL:$1|$1 ଟି ପୃଷ୍ଠା|$1 ଟି ପୃଷ୍ଠା}} ଅଛି, ଆଲୋଚନା ପୃଷ୍ଠାମାନଙ୍କୁ ଅଲଗା ଗଣାଯାଇନାହିଁ ।",
"wlheader-enotif": "ଇମେଲ ସୂଚନା ସଚଳ କରାଗଲା ।",
"wlheader-showupdated": "ଆପଣ ଶେଷଥର ଦେଖିଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକ '''ମୋଟା ଅକ୍ଷର'''ରେ ଦେଖାଯାଉଅଛି ।",
+ "wlnote": "$3, $4 ସୁଦ୍ଧା ବିଗତ {{PLURAL:$2|ଘଣ୍ଟେ ଭିତରେ|'''$2''' ଘଣ୍ଟା ଭିତରେ}} ଘଟିଥିବା {{PLURAL:$1|ଶେଷ ବଦଳଟି ଅଛି|ଶେଷ '''$1''' ଟି ବଦଳ}} ତଳେ ଦିଆଯାଇଛି ।",
"wlshowlast": "ଶେଷ $1 ଘଣ୍ଟା $2 ଦିନ $3 ଦେଖାଇବେ",
"watchlist-options": "ଦେଖଣା ବିକଳ୍ପସବୁ",
"watching": "ଦେଖୁଛି...",
"duplicate-defaultsort": "'''ସୂଚନା:''' ଆପେଆପେ କାମକରୁଥିବା \"$2\" ଆଗରୁ ଆପେ ଆପେ ସଜାଡୁଥିବା \"$1\"କୁ ବନ୍ଦ କରିଦେଇଛି ।",
"version": "ସଂସ୍କରଣ",
"version-extensions": "ଇନଷ୍ଟଲ କରାହୋଇଥିବା ଏକ୍ସଟେନସନସବୁ",
+ "version-skins": "ବହିରାବରଣ",
"version-specialpages": "ବିଶେଷ ପୃଷ୍ଠା",
"version-parserhooks": "ପାର୍ସର ହୁକ",
"version-variables": "ଚଳ",
"version-antispam": "ଅଦରକାରୀ ମେଲ ଅଟକ",
- "version-skins": "ବହିରାବରଣ",
"version-other": "ବାକି",
"version-mediahandlers": "ମିଡ଼ିଆ ହ୍ୟାଣ୍ଡଲର",
"version-hooks": "ହୁକ",
"talkpagelinktext": "Ныхас",
"specialpage": "Сæрмагонд фарс",
"personaltools": "Хион фæрæзтæ",
- "postcomment": "Ног хай",
"articlepage": "Фенын уац",
"talk": "Тæрхон",
"views": "Æркæстытæ",
"externaldberror": "Кæнæ аутентификацийы рарддоны рæдыд æрцыдис, кæнæ та дæуæн нæй бар снæуæг кæнын дæ æддаг аккаунт.",
"login": "Бахизын",
"nav-login-createaccount": "Бахизын / срегистраци кæнын",
- "loginprompt": "Дæ cookies хъуамæ иу уой цæмæй дæ бон уа бахизын {{grammar:allative|{{SITENAME}}}}.",
"userlogin": "Бахизын / регистраци кæнын",
"userloginnocreate": "Бахизын",
"logout": "Рахизын",
"minlength1": "Файлы номы хъуамæ æппынкъаддæр иу дамгъæ уа.",
"badfilename": "Файлы ном ивд æрцыд {{grammar:allative|«$1»}}.",
"savefile": "Файл бавæрын",
- "uploadedimage": "бавгæдта \"[[$1]]\"",
"uploadvirus": "Файлы ис вирус! \nЛæмбынæг: $1",
"watchthisupload": "Ацы файлмæ цæст æрдарын",
"upload-success-subj": "Æвгæд æрцыд",
"watchthispage": "Цæст дарын ацы фарсмæ",
"unwatch": "Нал дарын цæст",
"watchlist-details": "{{PLURAL:$1|$1 фарсмæ|$1 фарсмæ}} дæ цæст дарыс, тæрхоны фæрстæ нæ нымайгæйæ.",
+ "wlnote": "Дæлæ афæстаг '''$2 сахаты дæргъы''' цы $1 {{PLURAL:$1|ивддзинад|ивддзинады}} æрцыди.",
"wlshowlast": "Фæстæг $1 сахаты, $2 боны дæргъы; $3.",
"watchlist-options": "Цæстдард рæгъы фадæттæ",
"watching": "Цæстдард фæрсты номхыгъдмæ афтауын...",
"permalink": "ਪੱਕੀ ਲਿੰਕ",
"print": "ਛਾਪੋ",
"view": "ਵੇਖੋ",
+ "view-foreign": "$1 ਉੱਤੇ ਵੇਖੋ",
"edit": "ਸੋਧੋ",
+ "edit-local": "ਲੋਕਲ ਵੇਰਵਾ ਸੋਧੋ",
"create": "ਬਣਾਓ",
"editthispage": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ",
"create-this-page": "ਇਹ ਸਫ਼ਾ ਬਣਾਓ",
"hidetoc": "ਓਹਲੇ",
"collapsible-collapse": "ਸਮੇਟੋ",
"collapsible-expand": "ਫੈਲਾਓ",
+ "confirmable-yes": "ਹਾਂ",
+ "confirmable-no": "ਨਹੀਂ",
"thisisdeleted": "$1 ਵੇਖੋ ਜਾਂ ਮੁੜ ਸਟੋਰ ਕਰੋ",
"viewdeleted": "$1 ਵੇਖਣੀਆਂ ਹਨ?",
"restorelink": "{{PLURAL:$1|ਇਕ ਮਿਟਾਈ ਹੋਈ ਸੋਧ|$1 ਮਿਟਾਈਆਂ ਹੋਈਆਂ ਸੋਧਾਂ}}",
"edit-gone-missing": "ਇਹ ਸਫ਼ਾ ਅੱਪਡੇਟ ਨਹੀਂ ਹੋ ਸਕਿਆ।\nਜਾਪਦਾ ਹੈ ਕਿ ਇਹ ਹਟਾਇਆ ਜਾ ਚੁੱਕਾ ਹੈ।",
"edit-conflict": "ਸੋਧ ਤਕਰਾਰ",
"edit-no-change": "ਤੁਹਾਡੀ ਸੋਧ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ ਕਿਉਂਕਿ ਲਿਖਤ ਵਿਚ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਕੀਤੀ ਗਈ।",
+ "postedit-confirmation-created": "ਸਫ਼ਾ ਬਣਾਇਆ ਗਿਆ।",
+ "postedit-confirmation-restored": "ਸਫ਼ੇ ਨੂੰ ਮੁੜ-ਸਟੋਰ ਕੀਤਾ ਗਿਆ।",
"postedit-confirmation-saved": "ਤੁਹਾਡੀ ਸੋਧ ਸਾਂਭੀ ਗਈ ਹੈ।",
"edit-already-exists": "ਨਵਾਂ ਸਫ਼ਾ ਨਹੀਂ ਬਣਾਇਆ ਜਾ ਸਕਿਆ।\nਇਹ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।",
"defaultmessagetext": "ਮੂਲ ਸੰਦੇਸ਼ ਲਿਖਤ",
"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-suggest": "ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਸੀ: $1",
"rcnotefrom": "'''$2''' ਤੱਕ ('''$1''' ਤੱਕ ਦਿੱਸਦੇ) ਬਦਲਾਵ ਹੇਠ ਦਿੱਤੀਆਂ ਹਨ।",
"rclistfrom": "$3 $2 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਖਾਓ",
"rcshowhideminor": "ਛੋਟੀਆਂ ਤਬਦੀਲੀਆਂ $1",
+ "rcshowhideminor-show": "ਵੇਖੋ",
+ "rcshowhideminor-hide": "ਓਹਲੇ",
"rcshowhidebots": "$1 ਬੌਟ",
+ "rcshowhidebots-show": "ਵੇਖੋ",
+ "rcshowhidebots-hide": "ਓਹਲੇ",
"rcshowhideliu": "$1 ਦਾਖ਼ਲ ਹੋਏ ਵਰਤੋਂਕਾਰ",
+ "rcshowhideliu-show": "ਵੇਖੋ",
+ "rcshowhideliu-hide": "ਓਹਲੇ",
"rcshowhideanons": "$1 ਗੁਮਨਾਮ ਵਰਤੋਂਕਾਰ",
+ "rcshowhideanons-show": "ਵੇਖੋ",
+ "rcshowhideanons-hide": "ਓਹਲੇ",
"rcshowhidepatr": "ਜਾਂਚੀਆਂ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ $1",
+ "rcshowhidepatr-show": "ਵੇਖੋ",
+ "rcshowhidepatr-hide": "ਓਹਲੇ",
"rcshowhidemine": "ਮੇਰੀਆਂ ਤਬਦੀਲੀਆਂ $1",
+ "rcshowhidemine-show": "ਵੇਖੋ",
+ "rcshowhidemine-hide": "ਓਹਲੇ",
"rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਖਾਓ<br /> $3",
"diff": "ਫ਼ਰਕ",
"hist": "ਅਤੀਤ",
"uploadwarning": "ਅੱਪਲੋਡ ਚਿਤਾਵਨੀ",
"uploadwarning-text": "ਕਿਰਪਾ ਕਰਕੇ ਹੇਠ ਦਿੱਤਾ ਫ਼ਾਈਲ ਵੇਰਵਾ ਬਦਲੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
"savefile": "ਫ਼ਾਈਲ ਸਾਂਭੋ",
- "uploadedimage": "\"[[$1]]\" ਅੱਪਲੋਡ ਕੀਤੀ",
- "overwroteimage": "\"[[$1]]\" ਦਾ ਨਵਾਂ ਰੂਪ ਅੱਪਲੋਡ ਕਰੋ",
"uploaddisabled": "ਅੱਪਲੋਡ ਆਯੋਗ ਹੈ",
"copyuploaddisabled": "URL ਰਾਹੀਂ ਅੱਪਲੋਡ ਰੋਕੇ ਹੋਏ ਹਨ।",
"uploaddisabledtext": "ਫ਼ਾਈਲਾਂ ਦੇ ਅੱਪਲੋਡ ਰੋਕੇ ਹੋਏ ਹਨ।",
"nolicense": "ਕੁਝ ਵੀ ਚੁਣਿਆ",
"license-nopreview": "(ਝਲਕ ਉਪਲੱਬਧ ਨਹੀਂ)",
"upload_source_file": " (ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਇੱਕ ਫਾਇਲ)",
+ "listfiles-delete": "ਹਟਾਓ",
"listfiles_search_for": "ਇਸ ਮੀਡੀਆ ਨਾਂ ਨੂੰ ਖੋਜੋ:",
"imgfile": "ਫ਼ਾਈਲ",
"listfiles": "ਫ਼ਾਈਲਾਂ ਦੀ ਸੂਚੀ",
"listfiles_size": "ਆਕਾਰ",
"listfiles_description": "ਵੇਰਵਾ",
"listfiles_count": "ਵਰਜਨ",
+ "listfiles-latestversion": "ਮੌਜੂਦਾ ਵਰਜਨ",
"listfiles-latestversion-yes": "ਹਾਂ",
"listfiles-latestversion-no": "ਨਹੀਂ",
"file-anchor-link": "ਫ਼ਾਈਲ",
"shortpages": "ਛੋਟੇ ਸਫ਼ੇ",
"longpages": "ਲੰਮੇ ਸਫ਼ੇ",
"protectedpages": "ਸੁਰੱਖਿਅਤ ਸਫ਼ੇ",
+ "protectedpages-page": "ਸਫ਼ਾ",
+ "protectedpages-expiry": "ਮਿਆਦ",
+ "protectedpages-reason": "ਕਾਰਨ",
+ "protectedpages-unknown-timestamp": "ਅਣਜਾਣ",
+ "protectedpages-unknown-performer": "ਅਣਜਾਣ ਯੂਜ਼ਰ",
"protectedtitles": "ਸੁਰੱਖਿਅਤ ਸਿਰਲੇਖ",
"listusers": "ਯੂਜ਼ਰ ਲਿਸਟ",
"listusers-editsonly": "ਸਿਰਫ਼ ਸੋਧਾਂ ਵਾਲੇ ਵਰਤੋਂਕਾਰ ਵਿਖਾਓ",
"listgrouprights-removegroup-all": "ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
"listgrouprights-addgroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਵਿਚ ਸਾਰੇ ਸਮੂਹ ਜੋੜੋ",
"listgrouprights-removegroup-self-all": "ਆਪਣੇ ਖਾਤੇ ਤੋਂ ਸਾਰੇ ਸਮੂਹ ਹਟਾਓ",
+ "trackingcategories-nodesc": "ਕੋਈ ਵੇਰਵਾ ਉਪਲੱਬਧ ਨਹੀਂ।",
"mailnologin": "ਭੇਜਣ ਲਈ ਕੋਈ ਪਤਾ ਨਹੀਂ",
"mailnologintext": "ਦੂਜੇ ਵਰਤੋਂਕਾਰਾਂ ਨੂੰ ਈ-ਮੇਲ ਭੇਜਣ ਲਈ ਤੁਹਾਨੂੰ [[Special:UserLogin|ਦਾਖ਼ਲ]] ਹੋਣਾ ਪਵੇਗਾ ਅਤੇ ਆਪਣੀਆਂ [[Special:Preferences|ਪਸੰਦਾਂ]] ਵਿਚ ਇੱਕ ਸਹੀ ਈ-ਮੇਲ ਪਤਾ ਦੇਣਾ ਪਵੇਗਾ।",
"emailuser": "ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ",
"notanarticle": "ਕੋਈ ਸਮੱਗਰੀ ਸਫ਼ਾ ਨਹੀਂ ਹੈ",
"notvisiblerev": "ਇੱਕ ਵੱਖਰੇ ਮੈਂਬਰ ਦੀ ਬਣਾਈ ਆਖ਼ਰੀ ਰੀਵਿਜ਼ਨ ਮਿਟਾਈ ਜਾ ਚੁੱਕੀ ਹੈ",
"watchlist-details": "ਗੱਲ-ਬਾਤ ਸਫ਼ੇ ਨਾ ਗਿਣਦੇ ਹੋਏ, ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਸੂਚੀ ਵਿਚ{{PLURAL:$1|$1 ਸਫ਼ਾ ਹੈ|$1 ਸਫ਼ੇ ਹਨ}}।",
+ "wlnote": "$3, $4 ਮੁਤਾਬਕ ਆਖ਼ਰੀ {{PLURAL:$2|ਘੰਟੇ|'''$2''' ਘੰਟਿਆਂ}} ਵਿਚ {{PLURAL:\n$1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆਂ}}, ਹੇਠਾਂ ਵੇਖੋ।",
"wlshowlast": "ਪਿਛਲੇ $1 ਘੰਟੇ $2 ਦਿਨ $3 ਵਖਾਓ",
"watchlist-options": "ਨਿਗਰਾਨੀ-ਲਿਸਟ ਦੀਆਂ ਚੋਣਾਂ",
"watching": "ਨਿਗ੍ਹਾ (ਵਾਚ) ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ...",
"allmessages-prefix": "ਇਸ ਅਗੇਤਰ ਨਾਲ਼ ਛਾਣੋ:",
"allmessages-language": "ਭਾਸ਼ਾ:",
"allmessages-filter-submit": "ਜਾਓ",
+ "allmessages-filter-translate": "ਤਰਜਮਾ ਕਰੋ",
"thumbnail-more": "ਵਧਾਓ",
"filemissing": "ਫ਼ਾਈਲ ਗੁੰਮ ਹੈ",
"thumbnail_error": "ਨਮੂਨਾ ਬਣਾਉਣ ਵਿੱਚ ਗਲਤੀ ਹੋਈ ਹੈ: $1",
"siteusers": "{{SITENAME}} {{PLURAL:$2|ਵਰਤੋਂਕਾਰ|ਵਰਤੋਂਕਾਰਾਂ}} $1",
"creditspage": "ਸਫ਼ੇ ਬਾਬਤ ਕਰਜ਼",
"spamprotectiontitle": "Spam ਸੁਰੱਖਿਆ ਫਿਲਟਰ",
+ "pageinfo-header-basic": "ਮੁੱਢਲੀ ਜਾਣਕਾਰੀ",
"pageinfo-header-edits": "ਸੋਧਾਂ ਦਾ ਅਤੀਤ",
"pageinfo-header-restrictions": "ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ",
+ "pageinfo-header-properties": "ਸਫ਼ਾ ਵਿਸ਼ੇਸ਼ਤਾ",
"pageinfo-length": "ਸਫ਼ੇ ਦੀ ਲੰਬਾਈ (ਬਾਈਟਾਂ ਵਿਚ)",
"pageinfo-article-id": "ਸਫ਼ੇ ਦੀ ਸ਼ਨਾਖ਼ਤ",
"pageinfo-language": "ਸਫ਼ੇ ਦੀ ਸਮੱਗਰੀ ਦੀ ਭਾਸ਼ਾ",
"file-nohires": "ਇਸ ਤੋਂ ਵੱਡੀ ਤਸਵੀਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।",
"svg-long-desc": "SVG ਫ਼ਾਈਲ, ਆਮ ਤੌਰ ’ਤੇ $1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਦਾ ਅਕਾਰ: $3",
"show-big-image": "ਅਸਲ ਫਾਈਲ",
+ "show-big-image-size": "$1 × $2 ਪਿਕਸਲ",
"newimages": "ਨਵੀਆਂ ਫ਼ਾਈਲਾਂ ਦੀ ਗੈਲਰੀ",
+ "newimages-legend": "ਫਿਲਟਰ",
"noimages": "ਵੇਖਣ ਲਈ ਕੁਝ ਨਹੀਂ",
"ilsubmit": "ਖੋਜ",
"bydate": "ਮਿਤੀ ਨਾਲ",
"exif-unknowndate": "ਅਣਪਛਾਤੀ ਮਿਤੀ",
"exif-orientation-1": "ਸਧਾਰਨ",
"exif-orientation-3": "੧੮੦° ਘੁਮਾਇਆ ਗਿਆ",
+ "exif-orientation-6": "90° ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਇਆ",
+ "exif-orientation-7": "90° ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਇਆ ਅਤੇ ਖੜ੍ਹਵੇਂ ਰੂਪ ਵਿੱਚ ਪਲਟਿਆ",
+ "exif-orientation-8": "90° ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਇਆ",
"exif-componentsconfiguration-0": "ਮੌਜੂਦ ਨਹੀਂ ਹੈ",
"exif-exposureprogram-0": "ਪਰਿਭਾਸ਼ਤ ਨਹੀਂ",
"exif-exposureprogram-1": "ਦਸਤੀ",
"confirm-watch-top": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਜੋੜਨਾ ਹੈ?",
"confirm-unwatch-button": "ਠੀਕ ਹੈ",
"confirm-unwatch-top": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਤੋਂ ਹਟਾਉਣਾ ਹੈ?",
+ "quotation-marks": "\"$1\"",
"imgmultipageprev": "← ਪਿਛਲਾ ਸਫ਼ਾ",
"imgmultipagenext": "ਅਗਲਾ ਸਫ਼ਾ →",
"imgmultigo": "ਜਾਓ!",
"imgmultigoto": "$1 ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ",
+ "img-lang-default": "(ਮੂਲ ਭਾਸ਼ਾ)",
+ "img-lang-go": "ਜਾਓ",
"ascending_abbrev": "ਵਧਦਾ",
"descending_abbrev": "ਘਟਦਾ",
"table_pager_next": "ਅਗਲਾ ਸਫ਼ਾ",
"version-hooks": "ਹੁੱਕਾਂ",
"version-hook-name": "ਹੁੱਕ ਦਾ ਨਾਂ",
"version-license": "ਲਸੰਸ",
+ "version-ext-license": "ਲਸੰਸ",
+ "version-ext-colheader-name": "ਇਕਸਟੈਨਸ਼ਨ",
+ "version-skin-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-poweredby-others": "ਹੋਰ",
+ "version-poweredby-translators": "translatewiki.net ਅਨੁਵਾਦਕ",
"version-software": "ਇਨਸਟਾਲ ਕੀਤਾ ਸਾਫ਼ਟਵੇਅਰ",
"version-software-product": "ਉਤਪਾਦ",
"version-software-version": "ਵਰਜਨ",
"fileduplicatesearch-submit": "ਖੋਜ",
"fileduplicatesearch-noresults": "\"$1\" ਨਾਂ ਦੀ ਕੋਈ ਫ਼ਾਈਲ ਨਹੀਂ ਲੱਭੀ।",
"specialpages": "ਖ਼ਾਸ ਸਫ਼ੇ",
+ "specialpages-note-top": "ਸੰਕੇਤ",
"specialpages-group-maintenance": "ਪ੍ਰਬੰਧਕੀ ਰਪਟਾਂ",
"specialpages-group-other": "ਹੋਰ ਖ਼ਾਸ ਸਫ਼ੇ",
"specialpages-group-login": "ਲਾਗਇਨ / ਖਾਤਾ ਬਣਾਓ",
"tags-title": "ਟੈਗ",
"tags-tag": "ਟੈਗ ਦਾ ਨਾਮ",
"tags-description-header": "ਅਰਥ ਦਾ ਪੂਰਾ ਬਿਓਰਾ",
+ "tags-active-header": "ਸਰਗਰਮ?",
"tags-hitcount-header": "ਟੈਗ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ",
+ "tags-active-yes": "ਹਾਂ",
+ "tags-active-no": "ਨਹੀਂ",
"tags-edit": "ਸੋਧੋ",
"tags-hitcount": "$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}",
"comparepages": "ਸਫ਼ੇ ਮਿਲਾਓ",
"htmlform-no": "ਨਹੀਂ",
"htmlform-yes": "ਹਾਂ",
"htmlform-chosen-placeholder": "ਕੋਈ ਚੋਣ ਚੁਣੋ",
+ "htmlform-cloner-create": "ਹੋਰ ਜੋੜੋ",
+ "htmlform-cloner-delete": "ਹਟਾਓ",
"logentry-delete-delete": "$1 ਨੇ ਸਫ਼ਾ $3 ਮਿਟਾਇਆ",
"revdelete-content-hid": "ਸਮੱਗਰੀ ਲੁਕਾਈ ਹੋਈ",
"revdelete-summary-hid": "ਸੋਧ ਸਾਰ ਲੁਕਾਈ ਹੋਈ",
"duration-centuries": "$1 {{PLURAL:$1|ਸਦੀ|ਸਦੀਆਂ}}",
"duration-millennia": "$1 {{PLURAL:$1|ਸਾਹਸ਼ਤਾਬਦੀ|ਸਾਹਸ਼ਤਾਬਦੀਆਂ}}",
"rotate-comment": "ਤਸਵੀਰ ਨੂੰ ਘੜੀ ਦੇ ਰੁਖ ਵਿਚ $1 {{PLURAL:$1|ਡਿਗਰੀ|ਡਿਗਰੀਆਂ}} ਨਾਲ਼ ਘੁਮਾਇਆ ਗਿਆ",
- "expand_templates_preview": "ਝਲਕ"
+ "expand_templates_ok": "ਠੀਕ ਹੈ",
+ "expand_templates_remove_comments": "ਟਿੱਪਣੀਆਂ ਹਟਾਓ",
+ "expand_templates_preview": "ਝਲਕ",
+ "pagelang-name": "ਸਫ਼ਾ",
+ "pagelang-language": "ਭਾਸ਼ਾ",
+ "pagelang-use-default": "ਮੂਲ ਭਾਸ਼ਾ ਵਰਤੋਂ",
+ "pagelang-select-lang": "ਭਾਸ਼ਾ ਚੁਣੋ"
}
"talkpagelinktext": "Pisasabian",
"specialpage": "Bulung a Makabukud",
"personaltools": "Sariling kasangkapan",
- "postcomment": "Magpaskil kang komentu o puna",
"articlepage": "Lawen me ing kalamnan ning bulung",
"talk": "Pamisabi-sabi",
"views": "Pamaglawe",
"externaldberror": "Mapalyaring mika pamagkamali king external authentication (pamagpatutung panlual) ning database, o ala kang paintulut a i-update ya ing kekang account a panlual (external account).",
"login": "Mag log in",
"nav-login-createaccount": "Mag-login / maglalang account",
- "loginprompt": "Kailangan mo reng cookie a makasalangi (enabled) ba kang makapag log in king {{SITENAME}}.",
"userlogin": "Mag-login / maglalang account",
"logout": "Mag-log out",
"userlogout": "Mag logout",
"searchprofile-images-tooltip": "Manintun makasimpan",
"searchprofile-everything-tooltip": "Manintun karing eganaganang laman (kayabe no reng bulung pamisabi-sabi)",
"search-result-size": "$1 ({{PLURAL:$2|1 a kataya|$2 kataya}})",
- "search-result-score": "Kaugnayan (relevance): $1%",
"search-redirect": "(pamanalis direksiun $1)",
"search-section": "(seksion $1)",
"search-suggest": "Ing buri mung sabian: $1",
"fileexists-shared-forbidden": "Atin nang simpan (file) a maki lagyung anti kaniti king abe-abeng simpanan (shared file repository);\nmibalik ka at ilulan (upload) me king lalam ning bayung lagyu. [[File:$1|thumb|center|$1]]",
"uploadwarning": "Babala king pamaglulan",
"savefile": "I-save ya ing simpan (file)",
- "uploadedimage": "milulan ya ing \"[[$1]]\"",
- "overwroteimage": "milulan ya ing bayung bersion ning \"[[$1]]\"",
"uploaddisabled": "Makapatda ing pamag-upload",
"uploaddisabledtext": "Makapatda ing pamag-upload king {{SITENAME}}.",
"uploadscripted": "Atin yang HTML o script code ing simpan a ini, at maliaring magkamali ya ing web browser king pamamasa kaniti.",
"watchlist-details": "{{PLURAL:$1|$1 bulung|$1 bulung}} king kekang watchlist, e la kayabe deng ''talk pages''.",
"wlheader-enotif": "Makasalangi (enabled) ing pamipabalu kapamilatan ning e-mail.",
"wlheader-showupdated": "'''Makapal''' la pangasulat deng bulung a miyalilan manibat aniang tauli mu lang pintalan.",
+ "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'')",
"watching": "Babanten...",
"talkpagelinktext": "Dviser",
"specialpage": "Pache éspéchiale",
"personaltools": "Otis dech uzeu",
- "postcomment": "Nouvèle sekchion",
"articlepage": "Vir el pache ed ches étnus",
"talk": "distchuter",
"views": "Vues",
"yourdomainname": "Vote donmène:",
"login": "Intrer",
"nav-login-createaccount": "Intrer / créer vote conpte",
- "loginprompt": "I feut avoèr dés coukies pou pouvoèr intrer din {{SITENAME}}.",
"userlogin": "Intrer / créer vote conpte",
"logout": "Sortir",
"userlogout": "Sortir",
"upload": "Quértcher chés fichiés",
"uploadlogpage": "Jornal éd chés quértchémints",
"filedesc": "Résumè",
- "uploadedimage": "\"[[$1]]\" quértchée",
"license": "Licince",
"license-header": "Licince",
"listfiles": "Lisse des fichiés",
"filename": "Feilnaame",
"badfilename": "Daer Feilnaame iss gennert warre nooch „$1“.",
"savefile": "Feil beilege",
- "uploadedimage": "hot „[[$1]]“ uffglaade",
- "overwroteimage": "hot e neie Version vun „[[$1]]“ uffglaade",
"uploaddisabled": "Ufflaade verbodde",
"uploaddisabledtext": "Es Ufflaade vun Feils iss verbodde.",
"watchthisupload": "Watsch des Blatt",
"talkpagelinktext": "Dischbediere",
"specialpage": "Schbezielli Said",
"personaltools": "Persenlischs Wergzaisch",
- "postcomment": "Naije Abschnidd",
"articlepage": "Inhald õgugge",
"talk": "Dischbediere",
"views": "Uffruf",
"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.",
"userlogin": "Õmelde / Kondo õleesche",
"userloginnocreate": "Oilogge",
"logout": "Uffhere",
"searchprofile-advanced-tooltip": "Gugg in õnnare Nõmensreum",
"search-result-size": "$1 ({{PLURAL:$2|1 Word|$2 Wärda}})",
"search-result-category-size": "{{PLURAL:$1|1 Said|$1 Saide}} ({{PLURAL:$2|1 Sachgrubb|$2 Sachgrubbe}}, {{PLURAL:$3|1 Dadai|$3 Dadaije}})",
- "search-result-score": "Bdaidung: $1%",
"search-redirect": "(Waidalaidung $1)",
"search-section": "(Abschnidd $1)",
"search-suggest": "Hoschd gemäänd: $1",
"filedesc": "Iwwabligg",
"fileuploadsummary": "Iwwabligg:",
"savefile": "Dadai schbaischere",
- "uploadedimage": "hodd „[[$1]]“ nuffglade",
"lockmanager-notlocked": "„$1“ hod ned uffgmachd were kenne, s'isch ganed gschberd gwesd.",
"lockmanager-fail-closelock": "Die gbscherd Dadai „$1“ hod ned gschlosse were kenne.",
"lockmanager-fail-deletelock": "Die gbscherd Dadai „$1“ hod ned gleschd were kenne.",
"tog-watchdefault": "Dodawaj do obserwowanych strony i pliki, które edytuję",
"tog-watchmoves": "Dodawaj do obserwowanych strony i pliki, które przenoszę",
"tog-watchdeletion": "Dodawaj do obserwowanych strony i pliki, które usuwam",
+ "tog-watchrollback": "Dodawaj do obserwowanych strony, w których {{GENDER:|wycofałem|wycofałam}} edycję",
"tog-minordefault": "Wszystkie edycje domyślnie oznaczaj jako drobne",
"tog-previewontop": "Pokazuj podgląd powyżej obszaru edycji",
"tog-previewonfirst": "Pokazuj podgląd strony podczas pierwszej edycji",
"hidetoc": "ukryj",
"collapsible-collapse": "Zwiń",
"collapsible-expand": "Rozwiń",
+ "confirmable-confirm": "Jesteś {{GENDER:$1|pewny|pewna}}?",
+ "confirmable-yes": "Tak",
+ "confirmable-no": "Nie",
"thisisdeleted": "Pokazać lub odtworzyć $1?",
"viewdeleted": "Zobacz $1",
"restorelink": "{{PLURAL:$1|jedną usuniętą wersję|$1 usunięte wersje|$1 usuniętych wersji}}",
"invalidtitle-knownnamespace": "Nieprawidłowa nazwa w obszarze nazw \"$2\" o treści \"$3\"",
"invalidtitle-unknownnamespace": "Nieprawidłowa nazwa z nieznaną liczbą przestrzeni nazw $1 o treści \"$2\"",
"exception-nologin": "Nie jesteś zalogowany/a",
- "exception-nologin-text": "Proszę [[Special:Userlogin|zaloguj się]] aby mieć dostęp do tej strony lub akcji.",
+ "exception-nologin-text": "Zaloguj się, aby mieć dostęp do tej strony lub akcji.",
"exception-nologin-text-manual": "Musisz $1 aby mieć dostęp do tej strony lub akcji.",
"virus-badscanner": "Zła konfiguracja – nieznany skaner antywirusowy ''$1''",
"virus-scanfailed": "skanowanie nieudane (błąd $1)",
"parser-template-recursion-depth-warning": "Przekroczno limit głębokości rekurencji szablonu ($1)",
"language-converter-depth-warning": "Przekroczono ograniczenie ($1) głębokości zagnieżdżenia konwersji językowej",
"node-count-exceeded-category": "Strony, gdzie przekroczono liczbę węzłów",
- "node-count-exceeded-category-desc": "Kategoria dla stron, na których przekroczono liczbę węzłów.",
+ "node-count-exceeded-category-desc": "Strona przekracza maksymalną liczbę węzłów.",
"node-count-exceeded-warning": "Strona przekroczyła liczbę węzłów",
"expansion-depth-exceeded-category": "Strony z przekroczoną głębokością rozbudowy",
- "expansion-depth-exceeded-category-desc": "Kategoria dla stron, na których przekroczona jest głębokość rozbudowy.",
+ "expansion-depth-exceeded-category-desc": "Strona przekracza maksymalną głębokość rozbudowy.",
"expansion-depth-exceeded-warning": "Strona przekroczyła głębokość rozbudowy",
"parser-unstrip-loop-warning": "Wykryto nieskończoną pętlę",
"parser-unstrip-recursion-limit": "Przekroczono maksymalną głębokość zagnieżdżania ($1)",
"searchmenu-exists": "* Strona '''[[$1]]'''",
"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-images": "Multimedia",
- "searchprofile-everything": "Wszystko",
- "searchprofile-advanced": "Zaawansowane",
+ "searchprofile-images": "w multimediach",
+ "searchprofile-everything": "na wszystkich stronach",
+ "searchprofile-advanced": "zaawansowane",
"searchprofile-articles-tooltip": "Szukanie w przestrzeni nazw $1",
"searchprofile-images-tooltip": "Szukanie plików",
"searchprofile-everything-tooltip": "Szukanie w całej zawartości (także strony dyskusji)",
"searchprofile-advanced-tooltip": "Szukanie w wybranych przestrzeniach nazw",
"search-result-size": "$1 ({{PLURAL:$2|1 słowo|$2 słowa|$2 słów}})",
"search-result-category-size": "{{PLURAL:$1|1 element|$1 elementy|$1 elementów}} ({{PLURAL:$2|1 kategoria|$2 kategorie|$2 kategorii}}, {{PLURAL:$3|1 plik|$3 pliki|$3 plików}})",
- "search-result-score": "Trafność: $1%",
"search-redirect": "(przekierowanie $1)",
"search-section": "(sekcja $1)",
"search-file-match": "(odpowiada zawartości pliku)",
"preferences": "Preferencje",
"mypreferences": "Preferencje",
"prefs-edits": "Liczba edycji:",
- "prefsnologintext2": "Musisz $1 aby ustawić preferencje.",
+ "prefsnologintext2": "Zaloguj się, aby zmienić swoje preferencje.",
"prefs-skin": "Skórka",
"skin-preview": "podgląd",
"datedefault": "Domyślny",
"uploadwarning": "Ostrzeżenie o przesyłaniu",
"uploadwarning-text": "Zmień poniższy opis pliku i spróbuj ponownie.",
"savefile": "Zapisz plik",
- "uploadedimage": "przesłał [[$1]]",
- "overwroteimage": "przesłano nową wersję pliku „[[$1]]“",
"uploaddisabled": "Przesyłanie plików wyłączone",
"copyuploaddisabled": "Przesyłanie poprzez podanie adres URL jest wyłączone.",
"uploaddisabledtext": "Możliwość przesyłania plików została wyłączona.",
"nolicense": "Nie wybrano",
"licenses-edit": "Edytuj opcje licencji",
"license-nopreview": "(Podgląd niedostępny)",
- "upload_source_url": " (poprawny, publicznie dostępny adres URL)",
+ "upload_source_url": "(wybrany plik z prawidłowego, publicznie dostępnego adresu URL)",
"upload_source_file": "(wybrany plik na twoim komputerze)",
"listfiles-delete": "usuń",
"listfiles-summary": "Na tej stronie specjalnej prezentowane są wszystkie przesłane pliki.",
"trackingcategories-desc": "Kryteria włączenia kategorii",
"noindex-category-desc": "Ta strona nie jest indeksowana przez roboty, ponieważ ma wpisane magiczne słowo <code><nowiki>__NOINDEX__</nowiki></code> i znajduje się w przestrzeni nazw, w której ta flaga jest dozwolona.",
"index-category-desc": "Na stronie znajduje się magiczne słowo <code><nowiki>__INDEX__</nowiki></code> (i strona znajduje się w przestrzeni nazw, w której jest ono dozwolone), więc jest indeksowana przez wyszukiwarki nawet wtedy, gdy normalnie by się to nie działo.",
- "post-expand-template-inclusion-category-desc": "Po rozwinięciu wszystkich szablonów, rozmiar strony jest większe niż <code>$wgMaxArticleSize</code>, więc niektóre szablony nie zostały rozwinięte.",
- "post-expand-template-argument-category-desc": "Po rozwinięciu argumentu szablonu (coś w potrójnych nawiasach, np. <code>{{{Foo}}}</code>) długość strony przekracza <code>$wgMaxArticleSize</code>.",
+ "post-expand-template-inclusion-category-desc": "Rozmiar tej strony jest większy niż <code>$wgMaxArticleSize</code> po rozszerzeniu wszystkich szablonów, więc część szablonów nie jest rozszerzonych.",
+ "post-expand-template-argument-category-desc": "Długość strony przekracza <code>$wgMaxArticleSize</code> po rozwinięciu argumentu szablonu (coś w potrójnych nawiasach, np. <code>{{{Foo}}}</code>).",
"expensive-parserfunction-category-desc": "Na stronie używanych jest zbyt wiele wymagających funkcji parsera (takich jak <code>#ifexist</code>). Więcej informacji na stronie [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Kategoria dodawana do stron zawierających nieprawidłowe odwołania do plików (odwołania do nieistniejących plików).",
+ "broken-file-category-desc": "Strona zawiera nieprawidłowe odwołania do plików (odwołania do nieistniejących plików).",
"hidden-category-category-desc": "To jest kategoria z <code><nowiki>__HIDDENCAT__</nowiki></code>, co zapobiega wyświetlaniu jej w sekcji z kategoriami na stronie.",
"trackingcategories-nodesc": "Opis nie jest dostępny.",
"trackingcategories-disabled": "Kategoria jest wyłączona",
"mywatchlist": "Obserwowane",
"watchlistfor2": "Dla $1 $2",
"nowatchlist": "Lista obserwowanych przez Ciebie stron jest pusta.",
- "watchlistanontext": "$1, aby obejrzeć lub edytować elementy listy obserwowanych.",
+ "watchlistanontext": "Zaloguj się, aby obejrzeć lub edytować elementy listy obserwowanych.",
"watchnologin": "Nie jesteś zalogowany",
"addwatch": "Dodaj do listy obserwowanych",
"addedwatchtext": "Strona „[[:$1|$1]]” została dodana do Twojej [[Special:Watchlist|listy obserwowanych]].\nKażda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie odnotowana na tej liście.",
"delete-edit-reasonlist": "Edytuj listę przyczyn usunięcia",
"delete-toobig": "Ta strona ma bardzo długą historię edycji – ponad $1 {{PLURAL:$1|zmianę|zmiany|zmian}}.<br />\nUsuwanie 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 />\nBądź ostrożny, ponieważ usunięcie jej może spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.",
+ "delete-cantedit": "Nie możesz usunąć tej strony, ponieważ nie masz uprawnienia do jej edycji.",
"deleting-backlinks-warning": "''' Uwaga:''' Do strony, którą masz zamiar usunąć, odwołują się [[Special:WhatLinksHere/{{FULLPAGENAME}}|inne strony]].",
"rollback": "Cofnij edycję",
"rollback_short": "Cofnij",
"autoblockid": "automatyczna blokada nr $1",
"block": "Zablokuj użytkownika",
"unblock": "Odblokuj użytkownika",
- "blockip": "Zablokuj użytkownika",
+ "blockip": "Zablokuj {{GENDER:$1|użytkownika|użytkowniczkę}}",
"blockip-legend": "Zablokuj użytkownika",
"blockiptext": "Użyj poniższego formularza do zablokowania możliwości edycji spod określonego adresu IP lub konkretnemu użytkownikowi.\nBlokować należy jedynie po to, by zapobiec wandalizmom, zgodnie z [[{{MediaWiki:Policy-url}}|przyjętymi zasadami]].\nPodaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandalizmu).",
"ipaddressorusername": "Adres IP lub nazwa użytkownika",
"ipb-unblock-addr": "Odblokuj $1",
"ipb-unblock": "Odblokuj użytkownika lub adres IP",
"ipb-blocklist": "Zobacz istniejące blokady",
- "ipb-blocklist-contribs": "Wkład $1",
+ "ipb-blocklist-contribs": "Wkład {{GENDER:$1|$1}}",
"unblockip": "Odblokuj użytkownika",
"unblockiptext": "Użyj poniższego formularza, by przywrócić możliwość edycji z wcześniej zablokowanego adresu IP lub użytkownikowi.",
"ipusubmit": "Odblokuj",
"logentry-rights-rights": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup",
"logentry-rights-autopromote": "$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)",
+ "logentry-upload-upload": "$1 {{GENDER:$2|przesłał|przesłała}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|przesłał|przesłała}} nową wersję $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|przesłał|przesłała}} $3",
"rightsnone": "brak",
"feedback-bugornote": "Jeśli jesteś w stanie szczegółowo opisać problem techniczny, proszę [$1 zgłoś błąd].\nW przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zostanie dodany do strony \"[$3 $2]\", wraz z nazwą użytkownika.",
"feedback-subject": "Temat",
"action-pagelang": "zmiany języka strony",
"log-name-pagelang": "Rejestr zmian języka",
"log-description-pagelang": "Rejestr zmian języków przypisanych do poszczególnych stron",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|zmienił|zmieniła}} język strony $3 z „$4” na „$5”."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|zmienił|zmieniła}} język strony $3 z „$4” na „$5”.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (włączone)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''wyłączone''')"
}
"searchprofile-advanced-tooltip": "Sërché ant jë spassi nominaj përsonalisà",
"search-result-size": "$1 ({{PLURAL:$2|un|$2}} mòt)",
"search-result-category-size": "{{PLURAL:$1|1 mèmber|$1 mèmber}} ({{PLURAL:$2|1 sot-categorìa|$2 sot-categorìe}}, {{PLURAL:$3|1 archivi|$3 archivi}})",
- "search-result-score": "Arlevansa: $1%",
"search-redirect": "(ridiression $1)",
"search-section": "(session $1)",
"search-file-match": "(a corëspond al contnù d'archivi)",
"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",
- "uploadedimage": "a l'ha carià \"[[$1]]\"",
- "overwroteimage": "a l'ha carìa na version neuva ëd \"[[$1]]\"",
"uploaddisabled": "Càrich blocà.",
"copyuploaddisabled": "Ël càrich për mojen ëd n'adrëssa dl'aragnà a l'é disabilità.",
"uploaddisabledtext": "La possibilità ëd carié dj'archivi a l'é staita disabilità.",
"talkpagelinktext": "گل بات",
"specialpage": "خاص صفحہ",
"personaltools": "ذاتی اوزار",
- "postcomment": "نویں ونڈ",
"articlepage": "مضمون آلا صفحہ",
"talk": "گل بات",
"views": "وکھالے",
"externaldberror": "ڈیٹابیس چ توانوں پہچاننے چ کوئی مسئلہ ہویا اے یا فیر تسی اپنا بارلا کھاتا نئیں بدل سکدے۔",
"login": "اندر آؤ جی",
"nav-login-createaccount": "اندر آؤ / کھاتہ کھولو",
- "loginprompt": "اندر آنے آستے تواڈیاں کوکیز آن ہونیاں چائیدیاں نے {{SITENAME}}.",
"userlogin": "اندر آؤ / کھاتہ کھولو",
"userloginnocreate": "اندر آؤ جی",
"logout": "لاگ توں باہر",
"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-suggest": "تسی $1 دی گل تے نئیں کر رۓ:",
"uploadwarning": "فائل چڑانے توں خبردار",
"uploadwarning-text": "تھلے فائل بارے دس بدلو تے فیر کوشش کرو۔",
"savefile": "فائل بچاؤ",
- "uploadedimage": "چڑھائی گئی\"[[$1]]\"",
- "overwroteimage": "\"[[$1]]\" دا اک نواں ورین چڑھاؤ",
"uploaddisabled": "فائل چڑانا بند اے",
"copyuploaddisabled": "یو آر این لے چڑھانا نکارہ کیتا۔",
"uploaddisabledtext": "فائل چڑانے چ رکاوٹ اے۔",
"watchlist-details": "{{PLURAL:$1|$1 صفحہ|$1 صفحہ}} تواڈی اکھ تھلے گلاں باتاں شامل نہیں۔",
"wlheader-enotif": "ای-میل نوٹیفیکیشن قابل",
"wlheader-showupdated": " صفے جیہڑے بدلے کۓ تھواڈے آخری وار آن مکرون اونان نوں موٹا کرکے دسیا گیا اے۔",
+ "wlnote": "تھلے {{PLURAL:$1|آخری تبدیلی|آخری تبدیلیاں '''1$''' }} آخر تے {{PLURAL:$2|کینٹہ|'''2$''' کینٹے}} 3$، 4$.",
"wlshowlast": "آخری $1 گھنٹے $2 دن $3 وکھاؤ",
"watchlist-options": "نظر تھلے رکھن دیاں راہواں",
"watching": "نظر تھلے۔۔۔۔",
"duplicate-defaultsort": "'''خبردار:''' ڈیفالٹ چابی \"$2\" پہلی ڈیفالٹ چابی \"$1\" دے اتے لگ گئی اے۔",
"version": "ورژن",
"version-extensions": "انسٹالڈ کیتیاں گیاں ایکسٹنشن",
+ "version-skins": "کھل",
"version-specialpages": "خاص صفے",
"version-parserhooks": "پارسر ہکز",
"version-variables": "ویریایبلز",
"version-antispam": "سپام بچاؤ",
- "version-skins": "کھل",
"version-other": "دوجے",
"version-mediahandlers": "میڈیا ہینڈلرز",
"version-hooks": "ہکز",
"talkpagelinktext": "Καλάτσεμαν",
"specialpage": "Ειδικόν σελίδαν",
"personaltools": "Προσωπικά εργαλεία",
- "postcomment": "Νέον κομμάτ'",
"articlepage": "Σελίδα",
"talk": "Καλάτσεμαν",
"views": "Τερέματα",
"yourdomainname": "Το domain εσούν:",
"login": "Εμπάτε",
"nav-login-createaccount": "Εμπάτεν / ποισέστεν λογαρίαν",
- "loginprompt": "Πρέπ' ν' άφτετε τα cookies για εμπείτε σο {{SITENAME}}.",
"userlogin": "Εμπάτεν / ποισέστεν λογαρίαν",
"userloginnocreate": "Εμπάτεν",
"logout": "οξουκά",
"badfilename": "Τόνεμαν ταρχείου ελλάγεν κιεγέντον \"$1\".",
"filetype-missing": "Τ' αρχείον τιδέν 'κ έχ' κατάληξην (άμον \".jpg\").",
"savefile": "Αποθήκεψον τ' αρχείον",
- "uploadedimage": "Εγέντον το φόρτωμαν τη \"[[$1]]\"",
- "overwroteimage": "Εφορτώθεν καινούρεον μορφή τη \"[[$1]]\"",
"watchthisupload": "Ωρίαγμαν τη αρχείου",
"upload-file-error": "Σφάλμαν απές μερέαν",
"upload-misc-error": "Αναγνώριμον λάθος φορτωματί",
"talkpagelinktext": "Diskusiōni",
"specialpage": "Speciālin pāusan",
"personaltools": "Persōniskas pagaptis",
- "postcomment": "Naunā sekciōni",
"articlepage": "Wīdais ēnturas pāusan",
"talk": "Diskusiōni",
"views": "Pawīda",
"externaldberror": "Tikka izwinaīnas autentikāntin dātanbazin blānda, anga ni assei enwarīntan kāi etnaunīnlai twajjan izwinaīnan rekkenan.",
"login": "Enjaīs",
"nav-login-createaccount": "Enjaīs / teīkeis rekkenan",
- "loginprompt": "Tu turri turītun <i>cookies</i> enklaūtan, kāi enēilai en {{SITENAME}}.",
"userlogin": "Enjaīs / teīkeis rekkenan",
"userloginnocreate": "Enjaīs",
"logout": "Izjaīs",
"searchprofile-everything-tooltip": "Laukīs en pastippai ēnturan (dīgi en diskusiōnis pāusamans)",
"searchprofile-advanced-tooltip": "Laukīs en etrinktammans tītelin plattibins",
"search-result-size": "$1 ({{PLURAL:$2|1 wīrds|$2 wīrdai}})",
- "search-result-score": "Ebtikewīngisku $1%",
"search-redirect": "(prawessenis $1)",
"search-section": "(sekciōni $1)",
"search-suggest": "Mīriwuns(si) tū ezze: $1",
"uploadwarning": "Ēmpirsergīsenis ezze enkraūsnan",
"uploadwarning-text": "Madli kitawīdinais zūrbukes ebpeisāsenis be bandais etkūmps",
"savefile": "Enpeisāis zūrbrukin",
- "uploadedimage": "ast enkraūwuns(si) \"[[$1]]\"",
- "overwroteimage": "ast enkraūwuns(si) nāunan wersiōnin stesse \"[[$1]]\"",
"uploaddisabled": "Zūrbrukin enkrausnā izklaūtan",
"uploaddisabledtext": "Zūrbrukin enkrausnā pastāi izklaūtan.",
"php-uploaddisabledtext": "Zūrbrukin enkrausnā ast drēuditan en PHP.\nIzbandais ensadīnsenin „file_uploads”.",
"watchlist-details": "Ast {{PLURAL:$1|$1 pāusan|$1 pāusai}} en twajjai listin stēisan nadirītan, ni gīrbawintei diskusiōnis pāusans.",
"wlheader-enotif": "E-mail pawakīsenei ast enklaūtan.",
"wlheader-showupdated": "Pastāi '''pastarīntan''' pāusai, kawīdai bēi kitawīdintan ezze Twajjai panzdauman tenēisan kāimalukisnan..",
+ "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",
"watching": "As nadirēi...",
"talkpagelinktext": "خبرې اترې",
"specialpage": "ځانگړې پاڼه",
"personaltools": "شخصي اوزار",
- "postcomment": "نوې برخه",
"articlepage": "د مخ مېنځپانگه ښکاره کول",
"talk": "خبرې اترې",
"views": "کتنې",
"password-change-forbidden": "تاسې په دې ويکي باندې خپل پټنوم نه شی بدلولی.",
"login": "ننوتل",
"nav-login-createaccount": "ننوتل / گڼون جوړول",
- "loginprompt": "ددې لپاره چې {{SITENAME}} کې ننوځۍ نو بايد ستاسې د کمپيوټر کوکيز چارن وي.",
"userlogin": "ننوتل / گڼون جوړول",
"userloginnocreate": "ننوتل",
"logout": "وتل",
"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-suggest": "آيا همدا مو موخه وه: $1",
"file-exists-duplicate": "همدا دوتنه د {{PLURAL:$1|لاندينۍ دوتنې|لاندينيو دوتنو}} غبرگه لمېسه ده:",
"uploadwarning": "د پورته کولو گواښ",
"savefile": "دوتنه خوندي کړه",
- "uploadedimage": "\"[[$1]]\" پورته شوه",
"uploaddisabled": "پورته کول ناچارن شوي",
"uploaddisabledtext": "د دوتنې پورته کولو آسانتياوې ناچارن شوي.",
"uploadvirus": "دا دوتنه ويروس لري! تفصيل: $1",
"watchlist-details": "ستاسې کتنلړ کې {{PLURAL:$1|$1 مخ دی|$1 مخونه دي}}، د خبرو اترو مخونه مو بېل نه دي شمېرلي.",
"wlheader-enotif": "برېښليک خبرونه چارنه شوې.",
"wlheader-showupdated": "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
+ "wlnote": "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
"wlshowlast": "وروستي $1 ساعتونه $2 ورځې $3 ښکاره کړه",
"watchlist-options": "د کتنلړ خوښنې",
"watching": "د کتلو په حال کې...",
"duplicate-defaultsort": "'''گواښنه:'''د \"$2\" تلواليزه اوډون تڼۍ تر دې پخوا ټاکلې تلواليزه اوډون تڼۍ \"$1\" پر ځای چارنه کېږي.",
"version": "بڼه",
"version-extensions": "لگېدلي شاتاړي",
- "version-specialpages": "ځانگړي مخونه",
"version-skins": "پوښۍ",
+ "version-specialpages": "ځانگړي مخونه",
"version-other": "بل",
"version-hooks": "کونډۍ",
"version-hook-name": "کونډۍ نوم",
"sort-descending": "Ordenar por ordem descendente",
"sort-ascending": "Ordenar por ordem ascendente",
"nstab-main": "Página",
- "nstab-user": "Página d{{GENDER:{{#titleparts:{{PAGENAME}}|1|1}}|o usuário|a usuária|e usuário(a)}}",
+ "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o usuário|a usuária|e usuário(a)}}",
"nstab-media": "Página de mídia",
"nstab-special": "Página especial",
"nstab-project": "Página do projeto",
"invalidtitle-knownnamespace": "Título inválido para o espaço nominal \"$2\" e texto \"$3\"",
"invalidtitle-unknownnamespace": "Título inválido para o espaço nominal de número desconhecido ($1) e texto \"$2\"",
"exception-nologin": "Não está autenticado",
- "exception-nologin-text": "Por favor clique [[Special:Userlogin|log in]] para poder acessar esta página ou ação",
+ "exception-nologin-text": "Por favor clique $1 para poder acessar essa página ou ação.",
"exception-nologin-text-manual": "Por favor clique $1 para poder acessar essa página ou ação.",
"virus-badscanner": "Má configuração: antivírus desconhecido: ''$1''",
"virus-scanfailed": "a verificação falhou (código $1)",
"parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)",
"language-converter-depth-warning": "O limite de profundidade do conversor de línguas excedeu a ($1)",
"node-count-exceeded-category": "Páginas em que o total de nós é excedido",
- "node-count-exceeded-category-desc": "Uma categoria para páginas onde a contagem de nós é ultrapassada.",
+ "node-count-exceeded-category-desc": "A página excede a contagem de nós permitida.",
"node-count-exceeded-warning": "A página excedeu o total de nós",
"expansion-depth-exceeded-category": "Páginas em que a profundidade de expansão é excedida",
- "expansion-depth-exceeded-category-desc": "Esta é uma categoria para as páginas onde a profundidade de expansão é ultrapassada.",
+ "expansion-depth-exceeded-category-desc": "A página excede a profundidade de expansão permitida.",
"expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão",
"parser-unstrip-loop-warning": "Foi detectado um ciclo infinito unstrip",
"parser-unstrip-recursion-limit": "Limite de recursão do unstrip excedido ($1)",
"searchprofile-advanced-tooltip": "Personalizar os espaços nominais onde pesquisar",
"search-result-size": "$1 ({{PLURAL:$2|1 palavra|$2 palavras}})",
"search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 arquivo|$3 arquivos}})",
- "search-result-score": "Relevância: $1%",
"search-redirect": "(redirecionamento de $1)",
"search-section": "(seção $1)",
"search-file-match": "(coincide com o conteúdo do arquivo)",
"uploadwarning": "Aviso de envio",
"uploadwarning-text": "Modifique a descrição do arquivo abaixo e tente novamente.",
"savefile": "Salvar arquivo",
- "uploadedimage": "enviou \"[[$1]]\"",
- "overwroteimage": "enviou uma nova versão de \"[[$1]]\"",
"uploaddisabled": "Envio de arquivos desativado.",
"copyuploaddisabled": "O upload por URL encontra-se desativado.",
"uploaddisabledtext": "O envio de arquivos encontra-se desativado.",
"trackingcategories-msg": "Categoria de monitoramento",
"trackingcategories-desc": "Critérios de inclusão de categoria",
"noindex-category-desc": "A página não é indexada por robôs, porque possui a palavra mágica <code><nowiki>__NOINDEX__</nowiki></code> e está em um namespace onde a flag é permitida.",
- "post-expand-template-inclusion-category-desc": "Após expandir todos as predefinições, o tamanho da página é maior que o valor permitido na variável <code>$wgMaxArticleSize</code>, por isso algumas predefinições não foram expandidas.",
+ "post-expand-template-inclusion-category-desc": "O tamanho da página é superior a <code>$wgMaxArticleSize</code>, após a expansão de todas as predefinições, pelo que algumas predefinições não foram expandidas.",
"trackingcategories-disabled": "A categoria está desabilitada",
"mailnologin": "Nenhum endereço de envio",
"mailnologintext": "Necessita de estar [[Special:UserLogin|autenticado]] e de possuir um endereço de e-mail válido nas suas [[Special:Preferences|preferências]] para poder enviar um e-mail a outros usuários.",
"delete-edit-reasonlist": "Editar motivos de eliminação",
"delete-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nA eliminação de tais páginas foi restrita, a fim de se evitarem problemas acidentais em {{SITENAME}}.",
"delete-warning-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados de {{SITENAME}};\nprossiga com cuidado.",
+ "delete-cantedit": "Você não pode deletar essa paginá por que você não tem permissão de edita-la",
"deleting-backlinks-warning": "'''Cuidado:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páginas]] se ligam ou redirecionam para a página que você está prestes a deletar.",
"rollback": "Reverter edições",
"rollback_short": "Reverter",
"autoblockid": "Autobloqueio #$1",
"block": "Bloquear usuário",
"unblock": "Desbloquear usuário",
- "blockip": "Bloquear usuário",
+ "blockip": "Bloquear {{GENDER:$1|utilizador|utilizadora}}",
"blockip-legend": "Bloquear usuário",
"blockiptext": "Utilize o formulário abaixo para bloquear o acesso à escrita de um endereço específico de IP ou nome de usuário.\nIsto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Preencha com um motivo específico a seguir (por exemplo, citando páginas que sofreram vandalismo).",
"ipaddressorusername": "Endereço de IP ou nome de usuário:",
"Yves Marques Junqueira",
"לערי ריינהארט",
"555",
- "아라"
+ "아라",
+ "Leon saudanha",
+ "Macofe"
]
},
"tog-underline": "Sublinhar ligações:",
"tog-watchdefault": "Adicionar as páginas e ficheiros que eu editar às minhas páginas vigiadas",
"tog-watchmoves": "Adicionar as páginas e ficheiros que eu mover às minhas páginas vigiadas",
"tog-watchdeletion": "Adicionar as páginas e ficheiros que eu eliminar às minhas páginas vigiadas",
- "tog-watchrollback": "Adicionar páginas onde fiz uma reversão à minha lista de artigos vigiados",
+ "tog-watchrollback": "Adicionar páginas onde fiz uma reversão às minhas páginas vigiadas",
"tog-minordefault": "Por omissão, marcar todas as edições como menores",
"tog-previewontop": "Mostrar a antevisão antes da caixa de edição",
"tog-previewonfirst": "Mostrar a antevisão na primeira edição",
"hidetoc": "esconder",
"collapsible-collapse": "Ocultar",
"collapsible-expand": "Expandir",
+ "confirmable-confirm": "{{GENDER:$1|Tem}} a certeza?",
+ "confirmable-yes": "Sim",
+ "confirmable-no": "Não",
"thisisdeleted": "Ver ou restaurar $1?",
"viewdeleted": "Ver $1?",
"restorelink": "{{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
"sort-descending": "Ordenar por ordem descendente",
"sort-ascending": "Ordenar por ordem ascendente",
"nstab-main": "Página",
- "nstab-user": "Página d{{GENDER:{{#titleparts:{{PAGENAME}}|1|1}}|o utilizador|a utilizadora|e utilizador(a)}}",
+ "nstab-user": "Página d{{GENDER:{{BASEPAGENAME}}|o utilizador|a utilizadora|e utilizador(a)}}",
"nstab-media": "Multimédia",
"nstab-special": "Página especial",
"nstab-project": "Página de projeto",
"invalidtitle-knownnamespace": "Título inválido com o domínio \"$2\" e texto \"$3\"",
"invalidtitle-unknownnamespace": "Título inválido com número de domínio $1 desconhecido e texto \"$2\"",
"exception-nologin": "Não está autenticado",
- "exception-nologin-text": "Por favor, [[Special:Userlogin|inicie sessão]] para poder aceder a esta página ou acção.",
+ "exception-nologin-text": "Por favor, inicie sessão para poder aceder a esta página ou ação.",
"exception-nologin-text-manual": "Por favor $1, para poder aceder a esta página ou acção.",
"virus-badscanner": "Má configuração: antivírus desconhecido: ''$1''",
"virus-scanfailed": "a verificação falhou (código $1)",
"parser-template-recursion-depth-warning": "Foi excedido o limite da profundidade de recursividade nas predefinições ($1)",
"language-converter-depth-warning": "O limite de profundidade do conversor de idiomas excedeu a ($1)",
"node-count-exceeded-category": "Páginas em que o total de nós é excedido",
- "node-count-exceeded-category-desc": "Uma categoria para páginas onde a contagem dos nós foi excedida.",
+ "node-count-exceeded-category-desc": "A página excede a contagem de nós permitida.",
"node-count-exceeded-warning": "A página excedeu o total de nós",
"expansion-depth-exceeded-category": "Páginas em que a profundidade de expansão é excedida",
- "expansion-depth-exceeded-category-desc": "Uma categoria para páginas onde a profundidade de expansão foi excedida.",
+ "expansion-depth-exceeded-category-desc": "A página excede a profundidade de expansão permitida.",
"expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão",
"parser-unstrip-loop-warning": "Foi detectado um ciclo infinito unstrip",
"parser-unstrip-recursion-limit": "Limite de recursão do unstrip excedido ($1)",
"mergehistory-empty": "Não existem revisões fundíveis.",
"mergehistory-success": "Foram fundidas $3 {{PLURAL:$3|edição|edições}} de [[:$1]] em [[:$2]].",
"mergehistory-fail": "Não foi possível fundir os históricos; verifique a página e os parâmetros de tempo, por favor.",
- "mergehistory-fail-toobig": "Não é possível mesclar o histórico, já que um número de revisão(ões) acima do limite ($1 {{PLURAL:$1|revisão|revisões}}) seriam movidos.",
+ "mergehistory-fail-toobig": "Não é possível fundir o histórico, já que um número de revisão(ões) acima do limite ($1 {{PLURAL:$1|revisão|revisões}}) seriam movidos.",
"mergehistory-no-source": "A página de origem $1 não existe.",
"mergehistory-no-destination": "A página de destino $1 não existe.",
"mergehistory-invalid-source": "A página de origem precisa ser um título válido.",
"searchprofile-advanced-tooltip": "Personalizar os domínios onde pesquisar",
"search-result-size": "$1 ({{PLURAL:$2|1 palavra|$2 palavras}})",
"search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 ficheiro|$3 ficheiros}})",
- "search-result-score": "Relevancia: $1%",
"search-redirect": "(redirecionamento de $1)",
"search-section": "(seção $1)",
"search-file-match": "(coincide com o conteúdo do ficheiro)",
"preferences": "Preferências",
"mypreferences": "Preferências",
"prefs-edits": "Número de edições:",
- "prefsnologintext2": "Por favor, precisa de $1 para definir as suas preferências.",
+ "prefsnologintext2": "Por favor, inicie sessão para alterar as suas preferências.",
"prefs-skin": "Tema",
"skin-preview": "Antever tema",
"datedefault": "Sem preferência",
"uploadwarning": "Aviso de envio",
"uploadwarning-text": "Modifique a descrição do ficheiro abaixo e tente novamente, por favor.",
"savefile": "Gravar ficheiro",
- "uploadedimage": "carregou \"[[$1]]\"",
- "overwroteimage": "enviou uma nova versão de \"[[$1]]\"",
"uploaddisabled": "Carregamentos desativados",
"copyuploaddisabled": "Carregamento por URL desativado.",
"uploaddisabledtext": "O carregamento de ficheiros está desativado.",
"wantedpages-badtitle": "Título inválido no conjunto de resultados: $1",
"wantedfiles": "Ficheiros desejados",
"wantedfiletext-cat": "Os seguintes ficheiros são usados, mas não existem. Ficheiros de repositórios externos podem ser listados apesar de existirem. Tais falsos positivos aparecerão <del>riscados</del>. Adicionalmente, as páginas que incorporam ficheiros que não existem estão listadas em [[:$1]].",
+ "wantedfiletext-cat-noforeign": "Os seguintes ficheiros são usados, mas não existem. Além disso, as páginas que incorporam ficheiros que não existem são listadas em [[:$1]].",
"wantedfiletext-nocat": "Os seguintes ficheiros são usados, mas não existem. Ficheiros de repositórios externos podem ser listados apesar de existirem. Tais falsos positivos aparecerão <del>riscados</del>.",
+ "wantedfiletext-nocat-noforeign": "Os seguintes ficheiros são usados, mas não existem.",
"wantedtemplates": "Predefinições desejadas",
"mostlinked": "Páginas com mais afluentes",
"mostlinkedcategories": "Categorias com mais membros",
"trackingcategories-desc": "Critérios de inclusão",
"noindex-category-desc": "A página não é indexada por robôs porque contém a palavra mágica <code><nowiki>__NOINDEX__</nowiki></code> e está num domínio onde o estatuto é permitido.",
"index-category-desc": "A página contém a palavra mágica <code><nowiki>__INDEX__</nowiki></code> (e está num domínio em que essa marca é permitida) e, portanto, será indexada pelos robôs mesmo quando normalmente não o seria.",
- "post-expand-template-inclusion-category-desc": "A expansão de todas as predefinições faria com que o tamanho da página ultrapassasse <code>$wgMaxArticleSize</code>, pelo que algumas predefinições não foram expandidas.",
- "post-expand-template-argument-category-desc": "A expansão de um argumento de prefefinição (algo em chavetas triplas, como <code>{{{Foo}}}</code> ) torna a página maior do que <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Demasiadas funções do analisador custosas (como <code>#ifexist</code>) incluídas numa página. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Categoria adicionada se a página contém um link quebrado para um ficheiro (um link para incorporar um ficheiro que não existe).",
- "hidden-category-category-desc": "Esta é uma categoria com a marca <code><nowiki>__HIDDENCAT__</nowiki></code>, que faz com que ela não apareça na caixa de links de categoria nas páginas, por omissão.",
+ "post-expand-template-inclusion-category-desc": "O tamanho da página é superior a <code>$wgMaxArticleSize</code>, após a expansão de todas as predefinições, pelo que algumas predefinições não foram expandidas.",
+ "post-expand-template-argument-category-desc": "O tamanho da página é superior a <code>$wgMaxArticleSize</code>, após a expansão de um argumento de predefinição (algo em chavetas triplas, como <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "A página tem demasiadas funções do analisador custosas (como <code>#ifexist</code>) incluídas. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "A página contém uma ligação quebrada para um ficheiro (uma ligação para incorporar um ficheiro que não existe).",
+ "hidden-category-category-desc": "Esta é uma categoria com a marca <code><nowiki>__HIDDENCAT__</nowiki></code>, que faz com que ela não apareça na caixa de ligações de categoria nas páginas, por omissão.",
"trackingcategories-nodesc": "Nenhuma descrição disponível.",
"trackingcategories-disabled": "A categoria está desactivada.",
"mailnologin": "Não existe endereço de envio",
"mywatchlist": "Páginas vigiadas",
"watchlistfor2": "Para $1 $2",
"nowatchlist": "A sua lista de páginas vigiadas está vazia.",
- "watchlistanontext": "Precisa de $1 para ver ou editar a sua lista de páginas vigiadas, por favor.",
+ "watchlistanontext": "Por favor, inicie sessão para ver ou editar itens da sua lista de páginas vigiadas.",
"watchnologin": "Não está autenticado(a)",
"addwatch": "Adicionar às páginas vigiadas",
"addedwatchtext": "A página \"[[:$1]]\" foi adicionada à sua [[Special:Watchlist|lista de páginas vigiadas]].\nModificações futuras desta página e da respetiva página de discussão serão listadas lá.",
"unwatchthispage": "Parar de vigiar esta página",
"notanarticle": "Não é uma página de conteúdo",
"notvisiblerev": "Edição eliminada",
- "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} em sua lista de páginas vigiadas, excluindo-se as páginas de discussão.",
+ "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas, excluindo-se as páginas de discussão.",
"wlheader-enotif": "A notificação por correio eletrónico está ativa.",
"wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''.",
"wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas <strong>$1</strong> alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} até $3, $4.",
"delete-edit-reasonlist": "Editar motivos de eliminação",
"delete-toobig": "Esta página tem um histórico longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nA eliminação de páginas como esta foi restringida na {{SITENAME}}, para evitar problemas acidentais.",
"delete-warning-toobig": "Esta página tem um histórico de edições longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados da {{SITENAME}};\nprossiga com precaução.",
+ "delete-cantedit": "Não é possível eliminar esta página porque não possui os privilégios necessários para a editar.",
"deleting-backlinks-warning": "'''Aviso:''' Existem [[Special:WhatLinksHere/{{FULLPAGENAME}}|páginas]] que contêm ligações para a página que está prestes a eliminar ou que a transcluem.",
"rollback": "Reverter edições",
"rollback_short": "Reverter",
"sp-contributions-newonly": "Mostrar só edições que são criações de páginas",
"sp-contributions-submit": "Pesquisar",
"whatlinkshere": "Páginas afluentes",
- "whatlinkshere-title": "Páginas que têm ligações para \"$1\"",
+ "whatlinkshere-title": "Páginas com ligações para \"$1\"",
"whatlinkshere-page": "Página:",
"linkshere": "As seguintes páginas têm ligação a '''[[:$1]]''':",
"nolinkshere": "Não existem afluentes para '''[[:$1]]''' com as condições especificadas.",
"autoblockid": "Bloqueio automático nº$1",
"block": "Bloquear utilizador",
"unblock": "Desbloquear utilizador",
- "blockip": "Bloquear utilizador",
+ "blockip": "Bloquear {{GENDER:$1|utilizador|utilizadora}}",
"blockip-legend": "Bloquear utilizador",
"blockiptext": "Utilize o formulário abaixo para bloquear o acesso de escrita a um endereço IP específico ou a um nome de utilizador.\nIsto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Indique a seguir um motivo de bloqueio específico (por exemplo, indicando as páginas que foram alvo de vandalismo).",
"ipaddressorusername": "Endereço de IP ou utilizador(a):",
"ipb-unblock-addr": "Desbloquear $1",
"ipb-unblock": "Desbloquear um utilizador ou endereço IP",
"ipb-blocklist": "Ver bloqueios em vigência",
- "ipb-blocklist-contribs": "Contribuições de $1",
+ "ipb-blocklist-contribs": "Contribuições de {{GENDER:$1|$1}}",
"unblockip": "Desbloquear utilizador",
"unblockiptext": "Utilize o formulário abaixo para restaurar o acesso de escrita de um endereço IP ou utilizador previamente bloqueado.",
"ipusubmit": "Remover este bloqueio",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
"unknown_extension_tag": "\"$1\" é uma marca de extensão desconhecida",
"duplicate-defaultsort": "<strong>Aviso:</strong> A chave de ordenação padrão \"$2\" sobrepõe-se à anterior \"$1\".",
+ "duplicate-displaytitle": "<strong>Aviso:</strong> Exibir título \"$2\" substituindo o título anteriormente em exibição \"$1\".",
"version": "Versão",
"version-extensions": "Extensões instaladas",
"version-skins": "Temas instalados",
"logentry-rights-rights": "$1 modificou os privilégios do utilizador $3 de $4 para $5",
"logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
"logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|carregou}} uma nova versão de $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|carregou}} $3",
"rightsnone": "(nenhum)",
"feedback-bugornote": "Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].\nCaso contrário, pode facilmente usar o formulário abaixo. O seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de utilizador e o navegador que está a usar.",
"feedback-subject": "Assunto:",
"action-pagelang": "alterar o idioma da página",
"log-name-pagelang": "Alterar registo de idioma",
"log-description-pagelang": "Este é um registo de alterações aos idiomas das páginas.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ativado)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desativado''')"
}
"hidetoc": "This is the link used to hide the table of contents\n\n{{Identical|Hide}}",
"collapsible-collapse": "{{Doc-actionlink}}\nThis is the link used to collapse a collapsible element. (used as plaintext. No wikitext or html is parsed.)\n\nSee also:\n* {{msg-mw|Collapsible-expand}}\n{{Identical|Collapse}}",
"collapsible-expand": "{{Doc-actionlink}}\nThis is the link used to expand a collapsible element (used as plaintext. No wikitext or html is parsed.)\n\nSee also:\n* {{msg-mw|Collapsible-collapse}}\n\nSee the following example:\n{{Identical|Expand}}",
+ "confirmable-confirm": "Question asking the user to confirm a potentially uncancellable action.\n\"Yes\" and \"No\" buttons are displayed beside it.\n\nSee also:\n* {{msg-mw|confirmable-yes}}\n* {{msg-mw|confirmable-no}}",
+ "confirmable-yes": "{{Doc-actionlink}}\nText of a button that will confirm triggering of a potentially uncancellable action.\n\nSee also:\n* {{msg-mw|confirmable-confirm}}\n* {{msg-mw|confirmable-no}}\n{{Identical|Yes}}",
+ "confirmable-no": "{{Doc-actionlink}}\nText of a button that will cancel triggering of a potentially uncancellable action.\n\nSee also:\n* {{msg-mw|confirmable-confirm}}\n* {{msg-mw|confirmable-yes}}\n{{Identical|No}}",
"thisisdeleted": "Message shown on a deleted page when the user has the undelete right. Parameters:\n* $1 - a link to [[Special:Undelete]], with {{msg-mw|restorelink}} as the text\nSee also:\n* {{msg-mw|viewdeleted}}",
"viewdeleted": "Message shown on a deleted page when the user does not have the undelete right (but has the deletedhistory right).\n\nParameters:\n* $1 - a link to [[Special:Undelete]], with {{msg-mw|restorelink}} as the text\nSee also:\n* {{msg-mw|thisisdeleted}}",
"restorelink": "This text is always displayed in conjunction with the {{msg-mw|thisisdeleted}} message (View or restore $1?). The user will see\nView or restore <nowiki>{{PLURAL:$1|one deleted edit|$1 deleted edits}}</nowiki>? i.e ''View or restore one deleted edit?'' or\n''View or restore n deleted edits?''",
"viewsource-title": "Page title shown when trying to edit a protected page. Parameters:\n* $1 - the name of the page",
"actionthrottled": "This is the title of an error page. Read it in combination with {{msg-mw|actionthrottledtext}}.",
"actionthrottledtext": "Used as error message. Read it in combination with {{msg-mw|actionthrottled}}.",
- "protectedpagetext": "This message is displayed when trying to edit a page you can't edit because it has been protected.\n\nThe title for this message is {{msg-mw|Protectedpage}}.\n\nParameters:\n* $1 - (Unused) the raw name of the right which is needed to edit the page",
+ "protectedpagetext": "This message is displayed when trying to edit a page you can't edit because it has been protected.\n\nThe title for this message is {{msg-mw|Protectedpage}}.\n\nParameters:\n* $1 - (Unused) the raw name of the right which is needed to edit the page\n* $2 - (Unused) the action the user attempted to perform",
"viewsourcetext": "The text shown when displaying the source of a page that the user has no permission to edit",
"viewyourtext": "Same as {{msg-mw|viewsourcetext}} but when showing the text submitted by the user, this happens e.g. when the user was blocked while he is editing the page",
- "protectedinterface": "Message shown if a user without the \"editinterface\" right tries to edit a page in the MediaWiki namespace.\n\nSee also {{msg-mw|editinginterface}}.",
+ "protectedinterface": "Message shown if a user without the \"editinterface\" right tries to edit a page in the MediaWiki namespace.\n\nSee also {{msg-mw|editinginterface}}. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
"editinginterface": "A message shown when editing pages in the namespace MediaWiki:.\n\nSee also {{msg-mw|protectedinterface}}.",
- "cascadeprotected": "Parameters:\n* $1 - number of cascade-protected pages, used for PLURAL\n* $2 - list of cascade-protected pages",
- "namespaceprotected": "Parameters:\n* $1 - namespace name",
- "customcssprotected": "Used as error message.",
- "customjsprotected": "Used as error message.",
- "mycustomcssprotected": "Used as error message.",
- "mycustomjsprotected": "Used as error message.",
+ "cascadeprotected": "Parameters:\n* $1 - number of cascade-protected pages, used for PLURAL\n* $2 - list of cascade-protected pages\n* $3 - (Unused) the action the user attempted to perform",
+ "namespaceprotected": "Parameters:\n* $1 - namespace name\n* $2 - (Unused) the action the user attempted to perform",
+ "customcssprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+ "customjsprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+ "mycustomcssprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
+ "mycustomjsprotected": "Used as error message. Parameters:\n* $1 - (Unused) the action the user attempted to perform",
"myprivateinfoprotected": "Used as error message.",
"mypreferencesprotected": "Used as error message.",
"ns-specialprotected": "Error message displayed when trying to edit a page in the Special namespace",
"searchprofile-advanced-tooltip": "Used as tooltip for the option {{msg-mw|Searchprofile-advanced}} in [[Special:Search]].\n\nSee also:\n* {{msg-mw|Searchprofile-advanced|message}}\n* {{msg-mw|Searchprofile-advanced-tooltip|tooltip}}",
"search-result-size": "Shown per line of a [[Special:Search|search result]]\n* $1 - the size of the page in bytes, but no need to add \"byte\" or similar as the unit is added by special function\n* $2 - the sum of all words in this page",
"search-result-category-size": "Parameters:\n* $1 - number of members in this category. $1 is equal to $2+$3.\n* $2 - number of subcategories\n* $3 - number of files",
- "search-result-score": "Shown per line of a [[Special:Search|search result]]. Parameters:\n* $1 - the relevance of this result in percent\n{{Identical|Relevance: $1%}}",
"search-redirect": "\"Redirect\" is a noun here, not a verb.\n\nParameters:\n* $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.\n{{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.",
"preferences-summary": "{{doc-specialpagesummary|preferences}}",
"mypreferences": "Action link label that leads to [[Special:Preferences]]; appears in the top menu (e.g. \"Username Talk Preferences Watchlist Contributions Log out\").\n\nSee also:\n* {{msg-mw|Mypreferences}}\n* {{msg-mw|Accesskey-pt-preferences}}\n* {{msg-mw|Tooltip-pt-preferences}}\n{{Identical|Preferences}}",
"prefs-edits": "In user preferences.",
- "prefsnologintext2": "Parameters:\n* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description",
+ "prefsnologintext2": "Showed on Special:Userlogin when user tries to access their preferences before logging in",
"prefs-skin": "Used in user preferences.\n{{Identical|Skin}}",
"skin-preview": "{{doc-actionlink}}\nThe link beside each skin name in [[Special:Preferences|your user preferences]], tab \"skin\".\n{{Identical|Preview}}",
"datedefault": "Used as checkbox label in [[Special:Preferences#mw-prefsection-datetime|user preferences]], {{msg-mw|prefs-datetime}} tab.\n\nThis message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).",
"prefs-labs": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are experimental",
- "prefs-user-pages": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-misc}}'', listing features that are related to user pages",
+ "prefs-user-pages": "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-misc}}'', listing features that are related to user pages\n{{Identical|User page}}",
"prefs-personal": "Title of a tab in [[Special:Preferences]].\n{{Identical|User profile}}",
"prefs-rc": "Used in user preferences.\n\n{{Identical|Recent changes}}",
"prefs-watchlist": "Used in user preferences.\n{{Identical|Watchlist}}",
"uploadwarning": "Used as section header in [[Special:Upload]].",
"uploadwarning-text": "Used in [[Special:Upload]].",
"savefile": "When uploading a file",
- "uploadedimage": "This is the text of an entry in the [[Special:Log|upload log]] (and Recent Changes), after hour (and date, only in the Upload log) and user name. $1 is the name of the file uploaded.",
- "overwroteimage": "This is the text of an entry in the [[Special:Log|upload log]] (and Recent Changes), after hour (and date, only in the Upload log) and user name. $1 is the name of the file uploaded.",
+ "uploadedimage": "{{ignored}}This is ''logentry'' message only used on IRC. $1 is the name of the file uploaded.",
+ "overwroteimage": "{{ignored}}This is ''logentry'' message only used on IRC. $1 is the name of the file uploaded.",
"uploaddisabled": "Title of the [[Special:Upload]] page when upload is disabled.\n\nSee also:\n* {{msg-mw|Copyuploaddisabled}}",
"copyuploaddisabled": "See also:\n* {{msg-mw|Uploaddisabled}}",
"uploaddisabledtext": "Parameters:\n* $1 - (Optional) the name of the target file. See r22243 and [[bugzilla:8818|bug 8818]].",
"mywatchlist": "Link at the upper right corner of the screen.\n\nSee also:\n* {{msg-mw|Mywatchlist}}\n* {{msg-mw|Accesskey-pt-watchlist}}\n* {{msg-mw|Tooltip-pt-watchlist}}\n{{Identical|Watchlist}}",
"watchlistfor2": "Subtitle on [[Special:Watchlist]].\nParameters:\n* $1 - Username of current user\n* $2 - Tool links (View relevant changes | View and edit watchlist | Edit raw watchlist)\n{{Identical|For $1}}",
"nowatchlist": "Displayed when there is no pages in the watchlist.",
- "watchlistanontext": "Parameters:\n* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description",
+ "watchlistanontext": "Shown on Special:Userlogin when user tries to access their watchlist before logging in",
"watchnologin": "Used as error page title.\n\nThe error message for this title is:\n* {{msg-mw|Watchnologintext}}\n{{Identical|Not logged in}}",
"addwatch": "Link to a dialog box, displayed at the end of the list of categories at the foot of each page.\n\nSee also:\n* {{msg-mw|Removewatch}}",
"addedwatchtext": "Explanation shown when clicking on the {{msg-mw|Watch}} tab. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatch}}",
"excontent": "Automated deletion reason when deleting a page for admins. Parameters:\n* $1 - content before deletion",
"excontentauthor": "Automated deletion reason when deleting a page for admins providing that the page has one author only.\n\nParameters:\n* $1 - content before deletion\n* $2 - username",
"exbeforeblank": "Automated deletion reason when deleting a page for admins providing that the page was blanked before deletion.\n\nParameters:\n* $1 - content before blanking",
- "delete-confirm": "Used as page title. Parameters:\n* $1 - the page title",
+ "delete-confirm": "Used as page title. Parameters:\n* $1 - the page title\n{{Identical|Delete}}",
"delete-legend": "{{Identical|Delete}}",
"historywarning": "Warning when about to delete a page that has history.\n\nFollowed by a link which points to the history page.\n\nParameters:\n* $1 - the <b>approximate</b> number of revisions that the page has, the message should not claim to give an exact count",
"confirmdeletetext": "Introduction shown when deleting a page.\n\nRefers to {{msg-mw|Policy-url}}.",
"delete-edit-reasonlist": "Shown beneath the page deletion form on the right side. It is a link to {{msg-mw|Deletereason-dropdown|notext=1}}.\n\nSee also:\n* {{msg-mw|Ipb-edit-dropdown}}\n* {{msg-mw|Protect-edit-reasonlist}}.\n{{Identical|Edit delete reasons}}",
"delete-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-warning-toobig}}",
"delete-warning-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-toobig}}",
+ "delete-cantedit": "Used as error message when deleting the page.",
"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": "{{Identical|Rollback}}",
"rollback_short": "{{Identical|Rollback}}",
"protect-summary-cascade": "Used in edit summary when cascade protecting a page. Appears in protection log. See [[Special:Log]] and [[m:Special:Log]].\n\nAlso used in [[Special:ProtectedPages]] when a page is cascade protected. See example: [[m:Special:ProtectedPages]].<br />\nSee also:\n*{{msg-mw|Restriction-level-sysop}}\n*{{msg-mw|Restriction-level-autoconfirmed}}",
"protect-expiring": "Used as expiry text in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.\n* $1 - a date and time\n* $2 - a date (optional)\n* $3 - a time (optional)\nIf the expiry is indefinite, {{msg-mw|protect-expiry-indefinite}} is used.\n{{Identical|Expires $1 (UTC)}}",
"protect-expiring-local": "Parameter:\n* $1 - a timestamp like \"22:51, 23 July 2011 (UTC)\" depending on the wiki content language.\n{{Identical|Expire}}",
- "protect-expiry-indefinite": "Used as expiry text in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.\n\nIf the expiry is definite, {{msg-mw|protect-expiring}} is used.",
+ "protect-expiry-indefinite": "Used as expiry text in page history, and in [[Special:Protectedtitles]], [[Special:Protectedpages]], and extension FlaggedRevs.\n\nIf the expiry is definite, {{msg-mw|protect-expiring}} is used.\n{{Identical|Indefinite}}",
"protect-cascade": "See [[meta:Protect]] for more information.",
"protect-cantedit": "Used as error message when changing the protection levels of the page.",
"protect-othertime": "Used on the page protection form as label for the following input field (text)\n{{Identical|Other time}}",
"block": "{{doc-special|Block}}\n{{Identical|Block user}}",
"unblock": "{{doc-special|Unblock}}",
"unblock-summary": "{{doc-specialpagesummary|unblock}}",
- "blockip": "Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. \"Username\" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.\n\n{{Identical|Block user}}",
+ "blockip": "Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. \"Username\" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.\n\nParameters:\n* $1 - username, for GENDER support\n{{Identical|Block user}}",
"blockip-legend": "Legend/Header for the fieldset around the input form of [[Special:Block]].\n\n{{Identical|Block user}}",
"blockiptext": "Used in the {{msg-mw|Blockip}} form in [[Special:Block]].\n\nRefers to {{msg-mw|Policy-url}}.\n\nThis message may follow the message {{msg-mw|Ipb-otherblocks-header}} and other block messages.\n\nSee also:\n* {{msg-mw|Unblockiptext}}",
"ipaddressorusername": "{{Identical|IP address or username}}",
"logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
"logentry-rights-rights-legacy": "* $1 - username\n* $2 - (see below)\n* $3 - username\n----\n{{Logentry|[[Special:Log/rights]]}}",
"logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below)\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n----\n{{Logentry|[[Special:Log/rights]]}}",
+ "logentry-upload-upload": "{{Logentry|[[Special:Log/upload]]}}",
+ "logentry-upload-overwrite": "{{Logentry|[[Special:Log/upload]]}}",
+ "logentry-upload-revert": "{{Logentry|[[Special:Log/upload]]}}",
"rightsnone": "Default rights for registered users.\n\n{{Identical|None}}",
"revdelete-logentry": "{{RevisionDelete}}\nThis is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for page revisions.\n\nFollowed by the message {{msg-mw|revdelete-log-message}} in brackets.\n\nPreceded by the name of the user doing this task.\n\nParameters:\n* $1 - the page name\nSee also:\n* {{msg-mw|Logdelete-logentry}}",
"logdelete-logentry": "{{RevisionDelete}}\nThis is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for log events.\n\nFollowed by the message {{msg-mw|logdelete-log-message}} in brackets.\n\nPreceded by the name of the user who did this task.\n\nParameters:\n* $1 - the log name in brackets\nSee also:\n* {{msg-mw|Revdelete-logentry}}",
"action-pagelang": "{{Doc-action|pagelang}}",
"log-name-pagelang": "Display entry for log name for changes in page language in Special:Log.",
"log-description-pagelang": "Display description for log name for changes in page language in Special:Log.",
- "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)"
+ "logentry-pagelang-pagelang": "{{Logentry}}\nAdditional parameters:\n* $4 - old language code, or \"[def]\" (hard-coded)\n* $5 - new language code, or \"[def]\" (hard-coded)",
+ "default-skin-not-found": "Message shown when the default skin for this MediaWiki installation can not be found.\n\nParameters:\n* $1: skin identifier for the default skin\n* $2: list of installed skins, composed using {{msg-mw|default-skin-not-found-row-enabled}} and {{msg-mw|default-skin-not-found-row-disabled}}\n* $3: code snippet to use to enable installed skins",
+ "default-skin-not-found-no-skins": "Message shown when the default skin for this MediaWiki installation can not be found and the installation has no skins at all.\n\nParameters:\n* $1: name of the default skin",
+ "default-skin-not-found-row-enabled": "One row of the list of installed skins shown as a part of {{msg-mw|default-skin-not-found}}, for an enabled skin.\n\nParameters:\n* $1: skin identifier\n* $2: human-readable skin name",
+ "default-skin-not-found-row-disabled": "One row of the list of installed skins shown as a part of {{msg-mw|default-skin-not-found}}, for a disabled skin.\n\nParameters:\n* $1: skin identifier\n$2: human-readable skin name"
}
"searchprofile-advanced-tooltip": "Akllasqa suti k'itikunapi maskay",
"search-result-size": "$1 ({{PLURAL:$2|1 rima|$2 rimakuna}})",
"search-result-category-size": "{{PLURAL:$1|1 wankurisqa|$1 wankurisqa}} ({{PLURAL:$2|1 urin katiguriya|$2 urin katiguriya}}, {{PLURAL:$3|1 willañiqi|$3 willañiqi}})",
- "search-result-score": "Chaniyuq kaynin: $1%",
"search-redirect": "(pusapuna $1)",
"search-section": "(raki $1)",
"search-file-match": "(willañiqip samiqninta taripan)",
"uploadwarning": "Willañiqi churkuymanta paqtataq niy",
"uploadwarning-text": "Ama hina kaspa, kay qatiqpi kaq willañiqimanta willaykunata hukchaspa musuqmanta ruraykachay.",
"savefile": "Willañiqita waqaychay",
- "uploadedimage": "«[[$1]]» churkusqa.",
- "overwroteimage": "\"[[$1]]\" musuqmanta churkusqa",
"uploaddisabled": "Willañiqi churkuyman ama nisqa",
"copyuploaddisabled": "URL-pa churkunanqa manam atinchu.",
"uploaddisabledtext": "Willañiqi churkuyqa manam saqillasqachu.",
"watchlist-details": "Watiqana sutisuyuykipiqa {{PLURAL:$1|$1 p'anqam|$1 p'anqakunam}}, rimanakuna p'anqakunata mana yupaspa.",
"wlheader-enotif": "E-chaskimanta musyachinaman arí nisqañam.",
"wlheader-showupdated": "Qayna watukamusqaykimantapacha hukchasqa p'anqakunataqa '''yanasapa''' nisqapim rikunki.",
+ "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",
"watching": "Watiqasqakunaman yapaspa...",
"talkpagelinktext": "Rimanakuy",
"specialpage": "Mana shukkunashina panka",
"personaltools": "Kikinpak llankanaman yanapanakuna",
- "postcomment": "Mushuk raki",
"articlepage": "Pankata rikuna",
"talk": "Rimanakuna",
"views": "Rikunakuna",
"remembermypassword": "Kay Internet-wampunapi {{PLURAL:$1|shuk punchata|$1 punchakunata}} ñuka rurak shutiwan yaykushkami katichiwapay.",
"login": "Yaykuna",
"nav-login-createaccount": "Yaykuna",
- "loginprompt": "{{SITENAME}}man yaykunkapak <i>cookies</i>-man ari ninami kapanki.",
"userlogin": "Yaykuna",
"logout": "Llukshina",
"userlogout": "Llukshina",
"upload": "Archivuta apamuna",
"uploadlogpage": "Apamushka archiwukunapa kamu",
"filedesc": "Uchilla rimay",
- "uploadedimage": "«[[$1]]» apakushka.",
"license": "Licencia:",
"license-header": "Licencia",
"file-anchor-link": "Archiwu",
"@metadata": {
"authors": [
"Reedy",
- "Sentruper"
+ "Sentruper",
+ "아라"
]
},
"tog-underline": "Link cun la sotliniadura",
"tog-showtoolbar": "Fam avdé la bara d'j strumént (u j vó JavaScript)",
"tog-editondblclick": "Mudèfiga al pàgin scjazènd do volt (u j vò JavaScript)",
"tog-editsectiononrightclick": "S't'vù l'abilitaziòn ad cambié al seziòn <br />scjazénd e tast a dèstra sora e titul (u j vò JavaScript)",
- "tog-rememberpassword": "Arcurdam la parola d'ordin, par piasé (fèn a un masum $1 {{PLURAL:$1|dè|dè}})",
"tog-watchcreations": "Mett insèn al pàgin ch't'e' fat adès, intla lèsta da tní sot'occ",
"tog-watchdefault": "Mett insèn al pàgin ch'a j ò lavurè sora int la lèsta dal pàgin da tnì sot'òcc",
"tog-watchmoves": "Mett insèn al pàgin ch'a j ò spustè int la lèsta dal pàgin da tnì sot'òcc",
"qbmyoptions": "Al mi pàgin",
"faq": "Question frequenti",
"faqpage": "Prugèt:Question frequenti",
- "vector-action-addsection": "Zonta una cjacarèda",
- "vector-action-delete": "Scanzèla",
- "vector-action-move": "Chèmbia nòm",
- "vector-action-protect": "Metti-j una pruteziò",
- "vector-action-undelete": "Armett a post",
- "vector-action-unprotect": "Sbloca",
"errorpagetitle": "Oci! T'ê fat una capèla",
"returnto": "Torna indrì a $1.",
"tagline": "Da {{SITENAME}}",
"search-interwiki-more": "(ad piò)",
"powersearch-legend": "Scandaja a fònd",
"powersearch-ns": "Zerca int'j spàzi d'nom:",
- "powersearch-redir": "Fà una lèsta d'al ri-direziòn",
"preferences": "I mì gost",
"mypreferences": "I mi gòst",
"group-sysop": "Aministradór",
"recentchanges": "I ultum cambiamént",
"recentchanges-legend": "Upziòn d'j ultum cambiamént",
"recentchanges-feed-description": "Ste canël e' fa avdè i cambiamént piò rezent aj artècul d'sta wiki.",
- "rclistfrom": "Fam avdè i cambiamént növ a cminzipiè da $1",
+ "rclistfrom": "Fam avdè i cambiamént növ a cminzipiè da $3 $2",
"rcshowhideminor": "$1 al mudèfghi znini",
"rcshowhidebots": "$1 i bot",
"rcshowhideliu": "$1 i patàca registrè",
"recentchangeslinked-to": "Fam avdé sol i cambiamént al pàgin ch'j va impèt a quèla ch'la m'interèsa a me.",
"upload": "Carga so un file",
"uploadlogpage": "Regèstar d'j file carghé",
- "uploadedimage": "l'à carghé \"[[$1]]\"",
"filehist": "Stória d'e' file",
"filehist-help": "Fà clic sora un gròp dèda/ora par avdé cun cl'éra e' file in ch'ë mumént.",
"filehist-current": "d'adès",
"booksources-go": "Và pu",
"log": "Regèstar",
"allpages": "Tot al pàgin",
- "alphaindexline": "Da $1 a $2",
"prevpage": "Pàgina prèma d'questa ($1)",
"allpagesfrom": "Fam avdè al pàgin cminzipiènd da:",
"allpagesto": "Fam avdé al pàgin infèn a:",
"Jose77",
"Mmistmurt",
"MoubarikBelkasim",
- "Urhixidur"
+ "Urhixidur",
+ "아라"
]
},
"sunday": "Asamas (Eřḥedd)",
"navigation": "Tagriwa",
"qbfind": "Af",
"qbedit": "Ẓṛeg",
- "vector-action-move": "Smuṭṭi",
- "vector-view-create": "Seɣnu",
- "vector-view-edit": "Ẓṛeg",
- "vector-view-history": "Ẓeṛ amezruy",
- "vector-view-view": "Ɣeṛ",
"actions": "Timegga",
"errorpagetitle": "Anezri",
"returnto": "Dwl ghar $1.",
"remembermypassword": "ejj (login) inu deg uselkim a (for a maximum of $1 {{PLURAL:$1|day|days}})",
"login": "Adf",
"nav-login-createaccount": "Adef / egg amiḍan",
- "loginprompt": "itxessa ad-teṭfed (''cookies'') bac ad tadfed ɣar {{SITENAME}}.",
"userlogin": "Adf / egg amiḍan",
"logout": "Ufugh",
"userlogout": "Ufugh",
"viewprevnext": "Ẓeṛ ($1 {{int:pipe-separator}} $2) ($3)",
"searchprofile-everything": "Marra",
"searchprofile-articles-tooltip": "Rzu di $1",
- "searchprofile-project-tooltip": "Rzu di $1",
"search-result-size": "$1 ({{PLURAL:$2|1 tawalt|$2 tiwalin}})",
"search-redirect": "(awi $1)",
"search-suggest": "Ttugha txsd a tinid: $1",
"recentchanges": "Tiẓṛigin tineggura",
"recentchanges-feed-description": "Bbar tiẓṛigin timayutin n wiki deg usudem(feed) a .",
"rcnotefrom": "ɣar wadday d tiẓṛigin zi '''$2''' (ar '''$1''' ).",
- "rclistfrom": "Ẓar tiẓṛigin timaynutin ig ibeddan zi $1",
+ "rclistfrom": "Ẓar tiẓṛigin timaynutin ig ibeddan zi $3 $2",
"rcshowhideminor": "$1 tiẓṛigin d-timeẓyanin",
"rcshowhidebots": "$1 iroboten(robots)",
"rcshowhideliu": "$1 users ig yudeffen",
"uploadlogpage": "Zdem-d aɣmis",
"filedesc": "Asgbr",
"fileuploadsummary": "Asgbr:",
- "uploadedimage": "itwazdem-d \"[[$1]]\"",
"watchthisupload": "Xm tasbtirt a",
"listfiles": "Tabdart n ifayluten",
"file-anchor-link": "Afaylu",
"log": "Aɣmis",
"all-logs-page": "Maṛṛa iɣmisen",
"allpages": "Marra tasniwin",
- "alphaindexline": "$1 ɣa $2",
"nextpage": "Tasna zzat ($1)",
"prevpage": "Tasna zzat ($1)",
"allpagesfrom": "Scan-d Tasniwin beddant zi:",
"talkpagelinktext": "Discussiun",
"specialpage": "Pagina speziala",
"personaltools": "Utensils persunals",
- "postcomment": "Nova secziun",
"articlepage": "Mussar la pagina da cuntegn",
"talk": "Discussiun",
"views": "Questa pagina",
"externaldberror": "U ch'i è capità ina errur cun l'autentificaziun externa u che ti na dastgas betg actualisar tes conto extern.",
"login": "T'annunziar",
"nav-login-createaccount": "T'annunziar / crear in conto",
- "loginprompt": "Ti stos avair '''activà ils cookies''' per pudair t'annunziar tar {{SITENAME}}.",
"userlogin": "T'annunziar / crear in conto",
"userloginnocreate": "T'annunziar",
"logout": "Sortir",
"searchprofile-advanced-tooltip": "Tschertgar en ulteriurs tips da pagina",
"search-result-size": "$1 ({{PLURAL:$2|in pled|$2 pleds}})",
"search-result-category-size": "{{PLURAL:$1|1 commember|$1 commembers}} ({{PLURAL:$2|1 sutcategoria|$2 sutcategorias}}, {{PLURAL:$3|1 datoteca|$3 datotecas}})",
- "search-result-score": "Relevanza: $1 %",
"search-redirect": "(renvià da $1)",
"search-section": "(chapitel $1)",
"search-suggest": "Has ti manegià: $1",
"uploadwarning": "Attenziun",
"uploadwarning-text": "Mida per plaschair la descripziun da la datoteca sutvart ed emprova danovamain.",
"savefile": "Memorisar la datoteca",
- "uploadedimage": "\"[[$1]]\" è vengì chargià si",
- "overwroteimage": "ha chargià si ina nova versiun da \"[[$1]]\"",
"uploaddisabled": "Chargiar si è deactivà.",
"copyuploaddisabled": "Il transferir per URL è deactivà.",
"uploaddisabledtext": "La funcziun da chargiar si datotecas è deactivada.",
"watchlist-details": "Ti has {{PLURAL:$1|$1 pagina|$1 paginas}} sin tia glista d'observaziun, paginas da discussiun exclusas.",
"wlheader-enotif": "Il servetsch d'infurmaziun per e-mail è activà.",
"wlheader-showupdated": "Paginas ch'èn vegnidas modifitgadas suenter che ti has vis els la davosa giada èn mussads '''grass'''",
+ "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",
"watching": "observ...",
"duplicate-defaultsort": "'''Attenziun:''' La clav da zavrar da standard \"$2\" remplazza la clav da zavrar da standard veglia \"$1\".",
"version": "Versiun",
"version-extensions": "Extensiuns installadas",
+ "version-skins": "Skins",
"version-specialpages": "Paginas spezialas",
"version-parserhooks": "Hooks dal parser",
"version-variables": "Variablas",
"version-antispam": "Prevenziun da spam",
- "version-skins": "Skins",
"version-other": "Auter",
"version-mediahandlers": "Manipulaturs da meds",
"version-hooks": "Hooks",
"hidetoc": "ascunde",
"collapsible-collapse": "Restrânge",
"collapsible-expand": "Extinde",
+ "confirmable-confirm": "Sunteți sigur{{GENDER:$1||ă}}?",
+ "confirmable-yes": "Da",
+ "confirmable-no": "Nu",
"thisisdeleted": "Vizualizare sau recuperare $1?",
"viewdeleted": "Vizualizați $1?",
"restorelink": "{{PLURAL:$1|o modificare ștearsă|$1 modificări șterse|$1 de modificări șterse}}",
"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-text": "Vă rugăm să vă [[Special:Userlogin|autentificați]] pentru a accesa această pagină sau acțiune.",
+ "exception-nologin-text": "Vă rugăm să vă 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.",
"virus-badscanner": "Configurație greșită: scaner de virus necunoscut: ''$1''",
"virus-scanfailed": "scanare eșuată (cod $1)",
"parser-template-recursion-depth-warning": "Limită de adâncime a recursiei depășită ($1)",
"language-converter-depth-warning": "Limita adâncimii convertorului de limbă a fost depășită ($1)",
"node-count-exceeded-category": "Pagini unde numărul de noduri este depășit",
- "node-count-exceeded-category-desc": "O categorie pentru paginile în care numărul de noduri este depășit.",
+ "node-count-exceeded-category-desc": "Pagina depășește numărul maxim de noduri.",
"node-count-exceeded-warning": "Pagina a depășit numărul de noduri",
"expansion-depth-exceeded-category": "Pagini unde profunzimea de expansiune este depășită",
- "expansion-depth-exceeded-category-desc": "Aceasta este o categorie pentru paginile în care a fost depășită profunzimea de expansiune.",
+ "expansion-depth-exceeded-category-desc": "Pagina depășește profunzimea maximă de expansiune.",
"expansion-depth-exceeded-warning": "Pagina depășește profunzimea de expansiune",
"parser-unstrip-loop-warning": "Buclă nedetașabilă detectată",
"parser-unstrip-recursion-limit": "Limita de recursivitate nedetașabilă depășită ($1)",
"searchprofile-advanced-tooltip": "Caută în spații de nume personalizate",
"search-result-size": "$1 ({{PLURAL:$2|1 cuvânt|$2 cuvinte}})",
"search-result-category-size": "$1 {{PLURAL:$1|element|elemente}} ($2 {{PLURAL:$2|categorie|categorii}}, $3 {{PLURAL:$3|fișier|fișiere}})",
- "search-result-score": "Relevanță: $1%",
"search-redirect": "(redirecționare de la $1)",
"search-section": "(secțiunea $1)",
"search-file-match": "(se regăsește în conținutul fișierului)",
"preferences": "Preferințe",
"mypreferences": "Preferințe",
"prefs-edits": "Număr de modificări:",
- "prefsnologintext2": "Vă rugăm să vă $1 pentru a vă seta preferințele de utilizator.",
+ "prefsnologintext2": "Vă rugăm să vă autentificați pentru a vă modifica preferințele de utilizator.",
"prefs-skin": "Aspect",
"skin-preview": "Previzualizare",
"datedefault": "Nici o preferință",
"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",
- "uploadedimage": "a trimis [[$1]]",
- "overwroteimage": "încărcat o versiune nouă a fișierului \"[[$1]]\"",
"uploaddisabled": "Ne pare rău, trimiterea de imagini este dezactivată.",
"copyuploaddisabled": "Trimiterea prin URL este dezactivată.",
"uploaddisabledtext": "Încărcările de fișiere sunt dezactivate.",
"trackingcategories-desc": "Criteriile de includere în categorie",
"noindex-category-desc": "Pagina conține cuvântul magic <code><nowiki>__NOINDEX__</nowiki></code> (aflându-se într-un spațiu de nume care permite acest marcaj) și, drept urmare, nu este indexată de roboți.",
"index-category-desc": "Pagina conține cuvântul magic <code><nowiki>__INDEX__</nowiki></code> (aflându-se într-un spațiu de nume care permite acest marcaj) și, ca urmare, este indexată de roboți, deși în mod normal acest lucru nu s-ar fi întâmplat.",
- "post-expand-template-inclusion-category-desc": "După extinderea tuturor formatelor, dimensiunea paginii a depășit <code>$wgMaxArticleSize</code>, astfel că anumite formate nu au fost extinse.",
- "post-expand-template-argument-category-desc": "După extinderea argumentului unui format (ceva plasat între acolade triple, precum <code>{{{Foo}}}</code>), pagina a depășit <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "Prea multe funcții costisitoare de analiză (precum <code>#ifexist</code>) incluse într-o pagină. Vedeți [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Categorie adăugată dacă pagina conține o legătură întreruptă către un fișier (o legătură folosită pentru încorporarea unui fișier atunci când fișierul nu există).",
- "hidden-category-category-desc": "Această categorie conține <code><nowiki>__HIDDENCAT__</nowiki></code>, ceea ce împiedică în mod implicit afișarea ei în zona cu legături către categorii din cadrul paginilor.",
+ "post-expand-template-inclusion-category-desc": "Dimensiunea paginii a depășit <code>$wgMaxArticleSize</code> după extinderea tuturor formatelor, astfel că anumite formate nu au fost extinse.",
+ "post-expand-template-argument-category-desc": "Pagina a depășit <code>$wgMaxArticleSize</code> după extinderea argumentului unui format (ceva plasat între acolade triple, precum <code>{{{Foo}}}</code>).",
+ "expensive-parserfunction-category-desc": "Pagina folosește prea multe funcții costisitoare de analiză (precum <code>#ifexist</code>). Vedeți [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+ "broken-file-category-desc": "Pagina conține o legătură întreruptă către un fișier (o legătură folosită pentru încorporarea unui fișier atunci când fișierul nu există).",
+ "hidden-category-category-desc": "Categoria conține <code><nowiki>__HIDDENCAT__</nowiki></code> în conținutul său, ceea ce împiedică în mod implicit afișarea ei în zona cu legături către categorii din cadrul paginilor.",
"trackingcategories-nodesc": "Nicio descriere disponibilă.",
"trackingcategories-disabled": "Categoria este dezactivată",
"mailnologin": "Nu există adresă de trimitere",
"mywatchlist": "Pagini urmărite",
"watchlistfor2": "Pentru $1 $2",
"nowatchlist": "Lista dumneavoastră de pagini urmărite nu conține nici o pagină.",
- "watchlistanontext": "Vă rugăm să vă $1 pentru a vizualiza sau edita elementele din lista dumneavoastră de pagini urmărite.",
+ "watchlistanontext": "Vă rugăm să vă autentificați pentru a vizualiza sau modifica elementele din lista dumneavoastră de pagini urmărite.",
"watchnologin": "Nu sunteți autentificat",
"addwatch": "Adăugă la lista de pagini urmărite",
"addedwatchtext": "Pagina „[[:$1]]” a fost adăugată în lista dumneavoastră de [[Special:Watchlist|pagini urmărite]].\nModificările viitoare efectuate asupra acestei pagini dar și asupra paginii de discuție asociată vor fi listate acolo.",
"delete-edit-reasonlist": "Modifică motivele ștergerii",
"delete-toobig": "Această pagină are un istoric al modificărilor important, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.\nȘtergerea unei astfel de pagini a fost restricționată pentru a preveni apariția unor erori în {{SITENAME}}.",
"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}}.\nȘtergerea sa poate afecta baza de date a sitului {{SITENAME}};\nacționați cu precauție.",
+ "delete-cantedit": "Nu puteți șterge această pagină, deoarece nu aveți permisiunea de a o modifica.",
"deleting-backlinks-warning": "'''Atenție:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Alte pagini]] se leagă sau transclud pagina pe care doriți să o ștergeți.",
"rollback": "Editări de revenire",
"rollback_short": "Revenire",
"autoblockid": "Autoblocare #$1",
"block": "Blocare utilizator",
"unblock": "Deblocare utilizator",
- "blockip": "Blocare utilizator",
+ "blockip": "Blocare {{GENDER:$1|utilizator|utilizatoare}}",
"blockip-legend": "Blocare utilizator/adresă IP",
"blockiptext": "Pentru a bloca un utilizator completați rubricile de mai jos.<br />\n'''Respectați [[{{MediaWiki:Policy-url}}|politica de blocare]].'''<br />\nPrecizați motivul blocării; de exemplu indicați paginile vandalizate de acest utilizator.",
"ipaddressorusername": "Adresă IP sau nume de utilizator",
"ipb-unblock-addr": "Deblochează utilizatorul $1",
"ipb-unblock": "Deblocați un nume de utilizator sau o adresă IP",
"ipb-blocklist": "Vezi blocările existente",
- "ipb-blocklist-contribs": "Contribuțiile utilizatorului $1",
+ "ipb-blocklist-contribs": "Contribuțiile {{GENDER:$1|utilizatorului $1|utilizatoarei $1}}",
"unblockip": "Deblochează adresă IP",
"unblockiptext": "Folosiți formularul de mai jos pentru a restaura permisiunea de scriere pentru adrese IP sau nume de utilizator blocate anterior.",
"ipusubmit": "Elimină blocarea",
"yesterday-at": "Ieri, la $1",
"bad_image_list": "Formatul este următorul:\n\nNumai elementele unei liste sunt luate în considerare. (Acestea sunt linii ce încep cu *)\n\nPrima legătură de pe linie trebuie să fie spre un fișier defectuos.\n\nOrice legături ce urmează pe aceeași linie sunt considerate excepții, adică pagini unde fișierul poate apărea inclus direct.",
"metadata": "Informații",
- "metadata-help": "Acest fișier conține informații suplimentare, introduse probabil de aparatul fotografic digital sau scanerul care l-a generat.\nDacă fișierul a fost modificat între timp, este posibil ca unele detalii să nu mai fie valabile.",
+ "metadata-help": "Acest fișier conține informații suplimentare, introduse probabil de aparatul de fotografiat digital sau scanerul care l-a generat.\nDacă fișierul a fost modificat între timp, este posibil ca unele detalii să nu mai fie valabile.",
"metadata-expand": "Afișează detalii suplimentare",
"metadata-collapse": "Ascunde detalii suplimentare",
"metadata-fields": "Câmpurile cu metadatele imaginii listate mai jos vor fi incluse în pagina de afișare a imaginii atunci când tabelul cu metadate este restrâns.\nAltele vor fi ascunse implicit.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
"exif-imagewidth": "Lățime",
"exif-imagelength": "Înălțime",
- "exif-bitspersample": "Biți pe componentă",
+ "exif-bitspersample": "Biți per componentă",
"exif-compression": "Metodă de comprimare",
- "exif-photometricinterpretation": "Compoziția pixelilor",
+ "exif-photometricinterpretation": "Model de culoare",
"exif-orientation": "Orientare",
- "exif-samplesperpixel": "Numărul de componente",
+ "exif-samplesperpixel": "Număr de componente",
"exif-planarconfiguration": "Aranjarea datelor",
"exif-ycbcrsubsampling": "Mostră din fracția Y/C",
"exif-ycbcrpositioning": "Poziționarea Y și C",
"exif-yresolution": "Rezoluție verticală",
"exif-stripoffsets": "Locația datelor imaginii",
"exif-rowsperstrip": "Numărul de linii per bandă",
- "exif-stripbytecounts": "Biți corespunzători benzii comprimate",
+ "exif-stripbytecounts": "Octeți corespunzători benzii comprimate",
"exif-jpeginterchangeformat": "Offset pentru JPEG SOI",
- "exif-jpeginterchangeformatlength": "Biți de date JPEG",
+ "exif-jpeginterchangeformatlength": "Octeți de date JPEG",
"exif-whitepoint": "Cromaticitatea punctului alb",
"exif-primarychromaticities": "Coordonatele cromatice ale culorilor primare",
"exif-ycbcrcoefficients": "Tăria culorii coeficienților matricei de transformare",
"exif-software": "Software folosit",
"exif-artist": "Autor",
"exif-copyright": "Titularul drepturilor de autor",
- "exif-exifversion": "Versiune exif",
- "exif-flashpixversion": "Versiune susținută de Flashpix",
+ "exif-exifversion": "Versiune EXIF",
+ "exif-flashpixversion": "Versiune de Flashpix suportată",
"exif-colorspace": "Spațiu de culoare",
- "exif-componentsconfiguration": "Semnificația componentelor",
+ "exif-componentsconfiguration": "Semnificația fiecărei componente",
"exif-compressedbitsperpixel": "Mod de comprimare a imaginii",
"exif-pixelydimension": "Lățimea imaginii",
"exif-pixelxdimension": "Înălțimea imaginii",
"exif-relatedsoundfile": "Fișierul audio asemănător",
"exif-datetimeoriginal": "Data și ora producerii imaginii",
"exif-datetimedigitized": "Data și ora digitizării",
- "exif-subsectime": "Data/Ora milisecunde",
- "exif-subsectimeoriginal": "Data/Ora/Original milisecunde",
- "exif-subsectimedigitized": "Milisecunde DateTimeDigitized",
+ "exif-subsectime": "Subsecunde Data/Ora",
+ "exif-subsectimeoriginal": "Subsecunde Data/Ora/Original",
+ "exif-subsectimedigitized": "Subsecunde Data/Ora/Digitizare",
"exif-exposuretime": "Timp de expunere",
"exif-exposuretime-format": "$1 sec ($2)",
"exif-fnumber": "Diafragmă",
"exif-exposureprogram": "Program de expunere",
"exif-spectralsensitivity": "Sensibilitate spectrală",
- "exif-isospeedratings": "Evaluarea vitezei ISO",
+ "exif-isospeedratings": "Sensibilitate ISO",
"exif-shutterspeedvalue": "Viteza obturatorului în APEX",
"exif-aperturevalue": "Diafragmă în APEX",
"exif-brightnessvalue": "Luminozitate în APEX",
"exif-exposurebiasvalue": "Compensarea expunerii",
- "exif-maxaperturevalue": "Apertura maximă",
+ "exif-maxaperturevalue": "Diafragmă maximă",
"exif-subjectdistance": "Distanța față de subiect",
- "exif-meteringmode": "Forma de măsurare",
+ "exif-meteringmode": "Mod de măsurare",
"exif-lightsource": "Sursă de lumină",
"exif-flash": "Bliț",
"exif-focallength": "Distanța focală a obiectivului",
"exif-subjectarea": "Suprafața subiectului",
"exif-flashenergy": "Energie bliț",
- "exif-focalplanexresolution": "Rezoluția focală plană X",
- "exif-focalplaneyresolution": "Rezoluția focală plană Y",
- "exif-focalplaneresolutionunit": "Unitatea de măsură pentru rezoluția focală plană",
+ "exif-focalplanexresolution": "Rezoluția orizontală a panului focal",
+ "exif-focalplaneyresolution": "Rezoluția verticală a panului focal",
+ "exif-focalplaneresolutionunit": "Unitate de măsură pentru rezoluția planului focal",
"exif-subjectlocation": "Locația subiectului",
"exif-exposureindex": "Indexul expunerii",
"exif-sensingmethod": "Metoda sensibilă",
"exif-filesource": "Fișier sursă",
"exif-scenetype": "Tipul scenei",
- "exif-customrendered": "Prelucrarea imaginii",
+ "exif-customrendered": "Prelucrare personalizată",
"exif-exposuremode": "Mod de expunere",
"exif-whitebalance": "Balanța albă",
"exif-digitalzoomratio": "Raportul transfocării digitale",
"exif-focallengthin35mmfilm": "Distanță focală pentru film de 35 mm",
- "exif-scenecapturetype": "Tipul de surprindere a scenei",
+ "exif-scenecapturetype": "Tipul de captură a scenei",
"exif-gaincontrol": "Controlul scenei",
"exif-contrast": "Contrast",
"exif-saturation": "Saturație",
"exif-sharpness": "Ascuțime",
"exif-devicesettingdescription": "Descrierea reglajelor aparatului",
"exif-subjectdistancerange": "Distanța față de subiect",
- "exif-imageuniqueid": "Identificarea imaginii unice",
+ "exif-imageuniqueid": "Identificator unic al imaginii",
"exif-gpsversionid": "Versiunea de conversie GPS",
"exif-gpslatituderef": "Latitudine nordică sau sudică",
"exif-gpslatitude": "Latitudine",
"exif-sensingmethod-8": "Senzorul linear al culorii secvențiale",
"exif-filesource-3": "Aparat de fotografiat digital",
"exif-scenetype-1": "O imagine fotografiată direct",
- "exif-customrendered-0": "Prelucrare normală",
- "exif-customrendered-1": "Prelucrare nestandard",
+ "exif-customrendered-0": "Procedeu normal",
+ "exif-customrendered-1": "Procedeu personalizat",
"exif-exposuremode-0": "Expunere automată",
"exif-exposuremode-1": "Expunere manuală",
"exif-exposuremode-2": "Serie automată de expuneri",
- "exif-whitebalance-0": "Balanță alb automată",
- "exif-whitebalance-1": "Balanță alb manuală",
+ "exif-whitebalance-0": "Balans de alb automat",
+ "exif-whitebalance-1": "Balans de alb manual",
"exif-scenecapturetype-0": "Standard",
"exif-scenecapturetype-1": "Portret",
"exif-scenecapturetype-2": "Portret",
"exif-gpsdirection-t": "Direcția reală",
"exif-gpsdirection-m": "Direcție magnetică",
"exif-ycbcrpositioning-1": "Centrat",
- "exif-ycbcrpositioning-2": "Co-amplasat",
+ "exif-ycbcrpositioning-2": "Coamplasat",
"exif-dc-contributor": "Contribuitori",
"exif-dc-coverage": "Întinderea spațială sau temporală a elementului media",
"exif-dc-date": "Data (datele)",
"logentry-rights-rights": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3 de la $4 la $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|a fost promovat|a fost promovată}} în mod automat de la $4 la $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|a încărcat}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|a încărcat}} o nouă versiune pentru $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|a încărcat}} $3",
"rightsnone": "(niciunul)",
"feedback-bugornote": "Dacă sunteți pregătit să descrieți o problemă tehnică în detaliu vă rugăm să [$1 raportați un bug].\nÎn caz contrar, puteți utiliza formularul de mai jos. Comentariul dumneavoastră va fi adăugat pe pagina „[$3 $2]”, împreună cu numele de utilizator și numele navigatorului pe care îl folosiți.",
"feedback-subject": "Subiect:",
"action-pagelang": "modificați limba paginii",
"log-name-pagelang": "Jurnal modificare limbă",
"log-description-pagelang": "Acesta este un jurnal cu modificări ale limbii paginilor.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a modificat}} limba paginii pentru $3 din $4 în $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a modificat}} limba paginii pentru $3 din $4 în $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activat)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''dezactivat''')"
}
"talkpagelinktext": "Parle",
"specialpage": "Pàgene Speciele",
"personaltools": "Struminde personele",
- "postcomment": "Seziona nove",
"articlepage": "Vide 'a pàgene de le condenute",
"talk": "'Ngazzaminde",
"views": "Visite",
"externaldberror": "Vide bbuene, o stè 'n'errore de autendicazione a 'u database oppure tu non ge puè aggiorna 'u cunde tue esterne.",
"login": "Tràse",
"nav-login-createaccount": "Tràse / Reggistrete",
- "loginprompt": "Tu a tenè le cookies abilitate pe tràse jndr'à {{SITENAME}}.",
"userlogin": "Tràse / Reggistrete",
"userloginnocreate": "Tràse",
"logout": "Isse",
"searchprofile-advanced-tooltip": "Cirche jndr'à le namespace personalizzete",
"search-result-size": "$1 ({{PLURAL:$2|1 parole|$2 parole}})",
"search-result-category-size": "{{PLURAL:$1|1 membre|$1 membre}} ({{PLURAL:$2|1 sottecategorije|$2 sottecategorije}}, {{PLURAL:$3|1 file|$3 file}})",
- "search-result-score": "'Mbortanze: $1%",
"search-redirect": "(Redirette $1)",
"search-section": "(sezione $1)",
"search-suggest": "Ce signifeche: $1",
"uploadwarning": "Avvise de carecamende",
"uploadwarning-text": "Pe piacere cange 'a descrizione d'u file sotte e pruève 'notra vote.",
"savefile": "Reggistre 'u file",
- "uploadedimage": "carechete \"[[$1]]\"",
- "overwroteimage": "ha state carechete 'na versiona nove de \"[[$1]]\"",
"uploaddisabled": "Carecaminde disabbilitete",
"copyuploaddisabled": "Carecamende da l'URL disabbilitate.",
"uploaddisabledtext": "Le carecaminde de le file sonde disabbilitete.",
"watchlist-details": "{{PLURAL:$1|$1 pàgene|$1 pàggene}} jndr'à liste de le pàggene condrollete, scartanne le pàggene de le 'ngazzaminde.",
"wlheader-enotif": "* Notifiche pe email abbilitate.",
"wlheader-showupdated": "* Le pàggene ca onne state cangiate da l'urtema visite avènene fatte vedè in '''grascette'''",
+ "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",
"watching": "Fà vedè...",
"hidetoc": "убрать",
"collapsible-collapse": "свернуть",
"collapsible-expand": "развернуть",
+ "confirmable-confirm": "{{GENDER:$1|Вы}} уверены?",
+ "confirmable-yes": "Да",
+ "confirmable-no": "Нет",
"thisisdeleted": "Просмотреть или восстановить $1?",
"viewdeleted": "Просмотреть $1?",
"restorelink": "{{PLURAL:$1|$1 удалённую правку|$1 удалённых правок|$1 удалённые правки|1=удалённую правку}}",
"invalidtitle-knownnamespace": "Недопустимый заголовок с пространством имен «$2» и текстом «$3»",
"invalidtitle-unknownnamespace": "Недопустимый заголовок с неизвестным номером пространства $1 и текстом «$2»",
"exception-nologin": "Вы не представились системе",
- "exception-nologin-text": "Необходимо [[Special:Userlogin|представиться]], чтобы иметь доступ к этой странице или действию.",
+ "exception-nologin-text": "Необходимо представиться, чтобы иметь доступ к этой странице или действию.",
"exception-nologin-text-manual": "Необходимо $1, чтобы иметь доступ к этой странице или действию.",
"virus-badscanner": "Ошибка настройки. Неизвестный сканер вирусов: ''$1''",
"virus-scanfailed": "ошибка сканирования (код $1)",
"parser-template-recursion-depth-warning": "Превышен предел глубины рекурсии шаблона ($1)",
"language-converter-depth-warning": "Превышен предел глубины преобразователя языков ($1)",
"node-count-exceeded-category": "Странице, на которых превышено число узлов",
- "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80иÑ\8f длÑ\8f Ñ\81Ñ\82Ñ\80аниÑ\86, на коÑ\82оÑ\80Ñ\8bÑ\85 пÑ\80евÑ\8bÑ\88ено число узлов.",
- "node-count-exceeded-warning": "Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е пÑ\80евÑ\8bÑ\88ено Ñ\87иÑ\81ло Ñ\83злов",
+ "node-count-exceeded-category-desc": "У Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b пÑ\80евÑ\8bÑ\88ено макÑ\81ималÑ\8cно допÑ\83Ñ\81Ñ\82имое число узлов.",
+ "node-count-exceeded-warning": "СÑ\82Ñ\80аниÑ\86а, на коÑ\82оÑ\80ой пÑ\80евÑ\8bÑ\88ено макÑ\81ималÑ\8cно допÑ\83Ñ\81Ñ\82имое Ñ\87иÑ\81ло Ñ\83злов.",
"expansion-depth-exceeded-category": "Страницы с превышением глубины раскрытия",
- "expansion-depth-exceeded-category-desc": "ÐÑ\82о каÑ\82егоÑ\80иÑ\8f длÑ\8f Ñ\81Ñ\82Ñ\80аниÑ\86 Ñ\81 пÑ\80евÑ\8bÑ\88ением глÑ\83бинÑ\8b раскрытия.",
+ "expansion-depth-exceeded-category-desc": "У Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b пÑ\80евÑ\8bÑ\88ена макÑ\81ималÑ\8cно допÑ\83Ñ\81Ñ\82имаÑ\8f глÑ\83бина раскрытия.",
"expansion-depth-exceeded-warning": "На странице превышен предел вложенности",
"parser-unstrip-loop-warning": "Обнаружен незакрытый pre",
"parser-unstrip-recursion-limit": "Превышен предел рекурсии ($1)",
"undo-failure": "Правка не может быть отменена из-за несовместимости промежуточных изменений.",
"undo-norev": "Правка не может быть отменена, так как её не существует или она была удалена.",
"undo-nochange": "Правка, похоже, уже была отменена.",
- "undo-summary": "Отмена правки $1, сделанной {{GENDER:$2|участником|участницей}} [[Special:Contributions/$2|$2]] ([[User talk:$2|обс.]])",
+ "undo-summary": "Отмена правки $1, сделанной {{GENDER:$2|участником|участницей}} [[Special:Contribs/$2|$2]] ([[User talk:$2|обс.]])",
"undo-summary-username-hidden": "Отмена правки $1, сделанной участником, чьё имя скрыто",
"cantcreateaccounttitle": "Невозможно создать учётную запись",
"cantcreateaccount-text": "Создание учётных записей с этого IP-адреса ('''$1''') было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].\n\n$3 {{GENDER:$3|указал|указала}} следующую причину: ''$2''.",
"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-score": "Релевантность: $1%.",
"search-redirect": "(перенаправление с $1)",
"search-section": "(раздел «$1»)",
"search-file-match": "(совпадает с содержимым файла)",
"preferences": "Настройки",
"mypreferences": "Настройки",
"prefs-edits": "Количество правок:",
- "prefsnologintext2": "Ð\9dеобÑ\85одимо $1, Ñ\87Ñ\82обÑ\8b изменÑ\8fть настройки.",
+ "prefsnologintext2": "Ð\9fожалÑ\83йÑ\81Ñ\82а, войдиÑ\82е, Ñ\87Ñ\82обÑ\8b изменить настройки.",
"prefs-skin": "Тема оформления",
"skin-preview": "Предпросмотр",
"datedefault": "По умолчанию",
"recentchanges-label-bot": "Эта правка сделана ботом",
"recentchanges-label-unpatrolled": "Эта правка ещё никем не патрулировалась",
"recentchanges-label-plusminus": "Размер страницы изменился на данное количество байт",
- "recentchanges-legend-heading": "'''Легенда:'''",
+ "recentchanges-legend-heading": "'''Легенда: '''",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (см. также [[Special:NewPages|список новых страниц]])",
"recentchanges-legend-plusminus": "(''±123'')",
"rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с <strong>$3, $4</strong> (показано не более <strong>$1</strong>).",
"uploadwarning": "Предупреждение",
"uploadwarning-text": "Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.",
"savefile": "Записать файл",
- "uploadedimage": "загрузил «[[$1]]»",
- "overwroteimage": "загружена новая версия «[[$1]]»",
"uploaddisabled": "Загрузка запрещена",
"copyuploaddisabled": "Загрузка по URL отключена.",
"uploaddisabledtext": "Загрузка файлов отключена.",
"mimesearch": "Поиск по MIME",
"mimesearch-summary": "Эта страница позволяет фильтровать файлы по их MIME-типу. Формат ввода: типсодержимого/подтип или типсодержимого/*, например <code>image/jpeg</code>.",
"mimetype": "MIME-тип:",
- "download": "загрузить",
+ "download": "скачать",
"unwatchedpages": "Страницы, за которыми никто не следит",
"listredirects": "Список перенаправлений",
"listduplicatedfiles": "Список файлов с дубликатами",
"trackingcategories-desc": "Критерий включения в категорию",
"noindex-category-desc": "Страница не индексируются поисковыми роботами, потому что на ней имеется «волшебное слово» <code><nowiki>__NOINDEX__</nowiki></code>, и она находится в пространстве имён, где разрешён этот флаг).",
"index-category-desc": "На странице имеется «волшебное слово» __INDEX__ (и страница находится в пространстве имён, где разрешён этот флаг), поэтому она индексируются поисковыми роботами в тех случаях, когда этого обычно не происходит.",
- "post-expand-template-inclusion-category-desc": "Ð\9fоÑ\81ле показа вÑ\81еÑ\85 Ñ\88аблонов Ñ\80азмеÑ\80 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ñ\81Ñ\82анеÑ\82 болÑ\8cÑ\88е, Ñ\87ем <code>$wgMaxArticleSize</code>, поÑ\8dÑ\82омÑ\83 некоÑ\82оÑ\80Ñ\8bе Ñ\88аблонÑ\8b не были показаны полностью.",
- "post-expand-template-argument-category-desc": "Ð\9fоÑ\81ле Ñ\80аÑ\81кÑ\80Ñ\8bÑ\82иÑ\8f аÑ\80гÑ\83менÑ\82а Ñ\88аблона (Ñ\87Ñ\82о-нибÑ\83дÑ\8c в Ñ\82Ñ\80ойнÑ\8bÑ\85 Ñ\84игÑ\83Ñ\80нÑ\8bÑ\85 Ñ\81кобкаÑ\85, напÑ\80имеÑ\80, <code>{{{Foo}}})</code>, Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81Ñ\82анеÑ\82 болÑ\8cÑ\88е, Ñ\87ем <code>$wgMaxArticleSize</code>.",
+ "post-expand-template-inclusion-category-desc": "РазмеÑ\80 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ñ\81Ñ\82анеÑ\82 болÑ\8cÑ\88е <code>$wgMaxArticleSize</code> поÑ\81ле показа вÑ\81еÑ\85 Ñ\88аблонов, поÑ\8dÑ\82омÑ\83 некоÑ\82оÑ\80Ñ\8bе из ниÑ\85 не были показаны полностью.",
+ "post-expand-template-argument-category-desc": "СÑ\82Ñ\80аниÑ\86а Ñ\81Ñ\82анеÑ\82 болÑ\8cÑ\88е <code>$wgMaxArticleSize</code> поÑ\81ле Ñ\80аÑ\81кÑ\80Ñ\8bÑ\82иÑ\8f аÑ\80гÑ\83менÑ\82а Ñ\88аблона (Ñ\87Ñ\82о-нибÑ\83дÑ\8c в Ñ\82Ñ\80ойнÑ\8bÑ\85 Ñ\84игÑ\83Ñ\80нÑ\8bÑ\85 Ñ\81кобкаÑ\85, напÑ\80имеÑ\80, <code>{{{Foo}}})</code>).",
"expensive-parserfunction-category-desc": "На странице используется слишком много ресурсоёмких функций (таких, как <code>#ifexist</code>). Подробнее — на странице [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Ð\9aаÑ\82егоÑ\80иÑ\8f добавлÑ\8fеÑ\82Ñ\81Ñ\8f, еÑ\81ли Ñ\81траница содержит некорректную файловую ссылку (ссылку на несуществующий файл).",
- "hidden-category-category-desc": "ÐÑ\82о каÑ\82егоÑ\80иÑ\8f Ñ\81 добавленной меÑ\82кой <code><nowiki>__HIDDENCAT__</nowiki></code> в ней, что по умолчанию предотвращает её отображение на страницах в разделе категорий.",
+ "broken-file-category-desc": "Страница содержит некорректную файловую ссылку (ссылку на несуществующий файл).",
+ "hidden-category-category-desc": "ÐÑ\82а каÑ\82егоÑ\80иÑ\8f Ñ\81одеÑ\80жиÑ\82 меÑ\82кÑ\83 <code><nowiki>__HIDDENCAT__</nowiki></code> Ñ\81одеÑ\80жимом Ñ\81Ñ\82Ñ\80аниÑ\86е, что по умолчанию предотвращает её отображение на страницах в разделе категорий.",
"trackingcategories-nodesc": "Описание отсутствует.",
"trackingcategories-disabled": "Категория отключена",
"mailnologin": "Адрес для отправки отсутствует",
"mywatchlist": "Список наблюдения",
"watchlistfor2": "Для $1 $2",
"nowatchlist": "Ваш список наблюдения пуст.",
- "watchlistanontext": "Вы должны $1, чтобы просмотреть или отредактировать список наблюдения.",
+ "watchlistanontext": "Вы должны войти, чтобы просмотреть или отредактировать элементы в списке наблюдения.",
"watchnologin": "Нужно представиться системе",
"addwatch": "Добавить в список наблюдения",
"addedwatchtext": "Страница «[[:$1]]» была добавлена в ваш [[Special:Watchlist|список наблюдения]].\nТам будут отмечаться последующие изменения этой страницы, а также связанной с ней страницы обсуждения.",
"delete-edit-reasonlist": "Править список причин",
"delete-toobig": "У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.\nУдаление таких страниц было запрещено во избежание нарушений в работе сайта «{{SITENAME}}».",
"delete-warning-toobig": "У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.\nЕё удаление может привести к нарушению нормальной работы базы данных сайта «{{SITENAME}}»;\nдействуйте с осторожностью.",
+ "delete-cantedit": "Вы не можете удалить эту страницу, так как у вас нет разрешения на её редактирование.",
"deleting-backlinks-warning": "'''Предупреждение.''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Другие страницы]] ссылаются на страницу, которую вы собираетесь удалить, или содержат её.",
"rollback": "Откатить изменения",
"rollback_short": "Откат",
"autoblockid": "Автоблокировка #$1",
"block": "Блокировка участника",
"unblock": "Разблокировка участника",
- "blockip": "Заблокировать",
+ "blockip": "Заблокировать {{GENDER:$1|участника}}",
"blockip-legend": "Блокировка участника",
"blockiptext": "Используйте форму ниже, чтобы заблокировать возможность записи с определённого IP-адреса.\nЭто может быть сделано только для предотвращения вандализма и только в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].\nНиже укажите конкретную причину (к примеру, процитируйте некоторые страницы с признаками вандализма).",
"ipaddressorusername": "IP-адрес или имя участника:",
"ipb-unblock-addr": "Разблокировать $1",
"ipb-unblock": "Разблокировать участника или IP-адрес",
"ipb-blocklist": "Показать действующие блокировки",
- "ipb-blocklist-contribs": "Вклад $1",
+ "ipb-blocklist-contribs": "Вклад {{GENDER:$1|$1}}",
"unblockip": "Разблокировать участника",
"unblockiptext": "Используйте форму ниже, чтобы восстановить возможность редактирования с ранее заблокированного IP-адреса или учётной записи.",
"ipusubmit": "Снять эту блокировку",
"logentry-rights-rights": "$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3 с $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|изменил|изменила}} членство в группах для $3",
"logentry-rights-autopromote": "$1 был{{GENDER:$2||а}} автоматически переведен{{GENDER:$2||а}} из $4 в $5",
+ "logentry-upload-upload": "$1 загрузил{{GENDER:$2||а}} $3",
+ "logentry-upload-overwrite": "$1 загрузил{{GENDER:$2||а}} новую версию $3",
+ "logentry-upload-revert": "$1 загрузил{{GENDER:$2||а}} $3",
"rightsnone": "(нет)",
"feedback-bugornote": "Если вы готовы подробно описать техническую проблему, пожалуйста, [$1 сообщите об ошибке].\nВ противном случае вы можете использовать данную простую форму. Ваш комментарий будет добавлен на страницу «[$3 $2]» вместе с вашим именем участника и используемым браузером.",
"feedback-subject": "Тема:",
"action-pagelang": "изменять язык страницы",
"log-name-pagelang": "Журнал изменения языка",
"log-description-pagelang": "Это журнал изменений в языках страницы.",
- "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5."
+ "logentry-pagelang-pagelang": "$1 изменил{{GENDER:$2||а}} язык страницы для $3 с $4 на $5.",
+ "default-skin-not-found": "Упс! Тема оформления по умолчанию для вашей вики (<code>$wgDefaultSkin</code>), <code>$1</code> недоступна.\n\nВаша установка, похоже, содержит следующие темы оформления. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n\n\n$ 2\n\n\n; Если вы только что установили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Склонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code>skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.\n; Если вы только что обновили MediaWiki:\n: MediaWiki версии 1.24 и более новых больше не включает автоматически установленные темы (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\nВы можете вставить следующие строчки в <code>LocalSettings.php</code>, чтобы включить все установленные темы оформления: \n\n\n<pre>$3</pre>\n\n\n; Если вы только что изменили <code>LocalSettings.php</code>:\n: Перепроверьте названия тем на наличие опечаток.",
+ "default-skin-not-found-no-skins": "Упс! Тема оформления по умолчанию для вашей вики (<code>$wgDefaultSkin</code>), <code>$1</code> недоступна.\n\n\nУ вас нет установленных тем оформления.\n\n\n; Если вы только что установили или обновили MediaWiki:\n: Вы, видимо, сделали это с Git или непосредственно из исходного кода с использованием другого способа. Тогда такое возможно. MediaWiki версии 1.24 или более поздней не содержат темы оформления в основном репозитории. Попробуйте установить некоторые темы из [https://www.mediawiki.org/wiki/Category:All_skins каталога тем оформления сайта mediawiki.org]:\n:* Скачав [https://www.mediawiki.org/wiki/Download архив установочных файлов], который содержит несколько тем оформления и расширений. Вы можете скопировать папку <code>skins/</code> из него.\n:* Склонировав один из репозиториев <code>mediawiki/skins/*</code> через git в подпапку <code>skins/</code> папки, куда установлена MediaWiki.\n: Это не должно навредить вашему репозиторию, если вы MediaWiki-разработчик. См. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для получения информации о том, как включить темы оформления и выбрать тему по умолчанию.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (включено)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''отключено''')"
}
"talkpagelinktext": "діскузія",
"specialpage": "Шпеціална сторінка",
"personaltools": "Особны інштрументы",
- "postcomment": "Нова секція",
"articlepage": "Посмотрити сторінку",
"talk": "Діскузія",
"views": "Перегляды",
"externaldberror": "Або ся стала хыба екстерной автентіфікачной датабазы, або не маєте дозволено мінити своє екстерне конто.",
"login": "Приголошіня",
"nav-login-createaccount": "Приголошіня / створїня конта",
- "loginprompt": "К приголошіню до {{grammar:2sg|{{SITENAME}}}} мусите мати актівованы cookies.",
"userlogin": "Приголошіня / створїня конта",
"userloginnocreate": "Приголошіня",
"logout": "Одголосити",
"searchprofile-advanced-tooltip": "Задати просторы назв, де ся мать глядати",
"search-result-size": "$1 ({{PLURAL:$2|слово|слова|слов}})",
"search-result-category-size": "{{PLURAL:$1|1 член|$1 члена|$1 членів}} ({{PLURAL:$2|1 підкатеґорія|$2 підкатеґорії|$2 підкатеґорії}}, {{PLURAL:$3|1 файл|$3 файлы|$3 файлів}})",
- "search-result-score": "Одповідность: $1 %",
"search-redirect": "(напрямити $1)",
"search-section": "(секція $1)",
"search-suggest": "Може сьте мали на мыслї: $1",
"uploadwarning": "Позірь к наладованю",
"uploadwarning-text": "Просиме, зміньте опис файлу ниже і спробуйте то знову.",
"savefile": "Уложыти файл",
- "uploadedimage": "наладовав \"[[$1]]\"",
- "overwroteimage": "наладована нова верзія \"[[$1]]\"",
"uploaddisabled": "Наладовованя файлів заборонене.",
"copyuploaddisabled": "Наладовованя файлів через URL є выпнуте.",
"uploaddisabledtext": "Наладовованя файлів є выпнуте.",
"watchlist-details": "{{PLURAL:$1|Єдна слїдована сторінка|слїдованы сторінкы|слїдованых сторінок}} (не рахувчі діскузны сторінкы).",
"wlheader-enotif": "Упозорнїня ел. поштов є запнуте.",
"wlheader-showupdated": "Сторінкы, котры ся змінили од вашой послїднёй навщівы суть вказаны '''грубо'''",
+ "wlnote": "Ниже є {{PLURAL:$1|остатня зміна|остатнї $1 зміны|остатнїх $1 змін}} за {{PLURAL:$2|остатнїй|остатнї|остатнїх}} <b>$2</b> {{PLURAL:$2|годину|годины|годин}} до do $4, $3.",
"wlshowlast": "Вказати зміны за послїднїх $1 годин $2 днїв $3",
"watchlist-options": "Наставлїна списку слїдованых",
"watching": "Придаваня до списку слїдованя...",
"duplicate-defaultsort": "Увага: Імпліцітный ключ сортованя (DEFAULTSORTKEY) „$2“ переписує скоре наставлену годноту „$1“.",
"version": "Верзія",
"version-extensions": "Наіншталованы росшырїня",
+ "version-skins": "Взгляды",
"version-specialpages": "Шпеціалны сторінкы",
"version-parserhooks": "Припойны пункты парсера",
"version-variables": "Перемінны",
"version-antispam": "Охрана перед спамом",
- "version-skins": "Взгляды",
"version-other": "Інше",
"version-mediahandlers": "Обслуга медії",
"version-hooks": "Припойны пункты",
{
- "@metadata": {
- "authors": [
- "D'AroemenenZullenNiVergaan",
- "Dumitrachi T. Fundu",
- "Hakka"
- ]
- },
- "tog-underline": "Subliniaḑă ligâtura:",
- "tog-hideminor": "Ascundeari a alâxiriloru ńiți di-tu nalili alâxiri",
- "tog-numberheadings": "Numirari automatâ a secțiuniloru",
- "tog-editondblclick": "Aravdă alâxirea frundzâl'ei ti dublu click (caftă JavaScript)",
- "underline-always": "Totna",
- "underline-never": "Vârâoarâ",
- "sunday": "dumânicâ",
- "monday": "luni",
- "tuesday": "marțâ",
- "wednesday": "ńiercuri",
- "thursday": "gioi",
- "friday": "viniri",
- "saturday": "sâmbâtâ",
- "january": "Yinaru",
- "february": "Șcurtu",
- "march": "Marțu",
- "april": "Apriiru",
- "may_long": "Maiu",
- "june": "Cirișaru",
- "july": "Alunaru",
- "august": "Avgustu",
- "september": "Yizmâciunu",
- "october": "Sumedru",
- "november": "Brumaru",
- "december": "Andreu",
- "january-gen": "Yinaru",
- "february-gen": "Șcurtu",
- "march-gen": "Marțu",
- "april-gen": "Apriiru",
- "may-gen": "Maiu",
- "june-gen": "Cirișaru",
- "july-gen": "Alunaru",
- "august-gen": "Avgustu",
- "september-gen": "Yizmâciunu",
- "october-gen": "Sumedru",
- "november-gen": "Brumaru",
- "december-gen": "Andreu",
- "jan": "yin",
- "feb": "șcur",
- "mar": "mar",
- "apr": "apr",
- "may": "mai",
- "jun": "cir",
- "jul": "alun",
- "aug": "avg",
- "sep": "yiz",
- "oct": "sum",
- "nov": "brum",
- "dec": "andr",
- "pagecategories": "{{PLURAL:$1|Categorie|Categorii}}",
- "category_header": "Frânḑâ tu categoria \"$1\"",
- "hidden-categories": "{{PLURAL:$1|Categorie ascumsâ|Categorii ascumsi}}",
- "article": "Articolu",
- "newwindow": "(si discľidi tu unâ nauâ fireastrâ)",
- "cancel": "Alasã",
- "moredotdotdot": "Ma multu...",
- "mytalk": "Zburare-a mea",
- "navigation": "Navigație",
- "qbfind": "Caftâ",
- "qbedit": "Alâxiri",
- "qbpageoptions": "Aestă frânḑă",
- "qbmyoptions": "Frânḑili a meali",
- "vector-action-addsection": "Dimândari nauâ",
- "vector-view-history": "Veḑ istoricu",
- "namespaces": "Spațiu di numi",
- "variants": "Varianti",
- "tagline": "Di-tu {{SITENAME}}",
- "help": "Agiutoru",
- "search": "Câftari",
- "searchbutton": "Câftari",
- "go": "Du-vâ",
- "searcharticle": "Du-vâ",
- "history_short": "Istoricu",
- "printableversion": "Verzia ti tipuseare",
- "permalink": "Ligâturâ permanentâ",
- "edit": "Alâxire",
- "delete": "Așcirḑire",
- "protect": "Apurã",
- "newpage": "Frânḑâ nauâ",
- "talkpagelinktext": "Zburari",
- "talk": "Discusiur",
- "views": "Videri",
- "toolbox": "Cutia di hãlate",
- "otherlanguages": "Pi alte limbe",
- "jumptonavigation": "Navigatsia",
- "jumptosearch": "Câftare",
- "aboutsite": "Tu {{SITENAME}}",
- "currentevents": "Evenimente di tora",
- "disclaimers": "Nipricunuschire",
- "edithelp": "Agiutor ti alãxire",
- "mainpage": "Prota frânḑâ",
- "mainpage-description": "Prota frânḑâ",
- "portal": "Portalu a comunitatiľei",
- "portal-url": "Proiectu:Portalu a comunitatiľei",
- "privacy": "Politică di confidențialitate",
- "youhavenewmessagesmulti": "Aveț năi dimândări pi $1",
- "editsection": "alâxire",
- "editold": "Alâxiri",
- "viewsourceold": "videari izvor",
- "viewsourcelink": "videari izvor",
- "editsectionhint": "Alâxire parti: $1",
- "site-atom-feed": "$1 Atom feed",
- "red-link-title": "$1 (frânḑa nu easti)",
- "nstab-main": "Frânḑâ",
- "nstab-user": "Frânḑâ a utilizatorului",
- "nstab-special": "Frândzâ specialâ",
- "nstab-template": "Formatu",
- "nstab-category": "Categorie",
- "viewsource": "Videț-u fântânâ",
- "yourname": "Numa di ufilizitor:",
- "yourpassword": "Cljao:",
- "yourpasswordagain": "Bãgats-u cljao iara:",
- "remembermypassword": "Apurã-u ligãtura-a mea pi compiuterlu aistu (for a maximum of $1 {{PLURAL:$1|day|days}})",
- "login": "Ligats-vã",
- "userlogin": "Ligats-vã / Fãtsets Isape",
- "logout": "Disligats-vã",
- "userlogout": "Disligats-vã",
- "notloggedin": "Nu hits ligats",
- "createaccount": "Fãtsets Isape",
- "gotaccountlink": "Ligats-vã",
- "summary": "Rezime:",
- "minoredit": "Aistã easte alãxire njicã",
- "watchthis": "Mutrits-u frãndzã aistã",
- "savearticle": "Avigljats-u frãndzã",
- "showpreview": "Spuni u-privideare",
- "showdiff": "Spuni le-alãxirle",
- "loginreqlink": "Ligats-vã",
- "lineno": "Linia $1:",
- "editundo": "arisire",
- "searchresults": "Rezultate di câftare",
- "searchresults-title": "Rezultate di câftare ti \"$1\"",
- "shown-title": "Vedz $1 {{PLURAL:$1|rezultat|rezultate}} pi frândză",
- "searchprofile-everything": "Tuti",
- "searchprofile-project-tooltip": "Câftare ti $1",
- "search-result-size": "$1 ({{PLURAL:$2|1 zbor|$2 zboarâ}})",
- "search-section": "(partea $1)",
- "searchall": "tuti",
- "preferences": "Alidzerle-a meale",
- "mypreferences": "Alidzerle-a meale",
- "searchresultshead": "Caftã",
- "youremail": "E-mail:",
- "username": "Numa di ufilizitor:",
- "recentchanges": "Alâxiri",
- "diff": "dif",
- "hist": "ist",
- "show": "Vedz",
- "recentchangeslinked": "Alãxiri ligate",
- "recentchangeslinked-feed": "Alãxiri ligate",
- "recentchangeslinked-toolbox": "Alâxiri ligate",
- "upload": "Pitritsets file",
- "uploadbtn": "Pitritsets file",
- "uploadnologin": "Nu hits ligats",
- "filedesc": "Rezime",
- "watchthisupload": "Mutrits-u frãndzã aistã",
- "file-anchor-link": "Fișier",
- "randompage": "Frândză di nipandică",
- "brokenredirects-edit": "Alãxiri",
- "brokenredirects-delete": "Ashcirdzire",
- "nbytes": "$1 {{PLURAL:$1|octet|octeți}}",
- "newpages-username": "Numa di ufilizitor:",
- "move": "Tradzets",
- "movethispage": "Tradzets-u frãndza aistã",
- "booksources-go": "Du-vã",
- "allpagessubmit": "Du-vã",
- "watchlist": "Lista-a mea di videare",
- "mywatchlist": "Lista-a mea di videare",
- "watchnologin": "Nu hits ligats",
- "watch": "Videts",
- "watchthispage": "Mutrits-u frãndzã aistã",
- "unwatch": "Azãptãsits videare",
- "prot_1movedto2": "[[$1]] s-trãdzi tu [[$2]]",
- "restriction-edit": "Alãxiri",
- "restriction-move": "Tradzets",
- "undelete-search-submit": "Caftã",
- "blanknamespace": "(Prota)",
- "contributions": "Ufilizitor:Contributsiur",
- "mycontris": "Contributsiile-a meale",
- "sp-contributions-submit": "Caftã",
- "whatlinkshere": "Tsi s-leadze cu aistu",
- "whatlinkshere-page": "Frândză:",
- "ipbreason": "Itia:",
- "ipblocklist-submit": "Caftã",
- "contribslink": "contribuții",
- "move-page-legend": "Tradzets-u frãndzã",
- "movearticle": "Tradzets-u frãndzã:",
- "move-watch": "Mutrits-u frãndzã aistã",
- "movepagebtn": "Tradzets-u frãndzã",
- "movereason": "Itia:",
- "allmessages": "Dimãndãri systemitse",
- "tooltip-pt-preferences": "Alidzerle-a meale",
- "tooltip-pt-logout": "Disligats-vã",
- "tooltip-search": "Câftare tru {{SITENAME}}",
- "tooltip-p-logo": "Prota frãndzã",
- "tooltip-n-mainpage": "Vedz prota frândză",
- "tooltip-t-specialpages": "Unâ listâ di tuti frândzele",
- "tooltip-ca-nstab-category": "Veḑ categoria",
- "ilsubmit": "Caftâ",
- "imgmultigo": "Du-vã!",
- "table_pager_limit_submit": "Du-vã",
- "specialpages": "Frândzâ speciale"
+ "@metadata": {
+ "authors": [
+ "D'AroemenenZullenNiVergaan",
+ "Dumitrachi T. Fundu",
+ "Hakka"
+ ]
+ },
+ "tog-underline": "Subliniadzâ ligâtura:",
+ "tog-hideminor": "Ascundi alâxirili minori tu alâxirile proaspite",
+ "tog-hidepatrolled": "Ascundi alâxirili patrulati tu alâxirile proaspite",
+ "tog-newpageshidepatrolled": "Ascundi frândzâli patrulati di-tu lista di frândzâ noi",
+ "tog-extendwatchlist": "Ntindi lista di articoli avinati ca s-u li vedz toati alâxirili adrate, nu mași pe ațeali ma noi",
+ "tog-usenewrc": "Adunâ alâxirili dupu frândzâ anamisa a alâxiriloru proaspite și a listâľei frândzâlor avinati",
+ "tog-numberheadings": "Numirâ automatu secțiunili",
+ "tog-showtoolbar": "Aratâ bara di halati trâ alâxiri",
+ "tog-editondblclick": "Alâxeaști frândzâli pri-tu click duplo",
+ "tog-editsectiononrightclick": "Activeadzâ alâxirea a secțiuniloru pri-tu click ndreapta pi titlu a secțiunâľei",
+ "tog-watchcreations": "Adavgâ frândzâli pi cari li adar și fișierele pi cari li ncari la lista a ńia di frândzâ avinati",
+ "tog-watchdefault": "Adavgâ frândzâli și fișierili pi cari li alâxescu la lista a ńia di avinari",
+ "tog-watchmoves": "Adavgâ frândzâli și fișierili pi cari li dau numâ noao la lista a ńia di avinari",
+ "tog-watchdeletion": "Adavgâ frândzâli și fișierili pi cari li aștergu la lista a ńia di avinari",
+ "tog-watchrollback": "Adavgâ tu lista a ńia di frândzâ avinati ațeali frândzâ cari li turnai la unâ versiuni ma veacľie",
+ "tog-minordefault": "Simneadzâ di-tu ahurhita toati alâxirili câ suntu minori (ńiți)",
+ "tog-previewontop": "Aratâ previzualizarea disuprâ di câsica di alâxiri",
+ "tog-previewonfirst": "Aratâ previzualizarea la prota alâxiri",
+ "tog-enotifwatchlistpages": "Pitreați-ńi unâ carti electronicâ atumțea anda unâ frândzâ icâ unu fișieru di-tu lista a ńia di frândzâ avinati easti alâxitâ",
+ "tog-enotifusertalkpages": "Pitreați-ńi unâ carti electronicâ anda frândza a ńia di muabeț easti alâxitâ",
+ "tog-enotifminoredits": "Pitreați-ńi unâ carti electronicâ ș-canda frândzâ icâ fișieri ľa alâxiri",
+ "tog-enotifrevealaddr": "Lingușeaști-ńi adresa a ńia di carti electronicâ tu mesagili di noauâ",
+ "tog-shownumberswatching": "Aratâ numiru a utilizatorloru cari ti avinu",
+ "tog-oldsig": "Cundiľeauâ di tora:",
+ "tog-fancysig": "Saidiseaști cundiľeaua ca wikitext (fârâ unâ ligâturâ automatâ)",
+ "tog-uselivepreview": "Ufiliseaști previzualizarea tu chiro realu (experimentalu)",
+ "tog-forceeditsummary": "Dzâ-ńi anda mi agârșescu s-fânirusescu alâxirili",
+ "tog-watchlisthideown": "Ascundi alâxirili a meali la lista a ńia di avinari",
+ "tog-watchlisthidebots": "Ascundi alâxirili a boțloru la lista a ńia di avinari",
+ "tog-watchlisthideminor": "Ascundi alâxirili minori (ńiți) a meali la lista a ńia di avinari",
+ "tog-watchlisthideliu": "Ascundi alâxirili adrati di utilizatori ligaț di-tu lista di frândzâ avinati",
+ "tog-watchlisthideanons": "Ascundi alâxirili adrati di utilizatoriľi anonimi di-tu lista di frândzâ avinati",
+ "tog-watchlisthidepatrolled": "Ascundi alâxirili patrulati di-tu lista di frândzâ avinati",
+ "tog-ccmeonemails": "Voi s-așteptu unâ copie a mesagiloru di carti electronicâ pi cari li pitrecu",
+ "tog-diffonly": "Ascundi conținutlu a frândzei sumu dif",
+ "tog-showhiddencats": "Aratâ categoriľi ascumsi",
+ "tog-norollbackdiff": "Ascundi diferența dupu ți s-toarnâ unâ frândzâ",
+ "tog-useeditwarning": "Dzâ-ńi anda alasu unâ frândzâ fârâ s-li pitrecu alâxirili",
+ "tog-prefershttps": "Ufiliseaști daima unâ conexiuni sigurâ anda hiu ligat(â)",
+ "underline-always": "Totna",
+ "underline-never": "Vârnâoarâ",
+ "underline-default": "Standardulu a themâľei icâ a navigatorlui",
+ "editfont-style": "Soea a fontului tu câsica di alâxiri:",
+ "editfont-default": "Standardulu a navigatorlui",
+ "editfont-monospace": "Fontu dipârtatu isea",
+ "editfont-sansserif": "Fontu fârâ serife",
+ "editfont-serif": "Fontu cu serife",
+ "sunday": "dumânicâ",
+ "monday": "luni",
+ "tuesday": "marțâ",
+ "wednesday": "ńiercuri",
+ "thursday": "gioi",
+ "friday": "viniri",
+ "saturday": "sâmbâtâ",
+ "sun": "dum",
+ "mon": "lun",
+ "tue": "mar",
+ "wed": "ńie",
+ "thu": "gio",
+ "fri": "vin",
+ "sat": "sâm",
+ "january": "Yinaru",
+ "february": "Șcurtu",
+ "march": "Marțu",
+ "april": "Apriiru",
+ "may_long": "Maiu",
+ "june": "Cirișaru",
+ "july": "Alunaru",
+ "august": "Avgustu",
+ "september": "Yizmâciunu",
+ "october": "Sumedru",
+ "november": "Brumaru",
+ "december": "Andreu",
+ "january-gen": "Yinaru",
+ "february-gen": "Șcurtu",
+ "march-gen": "Marțu",
+ "april-gen": "Apriiru",
+ "may-gen": "Maiu",
+ "june-gen": "Cirișaru",
+ "july-gen": "Alunaru",
+ "august-gen": "Avgustu",
+ "september-gen": "Yizmâciunu",
+ "october-gen": "Sumedru",
+ "november-gen": "Brumaru",
+ "december-gen": "Andreu",
+ "jan": "Yin",
+ "feb": "Șcur",
+ "mar": "Mar",
+ "apr": "Apr",
+ "may": "Mai",
+ "jun": "Cir",
+ "jul": "Alun",
+ "aug": "Avg",
+ "sep": "Yiz",
+ "oct": "Sum",
+ "nov": "Brum",
+ "dec": "Andr",
+ "january-date": "$1-li di Yinaru",
+ "february-date": "$1-li di Șcurtu",
+ "march-date": "$1-li di Marțu",
+ "april-date": "$1-li di Apriiru",
+ "may-date": "$1-li di Marțu",
+ "june-date": "$1-li di Cirișaru",
+ "july-date": "$1-li di Alunaru",
+ "august-date": "$1-li di Avgustu",
+ "september-date": "$1-li di Yizmâciunu",
+ "october-date": "$1-li di Sumedru",
+ "november-date": "$1-li di Brumaru",
+ "december-date": "$1-li di Andreu",
+ "pagecategories": "{{PLURAL:$1|Categorie|Categorii}}",
+ "category_header": "Frândzâ tu categoria \"$1\"",
+ "subcategories": "Subcategorii",
+ "category-media-header": "Media tu categoria \"$1\"",
+ "category-empty": "<em>Aestâ categorie nu ari tora nițiunu articolu icâ fișieru media.</em>",
+ "hidden-categories": "{{PLURAL:$1|Categorie ascumsâ|Categorii ascumsi}}",
+ "hidden-category-category": "Categorii ascumsi",
+ "category-subcat-count": "{{PLURAL:$2|Categoria conține mași subcategoria aestâ.|Categoria conțini {{PLURAL:$1|aestâ subcategorie|aesti $1 subcategorii}}, di-tu $2.}}",
+ "category-subcat-count-limited": "Această categorie conțini {{PLURAL:$1|subcategorie|$1 subcategorii}}.",
+ "listingcontinuesabbrev": "cont.",
+ "index-category": "Frândzâ indexati",
+ "noindex-category": "Frândzâ neindexati",
+ "broken-file-category": "Frândzâ cu ligâturi invalidi câtră fișieri",
+ "about": "Trâ aestâ",
+ "article": "Articolu",
+ "newwindow": "(si discľidi tu unâ noauâ fireastrâ)",
+ "cancel": "Alasâ",
+ "moredotdotdot": "Ma multu…",
+ "morenotlisted": "Aestâ listâ nu easti completâ (ntreagâ).",
+ "mypage": "Frândzâ",
+ "mytalk": "Muabeț",
+ "anontalk": "Muabeti trâ aestâ adresâ di IP",
+ "navigation": "Navigari",
+ "and": " și",
+ "qbfind": "Caftâ",
+ "qbbrowse": "Calcâ",
+ "qbedit": "Alâxiri",
+ "qbpageoptions": "Aestâ frândzâ",
+ "qbmyoptions": "Frândzâli a meali",
+ "faq": "Ntribări frecventi",
+ "faqpage": "Proectu:Ntribări frecventi",
+ "actions": "Acțiuni",
+ "namespaces": "Spațiu di numi",
+ "variants": "Varianti",
+ "navigation-heading": "Meniu di navigari",
+ "errorpagetitle": "Eroari (alatus)",
+ "returnto": "Toarnâ-ti $1.",
+ "tagline": "Di-tu {{SITENAME}}",
+ "help": "Agiutoru",
+ "search": "Caftâ",
+ "searchbutton": "Caftâ",
+ "go": "Du-ti",
+ "searcharticle": "Du-ti",
+ "history": "Isturia a frândzâľei",
+ "history_short": "Isturie",
+ "updatedmarker": "alâxitu di canda yinii tu soni",
+ "printableversion": "Versiuni ti tipuseari",
+ "permalink": "Ligâturâ permanentâ",
+ "print": "Tipuseari",
+ "view": "Videari",
+ "view-foreign": "Vedz la $1",
+ "edit": "Alâxire",
+ "edit-local": "Alâxeaști descrierea localâ",
+ "delete": "Așcirḑire",
+ "deletethispage": "Așteardzi frândza",
+ "undeletethispage": "Aflâ frundza aștearsâ",
+ "undelete_short": "Aflâ {{PLURAL:$1|unâ alâxiri aștearsâ|a $1 alâxiri aștearsi|a $1 di alâxiri aștearsi}}",
+ "viewdeleted_short": "Vedz {{PLURAL:$1|unâ alâxiri aștearsâ|$1 (di) alâxiri aștearsi}}",
+ "protect": "Apârâ",
+ "protect_change": "alâxeaști",
+ "protectthispage": "Protejați aestâ frândzâ",
+ "unprotect": "Alâxeaști protecția",
+ "unprotectthispage": "Alâxeaști nivellu di protejari a frândzâľei",
+ "newpage": "Frânḑâ nauâ",
+ "talkpage": "Muabeti trâ aestâ frândzâ",
+ "talkpagelinktext": "Zburari",
+ "specialpage": "Frândzâ specialâ",
+ "personaltools": "Halatili a meali",
+ "articlepage": "Vedz articolu",
+ "talk": "Muabeț",
+ "views": "Videri",
+ "toolbox": "Hâlati",
+ "userpage": "Vedz frândza a utilizatorlui",
+ "projectpage": "Vedz frândza a proectului",
+ "imagepage": "Vedz frândza fișierlui",
+ "mediawikipage": "Vedz frândza dimândăriľei",
+ "templatepage": "Vedz frândza formatlui",
+ "viewhelppage": "Vedz frânzda di agiutoru",
+ "categorypage": "Vedz-u frândza categoriľei",
+ "viewtalkpage": "Vedz muabetea",
+ "otherlanguages": "Pi alanti limbi",
+ "redirectedfrom": "(yinitâ di la $1)",
+ "redirectpagesub": "Frândzâ di redirecționari",
+ "lastmodifiedat": "Aestâ frândzâ fu alâxitâ di-tu soni pi $1, la $2.",
+ "viewcount": "Aestâ frândzâ fu mutritâ di {{PLURAL:$1|mași unâ oarâ|$1 ori}}.",
+ "protectedpage": "Frândzâ protejatâ",
+ "jumpto": "Ansari la:",
+ "jumptonavigation": "navigari",
+ "jumptosearch": "câftari",
+ "view-pool-error": "Ti jali serverili a noastri suntu xanaufilisiti tu aestu chiro.\nCama mulțâ utilizatori câtâpâtsescu s-veadâ aestâ frândzâ.\nVâ pâlâcârsimu s-așteptați unu momentu nainti s-ncârcați aestâ frândzâ diznou.\n\n$1",
+ "generic-pool-error": "Ti jali serverili a noastri suntu xanaufilisiti tu aestu chiro.\nCama mulțâ utilizatori câtâpâtsescu s-veadâ aestâ resursâ.\nVâ pâlâcârsimu s-așteptați unu momentu nainti s-ncârcați aestâ resursâ diznou.",
+ "pool-timeout": "Chirolu trâ aștiptăriľei trâ blocari (ncľideari) d-dusi",
+ "pool-queuefull": "Coada di aștiptari easti mplinâ",
+ "pool-errorunknown": "Eroari (alatusu) nicunuscutâ",
+ "pool-servererror": "Serviciulu di contorizari a rezervâľei nu ma easti disponibilu ($1).",
+ "aboutsite": "Trâ {{SITENAME}}",
+ "aboutpage": "Project:Trâ aestâ",
+ "copyright": "Conținutlu easti disponibilu sum $1, fârâ chirolu tu cari s-specificâ altâ.",
+ "copyrightpage": "{{ns:project}}:Ndirepturi di autoru",
+ "currentevents": "Evenimenti di tora",
+ "currentevents-url": "Project:Cafine",
+ "disclaimers": "Termeni",
+ "disclaimerpage": "Project:Termeni",
+ "edithelp": "Agiutoru trâ alâxiri",
+ "mainpage": "Prota frândzâ",
+ "mainpage-description": "Prota frândzâ",
+ "policy-url": "Project:Politicâ",
+ "portal": "Portalu a comunitatiľei",
+ "portal-url": "Project:Portalu a comunitatiľei",
+ "privacy": "Politicâ di confidențialitati",
+ "privacypage": "Project:Politicâ di confidențialitati",
+ "badaccess": "Eroare (alatusu) permisiuni",
+ "badaccess-group0": "Execuția a acțiuniľei țiruti nu easti permisâ.",
+ "badaccess-groups": "Acțiunea țerută easte mași trâ utilizatorii di-tu {{PLURAL:$2|gruplu|unlu di-tu grupurili}}: $1.",
+ "versionrequired": "Caftâ versiunea $1 MediaWiki",
+ "versionrequiredtext": "Versiunea $1 MediWiki easti câftatâ trâ aestâ frândzâ.\nCaftâ [[Special:Version|versiunea frândzâľei]].",
+ "ok": "Ghini",
+ "retrievedfrom": "Yinitâ di la „$1”",
+ "youhavenewmessages": "Ai $1 ($2).",
+ "youhavenewmessagesfromusers": "Ai $1 di la {{PLURAL:$3|unu altu utilizatoru|$3 utilizatori}} ($2).",
+ "youhavenewmessagesmanyusers": "Ai $1 di la cama mulțâ utilizatori ($2).",
+ "newmessageslinkplural": "{{PLURAL:$1|unâ dimândari noao|999=dimândări noi}}",
+ "newmessagesdifflinkplural": "{{PLURAL:$1|alâxirea di-tu soni|999=alâxirili proaspiti}}",
+ "youhavenewmessagesmulti": "Aveț dimândări noi la $1",
+ "editsection": "alâxire",
+ "editold": "alâxire",
+ "viewsourceold": "vez-u textu",
+ "editlink": "alâxire",
+ "viewsourcelink": "vez-u textu",
+ "editsectionhint": "Alâxeaști secțiunea: $1",
+ "toc": "Conținutu",
+ "showtoc": "aratâ",
+ "hidetoc": "ascundi",
+ "collapsible-collapse": "Apreadunâ",
+ "collapsible-expand": "Tindi",
+ "confirmable-confirm": "Hii sigur{{GENDER:$1||â}}?",
+ "confirmable-yes": "E",
+ "confirmable-no": "Nu",
+ "thisisdeleted": "Vedz icâ adu napoea $1?",
+ "viewdeleted": "Vedz $1?",
+ "restorelink": "Vedz {{PLURAL:$1|unâ alâxiri aștearsâ|$1 (di) alâxiri aștearsi}}",
+ "site-rss-feed": "$1 Abonari RSS",
+ "site-atom-feed": "$1 Abonari Atomu",
+ "page-rss-feed": "„$1” Abonari RSS",
+ "page-atom-feed": "$1 Abonari Atomu",
+ "red-link-title": "$1 (frândza nu easti)",
+ "sort-descending": "Aratâ di la nai ma marli",
+ "sort-ascending": "Aratâ di la nai ma ńițli",
+ "nstab-main": "Frândzâ",
+ "nstab-user": "Frândzâ di utilizatoru",
+ "nstab-media": "Frândzâ media",
+ "nstab-special": "Frândzâ specialâ",
+ "nstab-project": "Proectu",
+ "nstab-image": "Fișieru",
+ "nstab-mediawiki": "Dimândari",
+ "nstab-template": "Formatu",
+ "nstab-help": "Agiutoru",
+ "nstab-category": "Categorie",
+ "nosuchaction": "Aeastâ acțiuni nu easti",
+ "databaseerror-error": "Eroari (alutusu): $1",
+ "readonly": "Baza di dati easti blocatâ (ncľisâ) la nyrâpseari",
+ "viewsource": "Vez-u textu",
+ "yourname": "Numa di utilizatoru:",
+ "userlogin-yourname": "Numa di utilizatoru:",
+ "userlogin-yourname-ph": "Bagâ-u numa a ta di utilizatoru",
+ "createacct-another-username-ph": "Bagâ-u numa di utilizatoru",
+ "yourpassword": "Zboru cľeae:",
+ "yourpasswordagain": "Bagâ-u cľeae diznou:",
+ "remembermypassword": "Țâni minti ligâtura a mea pi browserlu aestu (cheari dupu $1 {{PLURAL:$1|dzuuâ|dzâli}})",
+ "login": "Leagâ-ti",
+ "nav-login-createaccount": "Leagâ-ti / Fă contu (isape)",
+ "userlogin": "Leagâ-ti / Fă contu (isape)",
+ "userloginnocreate": "Leagâ-ti",
+ "logout": "Dizleagâ-ti",
+ "userlogout": "Dizleagâ-ti",
+ "notloggedin": "Nu hii ligatu",
+ "userlogin-noaccount": "N-ai nicâ contu (isape)?",
+ "nologin": "N-ai nicâ contu (isape)? $1.",
+ "nologinlink": "Fă unu utilizatoru a tău tora",
+ "createaccount": "Fă contu (isape)",
+ "gotaccountlink": "Leagâ-ti",
+ "createacct-emailrequired": "Adresâ di carti electronicâ",
+ "createacct-emailoptional": "Adresâ di carti electronicâ (opționalu)",
+ "createacct-email-ph": "Bagâ-u adresa a ta di carti electronicâ",
+ "createacct-another-email-ph": "Bagâ-u adresa di carti electronicâ",
+ "createacct-realname": "Numa realâ (opționalu)",
+ "createaccountreason": "Furńie:",
+ "createacct-reason": "Furńie",
+ "summary": "Rezumatu:",
+ "minoredit": "Aestâ easti unâ alâxiri minorâ (ńicâ)",
+ "watchthis": "Mutrea-u frândzâ aestâ",
+ "savearticle": "Avigľea-u frândzâ",
+ "showpreview": "Previzualizare",
+ "showdiff": "Aratâ alâxirile",
+ "loginreqlink": "leagâ-ti",
+ "lineno": "Linia $1:",
+ "editundo": "turnari",
+ "searchresults": "Rezultatili câftăriľei",
+ "searchresults-title": "Rezultatili câftăriľei trâ „$1”",
+ "shown-title": "Aratâ $1 {{PLURAL:$1|rezultatu|rezultati}} pi frândzâ",
+ "searchprofile-everything": "Tutu",
+ "search-result-size": "$1 ({{PLURAL:$2|1 zboru|$2 zboarâ}})",
+ "search-section": "(secțiunea $1)",
+ "searchall": "tuti",
+ "preferences": "Prutimisiri",
+ "mypreferences": "Prutimisiri",
+ "searchresultshead": "Caftâ",
+ "youremail": "Adresâ di carti electronicâ:",
+ "username": "{{GENDER:$1|Numa di utilizatoru}}:",
+ "recentchanges": "Alâxiri",
+ "diff": "dif",
+ "hist": "ist",
+ "show": "Vedz",
+ "recentchangeslinked": "Alâxiri ligate",
+ "recentchangeslinked-feed": "Alâxiri ligate",
+ "recentchangeslinked-toolbox": "Alâxiri ligate",
+ "upload": "Pitreați fișieru",
+ "uploadbtn": "Pitreați fișieru",
+ "uploadnologin": "Nu hii ligatu",
+ "filedesc": "Rezumatu:",
+ "watchthisupload": "Mutreaști fișierlu aestu",
+ "file-anchor-link": "Fișieru",
+ "randompage": "Frândzâ di nipandicâ",
+ "brokenredirects-edit": "alâxire",
+ "brokenredirects-delete": "așteardziri",
+ "nbytes": "$1 {{PLURAL:$1|octetu|octeți}}",
+ "newpages-username": "Numa di utilizatoru:",
+ "move": "Mutari",
+ "movethispage": "Mutâ frândza aestâ",
+ "booksources-go": "Du-ti",
+ "allpagessubmit": "Du-ti",
+ "watchlist": "Frândzâ avinati",
+ "mywatchlist": "Frândzâ avinati",
+ "watchnologin": "Nu hii ligatu",
+ "watch": "Avinari",
+ "watchthispage": "Mutrea-u frândzâ aestâ",
+ "unwatch": "Scoati di-tu lista di avinari",
+ "prot_1movedto2": "[[$1]] s-mutâ tu [[$2]]",
+ "restriction-edit": "Alâxire",
+ "restriction-move": "Mutari",
+ "undelete-search-submit": "Caftâ",
+ "blanknamespace": "(Prota)",
+ "contributions": "Contribuții {{GENDER:$1|utilizatoru}}",
+ "mycontris": "Contribuții",
+ "sp-contributions-submit": "Caftâ",
+ "whatlinkshere": "Ți s-leadzi cu aestu",
+ "whatlinkshere-page": "Frândzâ:",
+ "ipbreason": "Furńie:",
+ "ipblocklist-submit": "Caftâ",
+ "contribslink": "contribuții",
+ "move-page-legend": "Mutari frândzâ",
+ "movearticle": "Mutari frândzâ",
+ "move-watch": "Mutrea-u frândzâ aestâ",
+ "movepagebtn": "Mutari frândzâ",
+ "movereason": "Furńie:",
+ "allmessages": "Mesagi di systemu",
+ "tooltip-pt-preferences": "Prutimisirili a meali",
+ "tooltip-pt-logout": "Dizleagâ-ti",
+ "tooltip-search": "Câftari tu {{SITENAME}}",
+ "tooltip-p-logo": "Vedz prota frândzâ",
+ "tooltip-n-mainpage": "Vedz prota frândzâ",
+ "tooltip-t-specialpages": "Unâ listâ cu toati frândzili speciali (di soe)",
+ "tooltip-ca-nstab-category": "Vedz-u categoria",
+ "ilsubmit": "Caftâ",
+ "imgmultigo": "Du-ti!",
+ "table_pager_limit_submit": "Du-ti",
+ "specialpages": "Frândzâ speciali"
}
"talkpagelinktext": "सम्भाषणम्",
"specialpage": "विशेषपृष्ठम्",
"personaltools": "वैयक्तिकोपकरणानि",
- "postcomment": "नवीनः विभागः",
"articlepage": "लेखः दृश्यताम्",
"talk": "सम्भाषणम्",
"views": "मतानि",
"externaldberror": "दत्तांशे प्रामाणिकताविषयकः (authentication database) दोषः स्यात् । अथवा स्वस्य बाह्यसदस्यतायां (external account) परिवर्तनं कर्तुम् अनुमतिः न भवेत् ।",
"login": "प्रविश्यताम्",
"nav-login-createaccount": "प्रविश्यताम् / सदस्यता प्राप्यताम्",
- "loginprompt": "{{SITENAME}} इत्यत्र प्रवेष्टुं ज्ञापकानि (cookies) समर्थीकरणीयानि ।",
"userlogin": "प्रविश्यताम् / सदस्यता प्राप्यताम्",
"userloginnocreate": "प्रविश्यताम्",
"logout": "निर्गमनम्",
"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": "(सञ्चिकापाठेन सह मेलः अस्ति)",
"uploadwarning": "उत्तारणस्य पूर्वसूचना ।",
"uploadwarning-text": "अधो दत्तं सञ्चिकाविवरणं संस्कृत्य पुनः यतताम् ।",
"savefile": "सञ्चिकां संरक्षतु ।",
- "uploadedimage": "\"[[$1]]\" उपारोहितानि (uploaded)",
- "overwroteimage": "\"[[$1]]\" इत्यस्य नूतनावतरणम् उत्तारयतु ।",
"uploaddisabled": "सक्रियम् उत्तारयतु ।",
"copyuploaddisabled": "निष्क्रियतः यु.आर्.एल् तः उत्तारयतु ।",
"uploaddisabledtext": "उत्तारितसञ्चिकाः निष्क्रियाः ।",
"watchlist-details": "सम्भाषणपृष्ठानि विहाय {{PLURAL:$1|$1 पृष्ठं|$1 पृष्ठानि}} भवतः/भवत्याः अवेक्षणाऽऽवलिः ।",
"wlheader-enotif": "विद्युन्मानपत्रस्य सूचनाः सक्रियाः ।",
"wlheader-showupdated": "भवतः सन्दर्शनस्य पश्चात् परिवर्तितानि पुटानि स्थूलाक्षरैः निर्दिष्टानि ।",
+ "wlnote": "अधस्तात् {{PLURAL:$1|'''1''' परिवर्तनमस्ति|अन्तिमानि '''$1''' परिवर्तनानि सन्ति}},{{PLURAL:$2|गते दिवसे|'''$2''' गतेषु दिवसेषु}}, , $3, $4. इति",
"wlshowlast": "अन्तिमाः $1 होराः, अन्तिमानि $2 दिनानि $3 दृश्यन्ताम्",
"watchlist-options": "अवेक्षणाऽऽवलेः विकल्पाः",
"watching": "निरीक्षते...",
"duplicate-defaultsort": "'''पूर्वसूचना''' \"$1\" इति पुरातनं मूलक्रमाङ्कनकुड्मलं विहाय \"$2\" इति नवीनं मूलक्रमाङ्कनकुण्डलत्वेन स्वयमेव नयति एतत् ।",
"version": "आवृत्तिः",
"version-extensions": "अनुस्थापितानि विस्तरणानि ।",
+ "version-skins": "छादन",
"version-specialpages": "विशेषपृष्ठानि",
"version-parserhooks": "विन्यासस्य आलम्बः ।",
"version-variables": "भङ्गुरम्",
"version-antispam": "अनिष्टस्य अवरोधः ।",
- "version-skins": "छादन",
"version-other": "अन्यत्",
"version-mediahandlers": "माध्यनिर्वाहकाः ।",
"version-hooks": "आलम्बाः ।",
"talkpagelinktext": "Ырытыы",
"specialpage": "Анал сирэй",
"personaltools": "Тус бэйэ туттар тэриллэрэ",
- "postcomment": "Саҥа түһүмэх",
"articlepage": "Ыстатыйаны көр",
"talk": "Ырытыы",
"views": "Көрүү",
"externaldberror": "Тас киирии билиитин олоҕун сыыһата буолла, эбэтэр тас киирии билииҥ олоҕун саҥардар кыаҕыҥ суох.",
"login": "Киир",
"nav-login-createaccount": "Киир / бэлиэтэн",
- "loginprompt": "{{SITENAME}} саайтыгар киирэргэ «cookies» туттары көҥүллээ.",
"userlogin": "Киир / бэлиэтэн",
"userloginnocreate": "Киир",
"logout": "Тахсыы",
"searchprofile-advanced-tooltip": "Этиллибит аат далларыгар көрдөөһүн",
"search-result-size": "$1 ({{PLURAL:$2|1 тыл|$2 тыл}})",
"search-result-category-size": "{{PLURAL:$1|$1 элэмиэн|$1 элэмиэннэр}} ({{PLURAL:$2|$2 субкатегория|$2 субкатегориялар}}, {{PLURAL:$3|$3 билэ|$3 билэлэр}})",
- "search-result-score": "Релевантноһа: $1%",
"search-redirect": "(утаарыы $1)",
"search-section": "($1 сиэксийэ)",
"search-file-match": "(билэ иһинээҕитин кытта сөп түбэһэр)",
"uploadwarning": "Сэрэтии",
"uploadwarning-text": "Бука диэн аллара баар билэ туһунан суругу уларыт уонна өссө хатылаа.",
"savefile": "Билэни суруттарыы",
- "uploadedimage": "суруттарылынна \"[[$1]]\"",
- "overwroteimage": "\"[[$1]]\" киллэриллибит саҥа торума",
"uploaddisabled": "Суруттарыы бобуллубут",
"copyuploaddisabled": "URL көмөтүнэн хачайдыыр кыах араарыллыбыт.",
"uploaddisabledtext": "Билэлэри суруттарар көҥүллэммэт.",
"watchlist-details": "Ырытыы сирэйдэрин аахпатахха {{PLURAL:$1|$1 сирэйи кэтиигин|$1 сирэй эн кэтэбилгэр сылдьар}}.",
"wlheader-enotif": "Эл. почтанан биллэрии холбоммут.",
"wlheader-showupdated": "Бүтэһик киирииҥ кэннэ уларыйбыт сирэйдэр '''модьу''' бичигинэн бэлиэтэннилэр.",
- "wlnote2": "Манна {{PLURAL:$1|кэнники чааска|кэнники <strong>$1</strong> чааска}} оҥоһуллубут уларытыылар көстөллөр, $2 $3.",
+ "wlnote": "Манна кэлиҥҥи {{PLURAL:$2|чаас|'''$2''' чаас}} иһигэр оҥоһуллубут бүтэһик $1 уларытыы көрдөрүлүннэ, бу кэмҥэ туругунан $3 $4.",
"wlshowlast": "бүтэһик $1 чааска $2 күҥҥэ $3 көрдөр",
"watchlist-options": "Кэтээн көрүү туруоруутун уларытыы",
"watching": "Кэтээ...",
"duplicate-defaultsort": "Болҕой: Наардааһын «$2» күлүүһэ урукку «$1» күлүүһү сабар (Ключ сортировки переопределяет прежний ключ).",
"version": "MediaWiki барыла (биэрсийэтэ)",
"version-extensions": "Туруоруллубут расширениялар",
+ "version-skins": "Тас көстүү барыллара",
"version-specialpages": "Аналлаах сирэйдэр",
"version-parserhooks": "синтаксическай анализатор перехватчиктара",
"version-variables": "Уларыйар дааннайдар (переменнайдар)",
"version-antispam": "Спаамтан көмүскэнии",
- "version-skins": "Тас көстүү барыллара",
"version-other": "Атын",
"version-mediahandlers": "Медиа уларытааччылар",
"version-hooks": "Перехватчиктар",
"talkpagelinktext": "Ro̠ṛme",
"specialpage": "Osokayteaḱ sakam",
"personaltools": "Nijaḱ jontropạti",
- "postcomment": "Nãwã pahaṭa",
"articlepage": "Menaḱ sakam uduḱme",
"talk": "Galmarao",
"views": "Ñel koyoḱ",
"externaldberror": "Hoe daṛeyaḱa jahan bahre reaḱ jacaeaḱ ḍaṭabes vul hoeakana se amaḱ bahre reaḱ ekaunṭ do nahaḱ halot aguire ạidạri bạnuḱa.",
"login": "bolok' duar",
"nav-login-createaccount": "Boloḱ́ duạr / ekaunt tearme",
- "loginprompt": "{{SITENAME}}-re boloḱem meneḱ khan amaḱ sendrare kuki kạmi ehoṕ hoyoḱtama.",
"userlogin": "Bhitri bolon / ekaunṭ tear",
"userloginnocreate": "Bhitri bolo",
"logout": "Bahre oḍoń",
"filedesc": "Guṭ katha",
"fileuploadsummary": "Guṭ katha",
"savefile": "Rẽt rukhiyaymẽ",
- "uploadedimage": "\"[[$1]]\" rakaṕ huyena",
"upload-description": "Rẽt reaḱ jạṛ",
"watchthisupload": "Noa rẽt ńelmẽ",
"upload-file-error": "Bhitri reaḱ bhul",
"לערי ריינהארט",
"아라",
"Via maxima",
- "Uharteko"
+ "Uharteko",
+ "Taxandru"
]
},
"tog-underline": "Sutalìnia sos ligàmenes",
- "tog-hideminor": "Cua sos càmbios minores in sa pàgina de sos ùrtimas càmbios",
+ "tog-hideminor": "Cua is acontzos minores in sa pàgina de is ùrtimas mudàntzias",
"tog-hidepatrolled": "Cua sos càmbios verificados in sos ùrtimos càmbios",
"tog-newpageshidepatrolled": "Cua sas pàginas verificadas dae sa lista de sas pàginas noas",
"tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totu sos càmbios, non sos prus reghentes ebbia",
"retrievedfrom": "Bogadu dae \"$1\"",
"youhavenewmessages": "Tenes $1 ($2).",
"youhavenewmessagesmanyusers": "Tenes $1 dae utentes ($2).",
+ "newmessageslinkplural": "{{PLURAL:$1|unu messàggiu nou|999=messàggios noos}}",
"youhavenewmessagesmulti": "Tenes messàgios noos in $1",
"editsection": "càmbia",
"editold": "càmbia",
"hidetoc": "cua",
"collapsible-collapse": "Serra e istringhe",
"collapsible-expand": "Aberi",
+ "confirmable-yes": "Eja",
+ "confirmable-no": "No",
"thisisdeleted": "Càstiare o recuperare $1?",
"viewdeleted": "Vista $1?",
"restorelink": "{{PLURAL:$1|unu càmbiu burradu|$1 càmbios burrados}}",
"nospecialpagetext": "<strong>As pedidu una pàgina ispetziale non vàlida.</strong>\n\nUna lista de pàginas ispetziales vàlidas l'agatas in [[Special:SpecialPages|{{int:specialpages}}]].",
"error": "Faddina",
"databaseerror": "Faddina de sa base de datos",
+ "databaseerror-function": "Funtzione: $1",
"readonly": "Base de datos blocada",
"enterlockreason": "Inserta su motivu de su blocu, ispetzifichende su momentu probàbile chi su blocu at a agabbare",
"readonlytext": "In custu momentu su database est bloccadu dae aciunturas e àteras modificas, probabilmente pro ordinaria manutentzione a su database, a pustis de custas at a èssere normale torra.\n\nS'aministradore chi dd'at bloccadu at donadu custa ispiegatzione: $1",
"badtitle": "Tìtulu malu",
"badtitletext": "Su tìtulu de sa pàgina ch'as pediu est bùidu, isballiau, o iscritu in is cullegamentus inter-wiki in manera non currègia o cun caràteres no amìtius.",
"viewsource": "Càstia testu codificadu",
+ "viewsource-title": "Càstia sa mitza de $1",
"actionthrottled": "Atzione rimandada",
"namespaceprotected": "Non tenes su permissu de acontzare is pàginas in su nùmene-lugu '''$1'''.",
"ns-specialprotected": "Is pàginas ispetziales non podent èssere acontzadas.",
"exception-nologin": "Non ses intrau",
"virus-scanfailed": "scansione faddida (còdixe $1)",
"virus-unknownscanner": "antivirus disconnotu:",
- "logouttext": "'''As acabadu sa sessione.'''\n\nImmoe podes sighire a impreare {{SITENAME}} in forma anònima, o ti podes <span class='plainlinks'>[$1 identificare torra]</span> comente su de prima o comente usuàriu diferente.\nTene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighire a pàrrer comente cando fias identificadu, fintzas a cando non ddas renfriscas.",
+ "logouttext": "<strong>As acabadu sa sessione.</strong>\n\nTene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighire a pàrrer comente cando fias identificadu, fintzas a cando non ddas renfriscas dae su browser tuo.",
"yourname": "Nùmene utente",
+ "userlogin-yourname": "Nùmene usuàriu",
+ "userlogin-yourname-ph": "Inserta su nùmene usuàriu tuo",
+ "createacct-another-username-ph": "Inserta su nùmene usuàriu:",
"yourpassword": "Paràula de òrdine:",
+ "userlogin-yourpassword": "Password",
+ "userlogin-yourpassword-ph": "Inserta sa password tua",
+ "createacct-yourpassword-ph": "Inserta una password",
"yourpasswordagain": "Repiti sa paràula de òrdine:",
+ "createacct-yourpasswordagain": "Cunfirma sa password",
+ "createacct-yourpasswordagain-ph": "Inserta sa password torra",
"remembermypassword": "Ammenta sa paràula de òrdine in custu carculadore (pro unu màssimu de $1 {{PLURAL:$1|die|dies}})",
"yourdomainname": "Ispetzìfica su domìniu",
"login": "Intra",
"createaccount": "Crea contu",
"gotaccount": "Tenes giai unu contu? $1.",
"gotaccountlink": "Identìfica·ti",
- "createaccountmail": "via e-mail",
+ "createacct-emailrequired": "Indirutzu Email",
+ "createaccountmail": "Imprea una password a sorte e ispedidda a su indiritzu email ispetzificadu",
"createaccountreason": "Motivu:",
+ "createacct-reason": "Motivu",
+ "createacct-benefit-body1": "{{PLURAL:$1|acontzu|acontzos}}",
+ "createacct-benefit-body2": "{{PLURAL:$1|pàgina|pàginas}}",
"badretype": "Sas paràulas de òrdine chi as insertadu non currispondent.",
"userexists": "Su nùmene usuàriu insertadu est giai impreadu.\nSèbera unu nùmene diferente.",
"loginerror": "Faddina de identificatzione",
"wrongpasswordempty": "No as iscritu sa paràula de òrdine.\nProva torra.",
"passwordtooshort": "Sas paràulas de òrdine devent tènnere a su mancu {{PLURAL:$1|1 caràtere|$1 caràteres}}.",
"password-name-match": "Sa paràula de òrdine tua devet èssere diferente dae su nùmene utente tuo.",
- "mailmypassword": "Ispedi una password noa a s'indiritzu e-mail miu",
+ "mailmypassword": "Resetta sa password",
"passwordremindertitle": "Servìtziu Password Reminder di {{SITENAME}}",
"passwordremindertext": "Calicunu (probabilmenti tue, cun s'indiritzu IP $1) at pediu de arritziri una password noa pro intrare a {{SITENAME}} ($4).\nUna password temporanea pro s'usuàriu \"$2\" est istada impostada a \"$3\".\nChi custu fiat ne is intentziones tuas, depis intrare (log in) e scioberari una password noa.\nSa password temporanea tua at a iscadiri in {{PLURAL:$5|una die|$5 dies}}.\n\nChi non ses istadu a pediri sa password, o chi as torrau a agatare sa password torra e non da depis cambiari prus, non cunsideras custu messagiu e sighi a impreare sa password beccia.",
"noemail": "Peruna post.el. resurtat registrada pro s'utente \"$1\".",
"emailauthenticated": "S'indiritzu e-mail tuo est istadu autenticau su $2 a is $3.",
"emailconfirmlink": "Cunfirma s'indiritzu e-mail tuo",
"accountcreated": "Contu creadu",
- "accountcreatedtext": "S'account usuàriu pro $1 est stadu creadu.",
+ "accountcreatedtext": "S'account usuàriu pro [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) est stadu creadu.",
"createaccount-title": "Creatzione de unu contu pro {{SITENAME}}",
"loginlanguagelabel": "Limba: $1",
"createacct-another-realname-tip": "Su nomini beru pois fai de mancu de ddu ponni.\nSi sceberas de du ponni, at a essi imperau po arreconnosci a tui su traballu tuu.",
"newpassword": "Paràula de òrdine noa:",
"retypenew": "Torra a iscrìere sa paràula de òrdine noa:",
"resetpass_submit": "Càmbia sa paràula de òrdine e identìfica·ti",
- "resetpass_forbidden": "Non faghet a cambiare sas paràulas de òrdine",
- "resetpass-no-info": "Deves èssere identificadu pro abèrrere custa pàgina deretu.",
- "resetpass-submit-loggedin": "Càmbia paràula de òrdine",
+ "resetpass_forbidden": "Non faghet a cambiare sa password",
+ "resetpass-no-info": "Depes èsser identificadu pro abèrrer custa pàgina deretu.",
+ "resetpass-submit-loggedin": "Càmbia password",
"resetpass-submit-cancel": "Burra",
- "resetpass-temp-password": "Paràula de òrdine temporànea:",
+ "resetpass-temp-password": "Password temporànea:",
+ "passwordreset": "Reseta sa password",
+ "passwordreset-legend": "Reseta sa password",
+ "passwordreset-username": "Nùmene usuàriu",
+ "passwordreset-email": "Indiritzu email:",
+ "passwordreset-emailtitle": "Particulares de s'usuàriu in {{SITENAME}}",
+ "changeemail": "Càmbia indiritzu email",
+ "changeemail-oldemail": "Indiritzu email atuale:",
+ "changeemail-newemail": "Indiritzu email nou:",
+ "changeemail-none": "(nudda)",
+ "changeemail-password": "Sa password tua pro {{SITENAME}}:",
+ "changeemail-submit": "Càmbia email",
+ "changeemail-cancel": "Annudda",
+ "resettokens": "Reseta tokens",
"bold_sample": "Testu Grassu",
"bold_tip": "Testu Grassu",
"italic_sample": "Testu Cursivu",
"link_sample": "Tìtulu ligàmene",
"link_tip": "Ligàmene internu",
"extlink_sample": "http://www.example.com tìtulu de su ligàmene",
- "extlink_tip": "Ligàmene esternu (ammenta su prefissu http://)",
+ "extlink_tip": "Ligàmene a foras (amenta su prefissu http://)",
"headline_sample": "Testu de su tìtulu",
"headline_tip": "Tìtulu de su segundu livellu",
"nowiki_sample": "Inserta su testu non-formatadu inoghe",
"image_sample": "Esèmpiu.jpg",
"image_tip": "Incòrpora una pintura",
"media_sample": "Esèmpiu.ogg",
- "media_tip": "Ligàmene a unu documentu",
+ "media_tip": "Ligàmene a unu file multimediale",
"sig_tip": "Firma cun data e ora",
"hr_tip": "Lìnia orizontale (de impreare cun critèriu)",
"summary": "Ogetu:",
"subject": "Tema/tìtulu:",
- "minoredit": "Custu est unu càmbiu minore:",
+ "minoredit": "Custu est unu càmbiu minore",
"watchthis": "Pone custa pàgina in sa watchlist mea",
"savearticle": "Sarva sa pàgina",
- "preview": "Anteprima",
- "showpreview": "Ammustra s'anteprima",
- "showdiff": "Ammustra sos càmbios",
+ "preview": "Antiprima",
+ "showpreview": "Amosta s'antiprima",
+ "showdiff": "Amosta is càmbios",
"anoneditwarning": "'''Dae cara:''' Non ses identificadu (log in).\nS'indiritzu IP tuo at a èssere registradu in s'istòria de custa pàgina.",
"anonpreviewwarning": "''Non ses identificadu. Sarvende s'indiritzu IP tuo at a èssere registradu in s'istòria de sa pàgina.''",
"missingcommenttext": "Inserta unu cummentu inoghe suta.",
- "summary-preview": "Anteprima ogetu:",
- "subject-preview": "Anteprima tema/tìtulu:",
- "blockedtitle": "S'utente est istadu blocadu",
+ "summary-preview": "Antiprima ogetu:",
+ "subject-preview": "Antiprima tema/tìtulu:",
+ "blockedtitle": "S'usuàriu est istadu bloccadu",
"blockedtext": "'''Custu nùmene usuàriu o indiritzu IP est stadu bloccadu.'''\n\nSu bloccu est stadu postu dae $1. Su motivu de su bloccu est: ''$2''\n\n* Su bloccu incumentzat: $8\n* Su bloccu scadit: $6\n* Intervallu de bloccu: $7\n\nSi boles, podes tzerriare $1 o un'àteru [[{{MediaWiki:Grouppage-sysop}}|amministradore]] pro faeddare de su bloccu.\n\nNota ca sa funtzione 'Ispedi un'e-mail a custu usuàriu' no est ativa ki no est stadu registradu un'indiritzu e-mail vàlidu in is [[Special:Preferences|preferèntzias]] tuas o ki s'usu de custa funtzione est stadu bloccadu.\n\nS'indiritzu IP atuale est $3, su nùmeru ID de su bloccu est #$5.\nPro praxere spetzìfica totu is particulares in antis in carche siat pregunta de acrarimentu.",
"blockednoreason": "perunu motivu inditadu",
"loginreqtitle": "Identificatzione rechesta",
"loginreqlink": "identìfica·ti",
- "loginreqpagetext": "Deves èssere $1 pro bìdere àteras pàginas.",
- "accmailtitle": "Paràula de òrdine imbiada.",
+ "loginreqpagetext": "Depes èsser $1 pro bìer àteras pàginas.",
+ "accmailtitle": "Password ispedida.",
"newarticle": "(Nou)",
"newarticletext": "Custa pàgina no esistit galu.\nPro creare sa pàgina, scrie in su box inoghe in bàsciu (abbàida sa [$1 pàgina de agiudu] pro àteras informatziones).\nSi ses intradu inoghe pro sbàlliu, carca in su browser tuo su butone '''back/indietro'''.",
"anontalkpagetext": "----''Custa est sa pàgina de cuntierra de unu usuàriu anònimu ki no at creadu unu account galu, o ki non dd'usat. Pro custu impreamus su nùmeru de indiritzos IP pro ddu identificare. Is indiritzos IP podent però èsser cundivìdidos dae unos cantos usuàrios. Si ses unu usuàriu anònimu e ritenes ki custos cummentos non sunt diretos a tue, pro praxere [[Special:UserLogin/signup|crea unu account]] o [[Special:UserLogin|identifica·ti (log in)]] pro evitare cunfusione cun àteros usuàrios anònimos.''",
"userpage-userdoesnotexist-view": "S'account de s'usuàriu \"$1\" no est stadu registradu.",
"updated": "(Atualizadu)",
"note": "'''Nota:'''",
- "previewnote": "'''Regorda·ti ca custa est feti una ANTIPRIMA. Is mudàntzias tuas non sunt galu sarbadas!'''",
+ "previewnote": "<strong>Regorda·ti ca custa est feti una ANTIPRIMA.</strong>\nIs mudàntzias tuas non sunt galu sarbadas!",
+ "continue-editing": "Bae a s'àrea de acontzu",
"previewconflict": "Custa antiprima rapresentat su testu in s'àrea acontzu testu de susu comente at a pàrrer si dda sarbas.",
- "editing": "Càmbiu de $1",
+ "editing": "Cambiende $1",
+ "creating": "Creande $1",
"editingsection": "Cambiende $1 (setzione)",
"editingcomment": "Acontzu de $1 (setzione noa)",
"editconflict": "Cunflitu de editzione: $1",
"moveddeleted-notice": "Custa pàgina est istada fuliada.\nSu registru de is fuliaduras e moviduras de sa pàgina est ammustradu pro informatzione.",
"log-fulllog": "Abbista su registru intreu",
"edit-conflict": "Cunflitu de editzione.",
+ "postedit-confirmation-created": "Sa pàgina est stada creada",
+ "postedit-confirmation-restored": "Sa pàgina est stada restaurada",
+ "postedit-confirmation-saved": "S'acontzu tuo est stadu sarbadu",
+ "content-model-wikitext": "wikitestu",
+ "content-model-javascript": "JavaScript",
+ "content-model-css": "CSS",
"viewpagelogs": "Càstia sos registros de custa pàgina",
"nohistory": "Non b'est sa stòria de is acontzos pro custa pàgina.",
"currentrev": "Revisione currente",
"currentrev-asof": "Versione currente de is $1",
"revisionasof": "Revisione de is $1",
- "revision-info": "Revisione de is $1 dae $2",
+ "revision-info": "Revisione de su $4 a is $5 de {{GENDER:$6|$2}}$7",
"previousrevision": "← Acontzu in antis",
"nextrevision": "Acontzu in fatu →",
"currentrevisionlink": "Revisione currente",
"histlegend": "Cunfrontu intre versiones: sebera sa casella de sa versione ki boles e carca \"Invio\" o su butone in bàsciu.<br />\nCosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente,\n'''({{int:last}})''' = diferèntzias cun sa versione in antis, '''{{int:minoreditletter}}''' = acontzu minore.",
"history-fieldset-title": "Sfògia sa stòria",
"history-show-deleted": "Petzi borrados",
- "histfirst": "Prima",
- "histlast": "Ã\99rtima",
+ "histfirst": "prima",
+ "histlast": "ùrtima",
"historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
"historyempty": "(bùida)",
"history-feed-item-nocomment": "$1 su $2",
"rev-delundel": "ammustra/cua",
"rev-showdeleted": "ammustra",
"revdelete-show-file-submit": "Eja",
- "revdelete-radio-set": "Eja",
+ "revdelete-radio-set": "Cua",
+ "revdelete-log": "Motivu:",
"revdel-restore": "Muda sa visibilidade",
"pagehist": "Istòria de sa pàgina",
"deletedhist": "Istòria fuliada",
"mergehistory-no-source": "Sa pàgina de orìgine $1 no esistit.",
"mergehistory-reason": "Motivu:",
"revertmerge": "Iscontza s'unione",
- "history-title": "Istòria de is revisiones de \"$1\"",
+ "history-title": "$1: Istòria de is revisiones",
"lineno": "Lìnia $1:",
"compareselectedversions": "Cumpara versiones scioberadas",
"editundo": "annulla",
"searchprofile-articles-tooltip": "Chirca in $1",
"searchprofile-images-tooltip": "Chirca files",
"search-result-size": "$1 ({{PLURAL:$2|1 faeddu|$2 faeddos}})",
- "search-result-score": "Rilevàntzia: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(setzione $1)",
"search-suggest": "Fortzis fias chirchende: $1",
"search-interwiki-caption": "Progetos frades",
- "search-interwiki-default": "$1 resurtados:",
+ "search-interwiki-default": "Resurtados dae $1:",
"search-interwiki-more": "(àteru)",
"searchall": "totu",
"showingresults": "Inoghe sighende {{PLURAL:$1|benit ammustradu '''1''' resurtadu|benint ammustrados '''$1''' resurtados}} incumentzende dae su nùmeru '''$2'''.",
"timezoneregion-asia": "Àsia",
"timezoneregion-australia": "Austràlia",
"timezoneregion-europe": "Europa",
- "prefs-searchoptions": "Possibilidades a subra de sa chirca",
+ "prefs-searchoptions": "Chirca",
"prefs-namespaces": "Nùmene-logos",
"prefs-files": "Files",
"youremail": "E-mail:",
- "username": "Nùmene usuàriu:",
+ "username": "{{GENDER:$1|Nùmene usuàriu}}:Nùmene usuàriu",
"prefs-registration": "Ora de registratzione:",
"yourrealname": "Nùmene beru:",
"yourlanguage": "Limba:",
"prefs-info": "Informatzione bàsica",
"prefs-signature": "Firma",
"prefs-dateformat": "Formadu data",
- "prefs-advancedediting": "Sèberos avantzados",
+ "prefs-advancedediting": "Sèberos generales",
+ "prefs-preview": "Antiprima",
"prefs-advancedrc": "Sèberos avantzados",
"prefs-advancedrendering": "Sèberos avantzados",
"prefs-advancedsearchoptions": "Sèberos avantzados",
"prefs-advancedwatchlist": "Sèberos avantzados",
+ "prefs-tokenwatchlist": "Token",
"prefs-diffs": "Diferèntzias",
"userrights-user-editname": "Inserta unu nùmene usuàriu:",
- "editinguser": "Cambiamentu de is deretos usuàriu de s'usuàriu '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+ "editinguser": "Cambiamentu de is deretos usuàriu de s'usuàriu <strong>[[User:$1|$1]]</strong> $2",
"userrights-reason": "Motivu:",
"userrights-irreversible-marker": "$1*",
"group": "Grupu:",
"group-sysop": "Amministradores",
"group-bureaucrat": "Buròcrates",
"group-all": "(totus)",
- "group-user-member": "Usuàriu",
- "group-autoconfirmed-member": "Autocunfirmados usuàrios",
- "group-bot-member": "Bot",
- "group-sysop-member": "Amministradore",
- "group-bureaucrat-member": "burocrate",
+ "group-user-member": "{{GENDER:$1|usuàriu}}",
+ "group-autoconfirmed-member": "{{GENDER:$1|usuàrios autocunfirmados}}",
+ "group-bot-member": "{{GENDER:$1|bot}}",
+ "group-sysop-member": "{{GENDER:$1|aministradore}}",
+ "group-bureaucrat-member": "{{GENDER:$1|buròcrate}}",
"grouppage-user": "{{ns:project}}:Usuàrios",
"grouppage-autoconfirmed": "{{ns:project}}:Usuàrios autocunfirmadus",
"grouppage-bot": "{{ns:project}}:Bots",
"right-reupload": "Subra-iscrìere files esistentes",
"right-reupload-own": "Subra-iscrìere files esistentes carrigados dae issetotu",
"right-upload_by_url": "Carrigare files dae unu URL",
- "right-autoconfirmed": "Acontzare pàginas mesu-amparadas",
+ "right-autoconfirmed": "No tenet lìmite de atziones pro indiritzos IP",
"right-delete": "Fuliare pàginas",
"right-browsearchive": "Chircare pàginas fuliadas",
"right-undelete": "Restaurare una pàgina",
"recentchanges-label-newpage": "Custu acontzu at creadu una pàgina noa",
"recentchanges-label-minor": "Custu est unu acontzu minore",
"recentchanges-label-bot": "Custu acontzu est stadu fatu dae unu bot",
- "recentchanges-legend-newpage": "$1 - pàgina noa",
- "rcnotefrom": "Sas chi sighint sunt sas mudàntzias dae '''$2''' (fintzas a '''$1''').",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (càstia [[Special:NewPages|is pàginas noas]])",
+ "rcnotefrom": "{{PLURAL:$5|Sa chi sighit est sa mudàntzia|Sas chi sighint sunt sas mudàntzias}} dae <strong>$3, $4</strong> (amostadas fintzas a <strong>$1</strong>).",
"rclistfrom": "Ammustra mudàntzias dae $3 $2",
"rcshowhideminor": "$1 acontzos minores",
"rcshowhideminor-show": "Amosta",
"rcshowhidebots": "$1 bots",
"rcshowhidebots-show": "Amosta",
"rcshowhidebots-hide": "Cua",
- "rcshowhideliu": "$1 usuàrios intraus",
+ "rcshowhideliu": "$1 usuàrios registrados",
"rcshowhideliu-show": "Amosta",
"rcshowhideliu-hide": "Cua",
"rcshowhideanons": "$1 usuàrios anònimos",
"rc_categories_any": "Calesisiat",
"rc-change-size": "$1",
"newsectionsummary": "/* $1 */ setzione noa",
- "rc-enhanced-expand": "Ammustra particulares (esigit JavaScript)",
+ "rc-enhanced-expand": "Amosta particulares",
"rc-enhanced-hide": "Cua particulares",
"recentchangeslinked": "Mudàntzias ligadas",
"recentchangeslinked-feed": "Mudàntzias ligadas",
"uploadbtn": "Càrriga file",
"reuploaddesc": "Torra a su mòdulu pro su carrigamentu.",
"uploadnologin": "Non ses intrau",
- "uploadnologintext": "Depes èsser [[Special:UserLogin|identificadu (log in)]] pro carrigare files.",
+ "uploadnologintext": "Depes èsser $1 pro carrigare files.",
"uploaderror": "Faddina de carrigamentu",
"uploadtext": "Imprea su modulu a suta pro carrigare files nous.\nPro castiare o chircare is files giai carrigaus, bae a sa [[Special:FileList|lista de is files carrigaus]]. Carrigamentos de files e de noas versiones de files sunt registradas in su [[Special:Log/upload|registru de carrigamentu]], is burraduras in su [[Special:Log/delete|registru burraduras]].\n\nPro insertare unu file aintru de una pàgina, tocat a faghere unu cullegamentu tipu custu:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' pro impreare sa versione cumpleta de su file\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|testo alternativo]]</nowiki></code>''' pro impreare una versione lada 200 pixel insertada in d'unu box, allinniada a manca e cun 'testu alternativu' comente didascalia\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' pro ingenerare unu cullegamentu a su file chentza de du biri",
"uploadlogpage": "Carrigadas",
"badfilename": "Su nùmene de su file est stadu cunvertidu in \"$1\".",
"uploadwarning": "Avvisu de carrigamentu",
"savefile": "Sarva file",
- "uploadedimage": "carrigadu \"[[$1]]\"",
"upload-source": "File de orìgine",
"sourcefilename": "Nùmene de su file de orìgine:",
"sourceurl": "Diretzione originària:",
"upload-file-error": "Faddina a intru",
"license": "Licèntzia:",
"license-header": "Licèntzia",
- "upload_source_file": " (unu file in su computer tuo)",
+ "upload_source_file": "(su file seberadu in su computer tuo)",
"imgfile": "file",
"listfiles": "Lista de is files",
"listfiles_date": "Data",
"protectedtitles": "Tìtulus amparadus",
"listusers": "Lista usuàrios",
"usereditcount": "$1 {{PLURAL:$1|acontzu|acontzos}}",
- "usercreated": "Creadu su $1 a is $2",
+ "usercreated": "{{GENDER:$3|Creadu}} su $1 a is $2",
"newpages": "Pàginas noas",
"newpages-username": "Nùmene usuàriu:",
"move": "Movi",
"booksources-search-legend": "Chirca fontes libràrias",
"booksources-isbn": "ISBN:",
"booksources-go": "Bae",
- "specialloguserlabel": "Usuàriu:",
- "speciallogtitlelabel": "Tìtulu:",
+ "specialloguserlabel": "Atzione fata dae:",
+ "speciallogtitlelabel": "Atzione fata subra:",
"log": "Registros",
"allpages": "Totu is pàginas",
"prevpage": "Pàgina in antis ($1)",
"allpages-bad-ns": "Su nùmene-logu \"$1\" non esistit in {{SITENAME}}.",
"categories": "Categorias",
"sp-deletedcontributions-contribs": "contributziones",
- "linksearch": "Acàpios a foras",
+ "linksearch": "Chirca acàpios de foras",
"linksearch-ns": "Nùmene-logu:",
"linksearch-ok": "Chirca",
"listusers-submit": "Ammustra",
"emailuser": "E-mail a custu usuàriu",
"emailpage": "Ispedi una missada a s'usuàriu",
"emailpagetext": "Imprea su mòdulu a suta pro ispedire una missada eletrònica a custu usuàriu.\nS'indiritzu chi as insertadu in is [[Special:Preferences|preferèntzias usuàriu tuas]] at a pàrrere comente su chi at ispedidu sa e-mail, pro fàghere sa manera chi su destinatàriu ti respundat deretu.",
- "defemailsubject": "Missada dae {{SITENAME}}",
+ "defemailsubject": "Missada dae s'usuàriu \"$1\" de {{SITENAME}}",
"noemailtitle": "Perunu indiritzu e-mail",
"noemailtext": "Custu usuàriu no at ispetzificadu un indiritzu e-mail vàlidu.",
"email-legend": "Imbia una missada e-mail a un àteru usuàriu de {{SITENAME}}",
"mywatchlist": "Pàginas annotadas",
"nowatchlist": "No as indicadu pàginas in sa watchlist tua.",
"watchnologin": "No intrau (log in)",
- "addedwatchtext": "Sa pàgina \"[[:$1]]\" est istada aciunta a sa [[Special:Watchlist|watchlist]] tua.\nIs mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a bennere elencadas inoe, e su tìtulu at a aparire in '''grassetto''' in sa pàgina de is [[Special:RecentChanges|ùrtimas mudàntzias]] pro du bidere mengius.",
+ "addedwatchtext": "Sa pàgina \"[[:$1]]\" est istada aciunta a sa [[Special:Watchlist|watchlist]] tua.\nIs mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a benner elencadas inoe.",
"removedwatchtext": "Sa pàgina \"[[:$1]]\" est istada tirada dae sa [[Special:Watchlist|watchlist tua]].",
"watch": "Pone in sa watchlist",
"watchthispage": "Pone ogru a custu artìculu",
"namespace": "Nùmene-logu:",
"invert": "Fùrria sa seletzione",
"blanknamespace": "(Printzipale)",
- "contributions": "Contributziones usuàriu",
+ "contributions": "Contributziones {{GENDER:$1|usuàriu}}",
"contributions-title": "Contributziones de $1",
"mycontris": "Contributziones meas",
- "contribsub2": "Pro $1 ($2)",
+ "contribsub2": "Pro {{GENDER:$3|$1}} ($2)",
"nocontribs": "Nessuna modifica trovata conformemente a questi criteri.",
- "uctop": "(ùrtimu de sa pàgina)",
+ "uctop": "(atuale)",
"month": "Dae su mese (e in antis):",
"year": "Dae s'annu (e in antis):",
"sp-contributions-newbies": "Ammustra feti is contributziones de is accounts noos",
"nolinkshere-ns": "Peruna pàgina ligat a '''[[:$1]]''' in su nùmene-logu seberadu.",
"isredirect": "redirect",
"istemplate": "inclusione",
- "isimage": "acàpiu pintura",
+ "isimage": "acàpiu a file",
"whatlinkshere-prev": "{{PLURAL:$1|cabudianu|cabudianos $1}}",
"whatlinkshere-next": "{{PLURAL:$1|imbeniente|imbenientes $1}}",
"whatlinkshere-links": "← acàpius",
"whatlinkshere-hidetrans": "$1 inclusionis",
"whatlinkshere-hidelinks": "$1 acàpius",
"whatlinkshere-filters": "Filtros",
- "blockip": "Blocca usuàriu",
+ "blockip": "Blocca {{GENDER:$1|usuàriu}}",
"blockip-legend": "Blocca usuàriu",
"blockiptext": "Usa il modulo sottostante per bloccare l'accesso con diritto di scrittura da uno specifico indirizzo IP. Questo blocco deve essere operato SOLO per prevenire atti di vandalismo, ed in stretta osservanza dei principi tutti della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]]. Il blocco non può in nessun caso essere applicato per motivi ideologici.\nScrivi un motivo specifico per il quale questo indirizzo IP dovrebbe a tuo avviso essere bloccato (per esempio, cita i titoli di pagine eventualmente già oggetto di vandalismo editoriale).",
"ipaddressorusername": "Indiritzu IP o nùmene usuàriu:",
"ipboptions": "2 oras:2 hours,1 die:1 day,3 dies:3 days,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite",
"badipaddress": "S'indiritzu IP indicadu non est currègidu.",
"blockipsuccesssub": "Bloccu esecutivu",
- "blockipsuccesstext": "[[Special:Contributions/$1|$1]] è stadu bloccadu. <br />\nAbbàida sa [[Special:BlockList|lista de IP bloccados]] pro bìder sas bloccaduras.",
+ "blockipsuccesstext": "[[Special:Contributions/$1|$1]] è stadu bloccadu. <br />\nCàstia sa [[Special:BlockList|lista de bloccados]] pro bìder sas bloccaduras.",
"ipb-edit-dropdown": "Acontza su motivu de su bloccu",
"ipb-unblock-addr": "Sblocca $1",
- "ipb-blocklist-contribs": "Contributziones de $1",
+ "ipb-blocklist-contribs": "Contributziones de {{GENDER:$1|$1}}",
"unblockip": "Sblocca s'usuàriu",
"unblockiptext": "Usa il modulo sottostante per restituire il diritto di scrittura ad un indirizzo IP precedentemente bloccato.",
"ipusubmit": "Boga custu bloccu",
- "ipblocklist": "Usuàrios e indiritzos bloccados",
+ "ipblocklist": "Usuàrios bloccados",
"ipblocklist-submit": "Chirca",
"infiniteblock": "infinitu",
"expiringblock": "scadit su $1 a is $2",
"databasenotlocked": "Su database no est bloccadu.",
"move-page": "Movimentu de $1",
"move-page-legend": "Movimentu pàgina",
- "movepagetext": "Cun custu mòdellu podes renumenare una pàgina, movende totu sa stòria sua a sa pàgina noa.\nSu tìtulu bèciu at a diventare una pàgina de reindiritzamentu a su tìtulu nou.\nPodes agiornare automaticamente is redirects ca ligant a su tìtulu originàriu.\nSi sèberas de no, assicura·ti de controllare pro [[Special:DoubleRedirects| reindiritzaduras dòpias]] o [[Special:BrokenRedirects|sballiadas]].\nSes responsàbile de t'assigurare ca is cullegamentos sighint a puntare a ue depent puntare.\n\nAnnota ca sa pàgina '''non''' s'at a mòver si nde esistit giai un'àtera a su tìtulu nou, si no est ki siat bùida o cun sceti unu reindiritzamentu a sa bècia e siat chentza acontzos in antis. In casu de movimentu sballiadu, duncas, si podet torrare a su tìtulu bèciu, ma non podes subrascrìer una pàgina chi giai esistit.\n\n'''ATENTZIONE:'''\nUnu cambiamentu dràsticu podet creare problemas, mescamente a is pàginas prus populares;\npro praxere depes èsser seguru de àer cumpresu is cunsighèntzias prima de sighire a in antis.",
+ "movepagetext": "Cun custu mòdellu podes renumenare una pàgina, movende totu sa stòria sua a sa pàgina noa.\nSu tìtulu bèciu at a diventare una pàgina de reindiritzamentu a su tìtulu nou.\nPodes agiornare automaticamente is redirects ca ligant a su tìtulu originàriu.\nSi sèberas de no, assicura·ti de controllare pro [[Special:DoubleRedirects| reindiritzaduras dòpias]] o [[Special:BrokenRedirects|sballiadas]].\nSes responsàbile de t'assigurare ca is cullegamentos sighint a puntare a ue depent puntare.\n\nAnnota ca sa pàgina <strong>non</strong> s'at a mòver si nde esistit giai un'àtera a su tìtulu nou, si no est ki siat bùida o cun sceti unu reindiritzamentu a sa bècia e siat chentza acontzos in antis. In casu de movimentu sballiadu, duncas, si podet torrare a su tìtulu bèciu, ma non podes subrascrìer una pàgina chi giai esistit.\n\n<strong>ATENTZIONE!</strong>\nUnu cambiamentu dràsticu podet creare problemas, mescamente a is pàginas prus populares;\npro praxere depes èsser seguru de àer cumpresu is cunsighèntzias prima de sighire a in antis.",
"movepagetalktext": "Sa pàgina cuntierras asotziada, chi esistit, at a èssere movida automaticamenti impare a sa pàgina base, '''a parte in custos casos''':\n* su movimentu de sa pàgina est intre namespaces diversos;\n* in currispondèntzia de su tìtulu nou esistit giai una pàgina de cuntierras (non bùida);\n* sa casella inoe in bàsciu no est istata sceberada.\n\nIn custos casos, si cheres, depes mòvere a manu su cuntènnidu de sa pàgina.",
"movearticle": "Move sa pàgina",
"movenologintext": "Depes èsser unu usuàriu registradu e [[Special:UserLogin|identificadu]] pro pòder mòver una pàgina",
"metadata-help": "Custu file cuntènnit informatziones aciuntivas, probabilmente aciuntas dae sa fotocamera o dae su scannerizadori impreaus pro ddu creare o ddu digitalizare. Si su file est istadu acontzau, unos particolares podent non currispundere a sa realtade.",
"metadata-expand": "Ammustra particulares",
"metadata-collapse": "Cua particulares",
- "metadata-fields": "Is campus de is metadatos EXIF listaus in custu messàgiu ant a èssere amostaus in sa pàgina de s'immàgine candu sa tabella de is metadatos est presentada in forma breve. Pro impostatzione predefinia, is àteros campus ant a èssere cuaus.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "metadata-fields": "Is campus de is metadatos de imàgine listadus in custu messàgiu ant a èssere amostadus in sa pàgina de s'immàgine candu sa tabella de is metadatos est presentada in forma breve. Pro impostatzione predefinia, is àteros campus ant a èssere cuaus.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
"exif-artist": "Autore",
"exif-exposuretime-format": "$1 s ($2)",
"exif-fnumber-format": "f/$1",
"exif-xyresolution-i": "$1 dpi",
"exif-xyresolution-c": "$1 dpc",
"exif-colorspace-1": "sRGB",
- "exif-colorspace-65535": "FFFF.H",
+ "exif-colorspace-65535": "Chentza calibradura",
"exif-componentsconfiguration-1": "Y",
"exif-componentsconfiguration-2": "Cb",
"exif-componentsconfiguration-3": "Cr",
"version-specialpages": "Pàginas ispetziales",
"version-other": "Àteru",
"version-version": "(Versione $1)",
- "version-license": "Licèntzia",
+ "version-license": "Licèntzia MediaWiki",
"version-software-version": "Versione",
"fileduplicatesearch-submit": "Chirca",
"specialpages": "Pàginas ispetziales",
"talkpagelinktext": "Discussioni",
"specialpage": "Pàggina spiciali",
"personaltools": "Strumenta pirsunali",
- "postcomment": "Nova sizzioni",
"articlepage": "artìculu",
"talk": "discussioni",
"views": "Vìsiti",
"externaldberror": "S'havi virificatu n'erruri cû server d'autinticazzioni sternu, oppuru nun si disponi di l'auturizzazzioni nicissari p'aggiurnari lu propiu accessu sternu.",
"login": "Trasi",
"nav-login-createaccount": "Riggìstrati o trasi",
- "loginprompt": "Tu hai a abbilitari li ''cookies'' pi tràsiri ntâ {{SITENAME}}.",
"userlogin": "Riggìstrati o trasi",
"userloginnocreate": "Trasi",
"logout": "Nesci",
"searchprofile-advanced-tooltip": "Cerca ntê namespace pirsunalizzati",
"search-result-size": "$1 ({{PLURAL:$2|na parola|$2 paroli}})",
"search-result-category-size": "{{PLURAL:$1|1 utenti|$1 utenti}} ({{PLURAL:$2|1 suttacatigurìa|$2 suttacatigurìi}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Rilivanza: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(sizzioni $1)",
"search-suggest": "Forsi circavutu: $1",
"uploadwarning": "Avvisu di Upload",
"uploadwarning-text": "Cancia cà sutta la discrizzioni di lu file e prova arré",
"savefile": "Sarva file",
- "uploadedimage": "hà carricatu \"[[$1]]\"",
- "overwroteimage": "carricata na nova virsioni di \"[[$1]]\"",
"uploaddisabled": "Semu spiacenti, ma lu carricamentu di file è timpuraniamenti suspisu.",
"uploaddisabledtext": "Lu carricamentu dî file nun è attivu supra a stu situ.",
"php-uploaddisabledtext": "Li file PHP non sunnu abbilitati. Pi favuri cuntrolla li mpustazzioni dû file_uploads.",
"watchlist-details": "La lista dê pàggini taliati cunteni {{PLURAL:$1|na pàggina (cu la rispittiva pàggina di discussioni)|$1 pàggini (cu li rispittivi pàggini di discussioni)}}.",
"wlheader-enotif": "La nutìfica via e-mail è attivata.",
"wlheader-showupdated": "Li pàggini ca hannu statu canciati dâ tò ùrtima vìsita sunnu evidinziati 'n '''grassettu'''",
+ "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",
"watching": "Junta a l'ussirvati spiciali...",
"searchprofile-advanced-tooltip": "Rake in custom namespaces",
"search-result-size": "$1 ({{PLURAL:$2|1 waird|$2 wairds}})",
"search-result-category-size": "{{PLURAL:$1|1 memmer|$1 memmers}} ({{PLURAL:$2|1 subcategerie|$2 subcategeries}}, {{PLURAL:$3|1 file|$3 files}})",
- "search-result-score": "Relevanc: $1%",
"search-redirect": "(reguide $1)",
"search-section": "(section $1)",
"search-file-match": "(matches file content.)",
"uploadwarning": "Uplaid warnishment",
"uploadwarning-text": "Please modeefie the file descreeption ablo n gie it anither gae.",
"savefile": "Hain file",
- "uploadedimage": "uplaidit \"[[$1]]\"",
- "overwroteimage": "uplaided ae new version o \"[[$1]]\"",
"uploaddisabled": "Sarrie, uplaidin is disablit.",
"copyuploaddisabled": "Uplaid bi URL disabled.",
"uploaddisabledtext": "File uplaids ar disabled.",
{
"@metadata": {
"authors": [
- "Aursani"
+ "Aursani",
+ "아라"
]
},
"tog-showtoolbar": "سنوارپ اوزار دٻي ڏيکاريو (جاوا اسڪرپٽ)",
"qbmyoptions": "منهنجا صفحا",
"faq": "ڪپوس",
"faqpage": "Project:ڪپوس",
- "vector-action-delete": "ڊاھيو",
- "vector-action-move": "چوريو",
- "vector-action-protect": "تحفظيو",
- "vector-action-unprotect": "اڻتحفظيو",
- "vector-view-create": "سرجيو",
- "vector-view-edit": "سنواريو",
- "vector-view-viewsource": "ڪوڊ ڏسو",
"errorpagetitle": "چُڪَ",
"returnto": "$1 ڏانهن وَرو.",
"tagline": "{{SITENAME}} طرفان",
"talkpagelinktext": "بحث",
"specialpage": "خاص صفحو",
"personaltools": "ذاتي اوزار",
- "postcomment": "تاثرات درج ڪريو",
"articlepage": "مسودو ڏسو",
"talk": "بحث",
"views": "ڏيٺون",
"remembermypassword": "هن ڳڻپيوڪر تي مون کي ياد رکو (for a maximum of $1 {{PLURAL:$1|day|days}})",
"login": "لاگ اِن",
"nav-login-createaccount": "لاگ اِن ٿيو / کاتو کوليو",
- "loginprompt": "{{SITENAME}} ۾ لاگ اِن ٿيڻ لاءِ ڪوڪيز جي قبوليت لازمي آهي.",
"userlogin": "لاگ اِن ٿيو / کاتو کوليو",
"logout": "لاگ آئوٽ",
"userlogout": "لاگ آئوٽ",
"prevn": "پويان {{PLURAL:$1|$1}}",
"nextn": "اڳيان {{PLURAL:$1|$1}}",
"viewprevnext": "ڏسو ($1 {{int:pipe-separator}} $2) ($3)",
- "powersearch-redir": "چورڻن جي فهرست ڏيکاريو",
"preferences": "ترجيحات",
"mypreferences": "منهنجون ترجيحات",
"skin-preview": "پيش نگاهه",
"recentchanges": "تازيون تبديليون",
"recentchanges-feed-description": "ۡهن روان رسد ۾ آيل تازيون تبديليون لهو",
"rcnotefrom": "هيٺ '''$2''' کان ٿيندڙ تبديليون پيش ڪجن ٿيون ('''$1''' تائين ڏيکارجن ٿيون).",
- "rclistfrom": "$1 کان شروع ٿيندڙ نيون تبديليون",
+ "rclistfrom": "$3 $2 کان شروع ٿيندڙ نيون تبديليون",
"rcshowhideminor": "$1 معمولي ترميمون",
"rcshowhidebots": "$1 بوٽس",
"rcshowhideliu": "$1 لاگ اِن ٿيل يوزرس",
"upload": "فائيل چاڙهيو",
"uploadbtn": "فائيل چاڙهيو",
"uploadlogpage": "چاڙهه لاگ",
- "uploadedimage": "\"[[$1]]\" چاڙهيو ويو",
"listfiles": "فائيل فهرست",
"file-anchor-link": "فائيل",
"filehist": "فائيل جي سوانح",
"log": "لاگس",
"all-logs-page": "سڀئي لاگس",
"allpages": "سڀ صفحا",
- "alphaindexline": "$1 کان $2",
"nextpage": "اڳيون صفحو ($1)",
"prevpage": "پويون صفحو ($1)",
"allpagesfrom": "ھتان شروع ٿيندڙ صفحا نمايو",
"talkpagelinktext": "Dischussioni",
"specialpage": "Pagina ippiziari",
"personaltools": "Isthrumenti passunari",
- "postcomment": "Noba sezzioni",
"articlepage": "Vedi la bozi",
"talk": "Dischussioni",
"views": "Vìsiti",
"externaldberror": "S'è verifiggaddu un errori cu lu server di autentificazioni esthernu, oppuru nò si diponi di l'autorizazioni nezzessàri pa aggiornà la propria registhrazioni estherna.",
"login": "Intra",
"nav-login-createaccount": "Intra / registhrazioni",
- "loginprompt": "Pa intrà a {{SITENAME}} è nezzessàriu abirità li cookie.",
"userlogin": "Intra o cria una noba registhrazioni",
"userloginnocreate": "Intra",
"logout": "Esci",
"fileexists-shared-forbidden": "Un file cun chisthu innòmmu isisthi già i l'archìbiu di li risuzzi mùrthimediari cundibisi. Turrà indareddu e mudìfiggà l'innòmmu cu' lu quari carriggà lu file. [[File:$1|thumb|center|$1]]",
"uploadwarning": "Avvisu di carriggamentu",
"savefile": "Saivva file",
- "uploadedimage": "ha carriggaddu \"[[$1]]\"",
- "overwroteimage": "ha carriggaddu una nóba versioni di \"[[$1]]\"",
"uploaddisabled": "Semmu dipiazuddi, ma lu carriggamentu di file è timpuraniamenti suippesu.",
"uploaddisabledtext": "Lu carriggamentu di file nò è attibu i' {{SITENAME}}.",
"uploadscripted": "Chistu file cunteni còdizi HTML o script, chi pudia assé interpretaddu mari da lu nabiggadori.",
"watchlist-details": "La listha di l'abbaidaddi ippiziari cunteni {{PLURAL:$1|una pagina (e la rippettiba pagina di dischussioni)|$1 pagini (e li rippettibi pagini di dischussioni)}}.",
"wlheader-enotif": "La nutìfica via postha erettrònica è attiba.",
"wlheader-showupdated": "Li pàgini chi so isthaddi mudìfiggaddi daboi l'ulthima vìsita so evidenziaddi in '''grasseddu'''",
+ "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",
"watching": "Aggiunta a l'abbaidaddi ippiziari...",
"talkpagelinktext": "Ságastallan",
"specialpage": "Sierrasiidu",
"personaltools": "Persovnnalaš bargoneavvu",
- "postcomment": "Ođđa sekšuvdna",
"articlepage": "Geahča sisdoalu",
"talk": "Ságastallan",
"views": "Čájáhusat",
"yourdomainname": "Fierbmenamma",
"login": "Čálligoađe sisa",
"nav-login-createaccount": "Daga ođđa geavaheaddjidovddaldaga dahje čálligoađe sisa",
- "loginprompt": "Sisačállimii dárbbašuvvojit geavssat (cookies).",
"userlogin": "Logge sisa dahje ráhkat dovddaldaga",
"logout": "Čálligoađe olggos",
"userlogout": "Logge olggos",
"largefileserver": "Dát fiila lea menddo stuoris.",
"uploadwarning": "Lasihanvaruhus",
"savefile": "Vurke",
- "uploadedimage": "vurkii fiilla [[$1]]",
- "overwroteimage": "vurkii ođđa veršuvnna fiillas «[[$1]]»",
"uploaddisabled": "{{GRAMMAR:genitive|{{SITENAME}}}} ii sáhte lasihit fiillaid.",
"uploaddisabledtext": "Fiillaid vurken lea váldojuvvon eret anus.",
"uploadscripted": "Dát fiila sisdisdoalla HTML-koda dahje skriptaid, maid neahttabláđejeaddji sáhttá vahagis dahkat.",
"watchlist-details": "Du čuovvunlisttus {{PLURAL:$1|lea $1 siidu|leat $1 siiddu}}. Lohkui eai leat váldojuvvon ságastallansiidduid.",
"wlheader-enotif": "E-poastaalmmuhusat leat anus.",
"wlheader-showupdated": "Siiddut, mat leat rievdaduvvon du maŋimus geavahangearddi maŋŋá leat merkojuvvon '''buoiddes teavsttain'''",
+ "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",
"watching": "Lasihuvvo čuovvunlistui...",
"unwatching": "Sihkojuvvo čuovvunlisttus...",
"talkpagelinktext": "Czaxö",
"specialpage": "Páhina extrava",
"personaltools": "Cui personalui",
- "postcomment": "Iitom pte queeet",
"articlepage": "Cohuatlöx contentua páhina",
"talk": "Czaxö",
"views": "Cohuatlöxám",
"externaldberror": "Pos-römjde authenticacionde database extername jöx me necoccebj permiccionde updatan mecaitom externom.",
"login": "Caápo",
"nav-login-createaccount": "Caápo / xuatl",
- "loginprompt": "Henáabliicookám caápo {{SITENAME}}.",
"userlogin": "Caápo / xuatl",
"logout": "Cuípo",
"userlogout": "Cuípo",
"filetype-missing": "Ciúchan zo necoccebj extencion (pac' \".jpg\").",
"uploadwarning": "Attencionde uploadan",
"savefile": "Xuniim ciúchan",
- "uploadedimage": "uploadöx \"[[$1]]\"",
- "overwroteimage": "uploadöx hunvercion zode \"[[$1]]\"",
"uploadvirus": "Jan ciúchan coccebj virusde PC zo! Detailám: $1",
"sourcefilename": "Sourcenam IDde ciúchan:",
"destfilename": "Destinacion IDde ciúchan:",
"talkpagelinktext": "Aptarėms",
"specialpage": "Specēlosis poslapis",
"personaltools": "Persuonalėnē rakondā",
- "postcomment": "Rašītė kuomentara",
"articlepage": "Veizietė straipsnė",
"talk": "Aptarėms",
"views": "Parveizėtė",
"yourdomainname": "Tamstas domens:",
"login": "Prisėjongtė",
"nav-login-createaccount": "Prėsėjongtė / sokortė paskīra",
- "loginprompt": "Ijonkėt pakavukus, jēgo nuorėt prisėjongtė pri {{SITENAME}}.",
"userlogin": "Prėsėjongtė / sokortė paskīra",
"userloginnocreate": "Prisėjongtė",
"logout": "Atsėjongtė",
"searchprofile-advanced-tooltip": "Ėiškoutė skėrtingūsė vardū sėtīsė",
"search-result-size": "$1 ({{PLURAL:$2|1 žuodis|$2 žuodē|$2 žuodiu}})",
"search-result-category-size": "{{PLURAL:$1|1 narīs|$1 nariū}} ({{PLURAL:$2|1 subkateguorėjuo|$2 subkateguorėju}}, {{PLURAL:$3|1 fails|$3 failu}})",
- "search-result-score": "Tėnkamoms: $1%",
"search-redirect": "(paradresavėms $1)",
"search-section": "(skīrios $1)",
"search-suggest": "Mažo nuoriejot $1",
"file-exists-duplicate": "Tas fails īr {{PLURAL:$1|šėta faila|šėtū failu}} doblėkats:",
"uploadwarning": "Diemesė",
"savefile": "Ėšsauguotė faila",
- "uploadedimage": "ikielė „[[$1]]“",
- "overwroteimage": "ikruovė nauja „[[$1]]“ versėjė",
"uploaddisabledtext": "Failu ikielėmā oždraustė īr.",
"uploadscripted": "Šėts failos tor HTML a programėni kuoda, katros gal būtė klaidėngā soprasts interneta naršīklės.",
"uploadvirus": "Šėtom faile īr virosas! Ėšsamiau: $1",
"watchlist-details": "Keravuojama $1 {{PLURAL:$1|poslapis|$1 poslapē|$1 poslapiu}} neskaitlioujant aptarėmu poslapiu.",
"wlheader-enotif": "El. pašta primėnėmā ijongtė īr.",
"wlheader-showupdated": "Poslapē, katrėi pakeistė nu Tamstas paskotėnė apsėlonkėma čiesa anūs, īr pažīmietė '''pastuorintā'''",
+ "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ā",
"watching": "Itraukiama i keravuojamu sāraša...",
"Nemo bis",
"OC Ripper",
"לערי ריינהארט",
- "아라"
+ "아라",
+ "Milicevic01"
]
},
"tog-underline": "Podvuci linkove:",
"talkpagelinktext": "Razgovor",
"specialpage": "Posebna stranica",
"personaltools": "Lični alati",
- "postcomment": "Pošaljite komentar - Пошаљите коментар",
"articlepage": "Pogledaj stranicu sa sadržajem (članak)",
"talk": "Razgovor / Разговор",
"views": "Pregledi",
"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 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 / Пријави се",
"userloginnocreate": "Prijavi se",
"logout": "Odjavi se / Одјави се",
"undo-failure": "Izmjene se ne mogu vratiti zbog konflikta sa izmjenama u međuvremenu.",
"undo-norev": "Izmjena se ne može vratiti jer ne postoji ranija ili je obrisana.",
"undo-nochange": "Ovo je uređivanje izgleda već bilo poništeno.",
- "undo-summary": "Poništena izmjena $1 [[Special:Contributions/$2|korisnika $2]] ([[User talk:$2|razgovor]])",
+ "undo-summary": "Poništena izmjena $1 [[Special:Contribs/$2|korisnika $2]] ([[User talk:$2|razgovor]])",
"undo-summary-username-hidden": "Poništi izmjenu $1 od skrivenog korisnika",
"cantcreateaccounttitle": "Nije moguće napraviti korisnički račun",
"cantcreateaccount-text": "Pravljenje korisničkog računa sa ove IP adrese ('''$1''') je blokirano od strane [[User:$3|$3]].\n\nRazlog koji je naveo $3 je ''$2''",
"searchprofile-advanced-tooltip": "Traži u ostalim imenskim prostorima",
"search-result-size": "$1 ({{PLURAL:$2|1 riječ|$2 riječi}})",
"search-result-category-size": "{{PLURAL:$1|1 član|$1 člana|$1 članova}} ({{PLURAL:$2|1 podkategorija|$2 podkategorije|$2 podkategorija}}, {{PLURAL:$3|1 datoteka|$3 datoteke|$3 datoteka}})",
- "search-result-score": "Relevantnost: $1%",
"search-redirect": "(preusmjeravanje $1)",
"search-section": "(sekcija $1)",
"search-file-match": "(odgovara sadržaju datoteke)",
"uploadwarning": "Upozorenje pri slanju",
"uploadwarning-text": "Molimo izmijeniti opis datoteke ispod i pokušajte kasnije.",
"savefile": "Snimi datoteku",
- "uploadedimage": "postavljeno \"[[$1]]\"",
- "overwroteimage": "postavljena nova verzija datoteke \"[[$1]]\"",
"uploaddisabled": "Slanje fajlova je isključeno",
"copyuploaddisabled": "Postavljanje putem URL nije omogućeno.",
"uploaddisabledtext": "Postavljanje datoteka je onemogućeno.",
"watchlist-details": "{{PLURAL:$1|$1 stranica praćena|$1 stranice praćene|$1 stranica praćeno}} ne računajući stranice za razgovor.",
"wlheader-enotif": "* Obavještavanje e-poštom je omogućeno.",
"wlheader-showupdated": "* Stranice koje su izmijenjene od kad ste ih posljednji put posjetili su prikazane '''podebljanim slovima'''",
+ "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",
"watching": "Pratim... / Додавање на списак надгледања...",
"talkpagelinktext": "Sgdl (mdiwil)",
"specialpage": "Tasna izlin",
"personaltools": "Imasn inu",
- "postcomment": "Ayyaw amaynu",
"articlepage": "Mel mayllan ɣ tasna",
"talk": "Amsgdal",
"views": "Ẓr.. (Mel)",
"externaldberror": "Imma tlla ɣin kra lafut ɣu ukcumnk ulla urak ittuyskar at tsbddelt lkontnk nbrra.",
"login": "Kcm ɣid",
"nav-login-createaccount": "kcm / murzm Amidan",
- "loginprompt": "You must have cookies enabled to log in to {{SITENAME}}.",
"userlogin": "kchem / qiyd amskhdam amaynu",
"userloginnocreate": "Kcm ɣid",
"logout": "Fuɣ",
"searchprofile-advanced-tooltip": "Cabba ɣ igmmaḍn li tuyzlaynin",
"search-result-size": "$1 ({{PLURAL:$2|1 taguri|$2 tiguriwin}})",
"search-result-category-size": "$1 amdan{{PLURAL:$1||i-n}} ($2 ddu talɣa{{PLURAL:$2||i-s}}, $3 asdaw{{PLURAL:$3||i-n}})",
- "search-result-score": "Tazdayt: $1%",
"search-redirect": "(Asmmati $1)",
"search-section": "Ayyaw $1",
"search-suggest": "Is trit att nnit: $1",
"filereuploadsummary": "Imbddln n usdaw",
"filestatus": "Izrfan ḥbanin",
"filesource": "Aɣbalu",
- "uploadedimage": "Issrba \"[[$1]]\"",
"upload-source": "Aɣbalu n usdaw",
"sourcefilename": "Aɣbalu n ussaɣ n usdaw",
"license": "Tlla s izrfan",
"රොමානිස් සැමුවෙල්",
"ශ්වෙත",
"සුරනිමල",
- "아라"
+ "아라",
+ "හරිත"
]
},
"tog-underline": "සබැඳි යටීර කිරීම:",
"talkpagelinktext": "කතාබහ",
"specialpage": "විශේෂ පිටුව",
"personaltools": "පුද්ගලික මෙවලම්",
- "postcomment": "නව ඡේදයක්",
"articlepage": "අන්තර්ගත පිටුව නරඹන්න",
"talk": "සාකච්ඡාව",
"views": "දෘෂ්ටි",
"hidetoc": "සඟවන්න",
"collapsible-collapse": "හකුලන්න",
"collapsible-expand": "විදහන්න",
+ "confirmable-confirm": "{{GENDER:$1|ඔබට}} විශ්වාස ද?",
+ "confirmable-yes": "ඔව්",
+ "confirmable-no": "නැත",
"thisisdeleted": "අවශ්යතාවය $1 නැරඹීමද නැතහොත් ප්රතිෂ්ඨාපනයද?",
"viewdeleted": "$1 නැරඹීම අවශ්යයද?",
"restorelink": "මකා දමනු ලැබූ {{PLURAL:$1| එක් සංස්කරණයක්| සංස්කරණ $1 ක්}}",
"externaldberror": "එක්කෝ සත්යාවත් දත්ත-ගබඩා දෝෂයක් පැවතුනි නැතිනම් ඔබගේ බාහිර ගිණුම යාවත්කාලීන කිරීමට ඔබ හට අවසර දී නොමැත.",
"login": "පිවිසෙන්න",
"nav-login-createaccount": "පිවිසෙන්න / නව ගිණුමක් තනන්න",
- "loginprompt": "{{SITENAME}} වෙත ප්රවිෂ්ට වීම සඳහා ඔබ විසින් කුකීස් සක්රීය කොට තිබිය යුතුය.",
"userlogin": "පිවිසෙන්න / නව ගිණුමක් තනන්න",
"userloginnocreate": "ප්රවිෂ්ට වන්න",
"logout": "නික්මීම",
"suspicious-userlogout": "නිෂ්ක්රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.",
"createacct-another-realname-tip": "සැබෑ නාමය හෙළි කිරීම වෛකල්පිකයි.\nඔබ විසින් එය හෙළි කල හොත්, ඔබගේ කෘතීන් සඳහා ඔබහට කතෘ-බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.",
"pt-login": "පිවිසෙන්න",
+ "pt-login-button": "පිවිසෙන්න",
"pt-createaccount": "ගිණුමක් තනන්න",
"pt-userlogout": "නික්මීම",
"php-mail-error-unknown": "php mail() ශ්රිතයේ හඳුනානොගත් ගැටළුවකි",
"resetpass-temp-password": "තාවකාලික මුර-පදය:",
"resetpass-abort-generic": "මුරපදය වෙනස් කිරීම විස්තීරණය මඟින් වලකා ඇත.",
"resetpass-expired": "ඔබගේ මුරපදය කල් ඉකුත්වී ඇත.කරුණාකර නව මුරපදයක් සකස් කරන්න.",
- "resetpass-expired-soft": "ඔබගේ මුරපදය කල් ඉකුත්වී ඇති අතර එය නැවත සකස් කල යුතුය.කරුණාකර දැන් මුරපදයක් තෝරන්න.නවත්තන්න click කිරීමෙන් එය පසුව සකස් කල හැකිය.",
+ "resetpass-expired-soft": "ඔබගේ මුරපදය කල් ඉකුත් වී ඇති අතර එය නැවත සකස් කල යුතුය. කරුණාකර දැන් නව මුරපදයක් තෝරන්න, නැතහොත් එය පසුව නැවත සැකසීමට \"{{int:resetpass-submit-cancel}}\" ඉටු කරන්න.",
+ "resetpass-validity-soft": "ඔබේ මුරපදය වලංගු නැත: $1\n\nකරුණාකර දැන් නව මුරපදයක් තෝරන්න, නැතහොත් එය පසුව සැකසීමට \"{{int:resetpass-submit-cancel}}\" ඉටු කරන්න.",
"passwordreset": "මුරපදය වෙනස් කරන්න",
"passwordreset-text-one": "තාවකාලික මුර-පදයක් විද්යුත් තැපෑළ මගින් ලබා ගැනීම සඳහා මෙම පෝරමය සම්පූර්ණ කරන්න.",
"passwordreset-text-many": "{{PLURAL:$1|තාවකාලික මුරපදයක් ඊ-තැපෑල හරහා ගෙන්වා ගැනීමට එක් ක්ෂේත්රයක් පුරවන්න}}",
"changeemail-submit": "විද්යුත් තැපෑල වෙනස් කරන්න",
"changeemail-cancel": "අවලංගු කරන්න",
"changeemail-throttled": "ඔබ විසින් මෑතදී පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.\nයළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.",
+ "resettokens": "සංකේත නැවත සකසන්න",
+ "resettokens-legend": "සංකේත නැවත සකසන්න",
+ "resettokens-tokens": "සංකේත:",
"bold_sample": "තදකුරු පෙළ",
"bold_tip": "තදකුරු පෙළ",
"italic_sample": "ඇලකුරු පෙළ",
"currentrev": "නවතම සංශෝධනය",
"currentrev-asof": "$1 වන විට නවතම සංශෝධනය",
"revisionasof": "$1 තෙක් සංශෝධනය",
- "revision-info": "$1 වන විට $2 විසින් සිදු කර ඇති සංශෝධන",
+ "revision-info": "$1 වන විට {{GENDER:$6|$2}}$7 විසින් සිදු කර ඇති සංශෝධන",
"previousrevision": "← පැරණි සංශෝධනය",
"nextrevision": "නව සංශෝධනය →",
"currentrevisionlink": "වත්මන් සංශෝධනය",
"revdelete-confirm": "කරුණාකර ඔබ මෙය කිරීමට අදහස් කරන බවත්,එහි ප්රතිඵලය අවබෝධ කර ගන්නා බවත්,මෙය සිදු කරනුයේ [[{{MediaWiki:Policy-url}}| ප්රතිපත්තියට]] අනුකූලව බවත් තහවුරු කරන්න.",
"revdelete-suppress-text": "යටපත්කිරීම පහත අවස්ථාවන්හිදී '''පමණක්''' භාවිතා කල යුතුය:\n* නුසුදුසු පෞද්ගලික තොරතුරු\n*: ''නිවසෙහි ලිපින හා දුරකතන අංක ආදිය.''",
"revdelete-legend": "දෘශ්ය අවහිරකිරීම් සකසන්න",
- "revdelete-hide-text": "සංශෝධන පෙළ සඟවන්න",
+ "revdelete-hide-text": "සංශෝධන පෙළ",
"revdelete-hide-image": "ගොනු අන්තර්ගතය සඟවන්න",
"revdelete-hide-name": "ක්රියාව හා ඉලක්කය සඟවන්න",
"revdelete-hide-comment": "සංස්කරණ පරිකථනය",
"searchprofile-advanced-tooltip": "අභිරුචි නාමඅවකාශයන්හි ගවේෂණය කරන්න",
"search-result-size": "$1 ({{PLURAL:$2|වචන 1 ක්|වචන $2 ක්}})",
"search-result-category-size": "{{PLURAL:$1|එක් සාමාජීකයෙන්|සාමාජීකයන් $1 ක්}} ({{PLURAL:$2|එක් උප-ප්රවර්ගයක්|උප-ප්රවර්ග $2 ක්}}, {{PLURAL:$3|එක් ගොනුවක්|ගොනු $3 ක්}})",
- "search-result-score": "අදාළතාව: $1%",
"search-redirect": "($1 යළි-යොමු කරන්න)",
"search-section": "($1 ඡේදය)",
"search-file-match": "(ගොනු දත්ත සැසදේ)",
"userrights-no-interwiki": "අනෙකුත් විකියන්හි පරිශීලක හිමිකම් සංස්කරණය කිරීමට ඔබහට අවසර නොමැත.",
"userrights-nodatabase": "$1 දත්ත-ගබඩාව නොපවතියි හෝ ස්ථානීක නොවෙයි.",
"userrights-nologin": "පරිශීලක හිමිකම් ප්රදානය කරනු වස්, ඔබ පරිපාලක ගිණුමකින් [[Special:UserLogin|පුවිෂ්ට විය]] යුතුය.",
- "userrights-notallowed": "පරà·\92à·\81à·\93ලà¶\9a à·\84à·\92මà·\92à¶\9aමà·\8a à¶\91à¶\9aà·\8a à¶\9aà·\92රà·\93මට à·\84à·\9d à¶\89à·\80à¶à·\8a à¶\9aà·\92රà·\93මට à¶\94බà¶\9cà·\9a à¶\9cà·\92ණà·\94මට à¶\85à·\80à·\83ර නà·\90à¶.",
+ "userrights-notallowed": "පරිශීලක හිමිකම් එක් කිරීමට හෝ ඉවත් කිරීමට ඔබට අවසර නැත.",
"userrights-changeable-col": "ඔබට වෙනස් කල හැකි කණ්ඩායම්",
"userrights-unchangeable-col": "ඔබට වෙනස් කල නොහැකි කණ්ඩායම්",
"userrights-irreversible-marker": "$1*",
"uploadwarning": "උඩුගත කිරීම් අවවාදයකි",
"uploadwarning-text": "කරුණාකර පහත ගොනු විස්තරය වෙනස් කර නැවත උත්සාහ කරන්න.",
"savefile": "ගොනුව සුරකින්න",
- "uploadedimage": "\"[[$1]]\" උඩුගත කරන ලදි",
- "overwroteimage": " \"[[$1]]\" හි නව අනුවාදයක් උඩුගත කරන ලදි",
"uploaddisabled": "උඩුගත කිරීම් අක්රීය කර ඇත",
"copyuploaddisabled": "URL මගින් උඩුගත කිරීම අක්රීය කොට ඇත.",
"uploaddisabledtext": " {{SITENAME}} හි ගොනු උඩුගත කිරීම් අක්රීය කර ඇත.",
"notanarticle": "අන්තර්ගත පිටුවක් නොවේ",
"notvisiblerev": "සංශෝධනය මකාදමා ඇත",
"watchlist-details": "සාකච්ඡා පිටු නොගිණුනු කල, ඔබගේ මුර ලැයිස්තුවෙහි {{PLURAL:$1|එක් පිටුවක්|පිටු $1 ක්}} ඇත.",
- "wlheader-enotif": "විද්යුත්-තැපැල් දැනුම්දීම සක්රීය කෙරිණි.",
- "wlheader-showupdated": "ඔබ විසින් ඒවාට අවසන් වරට පිවිසුනු පසුව වෙනස්කෙරුනු පිටු '''තදකුරු''' වලින් පෙන්වා ඇත",
+ "wlheader-enotif": "විද්යුත් තැපැල් දැනුම්දීම සක්රීයයි.",
+ "wlheader-showupdated": "ඔබ විසින් ඒවාට අවසන් වරට පිවිසුනු පසුව වෙනස්ව තිබෙන පිටු <strong>තදකුරු</strong> වලින් පෙන්වා ඇත.",
+ "wlnote": "පහත දැක්වෙන්නේ $3, $4 මෙන්, අවසන් {{PLURAL:$2|පැය|පැය '''$2''' }} තුලදී සිදු කෙරී ඇති {{PLURAL:$1|අවසන් වෙනස්වීම්යි |අවසන් වෙනස්වීම් '''$1''' යි}}.",
"wlshowlast": "පසුගිය පැය $1 දින $2 $3 පෙන්වන්න",
"watchlist-options": "තෝරාගතහැකි මුර ලැයිස්තු සැකසුම්",
"watching": "මුර කරමින්...",
"duplicate-defaultsort": "'''අවවාදයයි:''' \"$2\" පෙරනිමි සුබෙදුම් යතුර විසින් පූර්ව පෙරනිමි සුබෙදුම් යතුර වූ \"$1\" අතික්රමණය කරයි.",
"version": "අනුවාදය",
"version-extensions": "ස්ථාපිත ප්රසර්ජනයන්",
+ "version-skins": "ඡවිය",
"version-specialpages": "විශේෂ පිටු",
"version-parserhooks": "ව්යාකරණ විග්රහක හසුරු",
"version-variables": "විචල්යයන්",
"version-antispam": "ස්පෑම වැලැක්වුම",
- "version-skins": "ඡවිය",
"version-other": "වෙනත්",
"version-mediahandlers": "මාධ්ය හසුරුවනය",
"version-hooks": "හසුරු",
"talkpagelinktext": "Diskusia",
"specialpage": "Špeciálna stránka",
"personaltools": "Osobné nástroje",
- "postcomment": "Nová sekcia",
"articlepage": "Zobraziť stránku",
"talk": "Diskusia",
"views": "Zobrazení",
"externaldberror": "Buď nastala chyba externej autentifikačnej databázy alebo vám nie je povolené aktualizovať váš externý účet.",
"login": "Prihlásiť",
"nav-login-createaccount": "Prihlásenie / vytvorenie účtu",
- "loginprompt": "Na prihlásenie do {{GRAMMAR:genitív|{{SITENAME}}}} musíte mať zapnuté koláčiky (cookies).",
"userlogin": "Prihlásenie / vytvorenie účtu",
"userloginnocreate": "Prihlásiť",
"logout": "Odhlásiť",
"searchprofile-advanced-tooltip": "Hľadať vo vymenovaných menných priestoroch",
"search-result-size": "$1 ({{PLURAL:$2|1 slovo|$2 slová|$2 slov}})",
"search-result-category-size": "{{PLURAL:$1|1 člen|$1 členovia|$1 členov}} ({{PLURAL:$2|1 podkategória|$2 podkategórie|$2 podkategórií}}, {{PLURAL:$3|1 súbor|$3 súbory|$3 súborov}})",
- "search-result-score": "Relevancia: $1%",
"search-redirect": "(presmerovanie $1)",
"search-section": "(sekcia $1)",
"search-suggest": "Mali ste na mysli „$1“?",
"uploadwarning": "Varovanie pri nahrávaní",
"uploadwarning-text": "Prosím, zmeňte popis súboru nižšie a skúste to znova.",
"savefile": "Uložiť súbor",
- "uploadedimage": "nahraný „[[$1]]“",
- "overwroteimage": "bola nahraná nová verzia „[[$1]]“",
"uploaddisabled": "Prepáčte, nahrávanie je vypnuté.",
"copyuploaddisabled": "Nahrávanie prostredníctvom URL nie je povolené.",
"uploaddisabledtext": "Nahrávanie súborov je vypnuté.",
"watchlist-details": "{{PLURAL:$1|Jedna sledovaná stránka|$1 sledované stránky|$1 sledovaných stránok}}, nepočítajúc diskusné stránky.",
"wlheader-enotif": "Upozorňovanie e-mailom je zapnuté.",
"wlheader-showupdated": "Stránky, ktoré boli zmenené od vašej poslednej návštevy sú zobrazené '''tučne'''.",
+ "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",
"watching": "Pridávam do zoznamu sledovaných...",
"duplicate-defaultsort": "Upozornenie: Štandardný kláves na zoraďovanie „$2“ nahrádza starý kláves „$1“.",
"version": "Verzia",
"version-extensions": "Nainštalované rozšírenia",
+ "version-skins": "Témy vzhľadu",
"version-specialpages": "Špeciálne stránky",
"version-parserhooks": "Prípojné body syntaktického analyzátora",
"version-variables": "Premenné",
"version-antispam": "Ochranu proti spamu",
- "version-skins": "Témy vzhľadu",
"version-other": "Iné",
"version-mediahandlers": "Obsluha multimédií",
"version-hooks": "Prípojné body",
"hidetoc": "skrij",
"collapsible-collapse": "Skrči",
"collapsible-expand": "Razširi",
+ "confirmable-confirm": "{{GENDER:$1|Ste}} prepričani?",
+ "confirmable-yes": "Da",
+ "confirmable-no": "Ne",
"thisisdeleted": "Prikažem ali vrnem $1?",
"viewdeleted": "Prikažem $1?",
"restorelink": "$1 {{PLURAL:$1|izbrisano redakcijo|izbrisani redakciji|izbrisane redakcije|izbrisanih redakcij}}",
"invalidtitle-knownnamespace": "Neveljaven naslov z imenskim prostorom »$2« in besedilom »$3«",
"invalidtitle-unknownnamespace": "Neveljaven naslov z neznano številko imenskega prostora $1 in besedilom »$2«",
"exception-nologin": "Niste prijavljeni",
- "exception-nologin-text": "Prosimo, [[Special:Userlogin|prijavite se]], da lahko dostopate do strani ali dejanja.",
+ "exception-nologin-text": "Prosimo, prijavite se, da lahko dostopate do strani ali dejanja.",
"exception-nologin-text-manual": "Da lahko dostopate do strani ali dejanja, se morate $1.",
"virus-badscanner": "Slaba konfiguracija: neznani virus skener: ''$1''",
"virus-scanfailed": "pregled ni uspel (koda $1)",
"parser-template-recursion-depth-warning": "Prekoračena globina rekurzije predlog ($1)",
"language-converter-depth-warning": "Prekoračena globina pretvorbe jezikov ($1)",
"node-count-exceeded-category": "Strani s prekoračenim številom vozlišč",
- "node-count-exceeded-category-desc": "Kategorija s stranmi, na katerih je preseženo število vozlišč.",
+ "node-count-exceeded-category-desc": "Stran presega največje število vozlišč.",
"node-count-exceeded-warning": "Stran je prekoračila število vozlišč",
"expansion-depth-exceeded-category": "Strani s prekoračeno globino razširitve",
- "expansion-depth-exceeded-category-desc": "Kategorija s stranmi, na katerih je prekoračena globina razširitve.",
+ "expansion-depth-exceeded-category-desc": "Stran presega največjo globino razširitve.",
"expansion-depth-exceeded-warning": "Stran je prekoračila globino razširitve",
"parser-unstrip-loop-warning": "Zaznal sem odvezano zanko",
"parser-unstrip-recursion-limit": "Presežena je omejitev odvezane rekurzije ($1)",
"searchprofile-advanced-tooltip": "Iskanje v imenskih prostorih po meri",
"search-result-size": "$1 ({{PLURAL:$2|1 beseda|2 besedi|$2 besede|$2 besed|$2 besed}})",
"search-result-category-size": "$1 {{PLURAL:$1|član|člana|člani|članov}} ($1 {{PLURAL:$2|podkategorija|podkategoriji|podkategorije|podkategorij}}, $1 {{PLURAL:$3|datoteka|datoteki|datoteke|datotek}})",
- "search-result-score": "Ustreznost: $1%",
"search-redirect": "(preusmeritev $1)",
"search-section": "(razdelek $1)",
"search-file-match": "(ujema se z vsebino datoteke)",
"preferences": "Nastavitve",
"mypreferences": "Nastavitve",
"prefs-edits": "Število urejanj:",
- "prefsnologintext2": "Za nastavljanje uporabniških nastavitev se morate $1.",
+ "prefsnologintext2": "Za spreminjanje svojih nastavitev se morate prijaviti.",
"prefs-skin": "Koža",
"skin-preview": "Predogled",
"datedefault": "Kakor koli",
"uploadwarning": "Opozorilo!",
"uploadwarning-text": "Prosimo, spremenite opis datoteke spodaj in poskusite ponovno.",
"savefile": "Shrani datoteko",
- "uploadedimage": "je naložil(-a) datoteko »[[$1]]«",
- "overwroteimage": "je naložil(-a) novo različico datoteke »[[$1]]«",
"uploaddisabled": "Nalaganje je onemogočeno",
"copyuploaddisabled": "Nalaganje preko URL je onemogočeno",
"uploaddisabledtext": "Nalaganje datotek je onemogočeno.",
"trackingcategories-desc": "Merila za vključitev v kategorijo",
"noindex-category-desc": "Stran vsebuje čarobno besedo <code><nowiki>__NOINDEX__</nowiki></code> (in je v imenskem prostoru, ki dovoljuje to oznako) in posledično je roboti ne indeksirajo.",
"index-category-desc": "Stran vsebuje čarobno besedo <code><nowiki>__INDEX__</nowiki></code> (in je v imenskem prostoru, ki dovoljuje to oznako) in posledično jo roboti indeksirajo, čeprav je drugače ne bi.",
- "post-expand-template-inclusion-category-desc": "Po razširitvi vseh predlog je velikost strani več kot <code>$wgMaxArticleSize</code>, zato nekaterih predlog nismo razširili.",
- "post-expand-template-argument-category-desc": "Po razširitvi argumentov predloge (nekaj v trojnih narekovajih, npr. <code>{{{Foo}}})</code> je stran večja od <code>$wgMaxArticleSize</code>.",
+ "post-expand-template-inclusion-category-desc": "Velikost strani je po razširitvi vseh predlog več kot <code>$wgMaxArticleSize</code>, zato nekaterih predlog nismo razširili.",
+ "post-expand-template-argument-category-desc": "Stran je večja od <code>$wgMaxArticleSize</code> po razširitvi argumentov predloge (nekaj v trojnih narekovajih, npr. <code>{{{Foo}}}</code>).",
"expensive-parserfunction-category-desc": "Stran vsebuje preveč dragih razčlenitvenih funkcij (npr. <code>#ifexist</code>). Glejte [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
- "broken-file-category-desc": "Kategorijo smo dodali, če stan vsebuje pokvarjeno povezavo na datoteko (povezavo na vključeno datoteko, ki ne obstaja).",
- "hidden-category-category-desc": "To je kategorija s <code><nowiki>__HIDDENCAT__</nowiki></code>, kar ji preprečuje, da se po privzetem prikazuje v okvirju s povezavami na kategorije strani.",
+ "broken-file-category-desc": "Stran vsebuje pokvarjeno povezavo na datoteko (povezavo na vključeno datoteko, ki ne obstaja).",
+ "hidden-category-category-desc": "Kategorija vsebuje <code><nowiki>__HIDDENCAT__</nowiki></code> v vsebini strani, kar ji preprečuje, da se po privzetem prikazuje v okvirju s povezavami na kategorije strani.",
"trackingcategories-nodesc": "Opis ni na voljo.",
"trackingcategories-disabled": "Kategorija je onemogočena",
"mailnologin": "Manjka naslov pošiljatelja",
"mywatchlist": "Spisek nadzorov",
"watchlistfor2": "Za $1 $2",
"nowatchlist": "Vaš spisek nadzorov je prazen.",
- "watchlistanontext": "Za pregled ali urejanje vsebine vašega spiska nadzorov se morate $1.",
+ "watchlistanontext": "Za pregled ali urejanje vsebine vašega spiska nadzorov se morate prijaviti.",
"watchnologin": "Niste prijavljeni",
"addwatch": "Dodaj na spisek nadzorov",
"addedwatchtext": "Stran »[[:$1]]« smo dodali na vaš [[Special:Watchlist|spisek nadzorov]].\nTam bodo navedene prihodnje spremembe te strani in pripadajoče pogovorne strani.",
"delete-edit-reasonlist": "Uredi razloge za brisanje",
"delete-toobig": "Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.\nIzbris takšnih strani je bil omejen v izogib neželenim motnjam {{GRAMMAR:dative|{{SITENAME}}}}.",
"delete-warning-toobig": "Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.\nNjeno brisanje lahko zmoti obratovanje zbirke podatkov {{GRAMMAR:dative|{{SITENAME}}}};\nnadaljujte s previdnostjo.",
+ "delete-cantedit": "Strani ne morete izbrisati, ker je nimate dovoljenja urejati.",
"deleting-backlinks-warning": "'''Opozorilo:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge strani]] se povezujejo na ali vključujejo stran, ki jo nameravate izbrisati.",
"rollback": "Vrni spremembe",
"rollback_short": "Vrni",
"autoblockid": "Samodejna blokada št. $1",
"block": "Blokiraj uporabnika",
"unblock": "Odblokiraj uporabnika",
- "blockip": "Blokiranje IP-naslova ali uporabniškega imena",
+ "blockip": "Blokiraj {{GENDER:$1|uporabnika|uporabnico}}",
"blockip-legend": "Blokiraj uporabnika",
"blockiptext": "Naslednji obrazec vam omogoča, da določenemu IP-naslovu ali uporabniškemu imenu preprečite urejanje.\nTo storimo le zaradi zaščite pred nepotrebnim uničevanjem in po [[{{MediaWiki:Policy-url}}|pravilih]].\nVnesite tudi razlog (''na primer'' seznam strani, ki jih je uporabnik po nepotrebnem kvaril).",
"ipaddressorusername": "IP-naslov ali uporabniško ime",
"ipb-unblock-addr": "Deblokiraj $1",
"ipb-unblock": "Odblokirajte uporabniško ime ali IP-naslov",
"ipb-blocklist": "Ogled obstoječih blokad",
- "ipb-blocklist-contribs": "Prispevki za $1",
+ "ipb-blocklist-contribs": "Prispevki za {{GENDER:$1|$1}}",
"unblockip": "Deblokirajte uporabnika",
"unblockiptext": "Z naslednjim obrazcem obnovite možnost urejanja z blokiranega IP-naslova ali uporabniškega računa.",
"ipusubmit": "Odstrani blokado",
"logentry-rights-rights": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3 z $4 na $5",
"logentry-rights-rights-legacy": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3",
"logentry-rights-autopromote": "$1 je {{GENDER:$2|bil samodejno povišan|bila samodejno povišana|bil(-a) samodejno povišan(-a)}} z $4 na $5",
+ "logentry-upload-upload": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
+ "logentry-upload-overwrite": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} novo različico $3",
+ "logentry-upload-revert": "$1 je {{GENDER:$2|naložil|naložila|naložil(-a)}} $3",
"rightsnone": "(nobeno)",
"feedback-bugornote": "Če ste pripravljeni podrobno opisati tehnično težavo, vložite [$1 poročilo o hrošču].\nV nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bomo dodali na stran »[$3 $2]«, skupaj z vašim uporabniškim imenom in podatkom o brskalniku, ki ga uporabljate.",
"feedback-subject": "Zadeva:",
"action-pagelang": "spreminjanje jezika strani",
"log-name-pagelang": "Dnevnik spreminjanja jezika",
"log-description-pagelang": "Dnevnik sprememb jezika strani.",
- "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5."
+ "logentry-pagelang-pagelang": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} jezik strani $3 z jezika $4 na jezik $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (omogočeno)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''onemogočeno''')"
}
"talkpagelinktext": "Dischkur",
"specialpage": "Spezialseyte",
"personaltools": "Meine Werkzeuge",
- "postcomment": "Neuer Obschnitt",
"articlepage": "Inhaltsseite oazeiga",
"talk": "Dischkur",
"views": "Oansichta",
"externaldberror": "Entweder is leit a Fahler bei der externa Authentifizierung vur, oder du darfst dei externes Benutzerkonto ne aktualisiera.",
"login": "Oanmelda",
"nav-login-createaccount": "Oamelda / a Konto oalega",
- "loginprompt": "Zer Oameldung missa Cookies aktiviert sei.",
"userlogin": "Oanmelda / Nutzerkonto erstella",
"logout": "Oabmelda",
"userlogout": "Oabmelda",
"file-thumbnail-no": "Dar Dateinoame beginnt miet <strong>$1</strong>. Dies deutet uff a Bild verringerter Griße ''(thumbnail)'' hin.\nBitte priefe, ob du doas Bild ei voller Ufflesung vorliegen host und loade dieses under damm Originalnoama huch.",
"file-exists-duplicate": "Diese Datei ies a Duplikat dar fulgenda {{PLURAL:$1|Datei|$1 Dateien}}:",
"file-deleted-duplicate": "Anne identische Datei dieser Datei ([[:$1]]) wurde frieher geläscht. Ieberpriefe doas Läsch-Logbuch, bevor du se huchlädst.",
- "uploadedimage": "hoot „[[$1]]“ huchgeloada",
- "overwroteimage": "hoot anne neue Version vu „[[$1]]“ huchgeloada",
"uploaddisabled": "Huchlada deaktiviert",
"uploaddisabledtext": "Doas Huchloada vu Dateien ies deaktiviert.",
"uploadscripted": "Diese Datei enthält HTML- oder Scriptcode, dar irrtiemlich vu a'm Webbrowser ausgefiehrt waan kennte.",
"watchlist-details": "Du beobachtest {{PLURAL:$1|1 Seite|$1 Seita}}.",
"wlheader-enotif": "Dar E-Mail-Benoachrichtigungsdienst ies aktiviert.",
"wlheader-showupdated": "Seyta miet noo ne gesehenen Änderunga waan '''fett''' dargestellt.",
+ "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",
"watching": "Beobachta …",
"talkpagelinktext": "Wadahadal",
"specialpage": "Bogaga qaaska ah",
"personaltools": "Qalabkaaga",
- "postcomment": "Maqaal cusub",
"articlepage": "Fiiri bogga qoraalka",
"talk": "Wadahadal",
"views": "Muuqaalka",
"password-change-forbidden": "Ma badali kartid Eraysir ee wiki.",
"login": "Gudaha gal",
"nav-login-createaccount": "Gudaha gal / sameyso akoon",
- "loginprompt": "Waa in aad shidaa cookies'ka hadii aad rabto in aad soo gasho {{SITENAME}}.",
"userlogin": "Gudaha gal / sameyso akoon",
"userloginnocreate": "Gudaha gal",
"logout": "Ka bax",
"large-file": "waxaa loo baahanyahay in ay san file'yada ka weynaan $1;\nfile'kaan waa $2.",
"uploadwarning": "Digniin waxa aad soo gelineesid",
"savefile": "Faylka kaydi",
- "uploadedimage": "la soo galiyay \"[[$1]]\"",
- "overwroteimage": "waxaa la soo galiyay nuuc cusub oo ah \"[[$1]]\"",
"uploaddisabled": "wax soo gelinta waa la xiray.",
"copyuploaddisabled": "wax soo gelinta dhinaca URL:ka waa la xiray",
"uploaddisabledtext": "soo gelinta faylyada waa la xiray",
"searchprofile-advanced-tooltip": "Kërkimi në hapësina",
"search-result-size": "$1 ({{PLURAL:$2|1 fjalë|$2 fjalë}})",
"search-result-category-size": "{{PLURAL:$1|1 anëtar|$1 anëtarë}} ({{PLURAL:$2|1 nën-kategori|$2 nën-kategori}}, {{PLURAL:$3|1 skedë|$3 skeda}})",
- "search-result-score": "Përkatësia: $1%",
"search-redirect": "(përcjellim $1)",
"search-section": "(seksioni $1)",
"search-suggest": "Mos kishit në mendje: $1",
"uploadwarning": "Kujdes dhënie",
"uploadwarning-text": "Ju lutemi modifikoni përshkrimin e skedës dhe provojen përsëri.",
"savefile": "Ruaj skedën",
- "uploadedimage": "dha \"[[$1]]\"",
- "overwroteimage": "dha dhe zëvendësoi me një version të ri të \"[[$1]]\"",
"uploaddisabled": "Ndjesë, dhëniet janë bllokuar në këtë shërbyes dhe nuk është gabimi juaj.",
"copyuploaddisabled": "Ngarkimi nga URL-ja u çaktivizua.",
"uploaddisabledtext": "Ngarkimi i skedave është i ndaluar.",
"watchlist-details": "{{PLURAL:$1|$1 faqe|$1 faqe}} nën mbikqyrje duke mos numëruar faqet e diskutimit.",
"wlheader-enotif": "Njoftimi me email është lejuar.",
"wlheader-showupdated": "Faqet që kanë ndryshuar nga vizita juaj e fundit do të tregohen të '''trasha'''",
+ "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",
"watching": "Duke mbikqyrur...",
"category-empty": "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ова категорија тренутно не садржи странице или датотеке.''</div>",
"hidden-categories": "{{PLURAL:$1|Сакривена категорија|Сакривене категорије}}",
"hidden-category-category": "Сакривене категорије",
- "category-subcat-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}",
+ "category-subcat-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|1=следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}",
"category-subcat-count-limited": "Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}.",
"category-article-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу страницу.|{{PLURAL:$1|Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији, од укупно $2.}}",
"category-article-count-limited": "{{PLURAL:$1|1=Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији.",
- "category-file-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}",
+ "category-file-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}",
"category-file-count-limited": "{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији.",
"listingcontinuesabbrev": "наст.",
"index-category": "Пописане странице",
"hidetoc": "сакриј",
"collapsible-collapse": "скупи",
"collapsible-expand": "прошири",
+ "confirmable-confirm": "Да ли {{GENDER:$1|сте}} сигурни?",
+ "confirmable-yes": "Да",
+ "confirmable-no": "Не",
"thisisdeleted": "Погледати или вратити $1?",
"viewdeleted": "Погледати $1?",
"restorelink": "{{PLURAL:$1|обрисану измену|$1 обрисане измене|$1 обрисаних измена}}",
"searchprofile-advanced-tooltip": "Претражите прилагођене именске просторе",
"search-result-size": "$1 ({{PLURAL:$2|1 реч|$2 речи|$2 речи}})",
"search-result-category-size": "{{PLURAL:$1|1 члан|$1 члана|$1 чланова}}, ({{PLURAL:$2|1 поткатегорија|$2 поткатегорије|$2 поткатегорија}}, {{PLURAL:$3|1 датотека|$3 датотеке|$3 датотека}})",
- "search-result-score": "Релевантност: $1%",
"search-redirect": "(преусмерење $1)",
"search-section": "(одељак $1)",
"search-suggest": "Да ли сте мислили на: $1",
"preferences": "Подешавања",
"mypreferences": "Подешавања",
"prefs-edits": "Број измена:",
- "prefsnologintext2": "Морате бити $1 да бисте мењали своја подешавања.",
+ "prefsnologintext2": "Морате бити пријављени да бисте мењали своја подешавања.",
"prefs-skin": "Тема",
"skin-preview": "Прегледај",
"datedefault": "Свеједно",
"uploadwarning": "Упозорење при отпремању",
"uploadwarning-text": "Измените опис датотеке и покушајте поново.",
"savefile": "Сачувај датотеку",
- "uploadedimage": "је послао „[[$1]]“",
- "overwroteimage": "је послао нову верзију датотеке „[[$1]]“",
"uploaddisabled": "Отпремање је онемогућено.",
"copyuploaddisabled": "Слање путем URL адресе је онемогућено.",
"uploaddisabledtext": "Отпремање датотека је онемогућено.",
"mywatchlist": "Списак надгледања",
"watchlistfor2": "За $1 $2",
"nowatchlist": "Ваш списак надгледања је празан.",
- "watchlistanontext": "Морате бити $1 да бисте гледали и уређивали ставке на вашем списку надгледања.",
+ "watchlistanontext": "Морате бити пријављени да бисте гледали и уређивали ставке на вашем списку надгледања.",
"watchnologin": "Нисте пријављени",
"addwatch": "Додај на списак надгледања",
"addedwatchtext": "Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].\nБудуће измене ове странице и њене странице за разговор биће наведене тамо.",
"delete-edit-reasonlist": "Уреди разлоге брисања",
"delete-toobig": "Ова страница има велику историју, преко $1 {{PLURAL:$1|измене|измене|измена}}.\nБрисање таквих страница је ограничено да би се спречило случајно оптерећење сервера.",
"delete-warning-toobig": "Ова страница има велику историју, преко $1 {{PLURAL:$1|измене|изменe|измена}}.\nЊено брисање може пореметити базу података, стога поступајте с опрезом.",
+ "delete-cantedit": "Не можете обрисати страницу коју не можете уређивати.",
"deleting-backlinks-warning": "'''Упозорење:''' бришете страницу која је укључена у [[Special:WhatLinksHere/{{FULLPAGENAME}}|друге странице]] или друге странице воде на њу.",
"rollback": "Врати измене",
"rollback_short": "Врати",
"autoblockid": "Аутоматско блокирање #$1",
"block": "Блокирај корисника",
"unblock": "Деблокирај корисника",
- "blockip": "Блокирај корисника",
+ "blockip": "Блокирај {{GENDER:$1|корисника|корисницу}}",
"blockip-legend": "Блокирај корисника",
"blockiptext": "Користите доњи образац да бисте забранили приступ за писање с одређене ИП адресе или корисничког имена.\nОво би требало да вршите само ради спречавања вандализма, у складу са [[{{MediaWiki:Policy-url}}|смерницама]].\nИзаберите конкретан разлог испод (пример: навођење конкретних страница које су вандализоване).",
"ipaddressorusername": "ИП адреса или корисничко име:",
"tog-watchdefault": "Dodaj stranice i datoteke koje izmenim u spisak nadgledanja",
"tog-watchmoves": "Dodaj stranice i datoteke koje premestim u spisak nadgledanja",
"tog-watchdeletion": "Dodaj stranice i datoteke koje obrišem u spisak nadgledanja",
+ "tog-watchrollback": "Dodaj stranice na kojima sam vratio izmene u spisak nadgledanja",
"tog-minordefault": "Označavaj sve izmene kao manje",
"tog-previewontop": "Prikaži pregled pre okvira za uređivanje",
"tog-previewonfirst": "Prikaži pregled na prvoj izmeni",
"category-empty": "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ova kategorija trenutno ne sadrži stranice ili datoteke.''</div>",
"hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}",
"hidden-category-category": "Sakrivene kategorije",
- "category-subcat-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}",
+ "category-subcat-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|1=sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}",
"category-subcat-count-limited": "Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}.",
"category-article-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
"category-article-count-limited": "{{PLURAL:$1|1=Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji.",
- "category-file-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću datoteku.|{{PLURAL:$1|Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji, od ukupno $2.}}",
+ "category-file-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću datoteku.|{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji, od ukupno $2.}}",
"category-file-count-limited": "{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji.",
"listingcontinuesabbrev": "nast.",
"index-category": "Popisane stranice",
"hidetoc": "sakrij",
"collapsible-collapse": "skupi",
"collapsible-expand": "proširi",
+ "confirmable-confirm": "Da li {{GENDER:$1|ste}} sigurni?",
+ "confirmable-yes": "Da",
+ "confirmable-no": "Ne",
"thisisdeleted": "Pogledati ili vratiti $1?",
"viewdeleted": "Pogledati $1?",
"restorelink": "{{PLURAL:$1|obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}",
"preview": "Pregled",
"showpreview": "Prikaži pretpregled",
"showdiff": "Prikaži izmene",
+ "blankarticle": "<strong>Upozorenje:</strong> stranica koju pravite nema nikakav sadržaj.\nAko još jednom pritisnete „{{int:savearticle}}“ napravićete stranicu bez sadržaja.",
"anoneditwarning": "'''Upozorenje:''' niste prijavljeni.\nVaša IP adresa će biti zabeležena u istoriji ove stranice.",
"anonpreviewwarning": "''Niste prijavljeni. Vaša IP adresa će biti zabeležena u istoriji ove stranice.''",
"missingsummary": "'''Napomena:''' niste uneli opis izmene.\nAko ponovo kliknete na „{{int:savearticle}}“, vaša izmena će biti sačuvana bez opisa.",
"searchprofile-advanced-tooltip": "Pretražite prilagođene imenske prostore",
"search-result-size": "$1 ({{PLURAL:$2|1 reč|$2 reči|$2 reči}})",
"search-result-category-size": "{{PLURAL:$1|1 član|$1 člana|$1 članova}}, ({{PLURAL:$2|1 potkategorija|$2 potkategorije|$2 potkategorija}}, {{PLURAL:$3|1 datoteka|$3 datoteke|$3 datoteka}})",
- "search-result-score": "Relevantnost: $1%",
"search-redirect": "(preusmerenje $1)",
"search-section": "(odeljak $1)",
"search-suggest": "Da li ste mislili na: $1",
"action-rollback": "brzo vraćanje izmena poslednjeg korisnika koji je menjao određenu stranicu",
"action-import": "uvoženje stranica iz drugih vikija",
"action-importupload": "uvoženje stranica iz otpremljene datoteke",
- "action-patrol": "označavanje tuđih izmena pregledanim",
+ "action-patrol": "označavanje tuđih izmena patroliranim",
"action-autopatrol": "označavanje sopstvenih izmena patroliranim",
"action-unwatchedpages": "pregledanje spiska nenadgledanih stranica",
"action-mergehistory": "spajanje istorije ove stranice",
"uploadwarning": "Upozorenje pri otpremanju",
"uploadwarning-text": "Izmenite opis datoteke i pokušajte ponovo.",
"savefile": "Sačuvaj datoteku",
- "uploadedimage": "je poslao „[[$1]]“",
- "overwroteimage": "je poslao novu verziju datoteke „[[$1]]“",
"uploaddisabled": "Otpremanje je onemogućeno.",
"copyuploaddisabled": "Slanje putem URL adrese je onemogućeno.",
"uploaddisabledtext": "Otpremanje datoteka je onemogućeno.",
"autosumm-replace": "Zamena sadržaja stranice sa „$1“",
"autoredircomment": "Preusmerenje na [[$1]]",
"autosumm-new": "Nova stranica: $1",
+ "autosumm-newblank": "Napravljena prazna stranica",
"size-bytes": "$1 B",
"size-kilobytes": "$1 kB",
"size-megabytes": "$1 MB",
"duplicate-defaultsort": "'''Upozorenje:''' podrazumevani ključ svrstavanja „$2“ menja nekadašnji ključ „$1“.",
"version": "Verzija",
"version-extensions": "Instalirana proširenja",
- "version-skins": "Teme",
+ "version-skins": "Instalirane teme",
"version-specialpages": "Posebne stranice",
"version-parserhooks": "Kuke raščlanjivača",
"version-variables": "Promenljive",
"expand_templates_remove_comments": "Ukloni komentare",
"expand_templates_remove_nowiki": "Poništava efekat <nowiki> tagova u prikazu članaka",
"expand_templates_generate_xml": "Prikaži XML stablo",
- "expand_templates_preview": "Prikaz"
+ "expand_templates_preview": "Prikaz",
+ "right-pagelang": "menjanje jezika stranice"
}
"talkpagelinktext": "Taki",
"specialpage": "Spesrutu papira",
"personaltools": "Mi eigi wrokosani",
- "postcomment": "Poti wan boskopu",
"articlepage": "Luku a papira",
"talk": "Taki",
"views": "Views",
"yourdomainname": "Yu domein:",
"login": "Psa kon",
"nav-login-createaccount": "Psa kon / meki wan account",
- "loginprompt": "Yu musu man kisi cookies fu man psa kon na {{SITENAME}}.",
"userlogin": "Psa kon / meki wan account",
"logout": "Psa gwe",
"userlogout": "Psa gwe",
"fileuploadsummary": "Infrumasi:",
"uploadwarning": "Atessi fu uploti",
"savefile": "Gefre oponaki",
- "uploadedimage": "lai \"[[$1]]\" poti",
- "overwroteimage": "abi wan nyun si fu \"[[$1]]\" e uploti",
"watchthisupload": "Disi papira si",
"license-nopreview": "(No fusi)",
"listfiles_search_for": "Suku na gefre:",
"talkpagelinktext": "Diskussion",
"specialpage": "Spezioalsiede",
"personaltools": "Persöönelke Reewen",
- "postcomment": "Näi Stuk",
"articlepage": "Siede",
"talk": "Diskussion",
"views": "Anwiesengen",
"externaldberror": "Äntweeder deer lait n Failer bie ju externe Authentifizierenge foar, of du duurst din extern Benutzerkonto nit aktualisierje.",
"login": "Anmäldje",
"nav-login-createaccount": "Anmäldje",
- "loginprompt": "Uum sik bie {{SITENAME}} anmäldje tou konnen, mouten Cookies aktivierd weese.",
"userlogin": "Anmäldje / Benutserkonto moakje",
"userloginnocreate": "Anmäldje",
"logout": "Oumäldje",
"searchprofile-advanced-tooltip": "Säik in wiedere Noomensruume",
"search-result-size": "$1 ({{PLURAL:$2|1 Woud|$2 Woude}})",
"search-result-category-size": "{{PLURAL:$1|1 Siede|$1 Sieden}} ({{PLURAL:$2|1 Unnerkategorie|$2 Unnerkategorien}}, {{PLURAL:$3|1 Doatäi|$3 Doatäie}})",
- "search-result-score": "Relevanz: $1 %",
"search-redirect": "(Wiederlaitenge $1)",
"search-section": "(Apsnit $1)",
"search-suggest": "Meendest du $1?",
"uploadwarning": "Woarskauenge",
"uploadwarning-text": "Annerje hierunner ju Doatäibeskrieuwenge un fersäik dät nochmoal.",
"savefile": "Doatäi spiekerje",
- "uploadedimage": "\"[[$1]]\" hoochleeden",
- "overwroteimage": "häd ne näie Version fon „[[$1]]“ hoochleeden",
"uploaddisabled": "Äntskeeldigenge, dät Hoochleeden is apstuuns deaktivierd.",
"copyuploaddisabled": "Dät Hoochleeden fon URLs is deaktivierd",
"uploaddisabledtext": "Dät Hoochleeden fon Doatäie is nit muugelk.",
"watchlist-details": "Jie beooboachtje {{PLURAL:$1|1 Siede|$1 Sieden}} (Diskussionssieden wuuden hier nit meetäld).",
"wlheader-enotif": "E-Mail-Beskeed is aktivierd.",
"wlheader-showupdated": "Sieden, do ätter dien lääste Besäik annerd wuuden sunt, wäide '''fat''' deerstoald.",
+ "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",
"watching": "Beooboachtje …",
"duplicate-defaultsort": "Paas ap: Die Sortierengskoai „$2“ uurskrift dän toufoarne ferwoanden Koai „$1“.",
"version": "Version",
"version-extensions": "Installierde Ärwiederengen",
+ "version-skins": "Benutseruurflächen",
"version-specialpages": "Spezioalsieden",
"version-parserhooks": "Parser-Hooks",
"version-variables": "Variablen",
"version-antispam": "Spamskuts",
- "version-skins": "Benutseruurflächen",
"version-other": "Uurswät",
"version-mediahandlers": "Medien-Handlere",
"version-hooks": "Snitsteeden ''(Hooks)''",
"talkpagelinktext": "Obrolan",
"specialpage": "Kaca Husus",
"personaltools": "Parabot pribadi",
- "postcomment": "Bagéan anyar",
"articlepage": "Témbongkeun kaca eusi",
"talk": "Sawala",
"views": "Témbongan",
"externaldberror": "Aya kasalahan dina pangkalan data oténtikasi luar, atawa anjeun mémang teu diwenangkeun pikeun ngaropéa rekening luar anjeun.",
"login": "Asup log",
"nav-login-createaccount": "Nyieun akun/asup log",
- "loginprompt": "Anjeun kudu boga ''cookies'' sangkan bisa asup log ka {{SITENAME}}.",
"userlogin": "Asup log / jieun akun",
"userloginnocreate": "Asup log",
"logout": "Kaluar log",
"searchprofile-advanced-tooltip": "Paluruh di rohang ngaran anu tangtu",
"search-result-size": "$1 ({{PLURAL:$2|1 kecap|$2 kecap}})",
"search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
- "search-result-score": "Kacocogan: $1%",
"search-redirect": "(alihan $1)",
"search-section": "(bagean $1)",
"search-suggest": "Meureun maksud Anjeun nyaéta: $1",
"uploadwarning": "Pépéling ngamuat",
"uploadwarning-text": "Ropéa pedaran berkas di handap terus cobaan deui.",
"savefile": "Simpen koropak",
- "uploadedimage": "ngunggah \"[[$1]]\"",
- "overwroteimage": "Muatkeun koropak nu anyar ti \"[[$1]]\"",
"uploaddisabled": "Punten, ngamuat ayeuna ditumpurkeun.",
"uploaddisabledtext": "Fungsi ngamuat koropak ditumpurkeun.",
"uploadscripted": "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').",
"watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} nu ku anjeun diawaskeun, teu kaasup kaca obrolan/sawala.",
"wlheader-enotif": "Pangémbar surélék difungsikeun.",
"wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''",
+ "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",
"watching": "Ngawaskeun...",
"tog-prefershttps": "Använd alltid en säker anslutning när jag är inloggad",
"underline-always": "Alltid",
"underline-never": "Aldrig",
- "underline-default": "Webbläsarens standardinställning",
+ "underline-default": "Webbläsarens eller utseendets standardinställning",
"editfont-style": "Typsnitt i redigeringsrutan:",
"editfont-default": "Webbläsarens standard",
"editfont-monospace": "Fast bredd",
"hidetoc": "göm",
"collapsible-collapse": "Dölj",
"collapsible-expand": "Visa",
+ "confirmable-confirm": "Är {{GENDER:$1|du}} säker?",
+ "confirmable-yes": "Ja",
+ "confirmable-no": "Nej",
"thisisdeleted": "Visa eller återställ $1?",
"viewdeleted": "Visa $1?",
"restorelink": "{{PLURAL:$1|en raderad version|$1 raderade versioner}}",
"invalidtitle-knownnamespace": "Ogiltig titel med namnrymden \"$2\" och texten \"$3\"",
"invalidtitle-unknownnamespace": "Ogiltig titel med okänt namnrymdsnummer $1 och texten \"$2\"",
"exception-nologin": "Inte inloggad",
- "exception-nologin-text": "Var god [[Special:Userlogin|logga in]] för att komma åt denna sida eller åtgärd.",
+ "exception-nologin-text": "Var god logga in för att komma åt denna sida eller åtgärd.",
"exception-nologin-text-manual": "Var god $1 för att få tillgång till denna sida eller åtgärd.",
"virus-badscanner": "Dålig konfigurering: okänd virusskanner: ''$1''",
"virus-scanfailed": "skanning misslyckades (kod $1)",
"userjspreview": "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript.'''\n'''Det har inte sparats än!'''",
"sitecsspreview": "'''Kom ihåg att du bara förhandsgranskar detta CSS.''' \n'''Det har ännu inte sparats!'''",
"sitejspreview": "'''Kom ihåg att du bara förhandsgranskar denna JavaScript-kod.'''\n'''Det har ännu inte sparats!'''",
- "userinvalidcssjstitle": "'''Varning:''' Skalet \"$1\" finns inte. Kom ihåg att .css- och .js-sidor för enskilda användare börjar på liten bokstav. Exempel: {{ns:user}}:Foo/vector.css i stället för {{ns:user}}:Foo/Vector.css.",
+ "userinvalidcssjstitle": "'''Varning:''' Utseendet \"$1\" finns inte. Kom ihåg att .css- och .js-sidor för enskilda användare börjar på liten bokstav. Exempel: {{ns:user}}:Foo/vector.css i stället för {{ns:user}}:Foo/Vector.css.",
"updated": "(Uppdaterad)",
"note": "'''Obs!'''",
"previewnote": "'''Kom ihåg att detta bara är en förhandsvisning.'''\nDina ändringar har ännu inte sparats!",
"parser-template-recursion-depth-warning": "Gräns för mallrekursionsdjup överskriden ($1)",
"language-converter-depth-warning": "Gräns för språkkonverteringsdjup överskriden ($1)",
"node-count-exceeded-category": "Sidor där antalet noder har överskridits",
- "node-count-exceeded-category-desc": "En kategori för sidor där nod-räkningen överskrids.",
- "node-count-exceeded-warning": "Sidan har överskridit antalet nodar",
+ "node-count-exceeded-category-desc": "Sidan överskrider det maximala antalet noder.",
+ "node-count-exceeded-warning": "Sidan har överskridit antalet noder",
"expansion-depth-exceeded-category": "Sidor där expansionsdjupet överskrids",
- "expansion-depth-exceeded-category-desc": "Detta är en kategori för sidor där expansionsdjupet överskrids.",
+ "expansion-depth-exceeded-category-desc": "Sidan har överstridit det maximala expansionsdjupet.",
"expansion-depth-exceeded-warning": "Sidan överskrider expansionsdjupet",
"parser-unstrip-loop-warning": "Tagavskalningsloop upptäcktes",
"parser-unstrip-recursion-limit": "Tagavskalningsloop överskred rekursionsgränsen ($1)",
"searchprofile-advanced-tooltip": "Sök i vissa namnrymder",
"search-result-size": "$1 ({{PLURAL:$2|1 ord|$2 ord}})",
"search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmar}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})",
- "search-result-score": "Relevans: $1%",
"search-redirect": "(omdirigering $1)",
"search-section": "(avsnitt $1)",
"search-file-match": "(överensstämmer filens innehåll)",
"preferences": "Inställningar",
"mypreferences": "Inställningar",
"prefs-edits": "Antal redigeringar:",
- "prefsnologintext2": "Var god $1 för att ändra användarinställningar.",
+ "prefsnologintext2": "Var god logga in för att ändra dina inställningar.",
"prefs-skin": "Utseende",
"skin-preview": "Förhandsvisning",
"datedefault": "Ovidkommande",
"prefs-files": "Filer",
"prefs-custom-css": "personlig CSS",
"prefs-custom-js": "personlig JavaScript",
- "prefs-common-css-js": "Delad CSS/JS för alla teman:",
+ "prefs-common-css-js": "Delad CSS/JS för alla utseenden:",
"prefs-reset-intro": "Du kan använda den här sidan till att återställa dina inställningar till webbplatsens standardinställningar.\nDetta kan inte återställas.",
"prefs-emailconfirm-label": "E-postbekräftelse:",
"youremail": "E-post:",
"uploadwarning": "Uppladdningsvarning",
"uploadwarning-text": "Var god och ändra filbeskrivningen nedanför och försök igen.",
"savefile": "Spara fil",
- "uploadedimage": "laddade upp \"[[$1]]\"",
- "overwroteimage": "laddade upp ny version av \"[[$1]]\"",
"uploaddisabled": "Uppladdningsfunktionen är avstängd",
"copyuploaddisabled": "Uppladdning med URL avstängt.",
"uploaddisabledtext": "Uppladdning av filer är avstängd.",
"trackingcategories-desc": "Inklusionskriterier för kategori",
"noindex-category-desc": "Sidan innehåller det magiska ordet <code><nowiki>__NOINDEX__</nowiki></code> (och är i en namnrymd där denna flagga tillåts), och indexeras därför inte av robotar.",
"index-category-desc": "Denna sidan innehåller ett <code><nowiki>__INDEX__</nowiki></code> (och är i en namnrymd där denna flagga tillåts), och indexeras därför av robotar även där detta normalt inte skulle ske.",
- "post-expand-template-inclusion-category-desc": "Efter att alla mallar har expanderats är denna sidan större än <code>$wgMaxArticleSize</code>, därför har vissa mallar inte expanderats.",
- "post-expand-template-argument-category-desc": "Efter att ett mallargument (något inom trippla parenteser, som <code>{{{Foo}}})</code> expanderats är denna sidan större än <code>$wgMaxArticleSize</code>.",
- "expensive-parserfunction-category-desc": "För många kostsamma parser-funktioner (som <code>#ifexist</code>) har inkluderats på en sida. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit användarhandboken].",
- "broken-file-category-desc": "Kategori som läggs till om sidan innehåller en bruten fillänk (en länk som bäddar in en fil som inte finns).",
- "hidden-category-category-desc": "Detta är en kategori som innehåller <code><nowiki>__HIDDENCAT__</nowiki></code> vilket, som standard, förhindrar den från att visas i kategorirutan.",
+ "post-expand-template-inclusion-category-desc": "Sidan är större än <code>$wgMaxArticleSize</code> efter att alla mallar har expanderats, därför har vissa mallar inte expanderats.",
+ "post-expand-template-argument-category-desc": "Sidan är större än <code>$wgMaxArticleSize</code> efter att ett mallargument (någonting inom tre parenteser, som <code>{{{Foo}}}</code>) expanderats.",
+ "expensive-parserfunction-category-desc": "Sidan använder för många kostsamma parser-funktioner (som <code>#ifexist</code>). Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit användarhandboken].",
+ "broken-file-category-desc": "Sidan innehåller en trasig fillänk (en länk som bäddar in en fil som inte finns).",
+ "hidden-category-category-desc": "Kategorin innehåller <code><nowiki>__HIDDENCAT__</nowiki></code> i dess kategori, vilket som standard förhindrar den från att visas i kategorirutan.",
"trackingcategories-nodesc": "Ingen beskrivning tillgänglig.",
"trackingcategories-disabled": "Kategorin är inaktiverad",
"mailnologin": "Ingen adress att skicka till",
"mywatchlist": "Bevakningslista",
"watchlistfor2": "För $1 $2",
"nowatchlist": "Du har inga sidor i din bevakningslista.",
- "watchlistanontext": "Du måste $1 för att se eller redigera din bevakningslista.",
+ "watchlistanontext": "Du måste logga in för att se eller redigera din bevakningslista.",
"watchnologin": "Inte inloggad",
"addwatch": "Lägg till i bevakningslistan",
"addedwatchtext": "Sidan \"[[:$1]]\" har lagts till på din [[Special:Watchlist|bevakningslista]].\nFramtida ändringar av den här sidan och dess diskussionssida kommer att listas där.",
"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.",
+ "delete-cantedit": "Du kan inte ta radera denna sida eftersom du inte har behörighet att redigera den.",
"deleting-backlinks-warning": "'''Varning:'''\n[[Special:WhatLinksHere/{{FULLPAGENAME}}|Andra sidor]] länkar till eller inkluderar sidan som du är på väg att radera.",
"rollback": "Rulla tillbaka ändringar",
"rollback_short": "Tillbakarullning",
"autoblockid": "Autoblockera #$1",
"block": "Blockera användare",
"unblock": "Upphäv blockering av användare",
- "blockip": "Blockera användare",
+ "blockip": "Blockera {{GENDER:$1|användare}}",
"blockip-legend": "Blockera användare",
"blockiptext": "Använd formuläret nedan för att blockera möjligheten att redigera sidor från en specifik IP-adress eller ett användarnamn.\nDetta bör endast göras för att förhindra vandalisering, och i överensstämmelse med gällande [[{{MediaWiki:Policy-url}}|policy]].\nAnge orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).",
"ipaddressorusername": "IP-adress eller användarnamn:",
"ipb-unblock-addr": "Ta bort blockering av $1",
"ipb-unblock": "Ta bort blockering av en användare eller IP-adress",
"ipb-blocklist": "Visa gällande blockeringar",
- "ipb-blocklist-contribs": "Bidrag från $1",
+ "ipb-blocklist-contribs": "Bidrag från {{GENDER:$1|$1}}",
"unblockip": "Ta bort blockering av användare/IP-adress",
"unblockiptext": "Använd formuläret nedan för att ta bort blockeringen av en IP-adress.",
"ipusubmit": "Upphäv denna blockering",
"tooltip-preferences-save": "Spara inställningar",
"tooltip-summary": "Skriv en kort sammanfattning",
"interlanguage-link-title": "$1 - $2",
- "common.css": "/* CSS som skrivs här påverkar alla skal */",
+ "common.css": "/* CSS som skrivs här påverkar alla utseenden */",
"print.css": "/* CSS som skrivs här kommer att påverka utskriftsversionen */",
"noscript.css": "/* CSS som placeras här kommer att påverka användare med JavaScript inaktiverat */",
"group-autoconfirmed.css": "/* CSS som placeras här kommer bara att påverka bekräftade användare */",
"logentry-rights-rights": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3 från $4 till $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|ändrade}} gruppmedlemskapet för $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|befordrades}} automatiskt från $4 till $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|laddade upp}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|laddade upp}} en ny version av $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|laddade upp}} $3",
"rightsnone": "(inga)",
"feedback-bugornote": "Om du är redo att beskriva ett tekniskt problem detaljerat, var god [$1 rapporterar en bugg].\nAnnars kan du använda det enkla formuläret nedan. Din kommentar kommer att läggas till på sidan \"[$3 $2]\", tillsammans med ditt användarnamn och vilken webbläsare du använder.",
"feedback-subject": "Ämne:",
"action-pagelang": "ändra sidspråket",
"log-name-pagelang": "Språkändringslogg",
"log-description-pagelang": "Detta är en logg över ändringar i sidspråken.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ändrade}} sidspråket för $3 från $4 till $5.",
+ "default-skin-not-found": "Ojsan! Standardutseendet för din wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, är inte tillgängligt.\n\nDin installation verkar innehålla följande utseenden. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur dessa aktiveras och hur standard väljs.\n\n$2\n\n; Om du precis installerat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är att förvänta. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klipp-och-klistra in <code>skins/</code>-katalogen från den.\n:* Klona ett av <code>mediawiki/skins/*</code>-centralförvaren in i <code>skins/</code>-katalogen i din MediaWiki-installation.\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare.\n\n; Om du precis har uppgraderat MediaWiki:\n: MediaWiki 1.24 och nyare aktiverar ej längre automatiskt utseenden (se [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Automatisk identifiering av utseenden]). Du kan klistra in följande rader i <code>LocalSettings.php</code> för att aktivera alla för närvarande installerade utseenden:\n\n<pre>$3</pre>\n\n; Om du precis har ändrat i <code>LocalSettings.php</code>:\n: Dubbelkolla namnen för utseendena för att identifiera stavfel.",
+ "default-skin-not-found-no-skins": "Ojsan! Standardutseendet för din wiki (<code>$wgDefaultSkin</code>), <code>$1</code>, är inte tillgängligt.\n\nDu har inga installerade utseenden.\n\n; Om du precis installerat eller uppdaterat MediaWiki:\n: Du installerade troligen från git, eller direkt från källkoden via någon annan metod. Detta är att förvänta. MediaWiki 1.24 och nyare inkluderar inte några utseenden i det huvudsakliga centralförvaret. Försök att installera några utseenden från [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org:s utseendekatalog], genom att:\n:* Ladda ner [https://www.mediawiki.org/wiki/Download tarball-installeraren], som kommer med flera utseenden och tillägg. Du kan klipp-och-klistra in <code>skins/</code>-katalogen från den.\n* Klona ett av <code>mediawiki/skins/*</code>-centralförvaren in i <code>skins/</code>-katalogen i din MediaWiki-installation.\n: Att göra detta borde inte påverka ditt git-centralförvar om du är en MediaWiki-utvecklare. Se [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manualen: Utseendeinställningar] för information om hur utseenden aktiveras och hur standardutseendet väljs.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiverad)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''inaktiverad''')"
}
"talkpagelinktext": "Majadiliano",
"specialpage": "Ukurasa maalumu",
"personaltools": "Vifaa binafsi",
- "postcomment": "Fungu jipya",
"articlepage": "Onyesha kurasa zilizopo",
"talk": "Majadiliano",
"views": "Mitazamo",
"externaldberror": "Huenda kulikuwa na hitilafu ya database au labda hauruhusiwi kubadilisha akaunti yako ya nje.",
"login": "Ingia",
"nav-login-createaccount": "Ingia/ sajili akaunti",
- "loginprompt": "Lazima tarakalishi yako ipokee kuki ili uweze kuingia kwenye {{SITENAME}}.",
"userlogin": "Ingia/ sajili akaunti",
"userloginnocreate": "Ingia",
"logout": "Toka",
"searchprofile-advanced-tooltip": "Tafuta katika maeneo ya wiki utakayoyachagua",
"search-result-size": "$1 ({{PLURAL:$2|neno 1|maneno $2}})",
"search-result-category-size": "{{PLURAL:$1|ukurasa 1|kurasa $1}} ({{PLURAL:$2|kijamii 1|vijamii $2}}, {{PLURAL:$3|faili 1|mafaili $3}})",
- "search-result-score": "Kiwango cha ulinganisho na ulizo: $1%",
"search-redirect": "(elekezo toka kwa $1)",
"search-section": "(fungu $1)",
"search-suggest": "Je, ulitaka kutafuta: $1",
"uploadwarning": "Ilani kuhusu kupakia",
"uploadwarning-text": "Tafadhali ubadilishe maelezo ya faili hapo chini, halafu jaribu tena.",
"savefile": "Hifadhi faili",
- "uploadedimage": "ameipakia \"[[$1]]\"",
- "overwroteimage": "alipakia toleo jipya la \"[[$1]]\"",
"uploaddisabled": "Upakiaji umelemazwa.",
"copyuploaddisabled": "Kupakia kwa kupitia URL kumelemazwa.",
"uploaddisabledtext": "Upakiaji wa mafaili umelemazwa.",
"watchlist-details": "Unafuatilia {{PLURAL:$1|ukurasa $1|kurasa $1}} bila kuzingatia kurasa za majadiliano.",
"wlheader-enotif": "Huduma ya kuarifu kwa barua pepe imewezeshwa.",
"wlheader-showupdated": "Kurasa zilizobadilika tangu ulivyotembelea mara ya mwisho zinaonyeshwa katika hali ya '''kukooza'''",
+ "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",
"watching": "Unafuatilia...",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|majadiliano]])",
"duplicate-defaultsort": "!'''Ilani:''' Neno msingi la kupanga \"$2\" linafunika neno msingi la kupanga la awali \"$1\".",
"version": "Toleo",
+ "version-skins": "Maumbo",
"version-specialpages": "Kurasa maalum",
"version-variables": "Vibadili",
- "version-skins": "Maumbo",
"version-other": "Zingine",
"version-version": "(Toleo $1)",
"version-license": "Ruhusa",
"searchprofile-advanced-tooltip": "Sznupańy we uobranych raumach mjan",
"search-result-size": "$1 ({{PLURAL:$2|1 słowo|$2 słowa|$2 słůw}})",
"search-result-category-size": "{{PLURAL:$1|1 element|$1 elementy|$1 elementów}} ({{PLURAL:$2|1 kategoryjo|$2 kategoryje|$2 kategoryje}}, {{PLURAL:$3|1 uobrozek|$3 uobrozki|$3 uobrozkow}})",
- "search-result-score": "Akuratność: $1%",
"search-redirect": "(půnkńyńćy $1)",
"search-section": "(tajla $1)",
"search-suggest": "Myśloł żeś: $1 ?",
"file-deleted-duplicate": "Identyczny plik jak tyn plik ([[:$1]]) zostoł wyćepany. Sprowdź historyja wyćepań tamtygo plika ńim wćepńesz go nazod.",
"uploadwarning": "Uostřežyńe uo wćepywańu",
"savefile": "Spamjyntej plik",
- "uploadedimage": "wćepano \"[[$1]]\"",
- "overwroteimage": "wćepano nowszo wersyjo \"[[$1]]\"",
"uploaddisabled": "Wćepywanie sam plikůw je zawarte",
"uploaddisabledtext": "Wćepywańe plikůw je zawarte.",
"uploadscripted": "Tyn plik zawjyro kod HTML abo skrypt kery može zostać felerńe zinterpretowany bez přyglůndarka internetowo.",
"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-suggest": "நீங்கள் கருதியது இதையா: $1",
"uploadwarning": "பதிவேற்றல் எச்சரிக்கை",
"uploadwarning-text": "கீழுள்ள கோப்புச் சுருக்கத்தை மாற்றி விட்டு மீண்டும் சமர்ப்பியுங்கள்",
"savefile": "கோப்பைச் சேமி",
- "uploadedimage": "\"[[$1]]\" பதிவேற்றப்பட்டது",
- "overwroteimage": "\"[[$1]]\" கோப்பின் புதிய பதிப்பை பதிவேற்று",
"uploaddisabled": "பதிவேற்றம் செயலிழக்கச் செய்யப்பட்டுள்ளது",
"copyuploaddisabled": "URL வழியாக தகவலேற்றல் முடக்கப்பட்டுள்ளது.",
"uploaddisabledtext": "கோப்பு பதிவேற்றங்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன.",
"mywatchlist": "கவனிப்புப் பட்டியல்",
"watchlistfor2": "$1 பயனரின் ($2)",
"nowatchlist": "உங்களுடைய கவனிப்புப் பட்டியலில் ஒரு விடயமும் இல்லை.",
- "watchlistanontext": "உங்கள் கவனிப்புப் பட்டியலைப் பார்க்க அல்லது தொகுக்க அருள் கூர்ந்து $1 செய்யுங்கள்.",
+ "watchlistanontext": "உங்கள் கவனிப்புப் பட்டியலைப் பார்க்க அல்லது தொகுக்க அருள் கூர்ந்து புகுபதிகை செய்யுங்கள்.",
"watchnologin": "புகுபதிகை செய்யப்படவில்லை.",
"addwatch": "கவனிப்புப் பட்டியலில் சேர்",
"addedwatchtext": "\"[[:$1]]\" பக்கம் உங்கள் [[Special:Watchlist|கவனிப்புப் பக்கத்தில்]] சேர்க்கப்பட்டுள்ளது. இந்தப் பக்கத்துக்கு எதிர்காலத்தில் செய்யப்படவுள்ள மாற்றங்களும், அதனோடிணைந்த பேச்சுப் பக்கமும், அங்கே பட்டியலிடப்படும். அத்துடன் தெரிந்தெடுக்க வசதியாக [[Special:RecentChanges|அண்மைய மாற்றங்களின் பட்டியலில்]] இது தடித்த எழுத்துக்களில் காட்டப்படும். பின்னர், இப் பக்கத்தை உங்கள் கவனிப்புப் பட்டியலிலிருந்து நீக்க விரும்பினால், பக்கச் சட்டத்திலுள்ள ''கவனிப்பு நீக்கு'' என்ற இணைப்பைச் சொடுக்கவும்.",
"autoblockid": "தானியங்கி தடை #$1",
"block": "பயனரைத் தடைசெய்",
"unblock": "பயனர் தடையை நீக்கு",
- "blockip": "பயனரà¯\88தà¯\8d தà®\9fà¯\81",
+ "blockip": "தà®\9fà¯\81à®\95à¯\8dà®\95வà¯\81à®®à¯\8d {{GENDER:$1|பயனரà¯\8d}}",
"blockip-legend": "பயனரைத் தடு",
"blockiptext": "ஒரு குறிப்பிட்ட ஐபி முகவரி அல்லது பயனரிடமிருந்து எழுத்து அணுக்கத்தைத் தடுப்பதற்குக் கீழேயுள்ள படிவத்தை உபயோகிக்கவும். இது விசமத்தனத்தைத் தடுப்பதற்கும் [[{{MediaWiki:Policy-url}}|{{SITENAME}} கொள்கை]]க்கு எற்புடைய வகையிலும் மட்டுமே பயன்படுத்தப்பட வேண்டும்.\nகுறிப்பிட்ட காரணமொன்றைக் கீழே நிரப்புக (எடுத்துக்காட்டாக, விசமத்தனம் செய்யப்பட்ட பக்கங்களை எடுத்துக் காட்டவும்).",
"ipaddressorusername": "ஐ.பி. அல்லது பயனர் பெயர்:",
"ipb-unblock-addr": "$1 இன் தடையை நீக்கு",
"ipb-unblock": "ஐ.பி. அல்லது பயனருக்கான தடையை நீக்கு",
"ipb-blocklist": "தற்போதுள்ள தடுப்புகளைப் பார்",
- "ipb-blocklist-contribs": "$1 யின் பங்களிப்புகள்",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}}க்கு பங்களிப்புகள்",
"unblockip": "பயனர் தடையை நீக்கு",
"unblockiptext": "முன்னர் தடுக்கப்பட்ட ஐ.பி. முகவரி அல்லது பயனர்பெயரின் எழுத்து அணுக்கத்தை மீழ்விப்பதற்கு கீழேயுள்ள படிவத்தை பயன்படுத்தவும்.",
"ipusubmit": "இந்தத் தடையை நீக்கு",
"talkpagelinktext": "ಪಾತೆರ",
"specialpage": "ವಿಶೇಷ ಪುಟ",
"personaltools": "ವೈಯಕ್ತಿಕ ಉಪಕರಣಲು",
- "postcomment": "ಕಮೆಂಟ್ ಬರೆಲೆ",
"articlepage": "ಲೇಖನ ಪುಟೊನು ತೂಲೆ",
"talk": "ಚರ್ಚೆ",
"views": "ನೋಟಲು",
"filedesc": "ಸಾರಾಂಶ",
"filesource": "ಮೂಲ",
"savefile": "ಕಡತನ್ ಒರಿಪಾಲೆ",
- "uploadedimage": "\"[[$1]]\" ಅಪ್ಲೋಡ್ ಆಂಡ್",
"upload-source": "ಮೂಲ ಕಡತ",
"license-header": "ಲೈಸೆನ್ಸಿಂಗ್",
"imgfile": "ಫೈಲ್",
"talkpagelinktext": "చర్చ",
"specialpage": "ప్రత్యేక పేజీ",
"personaltools": "వ్యక్తిగత పనిముట్లు",
- "postcomment": "కొత్త విభాగం",
"articlepage": "విషయపు పేజీని చూడండి",
"talk": "చర్చ",
"views": "చూపులు",
"externaldberror": "డేటాబేసు అధీకరణలో లోపం జరిగింది లేదా మీ బయటి ఖాతాను తాజాకరించడానికి మీకు అనుమతి లేదు.",
"login": "లాగినవండి",
"nav-login-createaccount": "లాగినవండి / ఖాతాని సృష్టించుకోండి",
- "loginprompt": "{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.",
"userlogin": "లాగినవండి / ఖాతాను సృష్టించుకోండి",
"userloginnocreate": "లాగినవండి",
"logout": "నిష్క్రమించు",
"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": "(ఫైలు విషయంతో సరిపోలుతోంది)",
"uploadwarning": "ఎక్కింపు హెచ్చరిక",
"uploadwarning-text": "కింద ఈ ఫైలు వివరణను మార్చి, మళ్ళీ ప్రయత్నించండి.",
"savefile": "దస్త్రాన్ని భద్రపరచు",
- "uploadedimage": "\"[[$1]]\"ని ఎక్కించారు",
- "overwroteimage": "\"[[$1]]\" యొక్క కొత్త కూర్పును ఎక్కించారు",
"uploaddisabled": "ఎక్కింపులు అచేతనం చెయ్యబడ్డాయి.",
"copyuploaddisabled": "URL ద్వారా ఎక్కింపుని అశక్తం చేసారు.",
"uploaddisabledtext": "ఫైళ్ళ ఎక్కింపులను అచేతనం చేసారు.",
"watchlist-details": "మీ వీక్షణ జాబితాలో {{PLURAL:$1|ఒక పేజీ ఉంది|$1 పేజీలు ఉన్నాయి}}, చర్చా పేజీలని వదిలేసి.",
"wlheader-enotif": "ఈ-మెయిలు గమనికలు పంపబడతాయి.",
"wlheader-showupdated": "మీ గత సందర్శన తరువాత మారిన పేజీలు <strong>బొద్దు</strong>గా చూపించబడ్డాయి.",
- "wlnote2": "$2, $3 సమయానికి, గత {{PLURAL:$1|గంటలో|<strong>$1</strong> గంటల్లో}}, జరిగిన మార్పులు కింద ఇవ్వబడ్డాయి.",
+ "wlnote": "$3 నాడు $4 సమయానికి, గడచిన {{PLURAL:$2|గంటలో|'''$2''' గంటలలో}} జరిగిన {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.",
"wlshowlast": "గత $1 గంటల $2 రోజుల $3 చూపించు",
"watchlist-options": "వీక్షణ జాబితా ఎంపికలు",
"watching": "గమనిస్తున్నారు...",
"duplicate-defaultsort": "హెచ్చరిక: డిఫాల్టు పేర్చు కీ \"$2\", గత డిఫాల్టు పేర్చు కీ \"$1\" ని అతిక్రమిస్తుంది.",
"version": "సంచిక",
"version-extensions": "స్థాపించిన పొడగింతలు",
+ "version-skins": "అలంకారాలు",
"version-specialpages": "ప్రత్యేక పేజీలు",
"version-parserhooks": "పార్సరు కొక్కాలు",
"version-variables": "చరరాశులు",
"version-antispam": "స్పాము నివారణ",
- "version-skins": "అలంకారాలు",
"version-other": "ఇతర",
"version-mediahandlers": "మీడియాను ఫైళ్లను నడిపించే పొడిగింపులు",
"version-hooks": "కొక్కాలు",
"talkpage": "Diskusaun kona-ba pájina ne'e",
"talkpagelinktext": "Diskusaun",
"specialpage": "Pájina espesiál",
- "postcomment": "Seksaun foun",
"talk": "Diskusaun",
"toolbox": "Kaixa besi nian",
"userpage": "Haree pájina uza-na'in",
"talkpagelinktext": "Баҳс",
"specialpage": "Саҳифаи вижа",
"personaltools": "Абзорҳои шахсӣ",
- "postcomment": "Бахши нав",
"articlepage": "Намоиши мақола",
"talk": "Баҳс",
"views": "Назарот",
"externaldberror": "Хатое дар иртибот бо пойгоҳи дода рух дода аст ё ин ки шумо иҷозат ба рӯзрасонии ҳисоби берунии худро надоред.",
"login": "Вуруд",
"nav-login-createaccount": "Вуруд / Сохтани ҳисоби ҷадид",
- "loginprompt": "Барои вуруд ба {{SITENAME}} бояд кукиҳоро фаъол кунед.",
"userlogin": "Вуруд / Сохтани ҳисоби ҷадид",
"userloginnocreate": "Вуруд",
"logout": "Хуруҷ аз систем",
"searchprofile-everything-tooltip": "Ҷустуҷӯи ҳамаи мӯҳтаво (бо ҳисоби саҳифаҳои баҳс)",
"searchprofile-advanced-tooltip": "Ҷустуҷӯ дар фазоҳои номи дилхоҳ",
"search-result-size": "$1 ({{PLURAL:$2|1 калима|$2 калимаҳо}})",
- "search-result-score": "Иртибот: $1%",
"search-redirect": "(тағйири масир $1)",
"search-section": "(қисмат $1)",
"search-suggest": "Оё шумо инро дар назар доред: $1",
"fileexists-shared-forbidden": "Дар ҳоли ҳозир парванде бо ҳамин ном дар анбори муштараки парвандаҳо вуҷуд дорад; лутфан бар гардед ва парвандаи мавриди назари худро бо номи дигар бо кунед. [[File:$1|thumb|center|$1]]",
"uploadwarning": "Огоҳии фиристодан",
"savefile": "Захираи парванда",
- "uploadedimage": "боршуда \"[[$1]]\"",
- "overwroteimage": "нусхаи ҷадиди \"[[$1]]\" боргузорӣ шуд",
"uploaddisabled": "Бор кордан ғайрифаъол аст",
"copyuploaddisabled": "Боркунӣ тавассути нишонаи интернетӣ ғайрифаъол аст.",
"uploaddisabledtext": "Боркунии парванда ғайрифаъол аст.",
"watchlist-details": "{{PLURAL:$1|$1 саҳифа|$1 саҳифаҳо}} дар феҳристи пайгириҳои шумо, бидуни ҳисоби саҳифаҳои баҳс.",
"wlheader-enotif": "Иттилоорасонии тариқи почтаи электронӣ (E-mail) фаъол шудааст.",
"wlheader-showupdated": "Саҳифаҳое, ки пас аз охирин сар заданатон ба онҳо тағйир кардаанд '''пурранг''' нишон дода шудаанд",
+ "wlnote": "Дар зер {{PLURAL:$1|охирин тағйир|'''$1''' охирин тағйирот}} дар $2 соати охир {{PLURAL:омадааст|омадаанд}}.",
"wlshowlast": "Намоиши охирин $1 соат $2 рӯзҳо $3",
"watchlist-options": "Ихтиёроти феҳристи пайгириҳо",
"watching": "Пайгири...",
"talkpagelinktext": "Bahs",
"specialpage": "Sahifai viƶa",
"personaltools": "Abzorhoi şaxsī",
- "postcomment": "Baxşi nav",
"articlepage": "Namoişi maqola",
"talk": "Bahs",
"views": "Nazarot",
"externaldberror": "Xatoe dar irtibot bo pojgohi doda rux doda ast jo in ki şumo içozat ba rūzrasoniji hisobi beruniji xudro nadored.",
"login": "Vurud",
"nav-login-createaccount": "Vurud / Soxtani hisobi çadid",
- "loginprompt": "Baroi vurud ba {{SITENAME}} bojad kukihoro fa'ol kuned.",
"userlogin": "Vurud / Soxtani hisobi çadid",
"userloginnocreate": "Vurud",
"logout": "Xuruç az sistem",
"searchprofile-images-tooltip": "Çustuçūi parvandaho",
"searchprofile-everything-tooltip": "Çustuçūi hamai mūhtavo (bo hisobi sahifahoi bahs)",
"search-result-size": "$1 ({{PLURAL:$2|1 kalima|$2 kalimaho}})",
- "search-result-score": "Irtibot: $1%",
"search-redirect": "(taƣjiri masir $1)",
"search-section": "(qismat $1)",
"search-suggest": "Ojo şumo inro dar nazar dored: $1",
"fileexists-thumbnail-yes": "Az aks ba nazar merasad, ki aksi andozaaş xurd ''(anguştdona)''. [[$1|thumb]]\nLutan parvandaro <strong>[[:$1]]</strong> barrasī kuned.\nAgar parvandai barrasişuda aksi xurd karda şudai on parvandai aslī ast, nijoze ba borguzoriji aksi xurd nest.",
"uploadwarning": "Ogohiji firistodan",
"savefile": "Zaxirai parvanda",
- "uploadedimage": "borşuda \"[[$1]]\"",
- "overwroteimage": "nusxai çadidi \"[[$1]]\" borguzorī şud",
"uploaddisabled": "Bor kordan ƣajrifa'ol ast",
"uploadscripted": "In parvanda kodi skriptī jo HTML dorad, ki metavonad dar mururgarī veb nodurust namojon şavad.",
"uploadvirus": "In parvanda virus dorad! Çuz'ijot: $1",
"watchlist-details": "{{PLURAL:$1|$1 sahifai|$1 sahifahoi}} dar fehristi pajgirihoi şumo, biduni hisobi sahifahoi bahs.",
"wlheader-enotif": "Ittiloorasoniji tariqi poctai elektronī (E-mail) imkonpazir ast.",
"wlheader-showupdated": "Sahifahoe, ki pas az oxirin sar zadanaton ba onho taƣjir kardaand '''purrang''' nişon doda şudaand",
+ "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",
"watching": "Pajgiri...",
"tog-newpageshidepatrolled": "ซ่อนหน้าที่ตรวจแล้วจากรายการหน้าใหม่",
"tog-extendwatchlist": "ขยายรายการเฝ้าดูให้แสดงการเปลี่ยนแปลงทั้งหมด ไม่เพียงการเปลี่ยนแปลงล่าสุด",
"tog-usenewrc": "จัดกลุ่มการเปลี่ยนแปลงแบ่งตามหน้าในรายการปรับปรุงล่าสุดและรายการเฝ้าดู",
- "tog-numberheadings": "à¹\83สà¹\88à¹\80ลà¸\82หัวà¸\82à¹\89à¸à¹\83à¸\99สารà¸\9aัà¸\8dอัตโนมัติ",
+ "tog-numberheadings": "à¹\83สà¹\88à¹\80ลà¸\82หัวà¹\80รืà¹\88à¸à¸\87อัตโนมัติ",
"tog-showtoolbar": "แสดงแถบเครื่องมือแก้ไข",
"tog-editondblclick": "แก้ไขหน้าเมื่อดับเบิลคลิก",
"tog-editsectiononrightclick": "เปิดใช้งานการแก้ไขเฉพาะส่วนโดยคลิกขวาที่ชื่อเรื่องของส่วนนั้น",
"tog-watchrollback": "เพิ่มหน้าที่ฉันย้อนกลับฉุกเฉินเข้ารายการเฝ้าดู",
"tog-minordefault": "กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย",
"tog-previewontop": "ให้ตัวอย่างการแก้ไขแสดงก่อนกล่องแก้ไข",
- "tog-previewonfirst": "à¹\81สà¸\94à¸\87à¸\95ัวà¸à¸¢à¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82สำหรัà¸\9aการแก้ไขครั้งแรก",
- "tog-enotifwatchlistpages": "à¸à¸µà¹\80มลหาà¹\80มืà¹\88à¸à¸«à¸\99à¹\89าหรืà¸à¹\84à¸\9fลà¹\8cà¹\83à¸\99รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ูมีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87",
- "tog-enotifusertalkpages": "à¸à¸µà¹\80มลหาà¹\80มืà¹\88à¸à¸«à¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82à¸à¸\87à¸\89ัà¸\99มีà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87",
+ "tog-previewonfirst": "à¹\81สà¸\94à¸\87à¸\95ัวà¸à¸¢à¹\88าà¸\87à¹\83à¸\99การแก้ไขครั้งแรก",
+ "tog-enotifwatchlistpages": "อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูเปลี่ยนแปลง",
+ "tog-enotifusertalkpages": "à¸à¸µà¹\80มลหาà¹\80มืà¹\88à¸à¸¡à¸µà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82à¸à¸\87à¸\89ัà¸\99",
"tog-enotifminoredits": "อีเมลหาเช่นกันสำหรับการแก้ไขหน้าและไฟล์เล็กน้อย",
"tog-enotifrevealaddr": "เปิดเผยที่อยู่อีเมลของฉันในอีเมลแจ้งเตือน",
"tog-shownumberswatching": "แสดงจำนวนผู้ใช้ที่เฝ้าดู",
"tog-watchlisthideanons": "ซ่อนการแก้ไขโดยผู้ใช้นิรนามจากรายการเฝ้าดู",
"tog-watchlisthidepatrolled": "ซ่อนการแก้ไขที่ตรวจแล้วจากรายการเฝ้าดู",
"tog-ccmeonemails": "ส่งสำเนาอีเมลที่ฉันส่งหาผู้อื่นให้ฉัน",
- "tog-diffonly": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¹\80à¸\99ืà¹\89à¸à¸«à¸²à¹\83à¸\95à¹\89สà¹\88วà¸\99à¸\95à¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82",
+ "tog-diffonly": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¹\80à¸\99ืà¹\89à¸à¸«à¸²à¸«à¸\99à¹\89าà¹\83à¸\95à¹\89à¸\9cลà¸\95à¹\88าà¸\87",
"tog-showhiddencats": "แสดงหมวดหมู่ที่ซ่อนอยู่",
- "tog-norollbackdiff": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลงหลังดำเนินการย้อนกลับฉุกเฉิน",
+ "tog-norollbackdiff": "à¹\84มà¹\88à¹\81สà¸\94à¸\87à¸\9cลà¸\95à¹\88างหลังดำเนินการย้อนกลับฉุกเฉิน",
"tog-useeditwarning": "เตือนฉันเมื่อออกหน้าแก้ไขโดยมีการเปลี่ยนแปลงที่ยังไม่บันทึก",
"tog-prefershttps": "ใช้การเชื่อมต่อปลอดภัยทุกครั้งเมื่อล็อกอิน",
"underline-always": "ทุกครั้ง",
"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-file-count": "{{PLURAL:$2|หมวà¸\94หมูà¹\88à¸\99ีà¹\89มีà¹\80à¸\9eียà¸\87à¹\84à¸\9fลà¹\8cà¹\80à¸\94ียว|à¹\83à¸\99หมวดหมู่นี้มี $1 ไฟล์ จากทั้งหมด $2 ไฟล์}}",
+ "category-article-count-limited": "$1 หน้าต่อไปนี้อยู่ในหมวดหมู่นี้",
+ "category-file-count": "{{PLURAL:$2|หมวà¸\94หมูà¹\88à¸\99ีà¹\89มีà¹\80à¸\9eียà¸\87à¹\84à¸\9fลà¹\8cà¸\99ีà¹\89|หมวดหมู่นี้มี $1 ไฟล์ จากทั้งหมด $2 ไฟล์}}",
"category-file-count-limited": "{{PLURAL:$1|ไฟล์|ไฟล์}}ต่อไปนี้อยู่ในหมวดหมู่นี้",
"listingcontinuesabbrev": "ต่อ",
"index-category": "หน้าที่มีดัชนี",
"history_short": "ประวัติ",
"updatedmarker": "ถูกปรับตั้งแต่การเข้าชมครั้งล่าสุดของฉัน",
"printableversion": "รุ่นพร้อมพิมพ์",
- "permalink": "ลิà¸\87à¸\81à¹\8cถาวร",
+ "permalink": "à¸\81ารà¹\82ยà¸\87ถาวร",
"print": "พิมพ์",
"view": "ดู",
"view-foreign": "ดูบน $1",
"viewcount": "หน้านี้มีการเข้าชม $1 ครั้ง",
"protectedpage": "หน้าถูกล็อก",
"jumpto": "ข้ามไปยัง:",
- "jumptonavigation": "à¸\99ำทาง",
+ "jumptonavigation": "à¸\9aà¸à¸\81ทาง",
"jumptosearch": "ค้นหา",
"view-pool-error": "ขออภัย ขณะนี้เซิร์ฟเวอร์มีภาระเกิน\nผู้ใช้พยายามดูหน้านี้มากเกินไป\nกรุณารอสักครู่ก่อนเข้าหน้านี้อีกครั้ง\n\n$1",
"generic-pool-error": "ขออภัย ขณะนี้เซิร์ฟเวอร์โหลดเกิน\nมีผู้ใช้พยายามดูทรัพยากรนี้มากเกินไป\nโปรดรอสักครู่ก่อนลองเข้าถึงทรัพยากรนี้อีกครั้ง",
"portal-url": "Project:ศูนย์รวมชุมชน",
"privacy": "นโยบายสิทธิส่วนบุคคล",
"privacypage": "Project:นโยบายสิทธิส่วนบุคคล",
- "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ์",
+ "badaccess": "มีข้อผิดพลาดในการใช้สิทธิ",
"badaccess-group0": "คุณไม่ได้รับอนุญาตให้ดำเนินการตามที่ขอ",
- "badaccess-groups": "ปฏิบัติการที่คุณขอนี้สงวนไว้เฉพาะผู้ใช้ใน{{PLURAL:$2|กลุ่ม|กลุ่ม}}: $1",
+ "badaccess-groups": "ปฏิบัติการที่คุณขอนี้สงวนไว้เฉพาะผู้ใช้ใน{{PLURAL:$2|กลุ่ม|กลุ่มเหล่านี้}}: $1",
"versionrequired": "ต้องการมีเดียวิกิรุ่น $1",
"versionrequiredtext": "การใช้หน้านี้ต้องการมีเดียวิกิรุ่น $1 ดู[[Special:Version|หน้ารุ่น]]",
"ok": "ตกลง",
"hidetoc": "ซ่อน",
"collapsible-collapse": "ยุบ",
"collapsible-expand": "ขยาย",
+ "confirmable-confirm": "คุณแน่ใจหรือ",
+ "confirmable-yes": "ใช่",
+ "confirmable-no": "ไม่",
"thisisdeleted": "ดูหรือกู้คืน $1 หรือไม่",
"viewdeleted": "ดู $1 หรือไม่",
"restorelink": "$1 การแก้ไขที่ถูกลบ",
- "feedlinks": "ฟีด",
+ "feedlinks": "ฟีด:",
"feed-invalid": "ฟีดที่สมัครไม่ถูกชนิด",
"feed-unavailable": "ฟีดไม่ถูกเปิดการใช้งาน",
"site-rss-feed": "ฟีดอาร์เอสเอส $1",
"nosuchactiontext": "การกระทำที่กำหนดผ่านยูอาร์แอลดังกล่าวไม่สามารถใช้ได้\nคุณอาจกรอกยูอาร์แอลผิด หรือมาตามลิงก์ที่ไม่ถูกต้อง\nหรืออาจเกิดจากข้อผิดพลาดในซอฟต์แวร์ซึ่ง {{SITENAME}} ใช้อยู่",
"nosuchspecialpage": "ไม่มีหน้าพิเศษดังกล่าว",
"nospecialpagetext": "<strong>คุณขอหน้าพิเศษไม่ถูกต้อง</strong>\n\nรายการหน้าพิเศษที่ถูกต้องดูได้ที่ [[Special:SpecialPages|รายการหน้าพิเศษ]]",
- "error": "ผิดพลาด",
- "databaseerror": "ผิดพลาดที่ฐานข้อมูล",
+ "error": "à¸\82à¹\89à¸à¸\9cิà¸\94à¸\9eลาà¸\94",
+ "databaseerror": "à¸\82à¹\89à¸à¸\9cิà¸\94à¸\9eลาà¸\94à¸\97ีà¹\88à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥",
"databaseerror-text": "เกิดความผิดพลาดข้อคำถามของฐานข้อมูล\nซึ่งอาจบ่งชี้ว่ามีจุดบกพร่องในซอฟต์แวร์",
"databaseerror-textcl": "เกิดความผิดพลาดข้อคำถามของฐานข้อมูล",
"databaseerror-query": "ข้อคำถาม: $1",
"databaseerror-function": "ฟังก์ชัน: $1",
- "databaseerror-error": "à¸\84วามผิดพลาด: $1",
- "laggedslavemode": "'''คำเตือน:''' ข้อมูลในหน้าอาจไม่ใช่ข้อมูลล่าสุด",
+ "databaseerror-error": "à¸\82à¹\89à¸ผิดพลาด: $1",
+ "laggedslavemode": "<strong>คำเตือน:</strong> หน้านี้อาจไม่มีการปรับล่าสุด",
"readonly": "ฐานข้อมูลถูกล็อก",
"enterlockreason": "ใส่เหตุแห่งการล็อก ทั้งเวลาที่คาดว่าจะปลดล็อก",
- "readonlytext": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¸\96ูà¸\81ลà¹\87à¸à¸\81มิà¹\83หà¹\89รัà¸\9aà¸\82à¹\89à¸à¸¡à¸¹à¸¥à¹\83หมà¹\88à¹\81ละà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87อื่น อาจเป็นเพราะการบำรุงรักษาฐานข้อมูลรูทีน หลังแล้วเสร็จจะกลับมาใช้งานได้ตามปกติ\n\nผู้ดูแลระบบที่ล็อกได้ให้คำอธิบายดังนี้: $1",
- "missing-article": "à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¹\84มà¹\88à¸\9eà¸\9aà¹\80à¸\99ืà¹\89à¸à¸«à¸²à¸\82à¸à¸\87หà¸\99à¹\89าà¸\97ีà¹\88à¸\84วรà¸\88ะมี à¹\83à¸\99à¸\8aืà¹\88ภ\"$1\" $2\n\nสาà¹\80หà¸\95ุมัà¸\81à¹\80à¸\81ิà¸\94à¸\88าà¸\81à¸\81ารà¹\80à¸\9bรียà¸\9aà¹\80à¸\97ียà¸\9aà¸\97ีà¹\88ลà¹\89าสมัย หรืà¸à¸\81ารà¹\80à¸\8aืà¹\88à¸à¸¡à¹\82ยà¸\87à¸\9bระวัà¸\95ิà¹\84à¸\9bยัà¸\87หà¸\99à¹\89าà¸\99ัà¹\89à¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว\n\nหาà¸\81à¹\84มà¹\88à¹\83à¸\8aà¹\88à¸\81รà¸\93ีà¸\94ัà¸\87à¸\81ลà¹\88าว à¸\84ุà¸\93à¸à¸²à¸\88à¸\9eà¸\9aà¸\9aัà¹\8aà¸\81ในซอฟต์แวร์ กรุณารายงานต่อ[[Special:ListUsers/sysop|ผู้ดูแลระบบ]] พร้อมระบุยูอาร์แอล",
- "missingarticle-rev": "(รุ่น#: $1)",
+ "readonlytext": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¸\96ูà¸\81ลà¹\87à¸à¸\81มิà¹\83หà¹\89รัà¸\9aà¸\82à¹\89à¸à¸¡à¸¹à¸¥à¹\83หมà¹\88à¹\81ละà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\9eิà¹\88มà¹\80à¸\95ิมอื่น อาจเป็นเพราะการบำรุงรักษาฐานข้อมูลรูทีน หลังแล้วเสร็จจะกลับมาใช้งานได้ตามปกติ\n\nผู้ดูแลระบบที่ล็อกได้ให้คำอธิบายดังนี้: $1",
+ "missing-article": "à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¹\84มà¹\88à¸\9eà¸\9aà¸\82à¹\89à¸à¸\84วามà¸\82à¸à¸\87หà¸\99à¹\89าà¸\97ีà¹\88à¸\84วรมี à¸\8aืà¹\88ภ\"$1\" $2\n\nสาà¹\80หà¸\95ุมัà¸\81à¹\80à¸\81ิà¸\94à¸\88าà¸\81à¸\9cลà¸\95à¹\88าà¸\87à¸\97ีà¹\88ลà¹\89าสมัย หรืà¸à¸\81ารà¹\80à¸\8aืà¹\88à¸à¸¡à¹\82ยà¸\87à¸\9bระวัà¸\95ิà¹\84à¸\9bยัà¸\87หà¸\99à¹\89าà¸\99ัà¹\89à¸\99à¸\96ูà¸\81ลà¸\9aà¹\81ลà¹\89ว\n\nหาà¸\81à¹\84มà¹\88à¹\83à¸\8aà¹\88à¸\81รà¸\93ีà¸\94ัà¸\87à¸\81ลà¹\88าว à¸\84ุà¸\93à¸à¸²à¸\88à¸\9eà¸\9aà¸\88ุà¸\94à¸\9aà¸\81à¸\9eรà¹\88à¸à¸\87ในซอฟต์แวร์ กรุณารายงานต่อ[[Special:ListUsers/sysop|ผู้ดูแลระบบ]] พร้อมระบุยูอาร์แอล",
+ "missingarticle-rev": "(รุ่นปรับปรุง#: $1)",
"missingarticle-diff": "(ต่าง: $1, $2)",
"readonly_lag": "ฐานข้อมูลถูกล็อกอัตโนมัติขณะที่เซิร์ฟเวอร์ฐานข้อมูลรองกำลังปรับปรุงตามฐานข้อมูลหลัก",
- "internalerror": "à¹\80à¸\81ิà¸\94à¸\84วามผิดพลาดภายใน",
- "internalerror_info": "à¹\80à¸\81ิà¸\94à¸\84วามผิดพลาดภายใน: $1",
+ "internalerror": "à¸\82à¹\89à¸ผิดพลาดภายใน",
+ "internalerror_info": "à¹\80à¸\81ิà¸\94à¸\82à¹\89à¸ผิดพลาดภายใน: $1",
"filecopyerror": "ไม่สามารถคัดลอกไฟล์ \"$1\" ไปที่ \"$2\"",
"filerenameerror": "ไม่สามารถเปลี่ยนชื่อไฟล์ \"$1\" เป็น \"$2\"",
"filedeleteerror": "ไม่สามารถลบไฟล์ \"$1\"",
"directorycreateerror": "ไม่สามารถสร้างไดเรกทอรี \"$1\"",
"filenotfound": "ไม่พบไฟล์ \"$1\"",
"unexpected": "ผลที่ไม่คาดคิด: \"$1\"=\"$2\"",
- "formerror": "à¸\9cิà¸\94à¸\9eลาà¸\94: à¹\84มà¹\88สามารà¸\96สà¹\88à¸\87à¹\81à¸\9aà¸\9aได้",
- "badarticleerror": "à¸\81ารà¸\81ระà¸\97ำà¸\99ีà¹\89à¹\84มà¹\88สามารà¸\96à¸\97ำà¹\83à¸\99หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94้",
+ "formerror": "à¸\82à¹\89à¸à¸\9cิà¸\94à¸\9eลาà¸\94: สà¹\88à¸\87à¹\81à¸\9aà¸\9aà¹\84มà¹\88ได้",
+ "badarticleerror": "à¹\84มà¹\88สามารà¸\96à¸\94ำà¹\80à¸\99ิà¸\99à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารà¸\99ีà¹\89à¹\83à¸\99หà¸\99à¹\89าà¸\99ี้",
"cannotdelete": "ไม่สามารถลบหน้าหรือไฟล์ \"$1\" \nอาจมีผู้อื่นลบไปแล้ว",
"cannotdelete-title": "ไม่สามารถลบหน้า ''$1''",
- "delete-hook-aborted": "à¸\81ารลà¸\9aà¸\96ูà¸\81ฮุà¸\81ยà¸\81à¹\80ลิà¸\81\nà¹\82à¸\94ยà¹\84มà¹\88มีà¸\84ำà¸à¸\98ิà¸\9aาย",
+ "delete-hook-aborted": "à¸\81ารลà¸\9aà¸\96ูà¸\81ฮุà¸\81ยà¸\81à¹\80ลิà¸\81\nà¹\82à¸\94ยà¹\84มà¹\88มีà¸\84ำà¸\8aีà¹\89à¹\81à¸\88à¸\87",
"no-null-revision": "ไม่สามารถสร้างรุ่นว่างใหม่ของหน้า \"$1\"",
"badtitle": "ใช้ชื่อเรื่องนี้ไม่ได้",
"badtitletext": "ชื่อหน้าที่ขอไม่ถูกต้อง เป็นชื่อว่าง หรือชื่อข้ามภาษาหรือข้ามวิกิที่เชื่อมโยงไม่ถูกต้อง\nอาจมีอักขระที่ไม่สามารถใช้ในชื่อเรื่องได้",
"perfcached": "ข้อมูลต่อไปนี้ถูกเก็บในแคช และอาจล้าสมัย มีผลการค้นหาสูงสุด $1 รายการในแคช",
"perfcachedts": "ข้อมูลต่อไปนี้ถูกเก็บในแคช และได้รับการปรับล่าสุดเมื่อ $1 ผลลัพธ์สูงสุด $4 รายการสามารถเก็บในแคชได้",
- "querypage-no-updates": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\81ารà¸\9bรัà¸\9aà¸\9bรุà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9a ข้อมูลในที่นี้จะไม่รีเฟรชเป็นปัจจุบัน",
+ "querypage-no-updates": "à¸\82à¸\93ะà¸\99ีà¹\89à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ารà¸\9bรัà¸\9aหà¸\99à¹\89าà¸\99ีà¹\89 \nข้อมูลในที่นี้จะไม่รีเฟรชเป็นปัจจุบัน",
"viewsource": "ดูโค้ด",
"viewsource-title": "ดูโค้ดสำหรับ $1",
- "actionthrottled": "à¸\81ารà¸\81ระà¸\97ำà¸\99ีà¹\89à¸\96ูà¸\81ระà¸\87ัà¸\9aà¹\84วà¹\89à¸\8aัà¹\88วà¸\84ราว",
- "actionthrottledtext": "à¹\80à¸\9eืà¹\88à¸à¹\80à¸\9bà¹\87à¸\99มาà¸\95รà¸\81ารà¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99สà¹\81à¸\9bม à¸\84ุà¸\93à¸\88ึà¸\87à¸\96ูà¸\81à¸\88ำà¸\81ัà¸\94มิà¹\83หà¹\89à¸\81ระà¸\97ำสิà¹\88à¸\87à¸\99ีà¹\89à¹\84มà¹\88à¹\83หà¹\89à¸\95ิà¸\94à¸\95à¹\88à¸à¸\81ัà¸\99หลายà¸\84รัà¹\89à¸\87à¹\80à¸\81ิà¸\99à¹\84à¸\9bà¹\83à¸\99à¸\8aà¹\88วà¸\87ระยะà¹\80วลาสัà¹\89à¸\99 à¹\86 à¸\8bึà¹\88à¸\87à¸\82à¸\93ะà¸\99ีà¹\89à¸\84ุà¸\93à¹\84à¸\94à¹\89à¸\81ระà¸\97ำà¹\80à¸\81ิà¸\99à¸\82ีà¸\94à¸\88ำà¸\81ัà¸\94à¹\81ลà¹\89ว กรุณารอสักครู่แล้วลองอีกครั้ง",
- "protectedpagetext": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ลà¹\87à¸à¸\81à¹\80à¸\9eืà¹\88à¸à¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99มิà¹\83หà¹\89แก้ไขหรือปฏิบัติการอื่น",
+ "actionthrottled": "à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\81ารà¸\96ูà¸\81à¸\88ำà¸\81ัà¸\94",
+ "actionthrottledtext": "à¹\80à¸\9eืà¹\88à¸à¹\80à¸\9bà¹\87à¸\99มาà¸\95รà¸\81ารà¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99สà¹\81à¸\9bม à¸\84ุà¸\93à¸\88ึà¸\87à¸\96ูà¸\81à¸\88ำà¸\81ัà¸\94มิà¹\83หà¹\89à¸\81ระà¸\97ำสิà¹\88à¸\87à¸\99ีà¹\89à¹\84มà¹\88à¹\83หà¹\89à¸\95ิà¸\94à¸\95à¹\88à¸à¸\81ัà¸\99หลายà¸\84รัà¹\89à¸\87à¹\80à¸\81ิà¸\99à¹\84à¸\9bà¹\83à¸\99à¸\8aà¹\88วà¸\87ระยะà¹\80วลาสัà¹\89à¸\99 à¹\86 à¸\8bึà¹\88à¸\87à¸\82à¸\93ะà¸\99ีà¹\89à¸\84ุà¸\93à¹\80ลยà¸\82ีà¸\94à¸\88ำà¸\81ัà¸\94à¸\99ีà¹\89à¹\81ลà¹\89ว \nกรุณารอสักครู่แล้วลองอีกครั้ง",
+ "protectedpagetext": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81ลà¹\87à¸à¸\81à¹\80à¸\9eืà¹\88à¸à¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99à¸\81ารแก้ไขหรือปฏิบัติการอื่น",
"viewsourcetext": "คุณสามารถดูและคัดลอกโค้ดของหน้านี้:",
- "viewyourtext": "คุณสามารถดูและคัดลอกต้นฉบับ'''การแก้ไขของคุณ'''ในหน้านี้ได้",
+ "viewyourtext": "คุณสามารถดูและคัดลอกต้นฉบับ<strong>การแก้ไขของคุณ</strong>มายังหน้านี้ได้:",
"protectedinterface": "หน้านี้เป็นข้อความอินเตอร์เฟซสำหรับซอฟต์แวร์บนวิกินี้ และถูกป้องกันเพื่อมิให้มีการกระทำผิด\nในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
"editinginterface": "'''คำเตือน:''' คุณกำลังแก้ไขหน้าที่ใช้เพื่อให้ข้อความอินเตอร์เฟซแก่ซอฟต์แวร์\nการเปลี่ยนแปลงหน้านี้จะกระทบต่อลักษณะของอินเตอร์เฟซผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้\nในการเพิ่มหรือเปลี่ยนแปลงคำแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/wiki/Main_Page?setlang=th translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
- "cascadeprotected": "หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99à¸\88าà¸\81à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82 à¹\80à¸\99ืà¹\88à¸à¸\87à¸\88าà¸\81หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¹\83à¸\8aà¹\89à¹\80à¸\9bà¹\87à¸\99สà¹\88วà¸\99หà¸\99ึà¹\88à¸\87à¹\83à¸\99{{PLURAL:$1|หà¸\99à¹\89า $2 à¸\8bึà¹\88à¸\87à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99à¹\81à¸\9aà¸\9a \"à¸\97à¸\9aà¸\97ุà¸\81ลำà¸\94ัà¸\9aà¸\82ัà¹\89à¸\99\"|หà¸\99à¹\89าà¸\8bึà¹\88à¸\87à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารà¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99à¹\81à¸\9aà¸\9a \"à¸\97à¸\9aà¸\97ุà¸\81ลำà¸\94ัà¸\9aà¸\82ัà¹\89à¸\99\" à¸\94ัà¸\87à¸\95à¹\88à¸à¹\84à¸\9bà¸\99ีà¹\89: $2}}",
+ "cascadeprotected": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82 à¹\80à¸\9eราะà¸\96ูà¸\81รวมà¸à¸¢à¸¹à¹\88à¹\83à¸\99หà¸\99à¹\89าà¸\8bึà¹\88à¸\87à¸\96ูà¸\81ลà¹\87à¸à¸\81à¹\82à¸\94ยà¹\80à¸\9bิà¸\94à¸\95ัวà¹\80ลืà¸à¸\81 \"à¸\97à¸\9aà¸\97ุà¸\81ลำà¸\94ัà¸\9aà¸\82ัà¹\89à¸\99\":\n$2",
"namespaceprotected": "คุณไม่มีสิทธิแก้ไขหน้าในเนมสเปซ <strong>$1</strong>",
- "customcssprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าสà¹\84à¸\95ลà¹\8c CSS à¸\99ีà¹\89 à¹\80à¸\99ืà¹\88à¸à¸\87à¸\88าà¸\81หà¸\99à¹\89าà¸\99ีà¹\89มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
- "customjsprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¸\99ีà¹\89 à¹\80à¸\99ืà¹\88à¸à¸\87à¸\88าà¸\81หน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
+ "customcssprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าสà¹\84à¸\95ลà¹\8c CSS à¸\99ีà¹\89 à¹\80à¸\9eราะมีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
+ "customjsprotected": "à¸\84ุà¸\93à¹\84มà¹\88มีสิà¸\97à¸\98ิà¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\88าวาสà¸\84ริà¸\9bà¸\95à¹\8cà¸\99ีà¹\89 à¹\80à¸\9eราะหน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น",
"mycustomcssprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขหน้าซีเอสเอสนี้",
"mycustomjsprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขหน้าจาวาสคริปต์นี้",
"myprivateinfoprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขข้อมูลส่วนตัวของคุณ",
"mypreferencesprotected": "คุณไม่ได้รับอนุญาตให้แก้ไขการตั้งค่าของคุณ",
- "ns-specialprotected": "หà¸\99à¹\89าà¸\9eิà¹\80ศษà¹\84มà¹\88สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82à¹\84à¸\94à¹\89",
- "titleprotected": "ชื่อเรื่องนี้ถูกป้องกันมิให้สร้างโดย [[User:$1|$1]] \nเหตุผลที่ให้ไว้คือ ''<em>$2</em>''",
- "filereadonlyerror": "ไม่สามารถแก้ไขไฟล์ \"$1\" เพราะที่เก็บไฟล์ \"$2\" อยู่ในภาวะอ่านอย่างเดียว\nผู้ดูแลระบบที่ล็อกให้คำอธิบายว่า: \"$3\"",
+ "ns-specialprotected": "à¹\84มà¹\88สามารà¸\96à¹\81à¸\81à¹\89à¹\84à¸\82หà¸\99à¹\89าà¸\9eิà¹\80ศษ",
+ "titleprotected": "ชื่อเรื่องนี้ถูก [[User:$1|$1]] ป้องกันมิให้สร้าง\nเหตุผลที่ให้ไว้คือ ''<em>$2</em>''",
+ "filereadonlyerror": "ไม่สามารถแก้ไขไฟล์ \"$1\" เพราะที่เก็บไฟล์ \"$2\" อยู่ในภาวะอ่านอย่างเดียว\n\nผู้ดูแลระบบที่ล็อกให้คำอธิบายว่า: \"$3\"",
"invalidtitle-knownnamespace": "ชื่อเรื่องที่มีเนมสเปซ \"$2\" กับข้อความ \"$3\" ไม่ถูกต้อง",
"invalidtitle-unknownnamespace": "ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ \"$2\" ไม่ถูกต้อง",
"exception-nologin": "ไม่ได้ล็อกอิน",
- "exception-nologin-text": "โปรด[[Special:Userlogin|ล็อกอิน]]เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
+ "exception-nologin-text": "โปรดล็อกอินเพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
"exception-nologin-text-manual": "โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้",
- "virus-badscanner": "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: ''$1''",
+ "virus-badscanner": "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: <em>$1</em>",
"virus-scanfailed": "การสแกนล้มเหลว (โค้ด $1)",
"virus-unknownscanner": "ไม่รู้จักโปรแกรมป้องกันไวรัสตัวนี้:",
- "logouttext": "'''ขณะนี้คุณได้ล็อกเอาต์แล้ว'''\n\nหมายเหตุว่า บางหน้าอาจยังแสดงผลเสมือนว่าคุณกำลังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
+ "logouttext": "<strong>คุณล็อกเอาต์แล้ว</strong>\n\nหมายเหตุว่า บางหน้าอาจยังแสดงผลเสมือนว่าคุณยังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
"welcomeuser": "ยินดีต้อนรับ $1!",
- "welcomecreation-msg": "à¸\9aัà¸\8dà¸\8aีà¸\82à¸à¸\87à¸\84ุà¸\93à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99à¹\81ลà¹\89ว\nà¸à¸¢à¹\88าลืมà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87[[Special:Preferences|à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88าà¹\83à¸\99 {{SITENAME}}]] à¸\82à¸à¸\87à¸\84ุà¸\93",
- "yourname": "ชื่อผู้ใช้",
+ "welcomecreation-msg": "สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¸\82à¸à¸\87à¸\84ุà¸\93à¹\81ลà¹\89ว\nà¸\84ุà¸\93สามารà¸\96à¹\80à¸\9bลีà¹\88ยà¸\99[[Special:Preferences|à¸\81ารà¸\95ัà¹\89à¸\87à¸\84à¹\88า]] {{SITENAME}} à¸\82à¸à¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89หาà¸\81à¸\95à¹\89à¸à¸\87à¸\81าร",
+ "yourname": "ชื่อผู้ใช้:",
"userlogin-yourname": "ชื่อผู้ใช้",
"userlogin-yourname-ph": "กรอกชื่อผู้ใช้",
"createacct-another-username-ph": "กรอกชื่อผู้ใช้",
- "yourpassword": "รหัสผ่าน",
+ "yourpassword": "รหัสผ่าน:",
"userlogin-yourpassword": "รหัสผ่าน",
"userlogin-yourpassword-ph": "กรอกรหัสผ่าน",
"createacct-yourpassword-ph": "กรอกรหัสผ่าน",
"userlogin-signwithsecure": "ใช้การเชื่อมต่อที่ปลอดภัย",
"yourdomainname": "โดเมนของคุณ:",
"password-change-forbidden": "คุณไม่สามารถเปลี่ยนรหัสผ่านบนวิกินี้",
- "externaldberror": "มีà¸\82à¹\89à¸à¸\9cิà¸\94à¸\9eลาà¸\94à¸\82à¸à¸\87à¸\90าà¸\99à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¹\83à¸\99à¸\81ารà¸\9eิสูà¸\88à¸\99à¹\8cà¸\95ัวà¸\88ริà¸\87 หรืà¸à¸\84ุà¸\93à¹\84มà¹\88à¹\84à¸\94à¹\89รัà¸\9aà¸à¸\99ุà¸\8dาà¸\95à¹\83หà¹\89à¸\9bรัà¸\9aà¸\9aัà¸\8dà¸\8aีภายà¸\99à¸à¸\81à¸\82à¸à¸\87à¸\84ุà¸\93",
+ "externaldberror": "มีข้อผิดพลาดของฐานข้อมูลการพิสูจน์ตัวจริง หรือคุณไม่ได้รับอนุญาตให้ปรับบัญชีภายนอกของคุณ",
"login": "ล็อกอิน",
"nav-login-createaccount": "ล็อกอิน / สร้างบัญชี",
"userlogin": "ล็อกอิน / สร้างบัญชี",
"createacct-benefit-body1": "$1 การแก้ไข",
"createacct-benefit-body2": "$1 หน้า",
"createacct-benefit-body3": "$1 ผู้ร่วมเขียน",
- "badretype": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¹\83สà¹\88ไม่ตรงกัน",
- "userexists": "à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\81รà¸à¸\81มีà¸\9cูà¹\89à¸à¸·à¹\88à¸\99à¹\83à¸\8aà¹\89à¹\84à¸\9bà¹\81ลà¹\89ว กรุณาเลือกชื่ออื่น",
+ "badretype": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¸\84ุà¸\93à¸\81รà¸à¸\81ไม่ตรงกัน",
+ "userexists": "à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\97ีà¹\88à¸\81รà¸à¸\81มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\81ลà¹\89ว \nกรุณาเลือกชื่ออื่น",
"loginerror": "ล็อกอินผิดพลาด",
"createacct-error": "การสร้างบัญชีผิดพลาด",
- "createaccounterror": "ไม่สามารถสร้างบัญชีผู้ใช้: $1",
- "nocookiesnew": "à¸\8aืà¹\88à¸à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84à¸\94à¹\89à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99à¹\81ลà¹\89ว à¹\81à¸\95à¹\88ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87à¸à¸\81à¸à¸´à¸\99à¹\80à¸\82à¹\89าสูà¹\88 {{SITENAME}} à¹\80à¸\99ืà¹\88à¸à¸\87à¸\88าà¸\81วà¹\88าà¹\84มà¹\88à¹\84à¸\94à¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89 à¸\96à¹\89าà¸\95à¹\89à¸à¸\87à¸\81ารลà¹\87à¸à¸\81à¸à¸´à¸\99à¹\83หà¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\81à¸\81ีà¹\89à¹\81ละà¸\97ำà¸\81ารลà¹\87à¸à¸\81à¸à¸´à¸\99à¹\82à¸\94ยà¹\83สà¹\88à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\9eรà¹\89à¸à¸¡à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99",
- "nocookieslogin": "{{SITENAME}} à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89สำหรัà¸\9aà¸\81ารลà¹\87à¸à¸\81à¸à¸´à¸\99 à¸\82à¸\93ะà¸\99ีà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¸\82à¸à¸\87à¸\84ุà¸\93à¹\84มà¹\88à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99 กรุณาเปิดใช้งานและลองอีกครั้ง",
- "nocookiesfornew": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84มà¹\88à¸\96ูà¸\81สรà¹\89าà¸\87 à¹\80à¸\99ืà¹\88à¸à¸\87à¸\88าà¸\81à¹\80ราà¹\84มà¹\88สามารà¸\96ยืà¸\99ยัà¸\99à¹\81หลà¹\88à¸\87à¸\97ีà¹\88มา\nà¸\81รุà¸\93าà¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89คุกกี้ โหลดหน้านี้ใหม่และลองอีกครั้ง",
+ "createaccounterror": "ไม่สามารถสร้างบัญชี: $1",
+ "nocookiesnew": "สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\81ลà¹\89ว à¹\81à¸\95à¹\88ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87à¸à¸\81à¸à¸´à¸\99 \n{{SITENAME}} à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¹\80à¸\9eืà¹\88à¸à¸¥à¹\87à¸à¸\81à¸à¸´à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89\nà¸\84ุà¸\93à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\81à¸\81ีà¹\89\nà¹\82à¸\9bรà¸\94à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99 à¹\81ลà¹\89วลà¹\87à¸à¸\81à¸à¸´à¸\99à¸\9eรà¹\89à¸à¸¡à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\81ละรหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\82à¸à¸\87à¸\84ุà¸\93",
+ "nocookieslogin": "{{SITENAME}} à¹\83à¸\8aà¹\89à¸\84ุà¸\81à¸\81ีà¹\89à¹\80à¸\9eืà¹\88à¸à¸¥à¹\87à¸à¸\81à¸à¸´à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89\nà¸\84ุà¸\93à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\81à¸\81ีà¹\89\nกรุณาเปิดใช้งานและลองอีกครั้ง",
+ "nocookiesfornew": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¹\84มà¹\88à¸\96ูà¸\81สรà¹\89าà¸\87 à¹\80à¸\99ืà¹\88à¸à¸\87à¸\88าà¸\81à¹\80ราà¹\84มà¹\88สามารà¸\96ยืà¸\99ยัà¸\99à¸\95à¹\89à¸\99à¸\97าà¸\87\nà¸\81รุà¸\93าà¸\97ำà¹\83หà¹\89à¹\81à¸\99à¹\88à¹\83à¸\88วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99คุกกี้ โหลดหน้านี้ใหม่และลองอีกครั้ง",
"noname": "คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูกต้อง",
"loginsuccesstitle": "ล็อกอินสำเร็จ",
- "loginsuccess": "'''ขณะนี้คุณล็อกอินเข้าสู่ {{SITENAME}} ด้วยชื่อ \"$1\"'''",
+ "loginsuccess": "<strong>ขณะนี้คุณล็อกอินเข้าสู่ {{SITENAME}} ด้วยชื่อ \"$1\"</strong>",
"nosuchuser": "ไม่มีผู้ใช้ชื่อ \"$1\"\nชื่อผู้ใช้นั้นไวต่ออักษรใหญ่เล็ก\nกรุณาตรวจการสะกดอีกครั้ง หรือ[[Special:UserLogin/signup|สร้างบัญชีใหม่]]",
- "nosuchusershort": "ไม่มีผู้ใช้ชื่อ \"$1\" กรุณาตรวจสอบการสะกด",
+ "nosuchusershort": "ไม่มีผู้ใช้ชื่อ \"$1\" \nกรุณาตรวจสอบการสะกด",
"nouserspecified": "คุณต้องระบุชื่อผู้ใช้",
"login-userblocked": "ผู้ใช้นี้ถูกบล็อก ไม่อนุญาตให้ล็อกอิน",
- "wrongpassword": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¹\83สà¹\88à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89à¸à¸\87 โปรดลองอีกครั้ง",
- "wrongpasswordempty": "ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ระà¸\9aุรหัสà¸\9cà¹\88าà¸\99 โปรดลองอีกครั้ง",
- "passwordtooshort": "รหัสà¸\9cà¹\88าà¸\99à¸\95à¹\89à¸à¸\87มีà¸\84วามยาวà¸à¸¢à¹\88าà¸\87à¸\99à¹\89à¸à¸¢ $1 à¸à¸±à¸\81à¸\82ระ",
+ "wrongpassword": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¸\81รà¸à¸\81à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89à¸à¸\87 \nโปรดลองอีกครั้ง",
+ "wrongpasswordempty": "รหัสà¸\9cà¹\88าà¸\99à¸\97ีà¹\88à¸\81รà¸à¸\81วà¹\88าà¸\87\nโปรดลองอีกครั้ง",
+ "passwordtooshort": "รหัสผ่านต้องมีอย่างน้อย $1 อักขระ",
"password-name-match": "รหัสผ่านต้องต่างจากชื่อผู้ใช้",
"password-login-forbidden": "ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้",
"mailmypassword": "ตั้งรหัสผ่านใหม่",
"passwordremindertitle": "รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}",
- "passwordremindertext": "à¸\9cูà¹\89à¹\83à¸\94à¸\9cูà¹\89หà¸\99ึà¹\88à¸\87 (à¸\8bึà¹\88à¸\87à¸à¸²à¸\88à¹\80à¸\9bà¹\87à¸\99à¸\84ุà¸\93 à¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eี $1) à¸\82à¸à¹\83หà¹\89สà¹\88à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\82à¸à¸\87 {{SITENAME}} ($4) รหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวสำหรัà¸\9aà¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89 \"$2\" à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99 à¹\81ละà¸\81ำหà¸\99à¸\94à¹\80à¸\9bà¹\87à¸\99 \"$3\" หาà¸\81à¸\81ารà¸\82à¸à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\99ีà¹\89à¹\80à¸\9bà¹\87à¸\99à¹\80à¸\88à¸\95à¸\99าà¸\82à¸à¸\87à¸\84ุà¸\93 à¸\84ุà¸\93à¸\88ำà¸\95à¹\89à¸à¸\87ลà¹\87à¸à¸\81à¸à¸´à¸\99à¹\81ละà¹\80ลืà¸à¸\81รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88 à¸\93 à¸\82à¸\93ะà¸\99ีà¹\89 รหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\82à¸à¸\87à¸\84ุà¸\93à¸\88ะหมà¸\94à¸à¸²à¸¢à¸¸à¹\83à¸\99 $5 วัà¸\99\n\nหาà¸\81à¹\80à¸\9bà¹\87à¸\99à¸\9aุà¸\84à¸\84ลà¸à¸·à¹\88à¸\99à¸\97ีà¹\88à¸\82à¸à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¹\83หมà¹\88 หรืà¸à¸«à¸²à¸\81à¸\84ุà¸\93à¸\88ำรหัสà¸\9cà¹\88าà¸\99à¸\82à¸à¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\81ลà¹\89ว à¹\81ละà¹\84มà¹\88à¸\95à¹\89à¸à¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸à¸µà¸\81à¸\95à¹\88à¸à¹\84à¸\9b คุณอาจละเลยข้อความนี้และใช้รหัสผ่านเดิมของคุณต่อไป",
- "noemail": "à¹\84มà¹\88มีà¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¸\9aัà¸\99à¸\97ึà¸\81à¹\84วà¹\89สำหรับผู้ใช้ \"$1\"",
+ "passwordremindertext": "à¸\9cูà¹\89à¹\83à¸\94à¸\9cูà¹\89หà¸\99ึà¹\88à¸\87 (à¸\8bึà¹\88à¸\87à¸à¸²à¸\88à¹\80à¸\9bà¹\87à¸\99à¸\84ุà¸\93 à¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eี $1) à¸\82à¸à¹\83หà¹\89สà¹\88à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\82à¸à¸\87 {{SITENAME}} ($4) รหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวสำหรัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89 \"$2\" à¸\96ูà¸\81สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99 à¹\81ละà¸\81ำหà¸\99à¸\94à¹\80à¸\9bà¹\87à¸\99 \"$3\" หาà¸\81à¹\80à¸\9bà¹\87à¸\99à¹\80à¸\88à¸\95à¸\99าà¸\82à¸à¸\87à¸\84ุà¸\93 à¸\84ุà¸\93à¸\88ำà¸\95à¹\89à¸à¸\87ลà¹\87à¸à¸\81à¸à¸´à¸\99à¹\81ละà¹\80ลืà¸à¸\81รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¹\83à¸\99à¸\82à¸\93ะà¸\99ีà¹\89 \nรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\82à¸à¸\87à¸\84ุà¸\93à¸\88ะหมà¸\94à¸à¸²à¸¢à¸¸à¹\83à¸\99 $5 วัà¸\99\n\nหาà¸\81à¹\80à¸\9bà¹\87à¸\99à¸\9aุà¸\84à¸\84ลà¸à¸·à¹\88à¸\99à¸\97ีà¹\88à¸\82à¸à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¹\83หมà¹\88 หรืà¸à¸«à¸²à¸\81à¸\84ุà¸\93à¸\88ำรหัสà¸\9cà¹\88าà¸\99à¸\82à¸à¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89à¹\81ลà¹\89ว à¹\81ละà¹\84มà¹\88à¸\95à¹\89à¸à¸\87à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸à¸µà¸\81 คุณอาจละเลยข้อความนี้และใช้รหัสผ่านเดิมของคุณต่อไป",
+ "noemail": "à¹\84มà¹\88มีà¸\81ารà¸\9aัà¸\99à¸\97ึà¸\81à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลสำหรับผู้ใช้ \"$1\"",
"noemailcreate": "คุณจำต้องใส่ที่อยู่อีเมลให้ถูกต้อง",
"passwordsent": "รหัสผ่านใหม่ถูกส่งไปยังที่อยู่อีเมลที่ลงทะเบียนไว้ของ \"$1\"\nกรุณาล็อกอินอีกครั้งหลังได้รับอีเมล",
- "blocked-mailpassword": "à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\82à¸à¸\87à¸\84ุà¸\93à¸\96ูà¸\81à¸\9aลà¹\87à¸à¸\81มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82 à¸\97ำà¹\83หà¹\89à¹\84มà¹\88สามารà¸\96à¸\97ำà¹\80รืà¹\88à¸à¸\87à¸\82à¸à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¹\84à¸\94à¹\89 เพื่อป้องกันการใช้ในทางที่ผิด",
- "eauthentsent": "à¸à¸µà¹\80มลยืà¸\99ยัà¸\99à¹\84à¸\94à¹\89à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¸\97ีà¹\88à¹\80สà¸\99ภà¸\81à¹\88à¸à¸\99à¸\97ีà¹\88à¸à¸µà¹\80มลà¸\88ะà¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¸\97ีà¹\88à¸\8aืà¹\88à¸à¸\9aัà¸\8dà¸\8aีà¸\99ัà¹\89à¸\99 à¸\84ุà¸\93à¸\95à¹\89à¸à¸\87à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\95ามà¸\84ำà¹\81à¸\99ะà¸\99ำในอีเมลเพื่อยืนยันว่าบัญชีนั้นเป็นของคุณจริง ๆ",
- "throttled-mailpassword": "à¸à¸µà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¹\81ลà¹\89วà¹\83à¸\99 $1 à¸\8aัà¹\88วà¹\82มà¸\87à¸\97ีà¹\88à¸\9cà¹\88าà¸\99มา \nà¸à¸µà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\88ะสà¹\88à¸\87à¹\84à¸\9bหà¸\99ึà¹\88à¸\87à¸\84รัà¹\89à¸\87à¸\95à¹\88ภ$1 à¸\8aัà¹\88วà¹\82มà¸\87à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99 à¹\80à¸\9eืà¹\88à¸à¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99à¸\81ารà¸\81ระà¸\97ำà¸\97ีà¹\88à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89à¸à¸\87",
+ "blocked-mailpassword": "à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\82à¸à¸\87à¸\84ุà¸\93à¸\96ูà¸\81à¸\9aลà¹\87à¸à¸\81มิà¹\83หà¹\89à¹\81à¸\81à¹\89à¹\84à¸\82 à¸\97ำà¹\83หà¹\89à¹\84มà¹\88สามารà¸\96à¹\83à¸\8aà¹\89à¸\9fัà¸\87à¸\81à¹\8cà¸\8aัà¸\99à¸\81ูà¹\89รหัสà¸\9cà¹\88าà¸\99 เพื่อป้องกันการใช้ในทางที่ผิด",
+ "eauthentsent": "à¸à¸µà¹\80มลยืà¸\99ยัà¸\99à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bยัà¸\87à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¸\97ีà¹\88ระà¸\9aุà¹\84วà¹\89à¹\81ลà¹\89ว \nà¸\81à¹\88à¸à¸\99à¸\97ีà¹\88à¸à¸µà¹\80มลà¸à¸·à¹\88à¸\99à¸\88ะà¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bยัà¸\87à¸\9aัà¸\8dà¸\8aีà¸\99ัà¹\89à¸\99 à¸\84ุà¸\93à¸\95à¹\89à¸à¸\87à¸\9bà¸\8fิà¸\9aัà¸\95ิà¸\95ามà¸\84ำสัà¹\88à¸\87ในอีเมลเพื่อยืนยันว่าบัญชีนั้นเป็นของคุณจริง ๆ",
+ "throttled-mailpassword": "à¸à¸µà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\96ูà¸\81สà¹\88à¸\87à¹\84à¸\9bà¹\81ลà¹\89วà¹\83à¸\99 $1 à¸\8aัà¹\88วà¹\82มà¸\87à¸\97ีà¹\88à¸\9cà¹\88าà¸\99มา \nà¸à¸µà¹\80มลà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\88ะสà¹\88à¸\87à¹\84à¸\9bหà¸\99ึà¹\88à¸\87à¸\84รัà¹\89à¸\87à¸\95à¹\88ภ$1 à¸\8aัà¹\88วà¹\82มà¸\87à¹\80à¸\97à¹\88าà¸\99ัà¹\89à¸\99 à¹\80à¸\9eืà¹\88à¸à¸\9bà¹\89à¸à¸\87à¸\81ัà¸\99à¸\81ารà¸\81ระà¸\97ำà¸\9cิà¸\94",
"mailerror": "ข้อผิดพลาดในการส่งเมล: $1",
- "acct_creation_throttle_hit": "ผู้เข้าชมวิกินี้ที่ใช้เลขที่อยู่ไอพีของคุณ ได้สร้างบัญชีแล้ว $1 บัญชีในวันที่ผ่านมา ซึ่งเป็นจำนวนสูงสุดที่อนุญาตในช่วงเวลาดังกล่าว\nจึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้",
- "emailauthenticated": "à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¸\82à¸à¸\87à¸\84ุà¸\93à¹\84à¸\94à¹\89รัà¸\9aà¸\81ารยืà¸\99ยัà¸\99เมื่อวันที่ $2 เวลา $3",
+ "acct_creation_throttle_hit": "ผู้เข้าชมวิกินี้ที่ใช้เลขที่อยู่ไอพีของคุณ ได้สร้าง $1 บัญชีแล้วในวันที่ผ่านมา ซึ่งเป็นจำนวนสูงสุดที่อนุญาตในช่วงเวลาดังกล่าว\nจึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้",
+ "emailauthenticated": "ยืà¸\99ยัà¸\99à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¸à¸µà¹\80มลà¸\82à¸à¸\87à¸\84ุà¸\93เมื่อวันที่ $2 เวลา $3",
"emailnotauthenticated": "ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน \nจะไม่มีการส่งอีเมลสำหรับคุณลักษณะใด ๆ ต่อไปนี้",
"noemailprefs": "ระบุที่อยู่อีเมลในการตั้งค่าของคุณเพื่อให้คุณลักษณะเหล่านี้ทำงานได้",
"emailconfirmlink": "ยืนยันที่อยู่อีเมลของคุณ",
"cannotchangeemail": "ไม่สามารถเปลี่ยนที่อยู่อีเมลบนวิกินี้",
"emaildisabled": "เว็บไซต์นี้ไม่สามารถส่งอีเมล",
"accountcreated": "สร้างบัญชีแล้ว",
- "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\" คุณควรล็อกอินเพื่อเปลี่ยนรหัสผ่านทันที\n\nคุณอาจเพิกเฉยข้อความนี้ หากการสร้างบัญชีนี้เกิดจากความผิดพลาด",
+ "accountcreatedtext": "à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9a [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|à¸\9eูà¸\94à¸\84ุย]]) à¸\96ูà¸\81สร้างขึ้นแล้ว",
+ "createaccount-title": "à¸\81ารสรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีสำหรัà¸\9a {{SITENAME}}",
+ "createaccount-text": "มีบางคนสร้างบัญชีโดยใช้ที่อยู่อีเมลของคุณบน {{SITENAME}} ($4) โดยใช้ชื่อ \"$2\" และรหัสผ่าน \"$3\" \nคุณควรล็อกอินและเปลี่ยนรหัสผ่านทันที\n\nคุณอาจเพิกเฉยข้อความนี้ หากการสร้างบัญชีนี้เป็นความผิดพลาด",
"login-throttled": "ที่ผ่านมาคุณพยายามล็อกอินมากครั้งเกินไป\nกรุณารอ $1 ก่อนลองอีกครั้ง",
- "login-abort-generic": "à¸\81ารà¹\80à¸\82à¹\89าสูà¹\88ระà¸\9aà¸\9aà¸\82à¸à¸\87à¸\84ุà¸\93à¹\84มà¹\88à¸\9bระสà¸\9aà¸\84วามสำเร็จ - ล้มเลิกแล้ว",
+ "login-abort-generic": "à¸\81ารลà¹\87à¸à¸\81à¸à¸´à¸\99à¸\82à¸à¸\87à¸\84ุà¸\93à¹\84มà¹\88สำเร็จ - ล้มเลิกแล้ว",
"loginlanguagelabel": "ภาษา: $1",
"suspicious-userlogout": "คำขอล็อกเอาต์ของคุณถูกปฏิเสธเพราะดูเหมือนส่งมาจากเบราว์เซอร์หรือพร็อกซีแคชที่เสีย",
"createacct-another-realname-tip": "ไม่จำเป็นต้องใส่ชื่อจริง\nหากคุณเลือกใส่ชื่อจริง จะใช้เพื่อแสดงที่มาสำหรับงานของตน",
"changepassword": "เปลี่ยนรหัสผ่าน",
"resetpass_announce": "คุณต้องตั้งรหัสผ่านใหม่จึงจะเสร็จสิ้นการล็อกอิน",
"resetpass_text": "<!-- เพิ่มข้อความที่นี่ -->",
- "resetpass_header": "เปลี่ยนรหัสผ่าน",
+ "resetpass_header": "เปลี่ยนรหัสผ่านบัญชี",
"oldpassword": "รหัสผ่านเดิม:",
"newpassword": "รหัสผ่านใหม่:",
"retypenew": "พิมพ์รหัสผ่านใหม่อีกครั้ง:",
"resetpass_submit": "ตั้งรหัสผ่านและล็อกอิน",
- "changepassword-success": "à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82à¸à¸\87à¸\84ุà¸\93à¹\80รียà¸\9aรà¹\89à¸à¸¢",
- "changepassword-throttled": "à¸\84ุà¸\93à¹\84à¸\94à¹\89à¸\9eยายามลà¹\87à¸à¸\81à¸à¸´à¸\99มาà¸\81à¸\84รัà¹\89à¸\87à¹\80à¸\81ิà¸\99à¹\84à¸\9b\nà¸\81รุà¸\93ารภ$1 à¸\81à¹\88à¸à¸\99ลà¸à¸\87à¸à¸µà¸\81à¸\84รัà¹\89à¸\87",
+ "changepassword-success": "à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82à¸à¸\87à¸\84ุà¸\93สำà¹\80รà¹\87à¸\88",
+ "changepassword-throttled": "คุณพยายามล็อกอินมากครั้งเกินไป\nกรุณารอ $1 ก่อนลองอีกครั้ง",
"resetpass_forbidden": "ไม่สามารถเปลี่ยนรหัสผ่านได้",
"resetpass-no-info": "คุณต้องล็อกอินเพื่อเข้าถึงหน้านี้โดยตรง",
"resetpass-submit-loggedin": "เปลี่ยนรหัสผ่าน",
"resetpass-submit-cancel": "ยกเลิก",
- "resetpass-wrong-oldpass": "รหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวหรืà¸à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\84มà¹\88à¸\96ูà¸\81à¸\95à¹\89à¸à¸\87\nà¸\84ุà¸\93à¸à¸²à¸\88à¹\80à¸\9bลีà¹\88ยà¸\99รหัสà¸\9cà¹\88าà¸\99à¸\82à¸à¸\87à¸\84ุà¸\93à¹\84à¸\9bà¹\81ลà¹\89ว หรืà¸à¸\82à¸à¸£à¸«à¸±à¸ªà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¹\83หมà¹\88à¹\81ลà¹\89ว",
+ "resetpass-wrong-oldpass": "รหัสผ่านชั่วคราวหรือปัจจุบันไม่ถูกต้อง\nคุณอาจเปลี่ยนรหัสผ่านของคุณแล้ว หรือขอรหัสผ่านชั่วคราวใหม่แล้ว",
"resetpass-recycled": "โปรดตั้งรหัสผ่านใหม่ให้ต่างจากรหัสผ่านปัจจุบัน",
"resetpass-temp-emailed": "คุณล็อกอินด้วยรหัสผ่านชั่วคราวที่ส่งทางอีเมล\nคุณต้องตั้งรหัสผ่านใหม่ที่นี่จึงจะเสร็จสิ้นการล็อกอิน:",
"resetpass-temp-password": "รหัสผ่านชั่วคราว:",
"passwordreset-text-one": "กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่",
"passwordreset-text-many": "{{PLURAL:$1|กรอกเขตข้อมูลหนึ่งเพื่อรับรหัสผ่านชั่วคราวทางอีเมล}}",
"passwordreset-legend": "เปลี่ยนรหัสผ่าน",
- "passwordreset-disabled": "à¸\81ารà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\9aà¸\99วิà¸\81ิà¸\99ีà¹\89",
- "passwordreset-emaildisabled": "à¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¸à¸µà¹\80มลà¸\96ูà¸\81à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\9aà¸\99วิà¸\81ิà¸\99ีà¹\89",
+ "passwordreset-disabled": "วิà¸\81ิà¸\99ีà¹\89à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\81ารà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88",
+ "passwordreset-emaildisabled": "วิà¸\81ิà¸\99ีà¹\89à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99à¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¸à¸µà¹\80มล",
"passwordreset-username": "ชื่อผู้ใช้:",
"passwordreset-domain": "โดเมน:",
"passwordreset-capture": "ดูอีเมลที่ได้หรือไม่",
"bold_tip": "ทำตัวหนา",
"italic_sample": "ข้อความตัวเอน",
"italic_tip": "ทำตัวเอน",
- "link_sample": "ลิà¸\87à¸\81à¹\8cà¹\80à¸\8aืà¹\88à¸à¸¡à¹\82ยง",
+ "link_sample": "à¹\80à¸\8aืà¹\88à¸à¸¡à¹\82ยà¸\87หัวà¹\80รืà¹\88à¸ง",
"link_tip": "ลิงก์ภายใน",
- "extlink_sample": "http://www.example.com à¸\8aืà¹\88à¸à¹\80รืà¹\88à¸à¸\87à¸\82à¸à¸\87ลิà¸\87à¸\81à¹\8c",
+ "extlink_sample": "http://www.example.com à¸\8aืà¹\88à¸à¹\80รืà¹\88à¸à¸\87à¹\80à¸\8aืà¹\88à¸à¸¡à¹\82ยà¸\87",
"extlink_tip": "ลิงก์ภายนอก (อย่าลืมใส่ http:// นำหน้าเสมอ)",
"headline_sample": "ข้อความพาดหัว",
"headline_tip": "พาดหัวระดับ 2",
"missingcommentheader": "'''ประกาศเตือน:''' คุณยังไม่ได้ใส่หัวข้อ/จ่าหัวสำหรับความเห็นนี้ ถ้าคุณกด \"{{int:savearticle}}\" อีกครั้ง การแก้ไขของคุณจะถูกบันทึกโดยไม่มีหัวข้อ",
"summary-preview": "ตัวอย่างคำอธิบายการแก้ไข:",
"subject-preview": "ตัวอย่างหัวข้อ/พาดหัว:",
- "blockedtitle": "ผู้ใช้ถูกบล็อกอยู่",
+ "blockedtitle": "ผู้ใช้ถูกบล็อก",
"blockedtext": "<strong>ชื่อผู้ใช้หรือเลขที่อยู่ไอพีของคุณถูกบล็อก</strong>\n\nการบล็อกนี้ดำเนินการโดย $1\nซึ่งให้เหตุผลว่า ''$2''\n\n* เริ่มการบล็อก: $8\n* หมดเขตการบล็อก: $6\n* ผู้ถูกบล็อก: $7\n\nคุณสามารถติดต่อ $1 หรือ[[{{MediaWiki:Grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่ออภิปรายการบล็อกนี้ได้\nคุณไม่สามารถใช้คุณลักษณะ \"ส่งอีเมลหาผู้ใช้รายนี้ได้\" จนกว่าจะระบุที่อยู่อีเมลให้ถูกต้องใน[[Special:Preferences|การตั้งค่าบัญชี]]ของคุณ และคุณมิได้ถูกห้ามใช้ความสามารถนี้\nเลขที่อยู่ไอพีปัจจุบันของคุณคือ $3 และหมายเลขการบล็อกคือ #$5 \nโปรดแสดงรายละเอียดข้างต้นทั้งหมดในการสอบถามใด ๆ",
"autoblockedtext": "เลขที่อยู่ไอพีของคุณถูกบล็อกอัตโนมัติ เพราะมีผู้ใช้อื่นใช้มาก่อน ซึ่งถูกบล็อกโดย $1\nโดยให้เหตุผลว่า\n\n:<em>$2</em>\n\n* เริ่มการบล็อก: $8\n* สิ้นสุดการบล็อก: $6\n* ผู้ถูกบล็อก: $7\n\nคุณสามารถติดต่อ $1 หรือ[[{{MediaWiki:Grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่อหารือการบล็อกนี้ \nคุณไม่สามารถใช้คุณลักษณะ \"ส่งอีเมลหาผู้ใช้รายนี้ได้\" จนกว่าจะระบุที่อยู่อีเมลที่ถูกต้องใน[[Special:Preferences|การตั้งค่าบัญชี]]ของคุณ และคุณมิได้ถูกห้ามใช้\nเลขที่อยู่ไอพีปัจจุบันของคุณคือ $3 และหมายเลขการบล็อกคือ #$5 \nโปรดรวมรายละเอียดข้างต้นทั้งหมดในการสอบถามใด ๆ",
- "blockednoreason": "ไม่ได้ให้เหตุผลไว้",
+ "blockednoreason": "ไม่ได้ให้เหตุผล",
"whitelistedittext": "คุณต้อง$1เพื่อแก้ไขหน้า",
"confirmedittext": "คุณต้องยืนยันที่อยู่อีเมลของคุณก่อนแก้ไขหน้า โปรดกำหนดที่อยู่อีเมลของคุณและทำให้ถูกต้องผ่าน[[Special:Preferences|การตั้งค่าผู้ใช้]]",
"nosuchsectiontitle": "ไม่พบส่วน",
"accmailtext": "รหัสผ่านแบบสุ่มของ [[User talk:$1|$1]] ถูกส่งไปยัง $2 แล้ว สามารถเปลี่ยนรหัสผ่านในหน้า''[[Special:ChangePassword|เปลี่ยนรหัสผ่าน]]'' หลังล็อกอิน",
"newarticle": "(ใหม่)",
"newarticletext": "คุณตามลิงก์ไปยังหน้าที่ยังไม่มีในขณะนี้\nในการสร้างหน้า เริ่มพิมพ์ในกล่องด้านล่าง (ดูข้อมูลเพิ่มเติมใน[$1 หน้าคำอธิบาย])\nถ้าคุณเข้ามาหน้านี้โดยผิดพลาด ให้กดปุ่ม'''ถอยหลัง''' (back) ของเบราว์เซอร์",
- "anontalkpagetext": "----\n<em>หà¸\99à¹\89าà¸\99ีà¹\89à¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99ามà¸\8bึà¹\88à¸\87ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีหรืà¸à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87à¸à¸\81à¸à¸´à¸\99</em>\nà¸\94ัà¸\87à¸\99ัà¹\89à¸\99à¹\80ราà¸\88ึà¸\87ระà¸\9aุà¸\95ัวà¸\95à¸\99à¹\82à¸\94ยà¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¹\81à¸\97à¸\99\nà¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\99ีà¹\89à¸à¸²à¸\88มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89รà¹\88วมà¸\81ัà¸\99หลายà¸\84à¸\99\nà¸\96à¹\89าà¸\84ุà¸\93à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99าม à¹\81ละรูà¹\89สึà¸\81วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89รัà¸\9aà¸\84วามà¹\80หà¹\87à¸\99à¸\97ีà¹\88à¹\84มà¹\88à¹\80à¸\81ีà¹\88ยวà¸\82à¹\89à¸à¸\87 กรุณา[[Special:UserLogin/signup|สร้างบัญชี]]หรือ[[Special:UserLogin|ล็อกอิน]] เพื่อป้องกันการสับสนกับผู้ใช้นิรนามรายอื่นในอนาคต",
- "noarticletext": "ปัจจุบันไม่มีข้อความในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>",
+ "anontalkpagetext": "----\n<em>หà¸\99à¹\89าà¸\99ีà¹\89à¹\80à¸\9bà¹\87à¸\99หà¸\99à¹\89าà¸\84ุยà¸\81ัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9aà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99ามà¸\8bึà¹\88à¸\87ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89สรà¹\89าà¸\87à¸\9aัà¸\8dà¸\8aีหรืà¸à¹\84มà¹\88à¹\84à¸\94à¹\89à¹\83à¸\8aà¹\89</em>\nà¸\94ัà¸\87à¸\99ัà¹\89à¸\99à¹\80ราà¸\88ึà¸\87ระà¸\9aุà¸\95ัวà¸\95à¸\99à¹\82à¸\94ยà¹\83à¸\8aà¹\89à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¹\81à¸\97à¸\99\nà¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\99ีà¹\89à¸à¸²à¸\88มีà¸\9cูà¹\89à¹\83à¸\8aà¹\89รà¹\88วมà¸\81ัà¸\99หลายà¸\84à¸\99\nà¸\96à¹\89าà¸\84ุà¸\93à¹\80à¸\9bà¹\87à¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ิรà¸\99าม à¹\81ละรูà¹\89สึà¸\81วà¹\88าà¸\84ุà¸\93à¹\84à¸\94à¹\89รัà¸\9aà¸\84วามà¹\80หà¹\87à¸\99à¸\97ีà¹\88à¹\84มà¹\88à¹\80à¸\81ีà¹\88ยวà¸\82à¹\89à¸à¸\87สà¹\88à¸\87หาà¸\84ุà¸\93 กรุณา[[Special:UserLogin/signup|สร้างบัญชี]]หรือ[[Special:UserLogin|ล็อกอิน]] เพื่อป้องกันการสับสนกับผู้ใช้นิรนามรายอื่นในอนาคต",
+ "noarticletext": "ปัจจุบันไม่มีข้อความในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง] หรือ[{{fullurl:{{FULLPAGENAME}}|action=edit}} แก้ไขหน้านี้]</span>",
"noarticletext-nopermission": "ปัจจุบันไม่มีข้อความในหน้านี้\nคุณสามารถ[[Special:Search/{{PAGENAME}}|ค้นหาชื่อหน้านี้]]ในหน้าอื่น หรือ<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาปูมที่เกี่ยวข้อง]</span> แต่คุณไม่มีสิทธิสร้างหน้านี้",
- "missing-revision": "ไม่มีรุ่น #$1 ของหน้าชื่อ \"{{FULLPAGENAME}}\" \n\nโดยปกติเกิดจากการเข้าลิงก์ประวัติเก่าของหน้าที่ถูกลบไปแล้ว\nดูรายละเอียดได้ที่[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ปูมการลบ]",
+ "missing-revision": "ไม่มีรุ่นปรับปรุง #$1 ของหน้าชื่อ \"{{FULLPAGENAME}}\" \n\nปกติเกิดจากการตามการโยงประวัติเก่าไปยังหน้าที่ถูกลบแล้ว\nดูรายละเอียดได้ที่[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ปูมการลบ]",
"userpage-userdoesnotexist": "บัญชีผู้ใช้ \"$1\" มิได้ลงทะเบียน \nกรุณาตรวจสอบหากคุณต้องการสร้าง/แก้ไขหน้านี้",
"userpage-userdoesnotexist-view": "บัญชีผู้ใช้ \"$1\" มิได้ลงทะเบียน",
- "blocked-notice-logextract": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\99ีà¹\89à¸\96ูà¸\81à¸\9aลà¹\87à¸à¸\81\nหà¸\99à¹\88วยบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
+ "blocked-notice-logextract": "à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ีà¹\89à¸\96ูà¸\81à¸\9aลà¹\87à¸à¸\81\nหà¸\99à¹\88วยà¸\9bูมà¸\81ารบล็อกล่าสุดแสดงด้านล่างนี้เพื่อการอ้างอิง:",
"clearyourcache": "'''หมายเหตุ:''' หลังจากบันทึก คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง\n* '''ไฟร์ฟอกซ์ / ซาฟารี:''' กดปุ่ม ''Shift'' ค้างไว้ขณะคลิก ''Reload'' หรือกด ''Ctrl-F5'' หรือ ''Ctrl-R'' (''⌘-R'' บนแมค)\n* '''กูเกิล โครม:''' กดปุ่ม ''Ctrl-Shift-R'' (''⌘-Shift-R'' บนแมค)\n* '''อินเทอร์เน็ตเอกซ์พลอเรอร์:''' กดปุ่ม ''Ctrl'' ค้างไว้ขณะคลิก ''Refresh'' หรือกด ''Ctrl-F5''\n* '''โอเปร่า:''' ล้างแคชใน ''Tools → Preferences''",
"usercssyoucanpreview": "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบ CSS ใหม่ของคุณก่อนบันทึก",
"userjsyoucanpreview": "'''คำแนะนำ:''' กดปุ่ม \"{{int:showpreview}}\" เพื่อทดสอบจาวาสคริปต์ใหม่ของคุณก่อนบันทึก",
"searchprofile-advanced-tooltip": "ค้นหาในเนมสเปซที่เลือกเอง",
"search-result-size": "$1 ($2 คำ)",
"search-result-category-size": "$1 สมาชิก ($2 หมวดหมู่ย่อย, $3 ไฟล์)",
- "search-result-score": "ความเกี่ยวข้อง : $1%",
"search-redirect": "(เปลี่ยนทาง $1)",
"search-section": "(ส่วน $1)",
"search-file-match": "(จับคู่เนื้อหาไฟล์)",
"preferences": "ตั้งค่าส่วนตัว",
"mypreferences": "การตั้งค่า",
"prefs-edits": "จำนวนการแก้ไข:",
- "prefsnologintext2": "โปรด$1เพื่อเปลี่ยนการตั้งค่าของคุณ",
+ "prefsnologintext2": "โปรดล็อกอินเพื่อเปลี่ยนการตั้งค่าของคุณ",
"prefs-skin": "หน้าตา",
"skin-preview": "แสดงตัวอย่าง",
"datedefault": "ไม่มีการตั้งค่า",
"right-browsearchive": "ค้นหาหน้าที่ถูกลบ",
"right-undelete": "กู้คืนหน้า",
"right-suppressrevision": "ดูรุ่นต่าง ๆ หรือ ซ่อน/เลิกซ่อนรุ่นที่กำหนดจากผู้ใช้ใด ๆ",
+ "right-viewsuppressed": "ดูรุนที่ถูกซ่อนจากผู้ใช้อื่น",
"right-suppressionlog": "ดูปูมส่วนตัว",
"right-block": "บล็อกมิให้ผู้ใช้อื่นแก้ไข",
"right-blockemail": "บล็อกมิให้ผู้ใช้ส่งอีเมล",
"uploadwarning": "คำเตือนการอัปโหลด",
"uploadwarning-text": "กรุณาแก้ไขคำอธิบายไฟล์ด้านล่างนี้ แล้วลองใหม่อีกครั้ง",
"savefile": "บันทึกไฟล์",
- "uploadedimage": "อัปโหลด \"[[$1]]\"",
- "overwroteimage": "อัปโหลดรุ่นใหม่ของ \"[[$1]]\"",
"uploaddisabled": "ปิดใช้งานการอัปโหลด",
"copyuploaddisabled": "ปิดใช้งานการอัปโหลดโดยยูอาร์แอล",
"uploaddisabledtext": "ปิดใช้งานการอัปโหลดไฟล์",
"mywatchlist": "รายการเฝ้าดู",
"watchlistfor2": "สำหรับ $1 $2",
"nowatchlist": "ไม่มีรายการในรายการเฝ้าดูของคุณ",
- "watchlistanontext": "กรุณา$1เพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ",
+ "watchlistanontext": "กรุณาล็อกอินเพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ",
"watchnologin": "ยังไม่ได้ล็อกอิน",
"addwatch": "เพิ่มเข้ารายการเฝ้าดู",
"addedwatchtext": "หน้า \"[[:$1]]\" ได้เพิ่มลงใน[[Special:Watchlist|รายการเฝ้าดู]]ของคุณแล้ว การเปลี่ยนแปลงในหน้านี้หรือหน้าพูดคุยที่เกี่ยวข้องจะแสดงในรายการดังกล่าว",
"watchlist-details": "มี $1 หน้าในรายการเฝ้าดูของคุณ ไม่นับแยกหน้าอภิปราย",
"wlheader-enotif": "การแจ้งเตือนผ่านอีเมลถูกเปิดใช้งาน",
"wlheader-showupdated": "หน้าที่มีการเปลี่ยนแปลงตั้งแต่คุณเข้าชมล่าสุดแสดงใน'''ตัวหนา'''",
- "wlnote": "ด้านล่างเป็นการแก้ไข{{PLURAL:$1|ล่าสุด|ล่าสุด '''$1''' รายการ}} ใน{{PLURAL:$2|ชั่วโมง|ช่วง '''$2''' ชั่วโมง}}ที่ผ่านมา จนถึง $3, $4",
+ "wlnote": "ด้านล่างเป็นการแก้ไข{{PLURAL:$1|ล่าสุด|ล่าสุด <strong>$1</strong> รายการ}} ใน{{PLURAL:$2|ชั่วโมง| <strong>$2</strong> ชั่วโมง}}ที่ผ่านมา จนถึง $3, $4",
"wlshowlast": "แสดง $1 ชั่วโมง $2 วันล่าสุด $3",
"watchlist-options": "ตัวเลือกรายการเฝ้าดู",
"watching": "เฝ้าดู...",
"delete-edit-reasonlist": "แก้ไขเหตุผลการลบ",
"delete-toobig": "หน้านี้มีประวัติการแก้ไขนาดใหญ่ คือ กว่า $1 รุ่น การลบหน้าเช่นนี้ถูกจำกัดเพื่อป้องกันการรบกวน{{SITENAME}}โดยบังเอิญ",
"delete-warning-toobig": "หน้านี้มีประวัติการแก้ไขขนาดใหญ่ กว่า $1 รุ่น การลบหน้านี้อาจรบกวนการทำงานของฐานข้อมูลของ {{SITENAME}} โปรดดำเนินการด้วยความระมัดระวัง",
+ "delete-cantedit": "คุณไม่สามารถลบหน้านี้ได้เพราะคุณไม่ได้รับอนุญาตให้แก้ไข",
"deleting-backlinks-warning": "'''คำเตือน:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|หน้าอื่น]]เชื่อมโยงมายังหรือดึงข้อมูลจากหน้าที่คุณกำลังจะลบ",
"rollback": "ย้อนการแก้ไขกลับฉุกเฉิน",
"rollback_short": "ย้อนกลับฉุกเฉิน",
"autosumm-replace": "แทนที่ข้อความทั้งหมดด้วย '$1'",
"autoredircomment": "เปลี่ยนทางไปที่ [[$1]]",
"autosumm-new": "หน้าที่ถูกสร้างด้วย '$1'",
+ "autosumm-newblank": "สร้างหน้าว่าง",
"size-bytes": "$1 ไบต์",
"size-kilobytes": "$1 กิโลไบต์",
"size-megabytes": "$1 เมกะไบต์",
"logentry-rights-rights": "$1 {{GENDER:$2|เปลี่ยน}}กลุ่มสมาชิกของ $3 จาก $4 เป็น $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|เปลี่ยน}}กลุ่มสมาชิกของ $3",
"logentry-rights-autopromote": "$1 ได้รับการ{{GENDER:$2|เลื่อนกลุ่ม}}จาก $4 เป็น $5 อัตโนมัติ",
+ "logentry-upload-upload": "$1 อัปโหลด $3",
+ "logentry-upload-overwrite": "$1 อัปโหลดรุ่นใหม่ของ $3",
+ "logentry-upload-revert": "$1 อัปโหลด $3",
"rightsnone": "(ไม่มี)",
"feedback-bugornote": "หากคุณได้อธิบายปัญหาทางเทคนิคในรายละเอียดแล้ว โปรด[$1 รายงานจุดบกพร่อง]\nมิฉะนั้น คุณสามารถแบบอย่างง่ายด้านล่าง ความเห็นของคุณจะถูกเพิ่มเข้าสู่ \"[$3 $2]\" ร่วมกับชื่อผู้ใช้ของคุณ",
"feedback-subject": "เรื่อง:",
"expand_templates_ok": "ตกลง",
"expand_templates_remove_comments": "นำส่วนความเห็นออก",
"expand_templates_preview": "ตัวอย่างผลแสดง",
+ "pagelanguage": "ตัวเลือกภาษาหน้า",
+ "pagelang-name": "หน้า",
"pagelang-language": "ภาษา",
"pagelang-use-default": "ใช้ภาษาโดยปริยาย",
"pagelang-select-lang": "เลือกภาษา",
"action-pagelang": "เปลี่ยนภาษาหน้า",
"log-name-pagelang": "ปูมการเปลี่ยนภาษา",
"log-description-pagelang": "นี่คือปูมการเปลี่ยนภาษาหน้า",
- "logentry-pagelang-pagelang": "$1 เปลี่ยนภาษาของ $3 จาก $4 เป็น $5"
+ "logentry-pagelang-pagelang": "$1 เปลี่ยนภาษาของ $3 จาก $4 เป็น $5",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (เปิดใช้งาน)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ปิดใช้งาน''')"
}
"talkpagelinktext": "Pikir alyşma",
"specialpage": "Ýörite Sahypa",
"personaltools": "Şahsy gurallar",
- "postcomment": "Täze bölüm",
"articlepage": "Makalany görkez",
"talk": "Çekişme",
"views": "Görnüşler",
"externaldberror": "Ýa tassyklama maglumat bazasynyň säwligi bar ýa-da öz ulanyjy hasabyňyzy täzelemegiňize rugsat berilmeýär.",
"login": "Hasaba gir",
"nav-login-createaccount": "Hasaba gir / Hasap döret",
- "loginprompt": "{{SITENAME}} saýtynda sessiýa açmak üçin kukileri işletmegiňiz zerurdyr.",
"userlogin": "Hasaba gir / täze hasap aç",
"userloginnocreate": "Sessiýa aç",
"logout": "Hasapdan çyk",
"searchprofile-advanced-tooltip": "Laýyk at giňişliklerinde gözle",
"search-result-size": "$1 ({{PLURAL:$2|1 söz|$2 söz}})",
"search-result-category-size": "{{PLURAL:$1|1 agza|$1 agza}} ({{PLURAL:$2|1 kiçi kategoriýa|$2 kiçi kategoriýa}}, {{PLURAL:$3|1 faýl|$3 faýl}})",
- "search-result-score": "Kybapdaşlyk: $1%",
"search-redirect": "(gönükdirme $1)",
"search-section": "(bölüm $1)",
"search-suggest": "Şeýle diýjek bolduňyzmy: $1",
"uploadwarning": "Ýükleme duýduryşy",
"uploadwarning-text": "Aşakdaky faýl düşündirişini üýtgediň we gaýtadan synanyşyň.",
"savefile": "Faýly ýazdyr",
- "uploadedimage": "Ýüklenen: \"[[$1]]\"",
- "overwroteimage": "\"[[$1]]\" faýlynyň täze wersiýasy ýüklendi",
"uploaddisabled": "Ýüklemeklik ýapyk",
"copyuploaddisabled": "URL arkaly ýüklemek ýapyk.",
"uploaddisabledtext": "Faýl ýüklemeklik ýapyk.",
"watchlist-details": "Çekişme sahypalaryny hasap etmäniňde, gözegçilik sanawyňyzda {{PLURAL:$1|$1 sahypa|$1 sahypa}} bar.",
"wlheader-enotif": "E-poçta bilen habar beriş açyk.",
"wlheader-showupdated": "Soňky gezek baryp görenizden soňra üýtgedilen sahypalar '''goýy şrift''' bilen görkezilýär.",
+ "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",
"watching": "Gözegçilige alynýar...",
"talkpagelinktext": "Usapan",
"specialpage": "Natatanging pahina",
"personaltools": "Mga kagamitang pansarili",
- "postcomment": "Bagong seksiyon",
"articlepage": "Tingnan ang pahina ng nilalaman",
"talk": "Usapan",
"views": "Mga anyo",
"externaldberror": "Maaaring may kamalian sa pagpapatotoo ng database o kaya hindi ka pinahintulutang isapanahon ng iyong panlabas na account.",
"login": "Lumagda",
"nav-login-createaccount": "Lumagda / lumikha ng account",
- "loginprompt": "Dapat na pinapahintulutan mo ang mga kuki (''cookie'') upang makalagda sa {{SITENAME}}.",
"userlogin": "Lumagda / lumikha ng account",
"userloginnocreate": "Lumagda",
"logout": "Umalis sa pagkaka-login",
"searchprofile-advanced-tooltip": "Hanapin sa pinasadyang mga espasyo ng pangalan",
"search-result-size": "$1 ({{PLURAL:$2|1 salita|$2 salita}})",
"search-result-category-size": "{{PLURAL:$1|isang kasapi|$1 kasapi}} ({{PLURAL:$2|isang subkategorya|$2 subkategorya}}, {{PLURAL:$3|isang talaksan|$3 talaksan}})",
- "search-result-score": "Kaugnayan: $1%",
"search-redirect": "(ipanuto/ituro ang $1)",
"search-section": "(seksyong $1)",
"search-suggest": "Ito ba ang ibig mong sabihin: $1",
"uploadwarning": "Babala sa pagkakarga",
"uploadwarning-text": "Pakibago ang nasa ibabang paglalarawan ng talaksan at subukan muli.",
"savefile": "Sagipin ang talaksan",
- "uploadedimage": "ikinarga ang \"[[$1]]\"",
- "overwroteimage": "nagkarga ng isang bagong bersyon ng \"[[$1]]\"",
"uploaddisabled": "Hindi pinagana ang mga pagkarga",
"copyuploaddisabled": "Ikargang paitaas ayon sa hindi pinaganang URL.",
"uploaddisabledtext": "Hindi pinagana ang mga pagkakarga ng talaksan.",
"watchlist-details": "{{PLURAL:$1|$1 pahinang|$1 mga pahinang}} nasa iyong talaan ng mga binabantayan, hindi binibilang ang mga pahina ng usapan.",
"wlheader-enotif": "Umiiral ang pagpapahayag sa pamamagitan ng e-liham.",
"wlheader-showupdated": "Ipinapakitang may '''makakapal na mga panitik''' ang nabagong/binagong mga pahina mula pa noong huli mong pagdalaw sa kanila",
- "wlnote2": "Nasa ibaba ang mga pagbabago sa nakaraang <strong>$1</strong> oras, noon pang $2, $3.",
+ "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.",
"wlshowlast": "Ipakita ang huling $1 mga oras $2 mga araw $3",
"watchlist-options": "Mga pagpipilian para sa talaan ng mga binabantayan",
"watching": "Isinasama sa mga binabantayan...",
"talkpagelinktext": "Mızokirə",
"specialpage": "Хысусијә сәһифә",
"personaltools": "Шәхси диләгон",
- "postcomment": "Нујә ғысм",
"articlepage": "Мәғолә дијә кардеј",
"talk": "Mızokirə",
"views": "Тәмшо кардеј",
"remembermypassword": "Мыни ым компутерәдә јодәдә огәт (максимум $1 {{PLURAL:$1|руж|руж}})",
"login": "Ыштәни едаштеј",
"nav-login-createaccount": "Ыштәни едаштеј / ыштәни ғејд кардовнијеј",
- "loginprompt": "{{SITENAME}}-әдә ыштәни едәште горнә, шымә бәбе бә «cookies» иҹозә быдән.",
"userlogin": "Ыштәни едаштеј / ыштәни ғејд кардовнијеј",
"userloginnocreate": "Ыштәни едаштеј",
"logout": "Системәдә кој орохнијеј",
"upload": "Фајли бо жәј",
"uploadlogpage": "Бо кардә быә чијон журнал",
"filedesc": "Кыртә тәсвир",
- "uploadedimage": "бо жәше \"[[$1]]\"",
"license": "Лисензијә:",
"license-header": "Лисензијә",
"imgfile": "фајл",
"talkpagelinktext": "Alea",
"specialpage": "Peesi makehe",
"personaltools": "Puha haʻate meʻangāue",
- "postcomment": "Fokotuʻu ha fakamatala",
"articlepage": "Vakai ki he peesi kakano",
"talk": "Alea",
"views": "Ngaahi vakai",
"yourdomainname": "ho ngāueʻanga",
"login": "Kau ki ai",
"nav-login-createaccount": "Kau ki ai",
- "loginprompt": "ʻOku pau te ke fakamafeia ʻa e ngaahi foʻi keke kapau te ke fie kau-ki-ai ki he {{SITENAME}}.",
"userlogin": "Kau ki ai",
"logout": "ʻAlu mamaʻo",
"userlogout": "ʻAlu mamaʻo",
"fileexists-shared-forbidden": "ʻOku toka ʻi ai ha peesi mo e hingoa ē ʻi he kalasi vahevahe; fakamolemole ʻe foki pea hiki hake ʻa e failé ni mo e ha hingoa foʻou. [[File:$1|thumb|center|$1]]",
"uploadwarning": "Tokanga hiki hake",
"savefile": "Haofaki faitaá ni",
- "uploadedimage": "\"[[$1]]\" ʻosi hiki hake",
"uploaddisabled": "ʻOku fakataʻeʻaongaʻi ʻa e ngaahi hiki hake",
"uploaddisabledtext": "ʻOku fakataʻeʻaongaʻi ha ngaahi hiki hake ʻi heni.",
"uploadvirus": "ʻOku ʻi ai ha vailasi ʻi he failé ni! ʻŪ kiʻi meʻa: $1",
"watchlist-details": "ʻOku leʻoʻi ʻa e peesi ʻe $1, ʻikai kau ki ai ʻa e ngaahi peesi alea.",
"wlheader-enotif": "Kuo fakamafeiaʻi tala mei he tohila",
"wlheader-showupdated": "*Ko e ngaahi peesi kuo liliu talu he taimi hoʻo ʻaʻahi ki ai, ʻoku ʻasi mai fakasinolahi",
+ "wlnote": "ʻOku ʻasi ʻi lalo ʻa e liliu fakamuimui ʻe $1 ʻi he houa fakamuimui ʻe <b>$2</b>.",
"wlshowlast": "ʻAsi mai houa fakamuimui ʻe $1, ʻaho ʻe $2, $3",
"watching": "ʻOku leʻo...",
"unwatching": "ʻOku taʻeleʻo...",
"talkpagelinktext": "Toktok",
"specialpage": "Sipesol pes",
"personaltools": "Ol pes bilong mi",
- "postcomment": "Nupela hap bilong pes",
"talk": "Toktok",
"views": "Ol lukluk",
"toolbox": "Sipesol bokis",
"versionrequiredtext": "Bu sayfayı kullanmak için MediaWiki'nin $1 sürümü gerekmektedir. [[Special:Version|Sürüm sayfasına]] bakınız.",
"ok": "Tamam",
"pagetitle-view-mainpage": "{{SITENAME}}",
+ "backlinksubtitle": "←$1",
"retrievedfrom": "\"$1\" adresinden alındı.",
"youhavenewmessages": "$1 {{PLURAL:$3|var}} ($2).",
"youhavenewmessagesfromusers": "{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).",
"hidetoc": "gizle",
"collapsible-collapse": "Daralt",
"collapsible-expand": "Genişlet",
+ "confirmable-confirm": "Emin misiniz?",
+ "confirmable-yes": "Evet",
+ "confirmable-no": "Hayır",
"thisisdeleted": "$1 görmek veya geri getirmek istermisiniz?",
"viewdeleted": "$1 gör?",
"restorelink": "{{PLURAL:$1|bir silinmiş değişikliği|$1 silinmiş değişikliği}}",
"preview": "Önizleme",
"showpreview": "Önizlemeyi göster",
"showdiff": "Değişiklikleri göster",
+ "blankarticle": "<strong>Uyarı:</strong> Oluşturduğunuz sayfa boş.\nEğer \"{{int:savearticle}}\" düğmesine tekrar tıklarsanız, sayfa içerik olmadan oluşturulacaktır.",
"anoneditwarning": "'''Uyarı:''' Oturum açmadınız.\nIP adresiniz sayfanın değişiklik geçmişine kaydedilecektir.",
"anonpreviewwarning": "''Giriş yapmadınız. Kaydederseniz, sayfanın değişiklik geçmişine IP adresiniz yazılır.''",
"missingsummary": "'''Uyarı:''' Herhangi bir özet yazmadın.\nKaydet tuşuna tekrar basarsan sayfa özetsiz kaydedilecek.",
"edit-conflict": "Değişiklik çakışması.",
"edit-no-change": "Değişikliğiniz yoksayıldı, çünkü metinde bir değişiklik yapılmadı.",
"postedit-confirmation-created": "Sayfa oluşturuldu.",
+ "postedit-confirmation-restored": "Sayfa geri yüklendi.",
"postedit-confirmation-saved": "Değişikliğiniz kaydedildi.",
"edit-already-exists": "Yeni sayfa oluşturulamıyor.\nSayfa zaten mevcut.",
"defaultmessagetext": "Varsayılan mesaj metni",
"parser-template-recursion-depth-warning": "Şablon özyineleme yoğunluğu sınırı aşıldı ($1)",
"language-converter-depth-warning": "Dil çevirici derinlik sınırı aşıldı ($1)",
"node-count-exceeded-category": "Düğüm sayısı aşılan sayfalar",
+ "node-count-exceeded-category-desc": "Sayfa azami düğüm sayısını aşıyor.",
"node-count-exceeded-warning": "Sayfa düğüm sayımı aşıldı",
"expansion-depth-exceeded-category": "Genişleme derinliği aşılan sayfalar",
+ "expansion-depth-exceeded-category-desc": "Sayfa azami genişleme derinliğini aşıyor.",
"expansion-depth-exceeded-warning": "Sayfa genişletme derinliği aşıldı",
"parser-unstrip-loop-warning": "Yineleme döngüsü algılandı",
"parser-unstrip-recursion-limit": "($1) yineleme sınırı aşıldı",
"revdelete-no-file": "Belirtilen dosya mevcut değil.",
"revdelete-show-file-confirm": "\"<nowiki>$1</nowiki>\" dosyasının $2 $3 tarihli silinmiş bir revizyonunu görmek istediğinize emin misiniz?",
"revdelete-show-file-submit": "Evet",
+ "revdelete-selected-text": "[[:$2]] için {{PLURAL:$1|seçili revizyon|seçili revizyonlar}}:",
+ "revdelete-selected-file": "[[:$2]] için {{PLURAL:$1|seçili dosya revizyonu|seçili dosya revizyonları}}:",
"logdelete-selected": "{{PLURAL:$1|Seçili kayıt olayı|Seçili kayıt olayları}}:",
"revdelete-text-text": "Silinen sürümler sayfa geçmişinde yer almaya devam edecek ancak okuyucular tarafından içeriklerine erişilemeyecektir.",
"revdelete-text-file": "Silinen dosya sürümleri dosya geçmişinde yer almaya devam edecek ancak okuyucular tarafından içerik bölümlerine erişilemeyecektir.",
"searchprofile-advanced-tooltip": "Özel ad alanlarında ara",
"search-result-size": "$1 ({{PLURAL:$2|1 kelime|$2 kelime}})",
"search-result-category-size": "{{PLURAL:$1|1 üye|$1 üye}} ({{PLURAL:$2|1 altkategori|$2 altkategori}}, {{PLURAL:$3|1 dosya|$3 dosya}})",
- "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)",
"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",
- "uploadedimage": "Yüklenen: \"[[$1]]\"",
- "overwroteimage": "\"[[$1]]\" resminin yeni sürümü yüklenmiştir",
"uploaddisabled": "Geçici olarak şu anda herhangi bir dosya yüklenmez. Biraz sonra bir daha deneyiniz.",
"copyuploaddisabled": "URL ile yükleme devre dışı.",
"uploaddisabledtext": "Dosya yüklemeleri devredışı bırakılmıştır.",
"autosumm-replace": "Sayfa içeriği '$1' ile değiştiriliyor",
"autoredircomment": "[[$1]] sayfasına yönlendirildi",
"autosumm-new": "Yeni sayfa: \"$1\"",
+ "autosumm-newblank": "Boş bir sayfa oluşturdu",
"lag-warn-normal": "$1 {{PLURAL:$1|saniyeden|saniyeden}} yeni değişiklikler bu listede görünmeyebilir.",
"lag-warn-high": "Veritabanı sunucusundaki aşırı gecikmeden dolayı, $1 {{PLURAL:$1|saniyeden|saniyeden}} yeni değişiklikler bu listede görünmeyebilir.",
"watchlistedit-normal-title": "İzleme listesini düzenle",
"watchlistedit-raw-done": "İzleme listeniz güncellendi.",
"watchlistedit-raw-added": "{{PLURAL:$1|1 başlık|$1 başlık}} eklendi:",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 başlık|$1 başlık}} silindi:",
+ "watchlistedit-clear-title": "İzleme listesi temizlendi",
"watchlistedit-clear-legend": "İzleme listesini temizle",
"watchlistedit-clear-explain": "İzleme listenizdeki tüm başlıklar silinecek",
"watchlistedit-clear-titles": "Başlıklar:",
"watchlistedit-clear-submit": "İzleme listesini temizle (Geri alınamaz!)",
"watchlistedit-clear-done": "İzleme listeniz temizlendi.",
"watchlistedit-clear-removed": "{{PLURAL:$1|1 başlık|$1 başlık}} silindi:",
+ "watchlistedit-too-many": "Görüntülemek için çok fazla sayfa var.",
"watchlisttools-clear": "İzleme listesini temizle",
"watchlisttools-view": "İlgili değişiklikleri göster",
"watchlisttools-edit": "İzleme listesini gör ve düzenle",
"duplicate-defaultsort": "'''Uyarı:''' Varsayılan \"$2\" sınıflandırma anahtarı, önceki \"$1\" sınıflandırma anahtarını geçersiz kılıyor.",
"version": "Sürüm",
"version-extensions": "Yüklü ekler",
- "version-skins": "Görünümler",
+ "version-skins": "Yüklü görünümler",
"version-specialpages": "Özel sayfalar",
"version-parserhooks": "Derleyici çengelleri",
"version-variables": "Değişkenler",
"version-hook-name": "Çengel adı",
"version-hook-subscribedby": "Abone olan",
"version-version": "($1 sürümü)",
+ "version-no-ext-name": "[isim yok]",
"version-license": "MediaWiki Lisansı",
"version-ext-license": "Lisans",
"version-ext-colheader-name": "Uzantı",
+ "version-skin-colheader-name": "Görünüm",
"version-ext-colheader-version": "Sürüm",
"version-ext-colheader-license": "Lisans",
"version-ext-colheader-description": "Açıklama",
"htmlform-no": "Hayır",
"htmlform-yes": "Evet",
"htmlform-chosen-placeholder": "Bir seçenek seçin",
+ "htmlform-cloner-create": "Daha fazla ekle",
"htmlform-cloner-delete": "Sil",
"htmlform-cloner-required": "En az bir değer gereklidir.",
"sqlite-has-fts": "$1 tam-metin arama desteği ile",
"logentry-rights-rights": "$1, $3 için grup üyeliğini $4 iken $5 olarak {{GENDER:$2|değiştirdi}}",
"logentry-rights-rights-legacy": "$1, $3 için grup üyeliğini {{GENDER:$2|değiştirdi}}",
"logentry-rights-autopromote": "$1, $4 iken $5 olarak otomatik {{GENDER:$2|terfi edildi}}",
+ "logentry-upload-upload": "$1 {{GENDER:$2|yükledi}} $3",
"rightsnone": "(hiçbiri)",
"feedback-bugornote": "Eğer teknik bir problemi detaylarıyla açıklamaya hazırsanız lütfen [$1 bir hata raporlayın]. Diğer taraftan, aşağıdaki kolay formu kullanabilirsiniz. Yorumunuz, kullanıcı adınızla beraber \"[$3 $2]\" sayfasına eklenecektir.",
"feedback-subject": "Konu:",
"expand_templates_generate_xml": "XML derleyici ağacını göster",
"expand_templates_generate_rawhtml": "Ham HTML göster",
"expand_templates_preview": "Önizleme",
+ "pagelanguage": "Sayfa dili seçicisi",
+ "pagelang-name": "Sayfa",
"pagelang-language": "Dil",
"pagelang-use-default": "Varsayılan dili kullan",
"pagelang-select-lang": "Dil seçin",
"talkpagelinktext": "Mamlo",
"specialpage": "Faṭo dilonoyto",
"personaltools": "aMonayḍi",
- "postcomment": "Fusoqo ḥaṭo",
"articlepage": "Ḥur baḤbişoṭo",
"talk": "Droşo",
"views": "Ḥzayoṭo",
"remembermypassword": "Dxar uQliḍayḍi buBrowser (buSowudo $1 {{PLURAL:$1|Yawmo|Yawme}})",
"login": "3bar",
"nav-login-createaccount": "3bar / Hway Hadomo",
- "loginprompt": "Glozım maqablat Cookies qanna dqudrat fıtḥat {{SITENAME}}.",
"userlogin": "3bar / Hway Hadomo",
"userloginnocreate": "3bar",
"logout": "Nfoqo",
"upload": "Mosaq Fayl",
"uploadlogpage": "Upload log",
"filedesc": "Sfiquṭo",
- "uploadedimage": "mosaq \"[[$1]]\"",
"license": "Fsoso",
"license-header": "Fsoso",
"file-anchor-link": "Fayl",
"talkpagelinktext": "Mbulavulo",
"specialpage": "Tluka ro hlawuleka",
"personaltools": "Switirhisi swa n'wini",
- "postcomment": "Xiyenge xintswa",
"articlepage": "Langutisa tluka ra matsalwa",
"talk": "Mbulavuriswano",
"views": "Kulanguteka",
"remembermypassword": "Tsundzuka ku nghena eka Khompuyuta leyi (kufikela eka $1 {{PLURAL:$1|siku|masiku}})",
"login": "Pfula u nghena",
"nav-login-createaccount": "Pfula unghena / Tumbuluxa akhawunti",
- "loginprompt": "U fanele ku pfumelela swipfuneti leswaku u pfula unghena eka {{SITENAME}}.",
"userlogin": "Pfula unghena / Tumbuluxa akhawunti",
"userloginnocreate": "Pfula unghena",
"logout": "Pfala u famba",
"upload": "Khandziyisa fayili",
"uploadlogpage": "Ngula ya nxaxamelo wa swilo leswi hoxiweke",
"filedesc": "Nkomiso",
- "uploadedimage": "kuhoxiwe fayili ya \"[[$1]]\"",
"license": "Nawu wo pfumelela",
"license-header": "Nawu wo pfumelela",
"imgfile": "fayili",
"searchprofile-advanced-tooltip": "Бирелгән исемнәр мәйданында эзләү",
"search-result-size": "$1 ({{PLURAL:$2|$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 бүлеге)",
"search-suggest": "Бәлки, сез моны эзлисез: $1",
"verification-error": "Бу файл әлегә тикшерү узмаган.",
"illegal-filename": "Мондый файл исеменә рөхсәт юк",
"savefile": "Файлны саклау",
- "uploadedimage": "«[[$1]]» йөкләнгән",
- "overwroteimage": "«[[$1]]» файлының яңа юрамасы йөкләнелде",
"uploaddisabled": "Йөкләү тыелган",
"copyuploaddisabled": "URL адресы буенча йөкләү ябылган.",
"uploaddisabledtext": "Файлларны йөкләү ябылган.",
"talkpagelinktext": "Bäxäs",
"specialpage": "Maxsus bit",
"personaltools": "Şäxsi qorallar",
- "postcomment": "Yaña bülek",
"articlepage": "Mäqäläne qaraw",
"talk": "Bäxäs",
"views": "Qarawlar",
"externaldberror": "Tışqı mäğlümat bazası yärdämendä awtentifikatsiä ütkändä xata çıqtı, yäisä tışqı xisap yazmağızğa üzgäreşlär kertü xoquqığız yuq.",
"login": "Kerü",
"nav-login-createaccount": "Kerü / terkälü",
- "loginprompt": "{{SITENAME}} proyektına kerü öçen «cookies» röxsät itelgän bulırğa tieş.",
"userlogin": "Kerü / terkälü",
"userloginnocreate": "Kerü",
"logout": "Çığu",
"searchprofile-everything-tooltip": "Barlıq bitlärdä dä ezläw",
"searchprofile-advanced-tooltip": "Birelgän isemnär mäydanında ezläw",
"search-result-size": "$1 ({{PLURAL:$2|$2 süz}})",
- "search-result-score": "Relevantlığı: $1 %",
"search-redirect": "(yünältü $1)",
"search-section": "($1 bülege)",
"search-suggest": "Bälki, sez monı ezlisez: $1",
"verification-error": "Bu fayl älegä tikşerü uzmağan.",
"uploadwarning": "Yökläw kisätmäse",
"savefile": "Faylnı saqlaw",
- "uploadedimage": "«[[$1]]» yöklängän",
- "overwroteimage": "«[[$1]]» faylınıñ yaña yuraması yöklänelde",
"uploaddisabled": "Yökläw tıyılğan",
"copyuploaddisabled": "URL adresı buyınça yökläw yabılğan.",
"uploaddisabledtext": "Fayllarnı yökläw yabılğan.",
"talkpagelinktext": "Чугаа",
"specialpage": "Тускай арын",
"personaltools": "Хууда херекселдер",
- "postcomment": "Чаа салбыр",
"articlepage": "Допчу арынны көөрү",
"talk": "Чугаа",
"views": "Көрүүшкүннери",
"remembermypassword": "Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|1=хүн|хүн}}ге чедир)",
"login": "Кирери",
"nav-login-createaccount": "Кирери / бүрүткел бижикти чогаадыры",
- "loginprompt": "{{SITENAME}} сайтче кирерде, баштай «cookies»-ти чөшпээрээр ужурлуг Силер.",
"userlogin": "Кирери / бүрүткел бижикти чогаадыры",
"userloginnocreate": "Кирери",
"logout": "Үнери",
"fileuploadsummary": "Түңнел:",
"filesource": "Эгези:",
"savefile": "Файлды шыгжаары",
- "uploadedimage": "«[[$1]]» деп файлды салган.",
"upload-maxfilesize": "Файлдың эң улуг хемчээли: $1",
"watchthisupload": "Бо арынны хайгаараары",
"upload-file-error": "Иштики алдаг",
"talkpagelinktext": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
"specialpage": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ",
"personaltools": "ⵉⵎⴰⵙⵙⵏ ⵉⵏⵡ",
- "postcomment": "ⵜⴰⴷⴰⵍⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
"talk": "ⴰⵎⵢⴰⵏⵏⴰⵏ",
"views": "ⵥⵕ",
"toolbox": "ⵉⵎⴰⵙⵙⵏ",
"talkpagelinktext": "مۇنازىرە",
"specialpage": "ئالاھىدە بەت",
"personaltools": "شەخسىي قوراللار",
- "postcomment": "يېڭى ئابزاس",
"articlepage": "مەزمۇن بېتىنى كۆرسەت",
"talk": "مۇنازىرە",
"views": "كۆرۈنۈش",
"externaldberror": "بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.",
"login": "تىزىمغا كىر",
"nav-login-createaccount": "تىزىمغا كىر/ھېسابات قۇر",
- "loginprompt": "سىز cookies نى قوزغاتقاندىلا ئاندىن {{SITENAME}} غا كىرەلەيسىز.",
"userlogin": "تىزىمغا كىر/ھېسابات قۇر",
"userloginnocreate": "تىزىمغا كىر",
"logout": "تىزىمدىن چىق",
"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": "(ھۆججەت مەزمۇنى ماس كەلگەن)",
"uploadwarning": "يۈكلەش ئاگاھلاندۇرۇشى",
"uploadwarning-text": "تۆۋەندىكى ھۆججەت چۈشەندۈرۈشىنى ئۆزگەرتىپ ئاندىن قايتا سىناڭ.",
"savefile": "ھۆججەت ساقلا",
- "uploadedimage": "\"[[$1]]\" يۈكلەنگەن",
- "overwroteimage": " \"[[$1]]\" نىڭ يېڭى نەشرى يۈكلەندى",
"uploaddisabled": "يۈكلەش چەكلەنگەن",
"copyuploaddisabled": "URL ئارقىلىق يۈكلەش ئىقتىدارى چەكلەنگەن.",
"uploaddisabledtext": "ھۆججەت يۈكلەش چەكلەنگەن.",
"watchlist-details": "كۆزەت تىزىملىكىڭىزدە {{PLURAL:$1|$1 بەت|$1 بەت}} بار، مۇنازىرە بېتىنى ئۆز ئىچىگە ئالمايدۇ.",
"wlheader-enotif": "ئېلخەتتە ئەسكەرتىش ئىقتىدارى قوزغىتىلدى.",
"wlheader-showupdated": "سىز ئالدىنقى قېتىم كۆرگەندىن كېيىن ئۆزگەرتىلگەن بەتلەر '''توم''' كۆرۈنىدۇ",
+ "wlnote": "تۆۋەندىكىسى يېقىنقى {{PLURAL:$2|سائەت}} ئىچىدىكى ئاخىرقى '{{PLURAL:$1| قېتىملىق}} ئۆزگەرتىش، $3 $4 گىچە.",
"wlshowlast": "يېقىنقى $1 سائەت $2 كۈن $3 نىڭ ئۆزگەرتىشىنى كۆرسەت",
"watchlist-options": "كۆزەت تىزىملىك تاللانما",
"watching": "كۆزەت قىلىۋاتىدۇ…",
"duplicate-defaultsort": "'''ئاگاھلاندۇرۇش:''' كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى \"$2\" ئىلگىرىكى كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى \"$1\" نى قاپلىۋېتىدۇ.",
"version": "نەشرى",
"version-extensions": "قاچىلانغان كېڭەيتىلمە",
+ "version-skins": "تېرەلەر",
"version-specialpages": "ئالاھىدە بەتلەر",
"version-parserhooks": "تەھلىلچى ئىلمىكى",
"version-variables": "ئۆزگەرگۈچى مىقدار",
"version-antispam": "ئەخلەتتىن ساقلىنىش",
- "version-skins": "تېرەلەر",
"version-other": "باشقا",
"version-mediahandlers": "ۋاسىتە بىر تەرەپ قىلغۇچ",
"version-hooks": "ئىلمەك",
"Тест",
"아라",
"Calak",
- "Mykola Swarnyk"
+ "Mykola Swarnyk",
+ "Milicevic01"
]
},
"tog-underline": "Підкреслювання посилань:",
"hidetoc": "сховати",
"collapsible-collapse": "згорнути",
"collapsible-expand": "розгорнути",
+ "confirmable-confirm": "{{GENDER:$1|Ви}} впевнені?",
+ "confirmable-yes": "Так",
+ "confirmable-no": "Ні",
"thisisdeleted": "Переглянути чи відновити $1?",
"viewdeleted": "Переглянути $1?",
"restorelink": "$1 {{PLURAL:$1|вилучене редагування|вилучені редагування|вилучених редагувань}}",
"nocookiesforlogin": "{{int:nocookieslogin}}",
"noname": "Ви зазначили неправильне ім'я користувача.",
"loginsuccesstitle": "Успішний вхід до системи",
- "loginsuccess": "'''Тепер ви працюєте {{grammar:locative|{{SITENAME}}}} під іменем $1.'''",
- "nosuchuser": "Користувач з іменем «$1» не існує.\nІмена користувачів регістрозалежні.\nПеревірте правильність написання або скористайтеся формою нижче, щоб [[Special:UserLogin/signup|зареєструвати нового користувача]].",
- "nosuchusershort": "Користувач з іменем $1 не існує.\nПеревірте правильність написання імені.",
+ "loginsuccess": "'''Тепер ви працюєте в {{grammar:locative|{{SITENAME}}}} під іменем $1.'''",
+ "nosuchuser": "Користувача з іменем «$1» не існує.\nВ іменах користувачів розрізняються великі і малі символи.\nПеревірте правильність написання або скористайтеся формою нижче, щоб [[Special:UserLogin/signup|зареєструвати нового користувача]].",
+ "nosuchusershort": "Користувача з іменем $1 не існує.\nПеревірте правильність написання імені.",
"nouserspecified": "Ви повинні зазначити ім'я користувача.",
"login-userblocked": "Цей користувач заблокований. Вхід в систему не дозволений.",
"wrongpassword": "Ви ввели хибний пароль. Спробуйте ще раз.",
"wrongpasswordempty": "Ви не ввели пароль. Будь ласка, спробуйте ще раз.",
"passwordtooshort": "Ваш пароль закороткий, він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}}.",
- "password-name-match": "Уведений пароль має відрізнятися від імені користувача.",
+ "password-name-match": "Ð\92аÑ\88 пароль має відрізнятися від імені користувача.",
"password-login-forbidden": "Використання цього імені користувача і пароля заборонено.",
"mailmypassword": "Перевстановити пароль",
- "passwordremindertitle": "Ð\9fам'Ñ\8fÑ\82ка паÑ\80олÑ\8f коÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87а {{grammar:genitive|{{SITENAME}}}}",
- "passwordremindertext": "Хтось (можливо, ви, з IP-адреси $1) зробив запит\nна надсилання вам нового пароля користувача {{grammar:genitive|{{SITENAME}}}} ($4). Для користувача\n«$2» створено новий пароль: <code>$3</code>. Якщо це зробили ви,\nто вам слід увійти до системи, ввівши новий пароль.\nВаш тимчасовий пароль втратить силу через {{PLURAL:$5|$5 день|$5 дні|$5 днів}}.\n\nЯкщо ви не надсилали запиту на зміну пароля або якщо ви вже згадали свій пароль\nі не хочете його змінювати, ви можете ігнорувати це повідомлення і\nпродовжувати використовувати свій старий пароль.",
- "noemail": "Для користувача \"$1\" не вказано адресу електронної пошти.",
+ "passwordremindertitle": "Ð\9dовий Ñ\82имÑ\87аÑ\81овий паÑ\80олÑ\8c длÑ\8f {{grammar:genitive|{{SITENAME}}}}",
+ "passwordremindertext": "Хтось (можливо ви, з IP-адреси $1) зробив запит на новий пароль для {{grammar:genitive|{{SITENAME}}}} ($4). Для користувача «$2» створено новий пароль: <code>$3</code>. Якщо це зробили ви, то вам слід увійти до системи, ввівши новий пароль.\nВаш тимчасовий пароль втратить силу через {{PLURAL:$5|$5 день|$5 дні|$5 днів}}.\n\nЯкщо ви не надсилали запиту на зміну пароля або якщо ви вже згадали свій пароль і не хочете його змінювати, ви можете ігнорувати це повідомлення і продовжувати використовувати свій старий пароль.",
+ "noemail": "Для користувача \"$1\" не вказано адреси електронної пошти.",
"noemailcreate": "Вам треба вказати правильну адресу електронної пошти",
"passwordsent": "Новий пароль був надісланий на адресу електронної пошти, зазначену для \"$1\".\nБудь ласка, ввійдіть до системи після отримання пароля.",
- "blocked-mailpassword": "Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля.",
- "eauthentsent": "На вказану адресу електронної пошти відправлено лист.\nЩоб отримувати листи надалі, дотримуйтесь викладених там інструкцій для підтвердження того, що ця адреса належить вам.",
- "throttled-mailpassword": "Ð\86нÑ\81Ñ\82Ñ\80Ñ\83кÑ\86Ñ\96Ñ\8f по вÑ\96дновленнÑ\8e паÑ\80олÑ\8e вже бÑ\83ла виÑ\81лана елекÑ\82Ñ\80онноÑ\8e поÑ\88Ñ\82оÑ\8e пÑ\80оÑ\82Ñ\8fгом {{PLURAL:$1|1=оÑ\81Ñ\82аннÑ\8cоÑ\97 години|оÑ\81Ñ\82аннÑ\96Ñ\85 $1 годин}}.\nÐ\94лÑ\8f попеÑ\80едженнÑ\8f зловживанÑ\8c дозволено надÑ\81илаÑ\82и Ñ\82Ñ\96лÑ\8cки однÑ\83 Ñ\96нÑ\81Ñ\82Ñ\80Ñ\83кÑ\86Ñ\96Ñ\8e за {{PLURAL:$1|годину|$1 години|$1 годин}}.",
- "mailerror": "Ð\9fомилка пÑ\80и вÑ\96дпÑ\80авÑ\86Ñ\96 пошти: $1",
+ "blocked-mailpassword": "Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля, щоб запобігти зловживанням.",
+ "eauthentsent": "На вказану адресу електронної пошти відправлено лист підтвердження.\nЩоб отримувати надалі будь-які повідомлення, необхідно підтвердити, що обліковий рахунок належить справді вам, за процедурою, описаною в листі.",
+ "throttled-mailpassword": "Ð\9bиÑ\81Ñ\82а длÑ\8f оновленнÑ\8f паÑ\80олÑ\8f вже бÑ\83ло надÑ\96Ñ\81лано елекÑ\82Ñ\80онноÑ\8e поÑ\88Ñ\82оÑ\8e пÑ\80оÑ\82Ñ\8fгом {{PLURAL:$1|1=оÑ\81Ñ\82аннÑ\8cоÑ\97 години|оÑ\81Ñ\82аннÑ\96Ñ\85 $1 годин}}.\nÐ\94лÑ\8f попеÑ\80едженнÑ\8f зловживанÑ\8c дозволено надÑ\81илаÑ\82и Ñ\82Ñ\96лÑ\8cки одного лиÑ\81Ñ\82а оновленнÑ\8f паÑ\80олÑ\8f за {{PLURAL:$1|годину|$1 години|$1 годин}}.",
+ "mailerror": "Ð\9fомилка надÑ\81иланнÑ\8f пошти: $1",
"acct_creation_throttle_hit": "Відвідувачі з вашої IP-адреси вже створили $1 {{PLURAL:$1|обліковий запис|облікових записи|облікових записів}} за останню добу, що є максимумом для цього відрізка часу.\nТаким чином, користувачі з цієї IP-адреси не можуть на цей момент створювати нових облікових записів.",
"emailauthenticated": "Вашу адресу електронної пошти було підтверджено на $2 о $3.",
- "emailnotauthenticated": "Ð\90дÑ\80еÑ\81Ñ\83 ваÑ\88оÑ\97 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и Ñ\89е не пÑ\96дÑ\82веÑ\80джено. Ð\96одна лиÑ\81Ñ\82 не бÑ\83де надÑ\96Ñ\81лано длÑ\8f бÑ\83дÑ\8c-Ñ\8fкоÑ\97 з наÑ\81Ñ\82Ñ\83пниÑ\85 Ñ\84Ñ\83нкцій.",
- "noemailprefs": "Ð\90дÑ\80еÑ\81Ñ\83 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и не вказано, Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\97 вÑ\96кÑ\96 Ñ\80обоÑ\82и з ел. поÑ\88Ñ\82оÑ\8e вÑ\96дклÑ\8eÑ\87ені.",
- "emailconfirmlink": "Підтвердити адресу вашої електронної пошти",
- "invalidemailaddress": "Уведена адÑ\80еÑ\81а не може бÑ\83Ñ\82и пÑ\80ийнÑ\8fÑ\82а, бо вона не вÑ\96дповÑ\96даÑ\94 Ñ\84оÑ\80маÑ\82Ñ\83 адÑ\80еÑ\81 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и.\nБудь ласка, введіть коректну адресу або залиште поле порожнім.",
- "cannotchangeemail": "У цій вікі не можна міняти свою адресу ел. пошти.",
- "emaildisabled": "Цей Ñ\81айÑ\82 не може надÑ\96Ñ\81лати електронні листи.",
+ "emailnotauthenticated": "Ð\90дÑ\80еÑ\81Ñ\83 ваÑ\88оÑ\97 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и Ñ\89е не пÑ\96дÑ\82веÑ\80джено. Ð\9dадÑ\81иланнÑ\8f лиÑ\81Ñ\82Ñ\96в неможливе Ñ\83 жоднÑ\96й з наÑ\81Ñ\82Ñ\83пниÑ\85 опцій.",
+ "noemailprefs": "Ð\92кажÑ\96Ñ\82Ñ\8c адÑ\80еÑ\81Ñ\83 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и, Ñ\89об Ñ\83можливиÑ\82и наÑ\81Ñ\82Ñ\83пнÑ\96 поÑ\88Ñ\82овÑ\96 Ñ\84Ñ\83нкÑ\86Ñ\96Ñ\97 вÑ\96кі.",
+ "emailconfirmlink": "Підтвердіть адресу вашої електронної пошти",
+ "invalidemailaddress": "Ð\92казана адÑ\80еÑ\81а не може бÑ\83Ñ\82и пÑ\80ийнÑ\8fÑ\82а Ñ\87еÑ\80ез невÑ\96дповÑ\96дний Ñ\84оÑ\80маÑ\82.\nБудь ласка, введіть коректну адресу або залиште поле порожнім.",
+ "cannotchangeemail": "У цій вікі не можна міняти адресу електронної пошти, закріплену за обліковим записом.",
+ "emaildisabled": "Ð\97 Ñ\86Ñ\8cого Ñ\81айÑ\82Ñ\83 не можна надÑ\81илати електронні листи.",
"accountcreated": "Обліковий запис створено.",
"accountcreatedtext": "Обліковий запис користувача для [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|обговорення]]) був створений.",
"createaccount-title": "Створення облікового запису для {{SITENAME}}",
- "createaccount-text": "Ð¥Ñ\82оÑ\81Ñ\8c Ñ\81Ñ\82воÑ\80ив облÑ\96ковий запиÑ\81 «$2» на Ñ\81еÑ\80веÑ\80Ñ\96 пÑ\80оекÑ\82Ñ\83 {{SITENAME}} ($4) з паÑ\80олем «$3», зазнаÑ\87ивÑ\88и ваÑ\88Ñ\83 адÑ\80еÑ\81Ñ\83 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и. Ð\92ам Ñ\81лÑ\96д зайÑ\82и Ñ\96 змÑ\96ниÑ\82и паÑ\80олÑ\8c.\n\nÐ\9fÑ\80оÑ\96гноруйте дане повідомлення, якщо обліковий запис було створено помилково.",
+ "createaccount-text": "Ð¥Ñ\82оÑ\81Ñ\8c Ñ\81Ñ\82воÑ\80ив облÑ\96ковий запиÑ\81 «$2» на Ñ\81еÑ\80веÑ\80Ñ\96 пÑ\80оекÑ\82Ñ\83 {{SITENAME}} ($4) з паÑ\80олем «$3», зазнаÑ\87ивÑ\88и ваÑ\88Ñ\83 адÑ\80еÑ\81Ñ\83 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и. Ð\92ам Ñ\81лÑ\96д зайÑ\82и Ñ\96 змÑ\96ниÑ\82и паÑ\80олÑ\8c.\n\nÐ\86гноруйте дане повідомлення, якщо обліковий запис було створено помилково.",
"login-throttled": "Ви зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
"login-abort-generic": "Не вдалося ввійти до системи",
"loginlanguagelabel": "Мова: $1",
- "suspicious-userlogout": "Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.",
- "createacct-another-realname-tip": "Справжнє ім'я є необов'язковим.\nЯкщо ви вирішите надати його, то воно буде використовуватися для присвоєння користувачу авторства до його роботи.",
+ "suspicious-userlogout": "Ваш запит на завершення сеансу відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.",
+ "createacct-another-realname-tip": "Справжнє ім'я є необов'язковим.\nЯкщо ви вирішите надати його, воно буде використовуватись для позначення редагувань та інших дій користувача.",
"pt-login": "Увійти",
"pt-login-button": "Вхід",
"pt-createaccount": "Створити обліковий запис",
"pt-userlogout": "Вийти",
"php-mail-error-unknown": "Невідома помилка в PHP-функції mail()",
- "user-mail-no-addy": "СпÑ\80оба надÑ\81иланнÑ\8f елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и без зазнаÑ\87еноÑ\97 адÑ\80еÑ\81и елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и.",
+ "user-mail-no-addy": "СпÑ\80оба надÑ\81иланнÑ\8f елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и без зазнаÑ\87еннÑ\8f адÑ\80еÑ\81и.",
"user-mail-no-body": "Спроба надіслати електронного листа з порожнім або надто коротким вмістом.",
"changepassword": "Змінити пароль",
"resetpass_announce": "Для завершення входу ви повинні встановити новий пароль.",
"oldpassword": "Старий пароль:",
"newpassword": "Новий пароль:",
"retypenew": "Ще раз введіть новий пароль:",
- "resetpass_submit": "Установити пароль і ввійти",
+ "resetpass_submit": "Ð\92становити пароль і ввійти",
"changepassword-success": "Ваш пароль успішно змінено!",
"changepassword-throttled": "Ви нещодавно зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
- "resetpass_forbidden": "Пароль не можна змінювати",
+ "resetpass_forbidden": "Пароль не можна змінити",
"resetpass-no-info": "Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.",
"resetpass-submit-loggedin": "Змінити пароль",
"resetpass-submit-cancel": "Скасувати",
"resetpass-expired-soft": "Термін дії вашого пароля закінчився, і тепер він повинен бути змінений. Будь ласка, виберіть новий пароль або натисніть \"{{int:resetpass-submit-cancel}}\", щоб змінити його пізніше.",
"resetpass-validity-soft": "Ваш пароль є некоректним: $1\n\nБудь ласка, виберіть новий пароль або натисніть «{{int:resetpass-submit-cancel}}», щоб скинути його пізніше.",
"passwordreset": "Скинути пароль",
- "passwordreset-text-one": "Заповніть цю форму для відновлення пароля.",
- "passwordreset-text-many": "{{PLURAL:$1|Ð\97аповнÑ\96Ñ\82Ñ\8c одне з полÑ\96в длÑ\8f оÑ\82Ñ\80иманнÑ\8f Ñ\82имÑ\87аÑ\81ового паÑ\80олÑ\8e Ñ\87еÑ\80ез елекÑ\82Ñ\80оннÑ\83 поÑ\88Ñ\82Ñ\83.}}",
+ "passwordreset-text-one": "Заповніть цю форму, щоб отримати тимчасовий пароль електронною поштою.",
+ "passwordreset-text-many": "{{PLURAL:$1|Ð\97аповнÑ\96Ñ\82Ñ\8c одне з полÑ\96в длÑ\8f оÑ\82Ñ\80иманнÑ\8f Ñ\82имÑ\87аÑ\81ового паÑ\80олÑ\8f елекÑ\82Ñ\80онноÑ\8e поÑ\88Ñ\82оÑ\8e.}}",
"passwordreset-legend": "Перевстановити пароль",
"passwordreset-disabled": "У цій вікі вимкнена можливість скидання пароля.",
- "passwordreset-emaildisabled": "ФÑ\83нкÑ\86Ñ\96Ñ\97 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и вимкнÑ\83Ñ\82о в Ñ\86Ñ\96й вÑ\96кÑ\96.",
+ "passwordreset-emaildisabled": "Ð\92 Ñ\86Ñ\96й вÑ\96кÑ\96 вимкнÑ\83Ñ\82о ФÑ\83нкÑ\86Ñ\96Ñ\97 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и.",
"passwordreset-username": "Ім'я користувача:",
"passwordreset-domain": "Домен:",
"passwordreset-capture": "Продивитись результуючий електронний лист?",
- "passwordreset-capture-help": "ЯкÑ\89о Ð\92и вÑ\81Ñ\82ановиÑ\82е вÑ\96дмÑ\96Ñ\82кÑ\83, Ð\92ам бÑ\83де показаний елекÑ\82Ñ\80онний лиÑ\81Ñ\82 (Ñ\96з Ñ\82имÑ\87аÑ\81овим паÑ\80олем), Ñ\8fкий бÑ\83де вÑ\96дпÑ\80авлений користувачеві.",
+ "passwordreset-capture-help": "ЯкÑ\89о ви зÑ\80обиÑ\82е помÑ\96Ñ\82кÑ\83 Ñ\83 вÑ\96конÑ\86Ñ\96, вам бÑ\83де показаний елекÑ\82Ñ\80онний лиÑ\81Ñ\82 (Ñ\96з Ñ\82имÑ\87аÑ\81овим паÑ\80олем), Ñ\8fкий Ñ\82акож бÑ\83де надÑ\96Ñ\81ланий користувачеві.",
"passwordreset-email": "Адреса електронної пошти:",
"passwordreset-emailtitle": "Деталі облікового запису на {{SITENAME}}",
- "passwordreset-emailtext-ip": "Ð¥Ñ\82оÑ\81Ñ\8c (Ñ\96мовÑ\96Ñ\80но Ð\92и, з IP-адÑ\80еÑ\81и $1) попÑ\80оÑ\81ив нагадаÑ\82и деÑ\82алÑ\96 Ð\92аÑ\88ого облÑ\96кового запиÑ\81Ñ\83 длÑ\8f {{SITENAME}} ($4). Ð\97 Ð\92аÑ\88оÑ\8e елекÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e пов'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий запиÑ\81|Ñ\96 Ñ\82акÑ\96 запиÑ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий паÑ\80олÑ\8c Ñ\81Ñ\82ане недÑ\96йÑ\81ним|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 паÑ\80олÑ\96 Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c недÑ\96йÑ\81ними}} Ñ\87еÑ\80ез $5 {{PLURAL:$5|денÑ\8c|днÑ\96|днÑ\96в}}.\nÐ\92и маÑ\94Ñ\82е ввÑ\96йÑ\82и в Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 вибÑ\80аÑ\82и новий паÑ\80олÑ\8c. ЯкÑ\89о ж Ñ\86ей запиÑ\82 зÑ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий, або Ð\92и пам'Ñ\8fÑ\82аÑ\94Ñ\82е Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий паÑ\80олÑ\8c Ñ\96 не бажаÑ\94Ñ\82е його змÑ\96нÑ\8eваÑ\82и, можеÑ\82е пÑ\80оÑ\81Ñ\82о пÑ\80оігнорувати це повідомлення та продовжувати використовувати старий пароль.",
- "passwordreset-emailtext-user": "Ð\9aоÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87 $1 з {{SITENAME}} попÑ\80оÑ\81ив нагадаÑ\82и деÑ\82алÑ\96 Ð\92аÑ\88ого облÑ\96кового запиÑ\81Ñ\83 длÑ\8f {{SITENAME}} ($4). Ð\97 Ð\92аÑ\88оÑ\8e елекÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e пов'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий запиÑ\81|Ñ\96 Ñ\82акÑ\96 запиÑ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий паÑ\80олÑ\8c|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 паÑ\80олÑ\96}} Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c неÑ\87иннÑ\96 Ñ\87еÑ\80ез {{PLURAL:$5|денÑ\8c|$5 днÑ\96|$5 днÑ\96в}}.\nÐ\92и маÑ\94Ñ\82е ввÑ\96йÑ\82и в Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 вибÑ\80аÑ\82и новий паÑ\80олÑ\8c. ЯкÑ\89о ж Ñ\86ей запиÑ\82 зÑ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий, або Ð\92и пам'Ñ\8fÑ\82аÑ\94Ñ\82е Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий паÑ\80олÑ\8c Ñ\96 не бажаÑ\94Ñ\82е його змÑ\96нÑ\8eваÑ\82и, можеÑ\82е пÑ\80оÑ\81Ñ\82о пÑ\80оігнорувати це повідомлення та продовжувати використовувати старий пароль.",
+ "passwordreset-emailtext-ip": "Ð¥Ñ\82оÑ\81Ñ\8c (Ñ\96мовÑ\96Ñ\80но ви, з IP-адÑ\80еÑ\81и $1) попÑ\80оÑ\81ив нагадаÑ\82и деÑ\82алÑ\96 ваÑ\88ого облÑ\96кового запиÑ\81Ñ\83 длÑ\8f {{SITENAME}} ($4). Ð\97 ваÑ\88оÑ\8e елекÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e пов'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий запиÑ\81|Ñ\96 Ñ\82акÑ\96 запиÑ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий паÑ\80олÑ\8c Ñ\81Ñ\82ане недÑ\96йÑ\81ним|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 паÑ\80олÑ\96 Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c недÑ\96йÑ\81ними}} Ñ\87еÑ\80ез $5 {{PLURAL:$5|денÑ\8c|днÑ\96|днÑ\96в}}.\nÐ\92и маÑ\94Ñ\82е ввÑ\96йÑ\82и в Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 вибÑ\80аÑ\82и новий паÑ\80олÑ\8c. ЯкÑ\89о ж Ñ\86ей запиÑ\82 зÑ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий або ви згадали Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий паÑ\80олÑ\8c Ñ\96 не бажаÑ\94Ñ\82е його змÑ\96нÑ\8eваÑ\82и, можеÑ\82е ігнорувати це повідомлення та продовжувати використовувати старий пароль.",
+ "passwordreset-emailtext-user": "Ð\9aоÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87 $1 з {{SITENAME}} попÑ\80оÑ\81ив нагадаÑ\82и деÑ\82алÑ\96 ваÑ\88ого облÑ\96кового запиÑ\81Ñ\83 длÑ\8f {{SITENAME}} ($4). Ð\97 ваÑ\88оÑ\8e елекÑ\82Ñ\80онноÑ\8e Ñ\81кÑ\80инÑ\8cкоÑ\8e пов'Ñ\8fзан{{PLURAL:$3|1=ий Ñ\82акий запиÑ\81|Ñ\96 Ñ\82акÑ\96 запиÑ\81и}}:\n\n$2\n\n{{PLURAL:$3|1=Цей Ñ\82имÑ\87аÑ\81овий паÑ\80олÑ\8c|ЦÑ\96 Ñ\82имÑ\87аÑ\81овÑ\96 паÑ\80олÑ\96}} Ñ\81Ñ\82анÑ\83Ñ\82Ñ\8c неÑ\87иннÑ\96 Ñ\87еÑ\80ез {{PLURAL:$5|денÑ\8c|$5 днÑ\96|$5 днÑ\96в}}.\nÐ\92и маÑ\94Ñ\82е ввÑ\96йÑ\82и в Ñ\81иÑ\81Ñ\82емÑ\83 Ñ\96 вибÑ\80аÑ\82и новий паÑ\80олÑ\8c. ЯкÑ\89о ж Ñ\86ей запиÑ\82 зÑ\80обив Ñ\85Ñ\82оÑ\81Ñ\8c Ñ\96нÑ\88ий, або ви згадали Ñ\81вÑ\96й Ñ\81Ñ\82аÑ\80ий паÑ\80олÑ\8c Ñ\96 не бажаÑ\94Ñ\82е його змÑ\96нÑ\8eваÑ\82и, можеÑ\82е пÑ\80оÑ\81Ñ\82о ігнорувати це повідомлення та продовжувати використовувати старий пароль.",
"passwordreset-emailelement": "Ім'я користувача: $1\nТимчасовий пароль: $2",
- "passwordreset-emailsent": "Ð\95лекÑ\82Ñ\80онний лиÑ\81Ñ\82 длÑ\8f вÑ\96дновленнÑ\8f паÑ\80олÑ\8f вÑ\96дпÑ\80авлений.",
- "passwordreset-emailsent-capture": "Ð\95лекÑ\82Ñ\80онний лиÑ\81Ñ\82 Ñ\81киданнÑ\8f паÑ\80олÑ\8e було надіслано, як показано нижче.",
+ "passwordreset-emailsent": "Ð\95лекÑ\82Ñ\80онний лиÑ\81Ñ\82 длÑ\8f вÑ\96дновленнÑ\8f паÑ\80олÑ\8f надÑ\96Ñ\81ланий.",
+ "passwordreset-emailsent-capture": "Ð\95лекÑ\82Ñ\80онний лиÑ\81Ñ\82 Ñ\81киданнÑ\8f паÑ\80олÑ\8f було надіслано, як показано нижче.",
"passwordreset-emailerror-capture": "Електронний лист для відновлення пароля мав бути надісланий, як показано нижче, але його надсилання {{GENDER:$2|користувачеві|користувачці}} $1 не вдалося.",
"changeemail": "Змінити адресу електронної пошти",
"changeemail-header": "Зміна адреси електронної пошти",
"changeemail-cancel": "Скасувати",
"changeemail-throttled": "Ви зробили надто багато спроб ввійти до системи.\nБудь ласка, зачекайте $1 перед повторною спробою.",
"resettokens": "Скидання жетонів",
- "resettokens-text": "Ð\92и можеÑ\82е Ñ\81кинÑ\83Ñ\82и жеÑ\82они, Ñ\89о забезпеÑ\87Ñ\83Ñ\8eÑ\82Ñ\8c доÑ\81Ñ\82Ñ\83п до певниÑ\85 оÑ\81обиÑ\81Ñ\82иÑ\85 даниÑ\85, пов'Ñ\8fзаниÑ\85 Ñ\82Ñ\83Ñ\82 Ñ\96з Ð\92аÑ\88им облÑ\96ковим запиÑ\81ом.\nÐ\92ам Ñ\81лÑ\96д Ñ\86е зÑ\80обиÑ\82и, Ñ\8fкÑ\89о Ð\92и випадково подÑ\96лилиÑ\81Ñ\8c жеÑ\82онами з кимоÑ\81Ñ\8c, або Ñ\8fкÑ\89о Ð\92аш обліковий запис було зламано.",
+ "resettokens-text": "Ð\92и можеÑ\82е Ñ\81кинÑ\83Ñ\82и жеÑ\82они, Ñ\89о забезпеÑ\87Ñ\83Ñ\8eÑ\82Ñ\8c доÑ\81Ñ\82Ñ\83п до певниÑ\85 оÑ\81обиÑ\81Ñ\82иÑ\85 даниÑ\85, пов'Ñ\8fзаниÑ\85 Ñ\82Ñ\83Ñ\82 Ñ\96з ваÑ\88им облÑ\96ковим запиÑ\81ом.\nÐ\92ам Ñ\81лÑ\96д Ñ\86е зÑ\80обиÑ\82и, Ñ\8fкÑ\89о ви випадково подÑ\96лилиÑ\81Ñ\8c жеÑ\82онами з кимоÑ\81Ñ\8c, або Ñ\8fкÑ\89о ваш обліковий запис було зламано.",
"resettokens-no-tokens": "Немає жетонів до скидання.",
"resettokens-legend": "Скинути жетони",
"resettokens-tokens": "Жетони:",
"resettokens-token-label": "$1 (поточне значення: $2)",
- "resettokens-watchlist-token": "Маркер стрічки новин (Atom/RSS) з [[Special:Watchlist|змін на сторінку у вашому списку спостереження]]",
+ "resettokens-watchlist-token": "Маркер стрічки новин (Atom/RSS) щодо [[Special:Watchlist|зміни на сторінці з вашого списку спостереження]]",
"resettokens-done": "Жетони скинуто.",
"resettokens-resetbutton": "Скинути обрані жетони",
"bold_sample": "Жирний текст",
"italic_tip": "Курсив",
"link_sample": "Назва посилання",
"link_tip": "Внутрішнє посилання",
- "extlink_sample": "http://www.example.com назва посилання",
+ "extlink_sample": "назва посилання http://www.example.com",
"extlink_tip": "Зовнішнє посилання (не забудьте про префікс http://)",
"headline_sample": "Текст заголовка",
"headline_tip": "Заголовок 2-го рівня",
- "nowiki_sample": "Ð\92Ñ\81Ñ\82авлÑ\8fйÑ\82е Ñ\81Ñ\8eди невÑ\96дформатований текст.",
+ "nowiki_sample": "Ð\92Ñ\81Ñ\82авиÑ\82и Ñ\81Ñ\8eди неформатований текст.",
"nowiki_tip": "Ігнорувати вікі-форматування",
"image_sample": "Example.jpg",
"image_tip": "Файл",
"preview": "Попередній перегляд",
"showpreview": "Попередній перегляд",
"showdiff": "Показати зміни",
- "blankarticle": "<strong>Попередження:</strong> Ви створюєте пусту сторінку.\nЯкщо Ви знову натиснете «{{int:savearticle}}», сторінку буде створено без вмісту.",
- "anoneditwarning": "'''Увага''': Ð\92и не Ñ\83вÑ\96йÑ\88ли до Ñ\81иÑ\81Ñ\82еми. Ð\92аÑ\88а IP-адÑ\80еÑ\81а бÑ\83де запиÑ\81ана до Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\97 змÑ\96н Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки.",
+ "blankarticle": "'''Попередження:''' Створена вами сторінка порожня.\nЯкщо Ви знову натиснете «{{int:savearticle}}», сторінку буде створено без вмісту.",
+ "anoneditwarning": "'''Увага''': Ð\92и не Ñ\83вÑ\96йÑ\88ли до Ñ\81иÑ\81Ñ\82еми. Ð\94о Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\97 змÑ\96н Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки бÑ\83де запиÑ\81ана ваÑ\88а IP-адÑ\80еÑ\81а.",
"anonpreviewwarning": "''Ви не увійшли в систему. Якщо ви виконаєте збереження, то в історію сторінки буде записана ваша IP-адреса.''",
"missingsummary": "'''Нагадування''': Ви не дали короткого опису змін.\nНатиснувши кнопку «Зберегти» ще раз, ви збережете зміни без коментаря.",
"missingcommenttext": "Будь ласка, введіть нижче ваше повідомлення.",
"subject-preview": "Заголовок буде:",
"blockedtitle": "Користувача заблоковано",
"blockedtext": "'''Ваш обліковий запис або IP-адреса заблоковані.'''\n\nБлокування виконане адміністратором $1.\nЗазначена наступна причина: ''$2''.\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Блокування виконав: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністратору, якщо ви не зареєстровані або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте ці дані у своїх запитах.",
- "autoblockedtext": "Ваша IP-адреса автоматично заблокована у зв'язку з тим, що вона раніше використовувалася кимось із заблокованих користувачів. Адміністратор ($1), що її заблокував, зазначив наступну причину блокування:\n\n:''$2''\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Був заблокований: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністраторові, якщо ви не зареєстровані у проекті або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте його у своїх запитах.",
+ "autoblockedtext": "Ваша IP-адреса автоматично заблокована у зв'язку з тим, що вона раніше використовувалася кимось із заблокованих користувачів. Адміністратор ($1), що її заблокував, зазначив наступну причину блокування:\n\n:''$2''\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Блокування виконав: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністраторові, якщо ви не зареєстровані у проекті або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте його у своїх запитах.",
"blockednoreason": "не вказано причини",
"whitelistedittext": "Ви повинні $1 щоб редагувати сторінки.",
- "confirmedittext": "Ð\92и повиннÑ\96 пÑ\96дÑ\82веÑ\80диÑ\82и ваÑ\88Ñ\83 адÑ\80еÑ\81Ñ\83 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и пеÑ\80ед Ñ\80едагÑ\83ваннÑ\8fм Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\91Ñ\83дÑ\8c-лаÑ\81ка зазнаÑ\87Ñ\82е і підтвердіть вашу електронну адресу на [[Special:Preferences|сторінці налаштувань]].",
+ "confirmedittext": "Ð\92и повиннÑ\96 пÑ\96дÑ\82веÑ\80диÑ\82и ваÑ\88Ñ\83 адÑ\80еÑ\81Ñ\83 елекÑ\82Ñ\80онноÑ\97 поÑ\88Ñ\82и пеÑ\80ед Ñ\80едагÑ\83ваннÑ\8fм Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\91Ñ\83дÑ\8c-лаÑ\81ка вкажÑ\96Ñ\82Ñ\8c і підтвердіть вашу електронну адресу на [[Special:Preferences|сторінці налаштувань]].",
"nosuchsectiontitle": "Не вдається знайти розділ",
"nosuchsectiontext": "Ви намагаєтесь редагувати розділ, якого не існує.\nМожливо, він був перейменований або вилучений, поки ви переглядали сторінку.",
"loginreqtitle": "Необхідно ввійти до системи",
"loginreqlink": "ввійти в систему",
- "loginreqpagetext": "Ð\92и повиннÑ\96 $1, Ñ\89об пеÑ\80еглÑ\8fнÑ\83ти інші сторінки.",
+ "loginreqpagetext": "Ð\92и повиннÑ\96 $1, Ñ\89об пеÑ\80еглÑ\8fдати інші сторінки.",
"accmailtitle": "Пароль надіслано.",
"accmailtext": "Пароль для користувача [[User talk:$1|$1]], згенерований випадковим чином, надісланий на адресу $2.\nПісля реєстрації в системі ви зможете ''[[Special:ChangePassword|змінити пароль]]''.",
"newarticle": "(Нова)",
"newarticletext": "Ви перейшли на сторінку, яка поки що не існує.\n\nЩоб створити нову сторінку, наберіть текст у вікні нижче (див. [$1 довідкову статтю], щоб отримати більше інформації).\nЯкщо ви опинились тут помилково, просто натисніть кнопку браузера '''назад'''.",
- "anontalkpagetext": "----''Це сторінка обговорення анонімного користувача, який ще не зареєструвався або не скористався зареєстрованим обліковим записом.\nТому ми вимушені використовувати IP-адресу для його ідентифікації.\nОдна IP-адреса може використовуватися декількома користувачами.\nЯкщо ви — анонімний користувач і вважаєте, що отримали коментарі, адресовані не вам, будь ласка [[Special:UserLogin/signup|зареєструйтесь]] або [[Special:UserLogin|увійдіть до системи]], щоб у майбутньому уникнути можливої плутанини з іншими анонімними користувачами.''",
+ "anontalkpagetext": "----''Це сторінка обговорення анонімного користувача, який ще не зареєструвався або не скористався зареєстрованим обліковим записом.''\nТому ми вимушені використовувати IP-адресу для його ідентифікації.\nОдна IP-адреса може використовуватись кількома користувачами.\nЯкщо ви — анонімний користувач і вважаєте, що отримали коментарі, адресовані не вам, будь ласка [[Special:UserLogin/signup|зареєструйтесь]] або [[Special:UserLogin|увійдіть до системи]], щоб у майбутньому уникнути можливої плутанини з іншими анонімними користувачами.",
"noarticletext": "Зараз на цій сторінці нема тексту.\nВи можете [[Special:Search/{{PAGENAME}}|пошукати цю назву]] на інших сторінках,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати в журналах]\nабо [{{fullurl:{{FULLPAGENAME}}|action=edit}} створити сторінку з такою назвою]</span>.",
"noarticletext-nopermission": "Зараз на цій сторінці немає тексту.\nВи можете [[Special:Search/{{PAGENAME}}|пошукати цю назву]] на інших сторінках,\nабо <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати пов'язані записи в журналах]</span>, але ви не маєте дозволу на створення такої сторінки.",
"missing-revision": "Версія #$1 сторінки «{{FULLPAGENAME}}» не існує.\n\nІмовірно, Ви перейшли за застарілим посиланням на вилучену сторінку.\nПодробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].",
"usercssyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий css-файл перед збереженням.",
"userjsyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий код JavaScript перед збереженням.",
"usercsspreview": "'''Пам'ятайте, що це лише попередній перегляд вашого css-файлу.'''\n'''Його ще не збережено!'''",
- "userjspreview": "'''Ð\9fам'Ñ\8fÑ\82айÑ\82е, Ñ\89о Ñ\86е Ñ\82Ñ\96лÑ\8cки попеÑ\80еднÑ\96й пеÑ\80еглÑ\8fд ваÑ\88ого JavaScript-Ñ\84айлÑ\83 Ñ\96 поки вÑ\96н Ñ\89е не збережений!'''",
+ "userjspreview": "'''Ð\9fам'Ñ\8fÑ\82айÑ\82е, Ñ\89о Ñ\86е Ñ\82Ñ\96лÑ\8cки попеÑ\80еднÑ\96й пеÑ\80еглÑ\8fд ваÑ\88ого JavaScript-Ñ\84айлÑ\83 Ñ\96 вÑ\96н поки-Ñ\89о не збережений!'''",
"sitecsspreview": "'''Пам'ятайте, що це тільки попередній перегляд цього CSS.'''\n'''Його ще не збережено!'''",
"sitejspreview": "'''Пам'ятайте, що це лише попередній перегляд вашого JavaScript-коду.'''\n'''Його ще не збережено!'''",
"userinvalidcssjstitle": "'''Увага:''' тема оформлення «$1» не знайдена.\nПам'ятайте, що користувацькі .css та .js сторінки повинні мати назву, що складається лише з малих літер, наприклад «{{ns:user}}:Хтось/vector.css», а не «{{ns:user}}:Хтось/Vector.css».",
"note": "'''Зауваження:'''",
"previewnote": "'''Це лише попередній перегляд.'''\nВаші зміни ще не збережено!",
"continue-editing": "Продовжити редагування",
- "previewconflict": "Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядіти, якщо ви вирішите зберегти його.",
- "session_fail_preview": "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.\nЯкщо помилка буде повторюватись, спробуйте [[Special:UserLogout|вийти з системи]] і зайти знову.'''",
- "session_fail_preview_html": "<strong>Ð\92ибаÑ\87Ñ\82е! Ð\9dеможливо збеÑ\80егÑ\82и ваÑ\88Ñ\96 змÑ\96ни Ñ\87еÑ\80ез вÑ\82Ñ\80аÑ\82Ñ\83 даниÑ\85 HTML-Ñ\81еÑ\81Ñ\96Ñ\97.</strong>\n\n''Ð\9eÑ\81кÑ\96лÑ\8cки {{SITENAME}} дозволÑ\8fÑ\94 викоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ñ\87иÑ\81Ñ\82ий HTML, попеÑ\80еднÑ\96й пеÑ\80еглÑ\8fд вÑ\96дклÑ\8eÑ\87ено, Ñ\89об попеÑ\80едиÑ\82и JavaScript-аÑ\82аки.''\n\n<strong>ЯкÑ\89о Ñ\86е добÑ\80оÑ\8fкÑ\96Ñ\81на спроба редагування, будь ласка, спробуйте ще раз. Якщо не вийде знову, - спробуйте [[Special:UserLogout|завершити сеанс роботи]] й ще раз ввійти до системи.</strong>",
- "token_suffix_mismatch": "'''Ваше редагування було відхилене, оскільки ваша програма не правильно обробляє знаки пунктуації у вікні редагування. Редагування було скасоване для запобігання спотворенню тексту статті.\nПодібні проблеми можуть виникати при використанні анонімізуючих веб-проксі, що містять помилки.'''",
- "edit_form_incomplete": "'''Частина даних із форми редагування не досягла сервера. Уважно перевірте чи не пошкоджено ваших правок і спробуйте ще раз.'''",
+ "previewconflict": "Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядати, якщо ви вирішите зберегти його.",
+ "session_fail_preview": "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.\nЯкщо помилка буде повторюватись, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову.'''",
+ "session_fail_preview_html": "<strong>Ð\92ибаÑ\87Ñ\82е! Ð\9dеможливо збеÑ\80егÑ\82и ваÑ\88Ñ\96 змÑ\96ни Ñ\87еÑ\80ез вÑ\82Ñ\80аÑ\82Ñ\83 даниÑ\85 HTML-Ñ\81еÑ\81Ñ\96Ñ\97.</strong>\n\n''Ð\9eÑ\81кÑ\96лÑ\8cки {{SITENAME}} дозволÑ\8fÑ\94 викоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ñ\87иÑ\81Ñ\82ий HTML, попеÑ\80еднÑ\96й пеÑ\80еглÑ\8fд вÑ\96дклÑ\8eÑ\87ено, Ñ\89об попеÑ\80едиÑ\82и JavaScript-аÑ\82аки.''\n\n<strong>ЯкÑ\89о Ñ\86е легÑ\96Ñ\82имна спроба редагування, будь ласка, спробуйте ще раз. Якщо не вийде знову, - спробуйте [[Special:UserLogout|завершити сеанс роботи]] й ще раз ввійти до системи.</strong>",
+ "token_suffix_mismatch": "'''Ваше редагування було відхилене, оскільки ваша програма неправильно обробляє знаки пунктуації у вікні редагування. Редагування було скасоване для запобігання спотворенню тексту статті.\nПодібні проблеми можуть виникати при використанні анонімізуючих веб-проксі, що містять помилки.'''",
+ "edit_form_incomplete": "'''Частина даних із форми редагування не досягла сервера. Уважно перевірте, чи не пошкоджені ваші правки і спробуйте ще раз.'''",
"editing": "Редагування $1",
"creating": "Створення $1",
"editingsection": "Редагування $1 (розділ)",
"editingcomment": "Редагування $1 (новий розділ)",
"editconflict": "Конфлікт редагування: $1",
- "explainconflict": "Ще Ñ\85Ñ\82оÑ\81Ñ\8c змÑ\96нив Ñ\86Ñ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 з Ñ\82ого Ñ\87аÑ\81Ñ\83, Ñ\8fк ви Ñ\80озпоÑ\87али Ñ\97Ñ\97 змÑ\96нÑ\8eваÑ\82и.\nУ веÑ\80Ñ\85нÑ\8cомÑ\83 вÑ\96кнÑ\96 показано поÑ\82оÑ\87ний Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нки.\nÐ\92аÑ\88Ñ\96 змÑ\96ни показанÑ\96 в нижнÑ\8cомÑ\83 вÑ\96кнÑ\96.\nÐ\92ам необÑ\85Ñ\96дно пеÑ\80енеÑ\81Ñ\82и ваÑ\88Ñ\96 змÑ\96ни в Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ий Ñ\82екÑ\81Ñ\82.\nЯкÑ\89о ви наÑ\82иÑ\81неÑ\82е «{{int:savearticle}}», Ñ\82о бÑ\83де збеÑ\80ежено '''Ñ\82Ñ\96лÑ\8cки''' Ñ\82екÑ\81Ñ\82 Ñ\83 веÑ\80Ñ\85нÑ\8cомÑ\83 вÑ\96кнÑ\96 редагування.",
+ "explainconflict": "Ще Ñ\85Ñ\82оÑ\81Ñ\8c змÑ\96нив Ñ\86Ñ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 з Ñ\82ого Ñ\87аÑ\81Ñ\83, Ñ\8fк ви Ñ\80озпоÑ\87али Ñ\97Ñ\97 пÑ\80авиÑ\82и.\nУ веÑ\80Ñ\85нÑ\8cомÑ\83 вÑ\96кнÑ\96 показано поÑ\82оÑ\87ний Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82оÑ\80Ñ\96нки.\nÐ\92аÑ\88Ñ\96 змÑ\96ни показанÑ\96 в нижнÑ\8cомÑ\83 вÑ\96кнÑ\96.\nÐ\92ам необÑ\85Ñ\96дно пеÑ\80енеÑ\81Ñ\82и ваÑ\88Ñ\96 змÑ\96ни в Ñ\96Ñ\81нÑ\83Ñ\8eÑ\87ий Ñ\82екÑ\81Ñ\82.\nЯкÑ\89о ви наÑ\82иÑ\81неÑ\82е «{{int:savearticle}}», Ñ\82о бÑ\83де збеÑ\80ежено '''лиÑ\88е''' Ñ\82екÑ\81Ñ\82 з веÑ\80Ñ\85нÑ\8cого вÑ\96кна редагування.",
"yourtext": "Ваш текст",
"storedversion": "Збережена версія",
- "nonunicodebrowser": "'''Ð\9fÐ\9eÐ\9fÐ\95Ð Ð\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ: Ð\92аÑ\88 [[бÑ\80аÑ\83зеÑ\80]] не пÑ\96дÑ\82Ñ\80имÑ\83Ñ\94 [[ЮнÑ\96код]].''' \nЩоб подолаÑ\82и Ñ\86е обмеженнÑ\8f Ñ\82а дозволиÑ\82и Ð\92ам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
- "editingold": "'''Ð\9fÐ\9eÐ\9fÐ\95Ð Ð\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ: Ви редагуєте застарілу версію даної статті.\nЯкщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''",
+ "nonunicodebrowser": "'''Ð\9fопеÑ\80едженнÑ\8f: Ð\92аÑ\88 бÑ\80аÑ\83зеÑ\80 не пÑ\96дÑ\82Ñ\80имÑ\83Ñ\94 ЮнÑ\96код.''' \nЩоб подолаÑ\82и Ñ\86е обмеженнÑ\8f Ñ\82а дозволиÑ\82и вам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
+ "editingold": "'''Ð\9fопеÑ\80едженнÑ\8f: Ви редагуєте застарілу версію даної статті.\nЯкщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''",
"yourdiff": "Відмінності",
- "copyrightwarning": "Ð\97веÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о бÑ\83дÑ\8c-Ñ\8fкÑ\96 додаваннÑ\8f Ñ\96 змÑ\96ни до {{grammar:genitive|{{SITENAME}}}} Ñ\80озглÑ\8fдаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк випÑ\83Ñ\89енÑ\96 на Ñ\83моваÑ\85 лÑ\96Ñ\86ензÑ\96Ñ\97 $2 (див. $1).\nЯкÑ\89о ви не бажаÑ\94Ñ\82е, Ñ\89об напиÑ\81ане вами безжалÑ\96Ñ\81но Ñ\80едагÑ\83валоÑ\81Ñ\8c Ñ\96 Ñ\80озповÑ\81Ñ\8eджÑ\83валоÑ\81Ñ\8f за бажаннÑ\8fм бÑ\83дÑ\8c-кого, не пиÑ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож пÑ\96дÑ\82веÑ\80джÑ\83Ñ\94Ñ\82е, Ñ\89о напиÑ\81ане вами Ñ\82Ñ\83Ñ\82 належиÑ\82Ñ\8c вам або взÑ\8fÑ\82е з джеÑ\80ела, Ñ\89о Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним надбаннÑ\8fм Ñ\87и подÑ\96бним вÑ\96лÑ\8cним джеÑ\80елом.\n'''Ð\9dÐ\95 Ð\9fУÐ\91Ð\9bÐ\86Ð\9aУÐ\99ТÐ\95 ТУТ Ð\91Ð\95Ð\97 Ð\94Ð\9eÐ\97Ð\92Ð\9eÐ\9bУ Ð\9cÐ\90ТÐ\95Ð Ð\86Ð\90Ð\9bÐ\98, ЩÐ\9e Ð\9eÐ¥Ð\9eÐ Ð\9eÐ\9dЯЮТЬСЯ Ð\90Ð\92ТÐ\9eРСЬÐ\9aÐ\98Ð\9c Ð\9fÐ Ð\90Ð\92Ð\9eÐ\9c!'''",
- "copyrightwarning2": "Ð\91Ñ\83дÑ\8c лаÑ\81ка, звеÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о вÑ\81Ñ\96 внеÑ\81енÑ\96 вами змÑ\96ни можÑ\83Ñ\82Ñ\8c Ñ\80едагÑ\83ваÑ\82иÑ\81Ñ\8f, доповнÑ\8eваÑ\82иÑ\81Ñ\8f або вилÑ\83Ñ\87аÑ\82иÑ\81Ñ\8f Ñ\96нÑ\88ими коÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87ами.\nЯкÑ\89о ви не бажаÑ\94Ñ\82е, Ñ\89об напиÑ\81ане вами безжалÑ\96Ñ\81но Ñ\80едагÑ\83валоÑ\81Ñ\8c â\80\94 не пиÑ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож зобов'Ñ\8fзÑ\83Ñ\94Ñ\82еÑ\81Ñ\8c, Ñ\89о напиÑ\81ане вами Ñ\82Ñ\83Ñ\82 належиÑ\82Ñ\8c вам або взÑ\8fÑ\82е з джеÑ\80ела, Ñ\89о Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним надбаннÑ\8fм, або подÑ\96бного вÑ\96лÑ\8cного джеÑ\80ела (див. $1).<br />\n'''Ð\9dÐ\95 Ð\9fУÐ\91Ð\9bÐ\86Ð\9aУÐ\99ТÐ\95 ТУТ Ð\91Ð\95Ð\97 Ð\94Ð\9eÐ\97Ð\92Ð\9eÐ\9bУ Ð\9cÐ\90ТÐ\95Ð Ð\86Ð\90Ð\9bÐ\98, ЩÐ\9e Ð\84 Ð\9eÐ\91'Ð\84Ð\9aТÐ\9eÐ\9c Ð\90Ð\92ТÐ\9eРСЬÐ\9aÐ\9eÐ\93Ð\9e Ð\9fÐ Ð\90Ð\92Ð\90!'''",
- "longpageerror": "'''Ð\9fомилка: ТекÑ\81Ñ\82, Ñ\89о ви надÑ\96Ñ\81лали займаÑ\94 $1 {{PLURAL:$1|кÑ\96лобайÑ\82|кÑ\96лобайÑ\82и|кÑ\96лобайÑ\82Ñ\96в}}, Ñ\89о бÑ\96лÑ\8cÑ\88е за вÑ\81Ñ\82ановленÑ\83 межÑ\83 Ñ\83 $2 {{PLURAL:$2|кілобайт|кілобайти|кілобайтів}}.'''\nЙого неможливо зберегти.",
- "readonlywarning": "'''Ð\9fÐ\9eÐ\9fÐ\95Ð Ð\95Ð\94Ð\96Ð\95Ð\9dÐ\9dЯ: Ð\91аза даниÑ\85 заблокована в зв'Ñ\8fзкÑ\83 з пÑ\80оÑ\86едÑ\83Ñ\80ами обÑ\81лÑ\83говÑ\83ваннÑ\8f,\nÑ\82омÑ\83, на даний моменÑ\82, ви не можеÑ\82е запиÑ\81аÑ\82и ваÑ\88Ñ\96 змÑ\96ни.\nÐ\9cожливо, вам ваÑ\80Ñ\82о збеÑ\80егÑ\82и Ñ\82екÑ\81Ñ\82 в локалÑ\8cний Ñ\84айл (на Ñ\81воÑ\94мÑ\83 диÑ\81кÑ\83) й збеÑ\80егÑ\82и його пізніше.'''\n\nАдміністратор, що заблокував базу даних, залишив наступне пояснення: $1",
+ "copyrightwarning": "Ð\97веÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о бÑ\83дÑ\8c-Ñ\8fкÑ\96 додаваннÑ\8f Ñ\96 змÑ\96ни до {{grammar:genitive|{{SITENAME}}}} Ñ\80озглÑ\8fдаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ñ\8fк випÑ\83Ñ\89енÑ\96 на Ñ\83моваÑ\85 лÑ\96Ñ\86ензÑ\96Ñ\97 $2 (деÑ\82алÑ\8cнÑ\96Ñ\88е див. $1).\nЯкÑ\89о ви не бажаÑ\94Ñ\82е, Ñ\89об напиÑ\81ане вами безжалÑ\8cно Ñ\80едагÑ\83валоÑ\81Ñ\8c Ñ\96 Ñ\80озповÑ\81Ñ\8eджÑ\83валоÑ\81Ñ\8f за бажаннÑ\8fм бÑ\83дÑ\8c-кого, не пиÑ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож пÑ\96дÑ\82веÑ\80джÑ\83Ñ\94Ñ\82е, Ñ\89о напиÑ\81ане вами Ñ\82Ñ\83Ñ\82 належиÑ\82Ñ\8c вам або взÑ\8fÑ\82е з джеÑ\80ела, Ñ\89о Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним надбаннÑ\8fм Ñ\87и подÑ\96бного вÑ\96лÑ\8cного джеÑ\80ела.\n'''Ð\9dе пÑ\83блÑ\96кÑ\83йÑ\82е Ñ\82Ñ\83Ñ\82 без дозволÑ\83 маÑ\82еÑ\80Ñ\96али, заÑ\85иÑ\89енÑ\96 авÑ\82оÑ\80Ñ\81Ñ\8cким пÑ\80авом!'''",
+ "copyrightwarning2": "Ð\91Ñ\83дÑ\8c лаÑ\81ка, звеÑ\80нÑ\96Ñ\82Ñ\8c Ñ\83вагÑ\83, Ñ\89о вÑ\81Ñ\96 змÑ\96ни, внеÑ\81енÑ\96 вами до {{SITENAME}}, можÑ\83Ñ\82Ñ\8c Ñ\80едагÑ\83ваÑ\82иÑ\81Ñ\8f, доповнÑ\8eваÑ\82иÑ\81Ñ\8f або вилÑ\83Ñ\87аÑ\82иÑ\81Ñ\8f Ñ\96нÑ\88ими коÑ\80иÑ\81Ñ\82Ñ\83ваÑ\87ами.\nЯкÑ\89о ви не бажаÑ\94Ñ\82е, Ñ\89об напиÑ\81ане вами безжалÑ\8cно Ñ\80едагÑ\83валоÑ\81Ñ\8c â\80\94 не пиÑ\88Ñ\96Ñ\82Ñ\8c Ñ\82Ñ\83Ñ\82.<br />\nÐ\92и Ñ\82акож пÑ\96дÑ\82веÑ\80джÑ\83Ñ\94Ñ\82е, Ñ\89о наведене Ñ\82Ñ\83Ñ\82 напиÑ\81ано вами оÑ\81обиÑ\81Ñ\82о або запозиÑ\87ено з джеÑ\80ела, Ñ\8fке Ñ\94 Ñ\81Ñ\83Ñ\81пÑ\96лÑ\8cним надбаннÑ\8fм, або подÑ\96бного вÑ\96лÑ\8cного джеÑ\80ела (див. $1).<br />\n'''Ð\9dе пÑ\83блÑ\96кÑ\83йÑ\82е Ñ\82Ñ\83Ñ\82 без дозволÑ\83 маÑ\82еÑ\80Ñ\96али, заÑ\85иÑ\89енÑ\96 авÑ\82оÑ\80Ñ\81Ñ\8cким пÑ\80авом!'''",
+ "longpageerror": "'''Ð\9fомилка: Ð\9fоданий вами Ñ\82екÑ\81Ñ\82 Ñ\81Ñ\82ановиÑ\82Ñ\8c $1 {{PLURAL:$1|кÑ\96лобайÑ\82|кÑ\96лобайÑ\82и|кÑ\96лобайÑ\82Ñ\96в}}, Ñ\89о бÑ\96лÑ\8cÑ\88е за вÑ\81Ñ\82ановленÑ\83 межÑ\83 Ñ\83 {{PLURAL:$2|кілобайт|кілобайти|кілобайтів}}.'''\nЙого неможливо зберегти.",
+ "readonlywarning": "'''Ð\9fопеÑ\80едженнÑ\8f: Ð\91аза даниÑ\85 заблокована на обÑ\81лÑ\83говÑ\83ваннÑ\8f, Ñ\82омÑ\83, на даний моменÑ\82, ви не можеÑ\82е запиÑ\81аÑ\82и ваÑ\88Ñ\96 змÑ\96ни.\nÐ\9cожливо, вам ваÑ\80Ñ\82о Ñ\81копÑ\96Ñ\8eваÑ\82и Ñ\82екÑ\81Ñ\82 Ñ\83 Ñ\84айл на ваÑ\88омÑ\83 комп'Ñ\8eÑ\82еÑ\80Ñ\96 й збеÑ\80егÑ\82и його на пізніше.'''\n\nАдміністратор, що заблокував базу даних, залишив наступне пояснення: $1",
"protectedpagewarning": "'''Попередження: Ця сторінка була захищена від змін так, що тільки користувачі з правами адміністратора можуть її редагувати.'''\nОстанній запис журналу наведений нижче для довідки:",
"semiprotectedpagewarning": "'''Зауваження:''' Ця сторінка захищена так, що її можуть редагувати тільки зареєстровані користувачі.\nОстанній запис журналу наведений нижче для довідки:",
"cascadeprotectedwarning": "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|1=до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
"titleprotectedwarning": "'''Попередження. Ця сторінка була захищена так, що для її створення потрібні [[Special:ListGroupRights|особливі права]].'''\nОстанній запис журналу наведений нижче для довідки:",
"templatesused": "{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} на цій сторінці:",
"templatesusedpreview": "{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:",
- "templatesusedsection": "{{PLURAL:$1|1=Шаблон, викоÑ\80иÑ\81Ñ\82аний|Шаблони, викоÑ\80иÑ\81Ñ\82анÑ\96}} Ñ\83 Ñ\86Ñ\96й Ñ\81екÑ\86Ñ\96Ñ\97:",
+ "templatesusedsection": "{{PLURAL:$1|1=Шаблон, викоÑ\80иÑ\81Ñ\82аний|Шаблони, викоÑ\80иÑ\81Ñ\82анÑ\96}} Ñ\83 Ñ\86Ñ\8cомÑ\83 Ñ\80оздÑ\96лÑ\96:",
"template-protected": "(захищено)",
"template-semiprotected": "(частково захищено)",
"hiddencategories": "Ця сторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:",
"edittools": "<!-- Розміщений тут текст буде відображатися під формою редагування і формою завантаження. -->",
"edittools-upload": "-",
- "nocreatetext": "Ð\9dа Ñ\86Ñ\8cомÑ\83 Ñ\81айÑ\82Ñ\96 обмежено можливÑ\96Ñ\81Ñ\82Ñ\8c Ñ\81Ñ\82воÑ\80еннÑ\8f новиÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\92и можеÑ\82е повеÑ\80нÑ\83Ñ\82Ñ\8cÑ\81Ñ\8f назад й змінити існуючу сторінку, [[Special:UserLogin|ввійти в систему, або створити новий обліковий запис]].",
+ "nocreatetext": "Ð\9dа Ñ\81айÑ\82Ñ\96 {{SITENAME}} обмежено можливÑ\96Ñ\81Ñ\82Ñ\8c Ñ\81Ñ\82воÑ\80еннÑ\8f новиÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нок.\nÐ\92и можеÑ\82е повеÑ\80нÑ\83Ñ\82Ñ\8cÑ\81Ñ\8c назад Ñ\96 змінити існуючу сторінку, [[Special:UserLogin|ввійти в систему, або створити новий обліковий запис]].",
"nocreate-loggedin": "У вас нема дозволу створювати нові сторінки.",
"sectioneditnotsupported-title": "Редагування окремих розділів не підтримується",
"sectioneditnotsupported-text": "На цій сторінці не підтримується редагування окремих розділів",
"permissionserrors": "Помилка доступу",
"permissionserrorstext": "У вас нема прав на виконання цієї операції з {{PLURAL:$1|1=наступної причини|наступних причин}}:",
"permissionserrorstext-withaction": "У вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:",
- "recreate-moveddeleted-warn": "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''\n\nПеревірте, чи справді вам потрібно знову створювати цю сторінку.\nНижче наведений журнал вилучень і перейменувань:",
+ "recreate-moveddeleted-warn": "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''\n\nПеревірте, чи справді вам справді потрібно створювати цю сторінку.\nНижче, для зручності, наведений журнал вилучень і перейменувань:",
"moveddeleted-notice": "Ця сторінка була вилучена.\nДля довідки нижче наведені відповідні записи з журналів вилучень і перейменувань.",
"log-fulllog": "Переглянути весь журнал",
"edit-hook-aborted": "Редагування скасоване процедурою-перехоплювачем.\nДодаткові пояснення не наведені.",
"postedit-confirmation-restored": "Сторінка була відновлена.",
"postedit-confirmation-saved": "Ваше редагування збережено",
"edit-already-exists": "Неможливо створити нову сторінку.\nВона вже існує.",
- "defaultmessagetext": "ТекÑ\81Ñ\82 «за замовÑ\87Ñ\83ваннÑ\8f»",
- "content-failed-to-parse": "Не вдалось проаналізувати $2 як тип $1: $3",
+ "defaultmessagetext": "СÑ\82андаÑ\80Ñ\82ний Ñ\82екÑ\81Ñ\82 повÑ\96домленнÑ\8f",
+ "content-failed-to-parse": "Не вдалось ідентифікувати $2 як тип $1 через: $3",
"invalid-content-data": "Неприпустимі дані",
"content-not-allowed-here": "Вміст «$1» недопустимий на сторінці [[$2]]",
"editwarning-warning": "Перехід на іншу сторінку призведе до втрати ваших змін.\nЯкщо ви ввійшли до системи, то ви можете відключити це попередження в розділі \"{{int:prefs-editing}}\" ваших налаштувань.",
- "editpage-notsupportedcontentformat-title": "Ð\9dепÑ\96дÑ\82Ñ\80имÑ\83ваний Ñ\84оÑ\80маÑ\82 вмÑ\96Ñ\81Ñ\82Ñ\83",
+ "editpage-notsupportedcontentformat-title": "ФоÑ\80маÑ\82 вмÑ\96Ñ\81Ñ\82Ñ\83 не пÑ\96дÑ\82Ñ\80имÑ\83Ñ\94Ñ\82Ñ\8cÑ\81Ñ\8f",
"editpage-notsupportedcontentformat-text": "Формат вмісту $1 не підтримується моделлю вмісту $2.",
"content-model-wikitext": "вікітекст",
"content-model-text": "звичайний текст",
"content-model-javascript": "JavaScript",
"content-model-css": "CSS",
- "expensive-parserfunction-warning": "Увага: Ця сторінка містить дуже багато викликів ресурсомістких функцій.\n\nКількість викликів не повинна перевищувати $2, зараз потрібно зробити $1 {{PLURAL:$1|виклик|виклики|викликів}}.",
+ "expensive-parserfunction-warning": "'''Увага:''' Ця сторінка містить дуже багато викликів ресурсомістких функцій.\n\nКількість викликів не повинна перевищувати $2, зараз потрібно зробити $1 {{PLURAL:$1|виклик|виклики|викликів}}.",
"expensive-parserfunction-category": "Сторінки з дуже великою кількістю викликів ресурсомістких функцій",
- "post-expand-template-inclusion-warning": "Увага: розмір шаблонів для включення занадто великий.\nДеякі шаблони не буде включено.",
+ "post-expand-template-inclusion-warning": "'''Увага:''' розмір шаблонів для включення занадто великий.\nДеякі шаблони не буде включено.",
"post-expand-template-inclusion-category": "Сторінки з перевищеним розміром включених шаблонів",
- "post-expand-template-argument-warning": "'''Увага:''' ЦÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нка мÑ\96Ñ\81Ñ\82иÑ\82Ñ\8c пÑ\80инаймнÑ\96 один аÑ\80гÑ\83менÑ\82 Ñ\88аблонÑ\83, Ñ\8fкий маÑ\94 надÑ\82о великий Ñ\80озмÑ\96Ñ\80 длÑ\8f Ñ\80озгоÑ\80Ñ\82аннÑ\8f.\nТакÑ\96 аÑ\80гÑ\83менÑ\82и бÑ\83ли опÑ\83Ñ\89ені.",
+ "post-expand-template-argument-warning": "'''Увага:''' ЦÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нка мÑ\96Ñ\81Ñ\82иÑ\82Ñ\8c пÑ\80инаймнÑ\96 один аÑ\80гÑ\83менÑ\82 Ñ\88аблонÑ\83, Ñ\8fкий маÑ\94 надÑ\82о великий Ñ\80озмÑ\96Ñ\80 длÑ\8f Ñ\80озгоÑ\80Ñ\82аннÑ\8f.\nЦÑ\96 аÑ\80гÑ\83менÑ\82и бÑ\83ли пÑ\80оÑ\96гноÑ\80овані.",
"post-expand-template-argument-category": "Сторінки, які містять пропущені аргументи шаблонів",
"parser-template-loop-warning": "Виявлена петля у шаблонах: [[$1]]",
"parser-template-recursion-depth-warning": "Перевищене обмеження глибини рекурсії шаблону ($1)",
"language-converter-depth-warning": "Перевищене обмеження глибини мовного конвертора ($1)",
"node-count-exceeded-category": "Сторінки, на яких перевищено лічильник вузлів",
- "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80Ñ\96Ñ\8f длÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нок, на Ñ\8fкиÑ\85 пеÑ\80ебÑ\96лÑ\8cÑ\88ена кількість вузлів.",
+ "node-count-exceeded-category-desc": "Ð\9aаÑ\82егоÑ\80Ñ\96Ñ\8f длÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нок, на Ñ\8fкиÑ\85 пеÑ\80евиÑ\89ена кількість вузлів.",
"node-count-exceeded-warning": "Кількість вузлів препроцесора на сторінці перевищила встановлену межу.",
"expansion-depth-exceeded-category": "Сторінки, де перевищено глибину розгортання",
"expansion-depth-exceeded-category-desc": "Це категорія для сторінок з перевищеною глибиною розкриття.",
"converter-manual-rule-error": "Помилка в ручному правилі перетворення мови",
"undo-success": "Редагування може бути скасовано.\nБудь ласка, перевірте порівняння нижче, щоб впевнитись, що це те, що ви хочете зробити, а потім збережіть зміни, щоб закінчити скасування редагування.",
"undo-failure": "Неможливо скасувати редагування через несумісність проміжних змін.",
- "undo-norev": "РедагÑ\83ваннÑ\8f не може бÑ\83Ñ\82и Ñ\81каÑ\81оване, бо воно не Ñ\96Ñ\81нÑ\83Ñ\94 або бÑ\83ло вилÑ\83Ñ\87ене.",
- "undo-nochange": "Схоже, редагування уже було скасовано.",
- "undo-summary": "Скасування редагування № $1 користувача [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]])",
- "undo-summary-username-hidden": "Скасувати перевірку $1 прихованого користувача",
+ "undo-norev": "РедагÑ\83ваннÑ\8f не може бÑ\83Ñ\82и Ñ\81каÑ\81оване, бо його не Ñ\96Ñ\81нÑ\83Ñ\94 або бÑ\83ло вилÑ\83Ñ\87ено.",
+ "undo-nochange": "Схоже, редагування вже було скасовано.",
+ "undo-summary": "Скасування редагування № $1 користувача [[Special:Contribs/$2|$2]] ([[User talk:$2|обговорення]])",
+ "undo-summary-username-hidden": "Скасувати правку $1, виконану прихованим користувачем",
"cantcreateaccounttitle": "Неможливо створити обліковий запис",
"cantcreateaccount-text": "Створення облікових записів із цієї IP-адреси ('''$1''') було заблоковане [[User:$3|користувачем $3]].\n\n$3 зазначив таку причину: ''$2''",
- "cantcreateaccount-range-text": "СÑ\82воÑ\80еннÑ\8f облÑ\96кового запиÑ\81Ñ\83 Ñ\96з IP-адÑ\80еÑ\81 Ñ\83 дÑ\96апазонÑ\96 '''$1''', Ñ\8fкий вклÑ\8eÑ\87аÑ\94 ваÑ\88Ñ\83 IP-адÑ\80еÑ\81Ñ\83 ('''$4'''), вже заблоковано користувачем [[User:$3|$3]].\n\nКористувач $3 вказав як причину ''$2''",
+ "cantcreateaccount-range-text": "СÑ\82воÑ\80еннÑ\8f облÑ\96кового запиÑ\81Ñ\83 Ñ\96з IP-адÑ\80еÑ\81 Ñ\83 дÑ\96апазонÑ\96 '''$1''', Ñ\8fкий вклÑ\8eÑ\87аÑ\94 ваÑ\88Ñ\83 IP-адÑ\80еÑ\81Ñ\83 ('''$4'''), бÑ\83ло заблоковано користувачем [[User:$3|$3]].\n\nКористувач $3 вказав як причину ''$2''",
"viewpagelogs": "Показати журнали для цієї сторінки",
"nohistory": "Для цієї статті відсутній журнал редагувань.",
"currentrev": "Поточна версія",
"currentrevisionlink": "Поточна версія",
"cur": "поточн.",
"next": "наст.",
- "last": "оÑ\81Ñ\82.",
+ "last": "попеÑ\80.",
"page_first": "перша",
"page_last": "остання",
- "histlegend": "Пояснення: (поточн.) = відмінності від поточної версії,\n(ост.) = відмінності від попередньої версії, '''м''' = незначне редагування",
+ "histlegend": "Ð\92ибÑ\96Ñ\80 веÑ\80Ñ\81Ñ\96Ñ\97: Ð\9fознаÑ\87Ñ\82е Ñ\83 кÑ\80Ñ\83глиÑ\85 вÑ\96конÑ\86Ñ\8fÑ\85 веÑ\80Ñ\81Ñ\96Ñ\97 длÑ\8f поÑ\80Ñ\96внÑ\8fннÑ\8f Ñ\96 наÑ\82иÑ\81нÑ\96Ñ\82Ñ\8c «Enter» або кнопкÑ\83 внизÑ\83.\n\nÐ\9fоÑ\8fÑ\81неннÑ\8f: (поÑ\82оÑ\87н.) = вÑ\96дмÑ\96нноÑ\81Ñ\82Ñ\96 вÑ\96д поÑ\82оÑ\87ноÑ\97 веÑ\80Ñ\81Ñ\96Ñ\97,\n(оÑ\81Ñ\82.) = вÑ\96дмÑ\96нноÑ\81Ñ\82Ñ\96 вÑ\96д попеÑ\80еднÑ\8cоÑ\97 веÑ\80Ñ\81Ñ\96Ñ\97, '''м''' = незнаÑ\87не Ñ\80едагÑ\83ваннÑ\8f",
"history-fieldset-title": "Переглянути історію",
"history-show-deleted": "Тільки вилучені",
"histfirst": "найдавніші",
"histlast": "найновіші",
"historysize": "($1 {{PLURAL:$1|байт|байти|байтів}})",
- "historyempty": "(поÑ\80ожнÑ\8cо)",
+ "historyempty": "(поÑ\80ожнÑ\8f)",
"history-feed-title": "Історія редагувань",
"history-feed-description": "Історія редагувань цієї сторінки в вікі",
"history-feed-item-nocomment": "$1 в $2",
"rev-deleted-comment": "(опис редагування вилучено)",
"rev-deleted-user": "(ім'я автора стерто)",
"rev-deleted-event": "(запис журналу вилучений)",
- "rev-deleted-user-contribs": "[ім'я користувача або IP-адреса вилучені — редагування приховане у внеску]",
+ "rev-deleted-user-contribs": "[ім'я користувача або IP-адреса вилучені — редагування приховане з внеску]",
"rev-deleted-text-permission": "Ця версія сторінки '''вилучена'''.\nМожливо є пояснення в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].",
"rev-suppressed-text-permission": "Цю версію сторінки було <strong>приховано</strong>.\nДетальніше можна подивитися у [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журналі приховування].",
"rev-deleted-text-unhide": "Ця версія сторінки була '''вилучена'''.\nПодробиці наведені у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналі вилучень].\nВи все ще можете [$1 переглянути цю версію], якщо забажаєте.",
"revdelete-selected-text": "{{PLURAL:$1|Вибрана редакція|Вибрані редакції}} із [[:$2]]:",
"revdelete-selected-file": "{{PLURAL:$1|Вибрана версія файлу|Вибрані версії файлу}} із [[:$2]]:",
"logdelete-selected": "{{PLURAL:$1|1=Обраний запис|Обрані записи}} журналу:",
- "revdelete-text-text": "Видалені версії будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
+ "revdelete-text-text": "Видалені версії будуть як і раніше, показані в історії сторінки, але частини їх вмісту будуть недоступні для учасників.",
"revdelete-text-file": "Видалені версії файлу будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
- "logdelete-text": "Видалені події в журналі будуть як і раніше видно в журналах, але частини їх вмісту будуть доступні для учасників.",
- "revdelete-text-others": "Інші адміністратори на як і раніше будуть мати можливість доступу до прихованого вмісту і зможуть відновити його, якщо не встановлено додаткові обмеження.",
- "revdelete-confirm": "Будь ласка, підтвердить, що ви справді бажаєте це здійснити, усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
+ "logdelete-text": "Ð\92идаленÑ\96 подÑ\96Ñ\97 в жÑ\83Ñ\80налÑ\96 бÑ\83дÑ\83Ñ\82Ñ\8c Ñ\8fк Ñ\96 Ñ\80анÑ\96Ñ\88е видно в жÑ\83Ñ\80налаÑ\85, але Ñ\87аÑ\81Ñ\82ини Ñ\97Ñ\85 вмÑ\96Ñ\81Ñ\82Ñ\83 бÑ\83дÑ\83Ñ\82Ñ\8c недоÑ\81Ñ\82Ñ\83пнÑ\96 длÑ\8f Ñ\83Ñ\87аÑ\81никÑ\96в.",
+ "revdelete-text-others": "Інші адміністратори, як і раніше, будуть мати можливість доступу до прихованого вмісту і зможуть відновити його, якщо не встановлено додаткові обмеження.",
+ "revdelete-confirm": "Будь ласка, підтвердіть, що ви справді бажаєте це здійснити, що усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
"revdelete-suppress-text": "Приховування може відбуватися '''лише''' в таких випадках:\n* Потенційно наклепницькі відомості\n* Недоречна особиста інформація\n*: ''домашні адреси, номери телефонів, номер паспорта тощо.''",
"revdelete-legend": "Встановити обмеження видимості",
"revdelete-hide-text": "Текст версії сторінки",
"logdelete-failure": "'''Не вдалося встановити видимість журналу:'''\n$1",
"revdel-restore": "Змінити видимість",
"pagehist": "Історія сторінки",
- "deletedhist": "Історія вилучень",
+ "deletedhist": "Історія вилучена",
"revdelete-hide-current": "Помилка приховування запису від $2, $1: це поточна версія.\nЇї не можна приховати.",
"revdelete-show-no-access": "Помилка показу запису від $2, $1: він позначений як «з обмеженим доступом».\nВи не маєте доступу до нього.",
"revdelete-modify-no-access": "Помилка редгування запису від $2, $1: його поначено як \"з обмеженим доступом\".\nВи не маєте доступу до нього.",
"revdelete-no-change": "'''Увага:''' запис від $2, $1 вже має запрошені налаштування видимості.",
"revdelete-concurrent-change": "Помилка редагування запису від $2, $1: його стан змінений кимось іншим, поки ви робили свої зміни.\nБудь ласка, перевірте журнал.",
"revdelete-only-restricted": "Помилка приховання запису від $2, $1: ви не можете приховати записи від перегляду адміністраторів без одночасного вибору однієї з інших опцій приховання.",
- "revdelete-reason-dropdown": "* Типові причини вилучення\n** Порушення авторських прав\n** Недоречна особиста інформація\n** Невідповідне ім'я користувача\n** Потенційно наклепна інформація",
+ "revdelete-reason-dropdown": "* Типові причини вилучення\n** Порушення авторських прав\n** Недоречні коментарі чи особиста інформація\n** Невідповідне ім'я користувача\n** Потенційно наклепницька інформація",
"revdelete-otherreason": "Інша/додаткова причина:",
"revdelete-reasonotherlist": "Інша причина",
- "revdelete-edit-reasonlist": "Редагувати причини вилучень",
+ "revdelete-edit-reasonlist": "Редагувати причини вилучення",
"revdelete-offender": "Автор версії:",
"suppressionlog": "Журнал приховувань",
"suppressionlogtext": "Нижче наведено список вилучень та блокувань, включаючи матеріали, приховані від адміністраторів.\nДивіться [[Special:BlockList|список блокувань]] для перегляду поточних блокувань.",
- "mergehistory": "Об'єднання історій редагувань",
+ "mergehistory": "Об'єднати історії редагувань",
"mergehistory-header": "Ця сторінка дозволяє вам об'єднати історії редагувань двох різних сторінок.\nПереконайтеся, що ця зміна збереже цілісність історії сторінки.",
"mergehistory-box": "Об'єднати історії редагувань двох сторінок:",
"mergehistory-from": "Вихідна сторінка:",
"mergehistory-into": "Цільова сторінка:",
"mergehistory-list": "Історія редагувань, що об'єднується",
- "mergehistory-merge": "Ð\9dаÑ\81Ñ\82Ñ\83пнÑ\96 веÑ\80Ñ\81Ñ\96Ñ\97 [[:$1]] можÑ\83Ñ\82Ñ\8c бÑ\83Ñ\82и об'Ñ\94днанÑ\96 Ñ\83 [[:$2]]. Ð\92икоÑ\80иÑ\81Ñ\82айÑ\82е пеÑ\80емикаÑ\87Ñ\96 длÑ\8f Ñ\82ого, Ñ\89об об'Ñ\94днаÑ\82и Ñ\82Ñ\96лÑ\8cки вибÑ\80аний дÑ\96апазон Ñ\80едагÑ\83ванÑ\8c. Врахуйте, що при використанні навігаційних посилань дані будуть втрачені.",
+ "mergehistory-merge": "Ð\9dаÑ\81Ñ\82Ñ\83пнÑ\96 веÑ\80Ñ\81Ñ\96Ñ\97 [[:$1]] можÑ\83Ñ\82Ñ\8c бÑ\83Ñ\82и об'Ñ\94днанÑ\96 Ñ\83 [[:$2]]. Ð\92икоÑ\80иÑ\81Ñ\82айÑ\82е кÑ\80Ñ\83глÑ\96 вÑ\96конÑ\86Ñ\8f, Ñ\89об об'Ñ\94днаÑ\82и Ñ\82Ñ\96лÑ\8cки вибÑ\80аний дÑ\96апазон Ñ\80едагÑ\83ванÑ\8c. \nВрахуйте, що при використанні навігаційних посилань дані будуть втрачені.",
"mergehistory-go": "Показати редагування, що об'єднуються",
- "mergehistory-submit": "Об'єднати редагування",
- "mergehistory-empty": "Не знайдені редагування для об'єднання.",
+ "mergehistory-submit": "Об'єднати версії",
+ "mergehistory-empty": "Не знайдено версій для об'єднання.",
"mergehistory-success": "$3 {{PLURAL:$3|редагування|редагування|редагувань}} з [[:$1]] успішно перенесені до [[:$2]].",
"mergehistory-fail": "Не вдалося здійснити об'єднання історій сторінок, будь ласка, перевірте параметри сторінки й часу.",
"mergehistory-fail-toobig": "Не вдалося виконати злиття історії оскільки буде перейменовано більше, ніж ліміт у $1 {{PLURAL:$1|версію|версії|версій}}.",
"mergehistory-no-source": "Вихідна сторінка «$1» не існує.",
"mergehistory-no-destination": "Цільова сторінка «$1» не існує.",
- "mergehistory-invalid-source": "Ð\94жеÑ\80ело повинне мати правильний заголовок.",
+ "mergehistory-invalid-source": "Ð\92иÑ\85Ñ\96дна Ñ\81Ñ\82оÑ\80Ñ\96нка повинна мати правильний заголовок.",
"mergehistory-invalid-destination": "Цільова сторінка повинна мати правильний заголовок.",
"mergehistory-autocomment": "Редагування з [[:$1]] перенесені до [[:$2]]",
"mergehistory-comment": "Редагування [[:$1]] перенесені до [[:$2]]: $3",
"searchprofile-advanced-tooltip": "Шукати в заданих просторах назв",
"search-result-size": "$1 ($2 {{PLURAL:$2|слово|слова|слів}})",
"search-result-category-size": "{{PLURAL:$1|$1 елемент|$1 елементи|$1 елементів}} ({{PLURAL:$2|$2 підкатегорія|$2 підкатегорії|$2 підкатегорій}}, {{PLURAL:$3|$3 файл|$3 файли|$3 файлів}})",
- "search-result-score": "Відповідність: $1 %",
"search-redirect": "(перенаправлення $1)",
"search-section": "(розділ $1)",
"search-file-match": "(збігається із вмістом файлу)",
"uploadwarning": "Попередження",
"uploadwarning-text": "Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.",
"savefile": "Зберегти файл",
- "uploadedimage": "завантажив «[[$1]]»",
- "overwroteimage": "завантажив нову версію «[[$1]]»",
"uploaddisabled": "Завантаження заборонене",
"copyuploaddisabled": "Завантаження через URL вимкнене.",
"uploaddisabledtext": "Можливість завантаження файлів відключена.",
"logentry-rights-rights": "$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3 із $4 на $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$1|змінив|змінила}} членство в групах для $3",
"logentry-rights-autopromote": "$1 було автоматично переведено із $4 в $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|завантажив|завантажила}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|завантажив|завантажила}} нову версію $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|завантажив|завантажила}} $3",
"rightsnone": "(нема)",
"feedback-bugornote": "Якщо ви готові описати технічні проблеми в деталях, будь ласка, [$1 повідомте про помилку].\nАбо можете використати форму нижче. Ваш коментар буде додано на сторінку \"[$3 $2]\", разом з іменем користувача.",
"feedback-subject": "Тема:",
"action-pagelang": "змінити мову сторінки",
"log-name-pagelang": "Журнал змін мови",
"log-description-pagelang": "Це журнал змін мови сторінок.",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5."
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (увімкнено)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''вимкнено''')"
}
"talkpagelinktext": "تبادلۂ خیال",
"specialpage": "خصوصی صفحہ",
"personaltools": "ذاتی اوزار",
- "postcomment": "اگلا حصّہ",
"articlepage": "مندرجاتی صفحہ دیکھیۓ",
"talk": "تبادلہٴ خیال",
"views": "خیالات",
"externaldberror": "یا تو توثیقی ڈیٹابیس میں خطا واقع ہوئی اور یا آپ کو بیرونی کھاتہ بتاریخ کرنے کی اِجازت نہیں ہے.",
"login": "داخل ہوں",
"nav-login-createaccount": "کھاتہ کھولیں یا اندراج کریں",
- "loginprompt": "{{SITENAME}} میں داخلے کیلۓ آپکے پاس قند (کوکیز) مجازہوناچاہیں۔",
"userlogin": "کھاتہ کھولیں یا اندراج کریں",
"userloginnocreate": "داخلِ نوشتہ ہوجائیے",
"logout": "اخراج",
"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-suggest": "کیا آپ کا مطلب تھا: $1",
"fileexists": "اس نام سے ایک ملف (فائل) پہلے ہی موجود ہے، اگر آپ کو یقین نہ ہو کہ اسے حذف کردیا جانا چاہیۓ تو براہ کرم <strong>[[:$1]]</strong> کو ایک نظر دیکھ لیجیۓ۔ [[$1|thumb]]",
"uploadwarning": "انتباہ بہ سلسلۂ زبراثقال",
"savefile": "فائل محفوظ کریں",
- "uploadedimage": "زبراثقال (اپ لوڈ) براۓ \"[[$1]]\"",
"sourcefilename": "اسم ملف (فائل) کا منبع:",
"destfilename": "تعین شدہ اسم ملف:",
"watchthisupload": "یہ صفحہ زیر نظر کیجیۓ",
"watchthispage": "یہ صفحہ زیر نظر کیجیۓ",
"unwatch": "زیرنظرمنسوخ",
"watchlist-details": "آپ کی زیرِنظرفہرست پر {{PLURAL:$1|$1 صفحہ ہے|$1 صفحات ہیں}}، اِس میں تبادلۂ خیال صفحات کی تعداد شامل نہیں.",
+ "wlnote": "نیچےآخری $1 تبدیلیاں ہیں جو کے پیچھلے <b>$2</b> گھنٹوں میں کی گئیں۔",
"wlshowlast": "دکھائیں آخری $1 گھنٹے $2 دن $3",
"watchlist-options": "اختیارات برائے زیرِنظرفہرست",
"created": "بنا دیا گیا",
"talkpagelinktext": "munozara",
"specialpage": "Maxsus sahifa",
"personaltools": "Shaxsiy uskunalar",
- "postcomment": "Yangi boʻlim",
"articlepage": "Maqolani koʻrib chiqish",
"talk": "Munozara",
"views": "Qarashlar",
"password-change-forbidden": "Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.",
"login": "Kirish",
"nav-login-createaccount": "Kirish / Hisob yaratish",
- "loginprompt": "{{SITENAME}}ga kirish uchun kukilar yoqilgan bo'lishi kerak.",
"userlogin": "Kirish / Hisob yaratish",
"userloginnocreate": "Kirish",
"logout": "Chiqish",
"searchprofile-advanced-tooltip": "Belgilangan nomfazolardan qidirish",
"search-result-size": "$1 ({{PLURAL:$2|1 ta soʻz|$2 ta soʻz}})",
"search-result-category-size": "$1 {{PLURAL:$1|a'zo|a'zolar}} ($2 {{PLURAL:$2|ostturkum|ostturkumlar}}, $3 {{PLURAL:$3|fayl|fayllar}}).",
- "search-result-score": "Relavantlik: $1%.",
"search-redirect": "(yoʻnaltirish $1)",
"search-section": "($1 boʻlimi)",
"search-suggest": "Balki buni nazarda tutgandirsiz: $1",
"filestatus": "Tarqatish shartlari:",
"filesource": "Manba:",
"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:",
"notanarticle": "Maqola emas",
"watchlist-details": "Sizning kuzatuv roʻyxatingizda hozirda {{PLURAL:$1|bitta sahifa|$1ta sahifa}} mavjud (munozara sahifalarini hisobga olmaganda).",
"wlheader-showupdated": "Siz oxirgi marta kirganingizdan keyin oʻzgartirilgan sahifalar '''qalin''' yozuv bilan ajratib koʻrsatilgan.",
+ "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ʻrsat $3",
"watchlist-options": "Kuzatuv roʻyxati moslamalari",
"watching": "Kuzatish...",
"talkpagelinktext": "Discussion",
"specialpage": "Pagina speciale",
"personaltools": "Strumenti personali",
- "postcomment": "Nova sesion",
"articlepage": "Varda ła voxe",
"talk": "Discussion",
"views": "Visite",
"externaldberror": "Se xè verifegà n'erore con el server de autenticasion esterno, opure no se dispone de łe autorizasion nesesarie par ajornare el proprio aceso esterno.",
"login": "Entra",
"nav-login-createaccount": "Entra / Regìstrete",
- "loginprompt": "Par entrar su {{SITENAME}} te ghè da verghe i cookie ativà.",
"userlogin": "Entra / Regìstrete",
"userloginnocreate": "Entra",
"logout": "Và fora",
"searchprofile-advanced-tooltip": "Serca nei namespace personalixài",
"search-result-size": "$1 ({{PLURAL:$2|na parola|$2 parole}})",
"search-result-category-size": "{{PLURAL:$1|1 utente|$1 utenti}} ({{PLURAL:$2|1 sotocategoria|$2 sotocategorie}}, {{PLURAL:$3|1 file|$3 file}})",
- "search-result-score": "Rilevansa: $1%",
"search-redirect": "(redirect $1)",
"search-section": "(sesion $1)",
"search-suggest": "Sercavito forsi: $1",
"uploadwarning": "Avixo de caricamento",
"uploadwarning-text": "Par piaser, cànbia la descrission del file qua de soto e próa da novo.",
"savefile": "Salva file",
- "uploadedimage": "ga cargà \"[[$1]]\"",
- "overwroteimage": "gà cargà na version nova de \"[[$1]]\"",
"uploaddisabled": "Semo spiacenti, ma el caricamento de file el xe tenporaneamente sospeso.",
"copyuploaddisabled": "El caricamento tramite URL el xe disabilità.",
"uploaddisabledtext": "El caricamento dei file no'l xe mìa ativo.",
"watchlist-details": "Te sì drio tegner d'ocio {{PLURAL:$1|una pagina (e la so pagina de discussion)|$1 pagine (e le so pagine de discussion)}}.",
"wlheader-enotif": "Xe ativà la notifica via e-mail.",
"wlheader-showupdated": "Le pagine che xe stà canbià da la to ultima visita le xe segnà in '''grosso'''",
+ "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",
"watching": "Taco a tegner d'ocio...",
"duplicate-defaultsort": "Ocio: la ciave de ordinamento predefinìa \"$2\" la va in conflito co' quela de prima \"$1\".",
"version": "Version",
"version-extensions": "Estension instalè",
+ "version-skins": "Aspeto grafego",
"version-specialpages": "Pagine speciali",
"version-parserhooks": "Hook del parser",
"version-variables": "Variabili",
"version-antispam": "Prevension del spam",
- "version-skins": "Aspeto grafego",
"version-other": "Altro",
"version-mediahandlers": "Gestori de contenuti multimediài",
"version-hooks": "Hook",
"talkpagelinktext": "Lodu",
"specialpage": "Specialine lehtpol'",
"personaltools": "Personaližed azeged",
- "postcomment": "Uz' jaguz",
"articlepage": "Kacu südäimišton lehtpol'",
"talk": "Diskussii",
"views": "Kacundad",
"externaldberror": "Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.",
"login": "Kirjutadas sistemha",
"nav-login-createaccount": "Kirjutadas / Sada registracii",
- "loginprompt": "Pidab laskta sada \"cookies\", miše kirjutadas {{SITENAME}}he.",
"userlogin": "Kirjutadas / Sada registracii",
"userloginnocreate": "Kirjutagatoiš sistemha",
"logout": "Lähtta",
"searchprofile-advanced-tooltip": "Ectä märitud nimiavarusiš",
"search-result-size": "$1 ({{PLURAL:$2|1 sana|$2 sanad}})",
"search-result-category-size": "{{PLURAL:$1|1 element|$1 elementad}} ({{PLURAL:$2|1 alakategorii|$2 alakategorijad}}, {{PLURAL:$3|1 fail|$3 failad}})",
- "search-result-score": "Relevantižuz: $1%",
"search-redirect": "(oigenduz $1)",
"search-section": "(jaguz $1)",
"search-suggest": "Tahtoižit-ik löuta: $1",
"file-exists-duplicate": "Nece fail om {{PLURAL:$1|necen failan|neniden failoiden}} dublikat:",
"uploadwarning": "Varutuz jügutoitmižes",
"savefile": "Kirjutada fail",
- "uploadedimage": "om jügutoitnu \"[[$1]]\"",
- "overwroteimage": "jügutoiti \"[[$1]]\"-failan uden versijan",
"uploaddisabled": "Jügutoitand om kel'tud",
"uploaddisabledtext": "Failoiden jügutoitand om sauptud.",
"php-uploaddisabledtext": "Failoiden jügutoitand om kel'tud PHP:n järgendusiš. Kodvgat \"file_uploads\"-järgenduz.",
"duplicate-defaultsort": "'''Varutuz:''' Sortiruindan avadim äugotižjärgendusen mödhe \"$2\" toižetab edeližen avadimen äugotižjärgendusen mödhe \"$1\".",
"version": "Versii",
"version-extensions": "Seižutadud ližad",
+ "version-skins": "Nägutemad",
"version-specialpages": "Specialižed lehtpoled",
"version-parserhooks": "Sintaksižen analizatoran sabustajad",
"version-variables": "Vajehtujad lugud",
"version-antispam": "Antispam",
- "version-skins": "Nägutemad",
"version-other": "Toine",
"version-mediahandlers": "Median radimed",
"version-hooks": "Sabutajad",
"searchprofile-advanced-tooltip": "Tìm trong không gian tên tùy chọn",
"search-result-size": "$1 ({{PLURAL:$2|1 từ|$2 từ}})",
"search-result-category-size": "$1 trang thành viên ($2 thể loại con, $3 tập tin)",
- "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)",
"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",
- "uploadedimage": "đã tải “[[$1]]” lên",
- "overwroteimage": "đã tải lên một phiên bản mới của “[[$1]]”",
"uploaddisabled": "Chức năng tải lên đã bị khóa.",
"copyuploaddisabled": "Chức năng tải lên từ địa chỉ URL đã bị tắt.",
"uploaddisabledtext": "Chức năng tải tập tin đã bị tắt.",
"talkpagelinktext": "Disghusjoon",
"specialpage": "Schbedsjaal-sajdn",
"personaltools": "Ajchne werchdsajch",
- "postcomment": "Najn abschnid",
"articlepage": "D'inhalds-sajdn dsajchn",
"talk": "Disghusjoon",
"views": "Ôôsichdn",
"remembermypassword": "Miid den Brauser dauerhafd ogmeld bleim (maximal $1 {{PLURAL:$1|Dooch|Dooch}})",
"login": "Ôômeldn",
"nav-login-createaccount": "Oomeldn / Ghondoo ooleeng",
- "loginprompt": "Zum Omelldn mäin Guggies agdivierd sei.",
"userlogin": "Ôômeldn / Als Bajdräächâr ajschrajm",
"logout": "Abmeldn",
"userlogout": "Abmeldn",
"searchprofile-advanced-tooltip": "Soung in weidere Namensraim",
"search-result-size": "$1 ({{PLURAL:$2|1 wôrd|$2 wärdâr}})",
"search-result-category-size": "{{PLURAL:$1|1 Seidn|$1 Seidn}} ({{PLURAL:$2|1 Untergadegorii|$2 Untergadegoriin}}, {{PLURAL:$3|1 Dadei|$3 Dadein}})",
- "search-result-score": "Âjschleechich: $1 %",
"search-redirect": "(Wajdalajdung fon „$1“ häa)",
"search-section": "(Abschnid $1)",
"search-suggest": "Hasd ajchndlich gmaand „$1“?",
"upload": "Nauflôôdn",
"uploadlogpage": "Brodoghol fom dadaj-hoochlôôdn",
"filedesc": "Bschreibung",
- "uploadedimage": "had „[[$1]]“ naufglôôdn",
"license": "Lizenz",
"license-header": "Lizenz",
"file-anchor-link": "Daddei",
"talkpagelinktext": "Bespik",
"specialpage": "Pad patik",
"personaltools": "Stums pösodik",
- "postcomment": "Diläd nulik",
"articlepage": "Jonön ninädapadi",
"talk": "Bespik",
"views": "Logams",
"externaldberror": "U ejenon fümükamapöl plödik nünödema, u no dalol atimükön kali plödik ola.",
"login": "Nunädolös obi",
"nav-login-createaccount": "Nunädön oki / jafön kali",
- "loginprompt": "Mutol mögükön „kekilis“ ad kanön nunädön oli in {{SITENAME}}.",
"userlogin": "Nunädön oki / jafön kali",
"userloginnocreate": "Nunädön oki",
"logout": "Senunädön oki",
"searchprofile-advanced-tooltip": "Sukön in nemaspads patik",
"search-result-size": "$1 ({{PLURAL:$2|vöd 1|vöds $2}})",
"search-result-category-size": "{{PLURAL:$1|liman 1|limans $1}} ({{PLURAL:$2|donaklad 1|donaklads $2}}, {{PLURAL:$3|ragiv 1|ragivs $3}})",
- "search-result-score": "Demäd: $1%",
"search-redirect": "(lüodüköm: $1)",
"search-section": "(diläd: $1)",
"search-suggest": "Ediseinol-li: $1 ?",
"file-deleted-duplicate": "Ragiv votik, kel leigon ko ragiv at ([[:$1]]), pemoükon büo. Sötol kontrolön moükamajenotemi ragiva et büä odönulöpükol oni.",
"uploadwarning": "Löpükamanuned",
"savefile": "Dakipolöd ragivi",
- "uploadedimage": "\"[[$1]]\" pelöpüköl",
- "overwroteimage": "fomami nulik ragiva: „[[$1]]“ pelöpükon",
"uploaddisabled": "Löpükam penemögükon",
"uploaddisabledtext": "Löpükam ragivas penemögükon.",
"uploadscripted": "Ragiv at ninükon eli HTML u vödis programapüka, kelis bevüresodanaföm ba opölanätäpreton",
"watchlist-details": "{{PLURAL:$1|pad $1|pads $1}} su galädalised, plä bespikapads.",
"wlheader-enotif": "Nunam medü pot leäktronik pemögükon.",
"wlheader-showupdated": "Pads pos visit lätik ola pevotüköls papenons '''me tonats bigik'''",
+ "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",
"watching": "Papladon ini galädalised...",
"duplicate-defaultsort": "Nüned: Leodükamakik kösömik: „$2“ buon bu leodükamakik kösömik büik: „$1“.",
"version": "Fomam",
"version-extensions": "Veitükumams pestitöl",
- "version-specialpages": "Pads patik",
"version-skins": "Fomäts",
+ "version-specialpages": "Pads patik",
"version-other": "Votik",
"version-hooks": "Huköms",
"version-hook-name": "Hukömanem",
"remembermypassword": "Mäleht minuu (enintään $1 {{PLURAL:$1|päivä|päivää}})",
"login": "Cirjut süäme",
"nav-login-createaccount": "Cirjut süäme vai registriiroit cäüttijässi",
- "loginprompt": "Tüü piättä «cookies» võttamin luvata, štobõ entä sisteema ete esitellä.",
"userlogin": "Cirjut süäme",
"userloginnocreate": "Cirjut süäme",
"logout": "Cirjut uloz",
"filename": "Failinimi",
"filedesc": "Turvotuz",
"fileuploadsummary": "Turvotuz:",
- "uploadedimage": "\"[[$1]]\" on laajõngoitõttu ülez",
"license": "Litseenttsija:",
"license-header": "Litseenttsija",
"imgfile": "faili",
"talkpagelinktext": "Arotus",
"specialpage": "Tallituslehekülg",
"personaltools": "Erätüüriistaq",
- "postcomment": "Vahtsõnõ alajago",
"articlepage": "Artiklilehekülg",
"talk": "Arotus",
"views": "Kaemisõq",
"externaldberror": "Välitsen kimmästegemisteedüskogon om viga vai olõ-i sul lubat umma pruukjanimme muutaq.",
"login": "Nimega sisseminek",
"nav-login-createaccount": "Mineq nimega sisse",
- "loginprompt": "{{SITENAME}} lask nimega sisse õnnõ sis, ku lubatas valmistuisi.",
"userlogin": "Mineq nimega sisse vai luuq pruukjanimi",
"userloginnocreate": "Nimega sisseminek",
"logout": "Nime alt välläminek",
"fileexists-shared-forbidden": "Sama nimega teedüstü om jo olõman jaetuidõ teedüstüide hulgan. Pästäq teedüstü mõnõ tõõsõ nime ala. Parhillanõ teedüstü: [[File:$1|thumb|center|$1]]",
"uploadwarning": "Üleslaatmishoiatus",
"savefile": "Pästäq teedüstü ärq",
- "uploadedimage": "laadõ üles \"$1\"",
- "overwroteimage": "üles laadit \"[[$1]]\" vahtsõnõ kujo",
"uploaddisabled": "Üleslaatminõ lää-s kõrda",
"uploaddisabledtext": "Teedüstü üleslaatminõ om keelet.",
"uploadscripted": "Seol teedüstül om HTML-kuud vai skripte, minkast võrgokaeja või võlssi arvo saiaq.",
"watchlist-details": "Perräkaemisnimekirän om {{PLURAL:$1|$1 leht|$1 lehte}}, rehkendämäldä arotuslehti.",
"wlheader-enotif": "E-postiga teedäqandmisõq ommaq käügin.",
"wlheader-showupdated": "Leheq, midä om muudõt päält su viimäst käümist, ommaq '''paksun kirän'''",
+ "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",
"watching": "Pandas perräkaemisnimekirjä...",
"talkpagelinktext": "Copiner",
"specialpage": "Pådje sipeciåle",
"personaltools": "Usteyes da vosse",
- "postcomment": "Novele seccion",
"articlepage": "Vey l' årtike",
"talk": "Copene",
"views": "Vuwes",
"yourdomainname": "Vosse dominne",
"login": "S' elodjî",
"nav-login-createaccount": "Ahiver on conte, udon-bén s' elodjî",
- "loginprompt": "Vos dvoz permete les coûkes po vs elodjî so {{SITENAME}}.",
"userlogin": "S' elodjî",
"userloginnocreate": "S' elodjî",
"logout": "Si dislodjî",
"searchprofile-advanced-tooltip": "Tchoezixhoz les espåces di lomaedje ki vos vloz rwaitî pol cweraedje",
"search-result-size": "$1 ($2 mot{{PLURAL:$2||s}})",
"search-result-category-size": "$1 mimbe{{PLURAL:$1||s}} ($2 dizo-categoreye{{PLURAL:$2||s}}, $3 fitchî{{PLURAL:$3||s}})",
- "search-result-score": "Pertinance: $1%",
"search-redirect": "(redjiblé di $1)",
"search-section": "(seccion $1)",
"search-suggest": "Sayîz motoit çoula: $1",
"fileexists-shared-forbidden": "I gn a ddja on fitchî avou ç' no la e ridant des fitchîs pårtaedjîs.\nRivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no si vos vloz.\n[[File:$1|thumb|center|$1]]",
"uploadwarning": "Adviertixhmint so l' eberwetaedje",
"savefile": "Schaper l' fitchî",
- "uploadedimage": "eberwetaedje di «[[$1]]»",
"uploaddisabled": "Eberwetaedje di fitchîs dismetou",
"uploaddisabledtext": "L' eberwetaedje di fitchîs a stî dismetou.",
"uploadscripted": "Ci fitchî ci a-st å dvins do côde HTML ou on scripe ki pôreut esse må comprin pa on betchteu waibe.",
"watchlist-details": "Vos avoz {{PLURAL:$1|$1 pådje shuvowe|$1 pådjes shuvowes}} (sins conter les pådjes di copene).",
"wlheader-enotif": "Li notifiaedje pa emile est en alaedje.",
"wlheader-showupdated": "Les pådjes k' ont candjî dispoy vosse dierinne vizite sont metowes e '''cråssès letes'''",
+ "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",
"enotif_reset": "Mårker totes les pådjes come vizitêyes",
"watchlisttools-edit": "Vey et candjî l' djivêye des shuvous",
"version": "Modêye des programes",
"version-extensions": "Rawetes d' astalêyes",
+ "version-skins": "Peas",
"version-specialpages": "Pådjes sipeciåles",
"version-variables": "Variåves",
"version-antispam": "Siconte do spam",
- "version-skins": "Peas",
"version-other": "Ôtes",
"version-license": "Licince",
"version-software": "Programes astalés",
"talkpagelinktext": "Hiruhimangraw",
"specialpage": "Pinaurog nga pakli",
"personaltools": "Mga pankalugaringon nga garamiton",
- "postcomment": "Bag-o nga bahin",
"articlepage": "Kitaa in may sulod nga pakli",
"talk": "Hiruhimangraw",
"views": "Mga paglantaw",
"externaldberror": "Mayda authenticaton database error o diri ka tinutugotan pag-update an imo akwant ha gawas.",
"login": "Sakob",
"nav-login-createaccount": "Magpalista nga masakob / paghimo hin bag-o nga akawnt",
- "loginprompt": "Kinahanglan mo hin mga kuki (''cookie'') para makapag log-in ha {{SITENAME}}.",
"userlogin": "Magpasabot nga masakob / paghimo hin akawnt",
"userloginnocreate": "Magpasabot nga masakob",
"logout": "Gawas",
"searchprofile-advanced-tooltip": "Pamilnga ha mga nabatasan nga ngaran-lat'ang",
"search-result-size": "$1 ({{PLURAL:$2|1 nga pulong|$2 nga mga pulong}})",
"search-result-category-size": "{{PLURAL:$1|1 nga api|$1 nga mga api}} ({{PLURAL:$2|1 nga ubos-nga-kaarangay|$2 nga mga ubos-nga-kaarangay}}, {{PLURAL:$3| 1 nga fayl|$3 nga mga fayl}})",
- "search-result-score": "Pagkaangay: $1%",
"search-redirect": "(redirekta $1)",
"search-section": "(bahin $1)",
"search-suggest": "Buot sidngon mo ba: $1",
"windows-nonascii-filename": "Ini nga wiki in diri nakasuportado han mga ngaran-han-paypay nga may-ada pinaurog nga mga karakter.",
"uploadwarning": "Pahimatngon han pagkarga paigbaw",
"savefile": "Igtipig an paypay",
- "uploadedimage": "ginkarga-paigbaw \"[[$1]]\"",
- "overwroteimage": "Ginkaraga an bag-o nga bersyon han \"[[$1]]\"",
"uploaddisabled": "Waray ginpagana an pagkarga paigbaw",
"copyuploaddisabled": "An pagkarga paigbaw pinaagi hin URL in waray ginpagana",
"uploaddisabledtext": "An mga pagkarga-paigbaw in diri ginpapagana.",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|hiruhimangraw]])",
"duplicate-defaultsort": "'''Pahimatngon:''' An daan-aada nga paglainlain nga piridlitan nga \"$2\" in igsasapaw an durudaan nga daan-aada nga paglainlain nga piridlitan nga \"$1\".",
"version": "Bersyon",
+ "version-skins": "Mga panit",
"version-specialpages": "Mga pinaurog nga pakli",
"version-parserhooks": "Mga kawil parser",
"version-variables": "Mga variable",
"version-antispam": "Pamugong hin spam",
- "version-skins": "Mga panit",
"version-other": "iba",
"version-mediahandlers": "Mga nakapot han medya",
"version-hooks": "Mga kawil",
"talkpagelinktext": "Diisoo",
"specialpage": "Xëtu jagleel",
"personaltools": "Samay jumtukaay",
- "postcomment": "Xaaj bu bees",
"articlepage": "Gis jukki bi",
"talk": "Waxtaan",
"views": "Xool yo",
"externaldberror": "Njuumte judd na ci dàttub njoxe bi, walla day ni rekk amuloo sañ-sañu yeesal sa sàqum biti.",
"login": "xammeeku",
"nav-login-createaccount": "Dugg / Bindu",
- "loginprompt": "Faaw nga doxal cookie yi ngir man a dugg ci {{SITENAME}}.",
"userlogin": "Dugg / Bindu",
"logout": "Génnu",
"userlogout": "Génnu",
"searchprofile-everything-tooltip": "Seet fépp (ba ci xëti waxtaanuwaay yi)",
"searchprofile-advanced-tooltip": "Seet ci barabi tur yi",
"search-result-size": "$1 ({{PLURAL:$2|1 baat|$2 baat}})",
- "search-result-score": "Baaxaay: $1%",
"search-redirect": "(jubluwaat bu jëm $1)",
"search-section": "(xaaj $1)",
"search-suggest": "Xéj-na lii nga doon seet: $1",
"file-exists-duplicate": "ŋara wi ñaaralub {{PLURAL:$1| ŋara wii di toftal la| ŋara yii di toftal lañu}} :",
"uploadwarning": "Moytul !",
"savefile": "Denc dencukaay bi",
- "uploadedimage": "Yeb na « [[$1]] »",
- "overwroteimage": "moo yeb sumb bu bees bu « [[$1]] »",
"uploaddisabled": "Di jéeggalu, yebug dencukaay yi dañ koo doxadilandi.",
"uploaddisabledtext": "Yebug dencukaay yi dañ koo doxadil.",
"uploadscripted": "Wii ŋara dafa am yoonug HTML walla ab script bu ab joowukaayub web mana tekke ci anam gu baaxul.",
"unwatchthispage": "Bul toppati",
"watchlist-details": "Topp nga $1 {{PLURAL:$1|xët|ciy xët}}, soo waññiwaalewul xëti waxtaanuwaay yi.",
"wlheader-showupdated": "Xët yi ñu soppiwoon ca sa duggu bu mujj ñoom la ñu fesal ñu <b>xëm</b>",
+ "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",
"watching": "Topp...",
"searchprofile-advanced-tooltip": "垃拉自定义名字空间里向搜索",
"search-result-size": "$1($2字)",
"search-result-category-size": "$1个成员($2个儿分类,$3个文件)",
- "search-result-score": "相关度:$1%",
"search-redirect": "(转戳到 $1)",
"search-section": "(段落 $1)",
"search-suggest": "你侬是寻:$1",
"windows-nonascii-filename": "箇wiki弗支持文件名用特別個字符。",
"uploadwarning": "上载警告",
"savefile": "保存文件",
- "uploadedimage": "上传 \"[[$1]]\"",
"sourcefilename": "源文件:",
"destfilename": "目标文件名:",
"watchthisupload": "關注箇文件",
"talkpagelinktext": "Меткән",
"specialpage": "Көдлхнә халх",
"personaltools": "Эврән зер-зев",
- "postcomment": "Шин хүв",
"articlepage": "Зүүл үзх",
"talk": "Меткән",
"views": "Хәләврүд",
"yourdomainname": "Тана домен:",
"login": "Орлһн",
"nav-login-createaccount": "Харһх / бичгдлһн кех",
- "loginprompt": "{{SITENAME}} тал орлһна төлә, та «cookies» олзлдг кергтә.",
"userlogin": "Орх аль бичгдлһиг бүтәх",
"userloginnocreate": "Харһх",
"logout": "Һарх",
"searchprofile-articles-tooltip": "$1 гидг зүүлд хәәх",
"searchprofile-images-tooltip": "Боомг хәәх",
"search-result-size": "$1 ({{PLURAL:$2|$2 үг|$2 үгмүд|$2 үгмүд}})",
- "search-result-score": "Әдлцән: $1 %",
"search-redirect": "(авч одлһн $1)",
"search-section": "($1 хүв)",
"search-suggest": "Та эниг таанат: $1 ?",
"filedesc": "Учр-утх",
"fileuploadsummary": "Учр-утх:",
"savefile": "Хадһлх",
- "uploadedimage": "«[[$1]]» тәвв",
"upload-success-subj": "Йовудта тәвллһн",
"license": "Закан:",
"license-header": "Закан:",
"yourdomainname": "თქვან დომენ",
"login": "მიშულა",
"nav-login-createaccount": "მიშულა/ანგარიშიშ გონწყუმა",
- "loginprompt": "{{SITENAME}}-შა მიშაულარო ოხვილუთ ეკაკილეფიშ (cookies) გოაქტიურაფას.",
"userlogin": "მიშულა/ანგარიშიშ გონწყუმა",
"logout": "გიშულა",
"userlogout": "გიშულა",
"uploadbtn": "ფაილიშ გეთება",
"uploadlogpage": "ეხარგუაშ ორეგისტრირებელ ჟურნალ",
"filedesc": "რეზიუმე",
- "uploadedimage": "ეხარგელი რე \"[[$1]]\"",
"license": "ლიცენზირაფა:",
"license-header": "ლიცენზირაფა",
"listfiles": "სურათეფიშ ერკებულ",
"hidetoc": "באַהאַלטן",
"collapsible-collapse": "אײַנציען",
"collapsible-expand": "פֿאַרברייטערן",
+ "confirmable-confirm": "צי זענט {{GENDER:$1|איר}} זיכער?",
+ "confirmable-yes": "יא",
+ "confirmable-no": "ניין",
"thisisdeleted": "זען אדער צוריקשטעלן $1?",
"viewdeleted": "זען $1?",
"restorelink": "{{PLURAL:$1|איין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}",
"invalidtitle-knownnamespace": "אומגילטירער טיטל מיט נאמענטייל \"$2\" און טעקסט \"$3\"",
"invalidtitle-unknownnamespace": "אומגילטיקער טיטל מיט אומבאוואוסטן נאמענטייל נומער $1 און טעקסט \"$2\"",
"exception-nologin": "נישט אַרײַנלאגירט",
- "exception-nologin-text": "×\90×\99ר ש×\90פר×\98 ×\96×\99×\99×\9f [[Special:Userlogin|×\90ר×\99×\99× ×\9c×\90×\92×\99ר×\98]] to כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.",
+ "exception-nologin-text": "×\96ײַ×\98 ×\90×\96×\95×\99 ×\92×\95×\98 ×\90×¨×²Ö·× ×\9c×\90×\92×\99ר×\9f כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.",
"exception-nologin-text-manual": "זייט אזוי גוט $1 כדי צו קענען צוקומען צו דעם בלאט אדער דער אקציע.",
"virus-badscanner": "שלעכטע קאנפֿיגוראציע: אומבאוואוסטער ווירוס איבערקוקער: ''$1''",
"virus-scanfailed": "איבערקוקן נישט געראטן (קאד: $1)",
"parser-template-recursion-depth-warning": "מוסטער רעקורסיע טיף מאקסימום איבערגעשטיגן ($1)",
"language-converter-depth-warning": "אַריבער דעם שפּראַך קאַנווערטער טיף לימיט ($1)",
"node-count-exceeded-category": "בלעטער וואו קנופצאל איז צו פיל",
- "node-count-exceeded-category-desc": "×\90 ק×\90×\98×¢×\92×\90ר×\99×¢ פ×\90ר ×\91×\9c×¢×\98ער ×\95×\95×\90×\95 ×\93×\99 ×§× ×\95פצ×\90×\9c ×\90×\99×\96 צ×\95 פ×\99ל.",
- "node-count-exceeded-warning": "×§× ×\95×¤× ×¦×\90×\9c ×\90×\95×\99פ×\9f ×\91×\9c×\90×\98 צ×\95 ×\94×\95×\99×\9a",
+ "node-count-exceeded-category-desc": "×\93×\99ר ×\91×\9c×\90×\98 ש×\98×\99×\99×\92×\98 ×\90×\99×\91ער ×\93×\99 ×\9e×\90קס×\99×\9e×\95×\9d ×§× ×\95פצ×\90ל.",
+ "node-count-exceeded-warning": "×\93ער ×\91×\9c×\90×\98 ×\90×\99×\96 ×\90×\99×\91ער×\92עש×\98×\99×\92×\9f ×\93×¢×\9d ×§× ×\95×¤× ×¦×\90×\9c",
"expansion-depth-exceeded-category": "בלעטער וואו מ'האט אריבערגעשטיגן די פארברייטערונג טיף",
- "expansion-depth-exceeded-category-desc": "×\93×\90ס ×\90×\99×\96 ×\90 ק×\90×\98×¢×\92×\90ר×\99×¢ פ×\90ר ×\91×\9c×¢×\98ער ×\95×\95×\90ס ש×\98×\99×\92×\9f ×\90×\99×\91ער ×\93ער פארברייטערן־טיף.",
+ "expansion-depth-exceeded-category-desc": "×\93ער ×\91×\9c×\90×\98 ש×\98×\99×\99×\92×\98 ×\90×\99×\91ער ×\93×\99 פארברייטערן־טיף.",
"expansion-depth-exceeded-warning": "בלאט גייט אריבער דער פארברייטערונג טיף",
"parser-unstrip-loop-warning": "פעטליע געטראפֿן",
"converter-manual-rule-error": "געטראפן א גרײַז אין האנטלעכן שפראך־קאנווערטירן כלל",
"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-score": "שייכותדיקייט: $1%",
"search-redirect": "(ווײַטערפֿירן $1)",
"search-section": "(אפטיילונג $1)",
"search-file-match": "(פאסט צו טעקע אינהאלט)",
"preferences": "פרעפֿערענצן",
"mypreferences": "פּרעפֿערענצן",
"prefs-edits": "צאָל ענדערונגען:",
- "prefsnologintext2": "זייט אזוי גוט $1 כדי צו שטעלן באניצער פרעפערענצן.",
+ "prefsnologintext2": "זייט אזוי גוט ארײַנלאגירן כדי צו ענדערן אײַערי באניצער פרעפערענצן.",
"prefs-skin": "סקין",
"skin-preview": "פארויסדיגע ווייזונג",
"datedefault": "נישטא קיין פרעפערענץ",
"uploadwarning": "אַרויפֿלאָדן וואָרענונג",
"uploadwarning-text": "זײַט אַזוי גוט מאדיפֿיצירן די טעקע באַשרייבונג און פרובירט נאכאַמאָל.",
"savefile": "אױפֿהיטן טעקע",
- "uploadedimage": "אַרױפֿגעלאָדן \"[[$1]]\"",
- "overwroteimage": "אַרויפֿגעלאָדן א נײַע ווערסיע פון \"[[$1]]\"",
"uploaddisabled": "אַרויפֿלאָדן טעקעס מבוטל",
"copyuploaddisabled": "ארויפלאדן דורך URL אומאקטיווירט",
"uploaddisabledtext": "אַרויפֿלאָדן טעקעס נישט דערמעגלעכט.",
"upload-options": "אַרויפֿלאָדן ברירה'ס",
"watchthisupload": "אויפֿפאַסן דעם בלאט",
"filewasdeleted": "א טעקע מיט דעם נאמען האט מען שוין ארויפגעלאדן און דערנאך אויסגעמעקט.\nאיר זאלט בודק זיין דעם $1 איידער איר הייבט אן ארויפלאדן ווידעראמאל.",
+ "filename-bad-prefix": "דער נאמען פון דער טעקע וואס איר לאדט ארויף הייבט אן מיט <strong>\"$1\"</strong>, וואס איז אן אלגעמיינער נאמען געשטעלט פון א דיגיטאלישער קאמערע.\nזײַט אזוי גוט קלויבט א נאמען פאר דער טעקע ואס באשרײַבט איר אינהאלט.",
"upload-success-subj": "דערפֿאלגרייכער ארויפֿלאָד",
"upload-success-msg": "אײַער אַרויפֿלאָד פֿון [$2] איז געווען דערפֿאלגרייך. עס איז פֿאַראָן דאָ: [[:{{ns:file}}:$1]]",
"upload-failure-subj": "אַרויפֿלאָדן פראבלעם",
"mywatchlist": "אויפפַּאסונג ליסטע",
"watchlistfor2": "פֿאַר $1 $2",
"nowatchlist": "איר האט נישט קיין שום בלעטער אין אייער אויפפַּאסונג ליסטע.",
- "watchlistanontext": "ביטע $1 כדי צו זען אדער ענדערן בלעטער אין אייער אַכטגעבן ליסטע.",
+ "watchlistanontext": "ביטע לאגירט ארײַן כדי צו זען אדער ענדערן בלעטער אין אייער אַכטגעבן ליסטע.",
"watchnologin": "איר זענט נישט אַרײַנלאגירט",
"addwatch": "צולייגן צו דער אויפֿפאַסונג ליסטע",
"addedwatchtext": "דער בלאט \"[[:$1]]\" איז צוגעלײגט געוואָרן צו אײַער [[Special:Watchlist|אויפֿפאַסונג ליסטע]].\n\nווײַטערע ענדערונגען צו דעם בלאַט און צו זײַן פארבינדענעם רעדן בלאַט וועלן זײַן אויסגערעכנט דארט.",
"autoblockid": "אויטאמאטיש בלאק #$1",
"block": "בלאקירן באַניצער",
"unblock": "אויפֿבלאקירן באניצער",
- "blockip": "בלאקירן באַניצער",
+ "blockip": "בלאקירן {{GENDER:$1|באַניצער}}",
"blockip-legend": "בלאקירן באַניצער",
"blockiptext": "באניצט די פארעם דא אונטן כדי צו בלאקירן שרײַבן רעכטן פֿון איינגעשריבענע באניצער אדער סתם ספעציפישע איי פי אדרעסן.\n\nאזאלכע בלאקירונגען מוזן דורכגעפירט ווערן בלויז צו פֿאַרמײַדן וואַנדאַליזם, און לויט די [[{{MediaWiki:Policy-url}}|פארשריפטן און פאליסיס]].\n\nביטע שרײַבט ארויס קלאָר די ספעציפֿישע סיבה (למשל, ציטירן וועלכע בלעטער מ'האט וואַנדאַליזירט).",
"ipaddressorusername": "IP אדרעס אדער באַניצער נאמען:",
"ipb-unblock-addr": "אויפֿבלאקירן $1",
"ipb-unblock": "אויפֿבלאקירן א באַניצער נאמען אדער IP אדרעס",
"ipb-blocklist": "זעט עקזיסטירנדע בלאקירונגען",
- "ipb-blocklist-contribs": "בײַשטײַערונגען פֿון $1",
+ "ipb-blocklist-contribs": "בײַשטײַערונגען פֿון {{GENDER:$1|$1}}",
"unblockip": "אויפֿבלאקירן באניצער",
"unblockiptext": "מיט דעם פארמולאר קענט איר צוריקשטעלן שרייבן ערלויבניש צו אן IP אדרעס אדער באניצער נאמען וואס איז געווען בלאקירט.",
"ipusubmit": "אוועקנעמען דעם בלאק",
"searchprofile-advanced-tooltip": "Ṣàwáàrí nínú àwọn orúkọàyè pàtó",
"search-result-size": "$1 ({{PLURAL:$2|ọ̀rọ̀ 1|àwọn ọ̀rọ̀ $2}})",
"search-result-category-size": "{{PLURAL:$1|ẹlẹgbẹ́ 1|àwọn ẹlẹgbẹ́ $1}} ({{PLURAL:$2|ẹ̀kà abẹ́ 1|àwọn ẹ̀kà abẹ́ $2}}, {{PLURAL:$3|fáìlì 1|àwọn fáìlì $3}})",
- "search-result-score": "Ìbáramu: $1%",
"search-redirect": "(àtúnjúwe $1)",
"search-section": "(abala $1)",
"search-suggest": "Ṣé ẹ fẹ́: $1",
"uploadwarning": "Ìkìlọ̀ ìrùsókè",
"uploadwarning-text": "Ẹ jọ̀wọ́ ẹ tún ìjúwe fáìlì ìsàlẹ̀ náà ṣe kí ẹ tó gbìyànjú lẹ́ẹ̀kan síi.",
"savefile": "Ìmúpamọ́ fáìlì",
- "uploadedimage": "\"[[$1]]\" ti jẹ́rírùsókè",
- "overwroteimage": "ṣe ìrùsókè àtúnyẹ̀wò tuntun \"[[$1]]\"",
"uploaddisabled": "Dídálẹ́kun àwọn ìrùsókè.",
"copyuploaddisabled": "Ìdálẹ́kun ìrùsókè pẹ̀lú URL.",
"uploaddisabledtext": "Dídálẹ́kun àwọn ìrùsókè fáìlì.",
"watchlist-details": "{{PLURAL:$1|Ojúewé $1|Àwọn ojúewé $1}} ló wà nínú ìmójútó yín, tí a kò bá ka àwọn ojúewé ọ̀rọ̀.",
"wlheader-enotif": "Ìfitónilétí e-mail wà ní gbígbàláyè.",
"wlheader-showupdated": "Àwọn ojúewé tí wọn ti yípadà látìgbà tí ẹ ṣàbẹ̀wò wọn gbẹ̀yìn jẹ́ fífihàn ní ''kedere'''",
+ "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ọ́",
"watching": "Ó ún mójútó...",
"아라",
"Ktchankt",
"Kc kennylau",
- "Mywood"
+ "Mywood",
+ "Impersonator 1"
]
},
"tog-underline": "連結加底線:",
"talkpagelinktext": "傾偈",
"specialpage": "特別頁",
"personaltools": "個人工具",
- "postcomment": "新小節",
"articlepage": "睇目錄",
"talk": "討論",
"views": "去睇",
"externaldberror": "驗證資料庫出錯,或者唔允許你更新你嘅外部帳戶。",
"login": "登入",
"nav-login-createaccount": "登入/開新戶口",
- "loginprompt": "你一定要開咗 cookies 先登入到{{SITENAME}}。",
"userlogin": "登入/開新戶口",
"userloginnocreate": "登入",
"logout": "登出",
"searchprofile-advanced-tooltip": "響自定空間名度搵",
"search-result-size": "$1 ($2個字)",
"search-result-category-size": "$1位成員 ($2個細類,$3個檔案)",
- "search-result-score": "相關度: $1%",
"search-redirect": "(跳轉 $1)",
"search-section": "(小節 $1)",
"search-suggest": "你係唔係搵: $1",
"uploadwarning": "上載警告",
"uploadwarning-text": "請修改下面嘅檔案描述再重試。",
"savefile": "儲存檔案",
- "uploadedimage": "上載咗\"[[$1]]\"",
- "overwroteimage": "已經上載咗\"[[$1]]\"嘅新版本",
"uploaddisabled": "上載已停用。",
"copyuploaddisabled": "由URL嘅上載已經停用。",
"uploaddisabledtext": "檔案上載已經停用。",
"watchlist-details": "唔計討論頁,有 $1 版響你個監視清單度。",
"wlheader-enotif": "電子郵件通知已經啟用。",
"wlheader-showupdated": "'''粗體字'''嘅頁響你上次嚟之後被人改過",
+ "wlnote": "以下係最近'''$2'''個鐘之內嘅最新$1次修改。",
"wlshowlast": "顯示最近 $1 個鐘 $2 日 $3 嘅修改",
"watchlist-options": "監視清單選項",
"watching": "監視緊...",
"talkpagelinktext": "Overleg",
"specialpage": "Speciaole bladzie",
"personaltools": "Persoônlijke instelliengen",
- "postcomment": "Nuuw kopje toevoehen",
"articlepage": "Bekiek 't artikel",
"talk": "Overleg",
"views": "Acties",
"externaldberror": "Der is een fout opetreeën bie 't anmelden bie de database of je ei hin toestemmieng jen externe gebruker bie te werken.",
"login": "Anmelden",
"nav-login-createaccount": "Anmelden / Inschrieven",
- "loginprompt": "Je mò cookies ineschaokeld ène om je te kunn'n anmelden bie {{SITENAME}}.",
"userlogin": "Anmelden / Inschrieven",
"logout": "Ofmelden",
"userlogout": "Ofmelden",
"searchprofile-advanced-tooltip": "Zoek'n in angegeev'n naemruumtes",
"search-result-size": "$1 ({{PLURAL:$2|1 woôrd|$2 woôrn}})",
"search-result-category-size": "{{PLURAL:$1|1 categorielid|$1 categorieleden}} ({{PLURAL:$2|1 ondercategorie|$2 ondercategorieën}}, {{PLURAL:$3|1 bestand|$3 bestanden}})",
- "search-result-score": "Rillevantie: $1%",
"search-redirect": "(deurverwiezieng $1)",
"search-section": "(subkop $1)",
"search-suggest": "Bedoeln je: $1",
"ignorewarnings": "Aolle waerschuwiengen neheern",
"minlength1": "Bestandsnaem'n mott'n minstes eên letter bevatt'n.",
"badfilename": "Bestandsnaem is veranderd nae \"$1\".",
- "uploadedimage": "ei \"[[$1]]\" geüpload",
"watchthisupload": "Volg deêze bladzie",
"license": "Licentie:",
"license-header": "Licentie",
"아라",
"Mywood",
"Impersonator 1",
- "Duolaimi"
+ "Duolaimi",
+ "TianyinLee",
+ "NigelSoft"
]
},
"tog-underline": "链接下划线:",
"tog-watchdefault": "添加我编辑的页面和文件至我的监视列表",
"tog-watchmoves": "添加我移动的页面和文件至我的监视列表",
"tog-watchdeletion": "添加我删除的页面和文件至我的监视列表",
- "tog-watchrollback": "当我对我的监视列表执行回退时加入页面",
+ "tog-watchrollback": "添加我回退过的页面至我的监视列表",
"tog-minordefault": "默认标记所有编辑为小编辑",
"tog-previewontop": "将预览显示在编辑框上方",
"tog-previewonfirst": "首次编辑时显示预览",
"mainpage": "首页",
"mainpage-description": "首页",
"policy-url": "Project:方针",
- "portal": "社å\8cºä¸\93页",
+ "portal": "社å\8cºä¸»页",
"portal-url": "Project:社区专页",
"privacy": "隐私权政策",
"privacypage": "Project:隐私权政策",
"hidetoc": "隐藏",
"collapsible-collapse": "折叠",
"collapsible-expand": "展开",
+ "confirmable-confirm": "{{GENDER:$1|你}}确定么?",
+ "confirmable-yes": "是",
+ "confirmable-no": "否",
"thisisdeleted": "查看或还原$1?",
"viewdeleted": "查看$1?",
"restorelink": "$1个已被删除的编辑",
"invalidtitle-knownnamespace": "使用名字空间“$2”和文本“$3”的无效标题",
"invalidtitle-unknownnamespace": "使用未知名字空间编号$1和文本“$2”的无效标题",
"exception-nologin": "未登录",
- "exception-nologin-text": "该页é\9d¢æ\88\96æ\93\8dä½\9cé\9c\80è¦\81ä½ [[Special:Userlogin|ç\99»å½\95]]è\87³æ\9c¬Wiki。",
+ "exception-nologin-text": "请ç\99»å½\95以访é\97®æ¤é¡µé\9d¢æ\88\96è¿\9bè¡\8cæ\93\8dä½\9c。",
"exception-nologin-text-manual": "查看该页面或进行此操作需要您$1。",
"virus-badscanner": "错误的配置:未知的病毒扫描程序:''$1''",
"virus-scanfailed": "扫描失败(代码 $1)",
"showdiff": "显示更改",
"blankarticle": "<strong>警告</strong>:您创建的页面是空白的。如果您再次点击“{{int:savearticle}}”,您将真的创建没有任何内容的页面。",
"anoneditwarning": "<strong>警告:</strong>您没有登录。您的IP地址将被记录在该页面的编辑历史中。",
- "anonpreviewwarning": "''你没有登录。保存会记录你的IP地址于该页面的编辑历史中。''",
+ "anonpreviewwarning": "<em>你没有登录。保存会记录你的IP地址于该页面的编辑历史中。</em>",
"missingsummary": "'''提示:'''你没有提供编辑摘要。如果你再次点击“{{int:savearticle}}”,你的编辑将不带编辑摘要保存。",
"missingcommenttext": "请在下面输入评论。",
"missingcommentheader": "'''提示:''' 您还没有为此评论提供一个标题。如果您再次点击“{{int:savearticle}}”,您的编辑将不带标题保存。",
"expensive-parserfunction-category": "页面中有太多耗费的语法功能呼叫",
"post-expand-template-inclusion-warning": "'''警告:'''包含模板大小过大。\n一些模板将不会包含。",
"post-expand-template-inclusion-category": "模板包含上限已经超过的页面",
- "post-expand-template-argument-warning": "'''警告:'''本页面包含至少一个模板参数有过大扩展大小。这些参数会被略过。",
+ "post-expand-template-argument-warning": "<strong>警告:</strong>本页面包含至少一个模板参数有过大扩展大小。这些参数会被略过。",
"post-expand-template-argument-category": "含有略过模板参数的页面",
"parser-template-loop-warning": "检查到模板循环:[[$1]]",
"parser-template-recursion-depth-warning": "模板递归深度越限($1)",
"language-converter-depth-warning": "字词转换器深度越限($1)",
"node-count-exceeded-category": "页面的节点数超出限制",
- "node-count-exceeded-category-desc": "è\8a\82ç\82¹æ\95°æº¢å\87ºé¡µé\9d¢ç\9a\84å\88\86ç±»。",
+ "node-count-exceeded-category-desc": "è¶\85å\87ºæ\9c\80é«\98è\8a\82ç\82¹æ\95°ç\9a\84页é\9d¢。",
"node-count-exceeded-warning": "页面超出了节点数",
"expansion-depth-exceeded-category": "扩展深度超出限制的页面",
- "expansion-depth-exceeded-category-desc": "这是超出拓展深度页面的分类。",
+ "expansion-depth-exceeded-category-desc": "页面超出最大扩展深度。",
"expansion-depth-exceeded-warning": "页面超过了扩展深度",
"parser-unstrip-loop-warning": "检测到回圈",
"parser-unstrip-recursion-limit": "递归超过限制 ($1)",
"searchprofile-advanced-tooltip": "在自定义名字空间中搜索",
"search-result-size": "$1($2个字)",
"search-result-category-size": "$1个成员($2个子分类,$3个文件)",
- "search-result-score": "相关度:$1%",
"search-redirect": "(重定向自“$1”)",
"search-section": "(“$1”段落)",
"search-file-match": "(匹配文件内容)",
"preferences": "设置",
"mypreferences": "设置",
"prefs-edits": "编辑数:",
- "prefsnologintext2": "è¿\9bè¡\8cç\94¨æ\88·è®¾ç½®é\9c\80è¦\81æ\82¨$1。",
+ "prefsnologintext2": "请ç\99»å½\95以æ\9b´æ\94¹æ\82¨ç\9a\84ç\94¨æ\88·è®¾ç½®。",
"prefs-skin": "皮肤",
"skin-preview": "预览",
"datedefault": "默认格式",
"uploadwarning": "上传警告",
"uploadwarning-text": "请修改下面的文件说明并重试。",
"savefile": "保存文件",
- "uploadedimage": "上传“[[$1]]”",
- "overwroteimage": "上传“[[$1]]”的新版本",
"uploaddisabled": "上传己停用。",
"copyuploaddisabled": "URL上传已停用。",
"uploaddisabledtext": "文件上传已停用。",
"index-category-desc": "页面中有<code><nowiki>__INDEX__</nowiki></code>魔术字(并且在标记允许的名字空间)且因此被机器人索引但本不应索引的。",
"post-expand-template-inclusion-category-desc": "在展开了所有模板后,页面大小大于<code>$wgMaxArticleSize</code>,所以一些模板未展开。",
"post-expand-template-argument-category-desc": "展开了模板参数(三对花括号内,例如<code>{{{Foo}}}</code>)之后,页面大于<code>$wgMaxArticleSize</code>。",
- "expensive-parserfunction-category-desc": "页面包含了太多的高开销函数解析器(例如<code>#ifexist</code>)。参见[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
- "broken-file-category-desc": "当页面包含损坏文件连接(连接至嵌入的一个不存在文件)时分类被加入。",
- "hidden-category-category-desc": "这是有<code><nowiki>__HIDDENCAT__</nowiki></code>的分类,该魔术字阻止分类默认在页面上的分类链接框中显示。",
+ "expensive-parserfunction-category-desc": "页面包含了太多的高级解析器函数(例如<code>#ifexist</code>)。参见[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
+ "broken-file-category-desc": "页面包含损坏的文件连接(连接至嵌入的一个不存在文件)。",
+ "hidden-category-category-desc": "页面中包含<code><nowiki>__HIDDENCAT__</nowiki></code>的分类,它阻止分类默认在页面上的分类链接框中显示。",
"trackingcategories-nodesc": "没有说明。",
"trackingcategories-disabled": "分类被禁用",
"mailnologin": "无电子邮件地址",
"mywatchlist": "监视列表",
"watchlistfor2": "$1的监视列表$2",
"nowatchlist": "你的监视列表为空。",
- "watchlistanontext": "请$1以查看或编辑您的监视列表。",
+ "watchlistanontext": "请登录以查看或编辑您的监视列表。",
"watchnologin": "未登录",
"addwatch": "添加至监视列表",
"addedwatchtext": "已将页面“[[:$1]]”加入您的[[Special:Watchlist|监视列表]]。此后本页面及其讨论页的若有更改将在监视列表中显示。",
"delete-edit-reasonlist": "编辑删除原因",
"delete-toobig": "这个页面有一个十分大量的编辑历史,超过$1个版本。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。",
"delete-warning-toobig": "这个页面有一个十分大量的编辑历史,超过$1个版本。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。",
+ "delete-cantedit": "您不能删除此页面,因为您没有权限编辑它。",
"deleting-backlinks-warning": "'''警告:'''有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他页面]]链接至或包含您要删除的页面。",
"rollback": "回退编辑",
"rollback_short": "回退",
"restriction-level-all": "任何级别",
"undelete": "查看被删除页面",
"undeletepage": "查看和还原被删除的页面",
- "undeletepagetitle": "'''以下包含[[:$1]]的已删除之版本'''。",
+ "undeletepagetitle": "'''以下包含[[:$1|$1]]的已删除之版本'''。",
"viewdeletedpage": "查看被删页面",
"undeletepagetext": "以下{{PLURAL:$1|页面|$1个页面}}已被删除,但依然在归档中并可以被恢复。归档可能会被定时清理。",
"undelete-fieldset-title": "还原版本",
"autoblockid": "自动封禁#$1",
"block": "封禁用户",
"unblock": "解封用户",
- "blockip": "封禁用户",
+ "blockip": "封禁{{GENDER:$1|用户}}",
"blockip-legend": "封禁用户",
"blockiptext": "使用下方的表单来禁止来自特定IP地址或用户名的写访问。\n只有在为了防止破坏,并符合[[{{MediaWiki:Policy-url}}|方针]]的情况下才可采取此行动。\n请在下面输入一个具体的理由(例如引述一个被破坏的页面)。",
"ipaddressorusername": "IP地址或用户名:",
"ipb-unblock-addr": "解封$1",
"ipb-unblock": "解封用户名或IP地址",
"ipb-blocklist": "查看现有封禁",
- "ipb-blocklist-contribs": "$1的贡献",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}}的贡献",
"unblockip": "解封用户",
"unblockiptext": "使用下列表单来恢复之前被封禁的IP地址或用户名的写权限。",
"ipusubmit": "解除此封禁",
"importlogpagetext": "管理性导入在其他wiki上有编辑历史的页面。",
"import-logentry-upload": "通过文件上传导入[[$1]]",
"import-logentry-upload-detail": "已导入$1个{{PLURAL:$1|版本}}",
- "import-logentry-interwiki": "跨wiki$1",
+ "import-logentry-interwiki": "跨wiki页面$1",
"import-logentry-interwiki-detail": "已从$2导入$1个{{PLURAL:$1|版本}}",
"javascripttest": "JavaScript测试",
"javascripttest-title": "运行$1测试",
"logentry-rights-rights": "$1{{GENDER:$2|更改}}$3的用户组自$4至$5",
"logentry-rights-rights-legacy": "$1更改$3的用户组",
"logentry-rights-autopromote": "$1被自动地{{GENDER:$2|提升}}自$4至$5",
+ "logentry-upload-upload": "$1{{GENDER:$2|上传了}}$3",
+ "logentry-upload-overwrite": "$1{{GENDER:$2|上传了}}$3的新版本",
+ "logentry-upload-revert": "$1{{GENDER:$2|上传了}}$3",
"rightsnone": "(无)",
"feedback-bugornote": "如果你准备好详细描述一个技术问题,请[$1 报告bug]。或者你可以使用下面的简单表格。你的评论将被添加至页面“[$3 $2]”,附有你的用户名。",
"feedback-subject": "主题:",
"action-pagelang": "更改页面语言",
"log-name-pagelang": "更改语言日志",
"log-description-pagelang": "这是页面语言更改的日志。",
- "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。"
+ "logentry-pagelang-pagelang": "$1{{GENDER:$2|更改}}$3的页面语言:从$4改为$5。",
+ "default-skin-not-found": "天哪!您wiki的默认皮肤(<code>$wgDefaultSkin</code>)<code>$1</code>不可用。您的安装版本看起来需要包含以下皮肤。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。\n\n$2\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。希望如此。尝试通过以下方法从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n:* 通过git直接克隆<code>mediawiki/skins/*</code>存储库中的一个至您的MediaWiki副本的<code>skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。\n\n; 如果您升级了您的MediaWiki的话:\n: MediaWiki 1.24版本起不再自动启用已安装皮肤(参见[https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery 此手册])。您可复制粘贴以下文本至您wiki的<code>LocalSettings.php</code>以启用安装的皮肤:\n\n<pre>$3</pre>\n\n; 如果您已经修改了<code>LocalSettings.php</code>:\n: 请再次检查皮肤名以确保不存在错误拼写。",
+ "default-skin-not-found-no-skins": "天哪!您wiki的默认皮肤(<code>$wgDefaultSkin</code>)<code>$1</code>不可用。而且您没有安装任何皮肤。\n\n; 如果您刚刚安装完了MediaWiki的话:\n: 您可能是从git库安装的,或者使用其他方法直接从源代码安装的。希望如此。尝试通过以下方法从[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org的皮肤存储库]安装一些皮肤:\n:* 下载[https://www.mediawiki.org/wiki/Download/zh-hans 打包安装器],这会预装一些皮肤和扩展。您可在此处复制粘贴<code>skins/</code>。\n:* 通过git直接克隆<code>mediawiki/skins/*</code>存储库中的一个至您的MediaWiki副本的<code>skins/</code>。\n: 做这些事应该不会打扰您的git存储库如果你是MediaWiki开发人员的话。参见MediaWiki官网手册[https://www.mediawiki.org/wiki/Manual:Skin_configuration “皮肤配置”]获取如何启用他们并设置为默认。",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2(已启用)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2('''已禁用''')"
}
"Mywood",
"Cwek",
"Impersonator 1",
- "LNDDYL"
+ "LNDDYL",
+ "Cathypilot0117",
+ "NigelSoft"
]
},
"tog-underline": "連結底線:",
"aboutpage": "Project:About",
"copyright": "除非額外說明,否則本站內容均使用 $1 授權條款。",
"copyrightpage": "{{ns:project}}:Copyrights",
- "currentevents": "æ\96°è\81\9eå\8b\95æ\85\8b",
- "currentevents-url": "Project:新聞動態",
+ "currentevents": "æ\9c\80æ\96°äº\8b件",
+ "currentevents-url": "Project:Current events",
"disclaimers": "免責聲明",
"disclaimerpage": "Project:General disclaimer",
"edithelp": "編輯説明",
"mainpage": "首頁",
"mainpage-description": "首頁",
- "policy-url": "Project:方針",
- "portal": "社群主頁",
- "portal-url": "Project:社群專頁",
+ "policy-url": "Project:Policy",
+ "portal": "社群入口",
+ "portal-url": "Project:Community portal",
"privacy": "隱私政策",
"privacypage": "Project:Privacy policy",
"badaccess": "權限錯誤",
"hidetoc": "隱藏",
"collapsible-collapse": "合併",
"collapsible-expand": "展開",
+ "confirmable-confirm": "{{GENDER:$1|您}}確定嗎?",
+ "confirmable-yes": "是",
+ "confirmable-no": "否",
"thisisdeleted": "檢視或還原 $1 ?",
"viewdeleted": "檢視 $1?",
"restorelink": "$1 個已刪除的編輯",
"invalidtitle-knownnamespace": "無效的標題,命名空間 \"$2\" 與名稱 \"$3\"",
"invalidtitle-unknownnamespace": "無效的標題,不明的命名空間編號 $1 與名稱 \"$2\"",
"exception-nologin": "未登入",
- "exception-nologin-text": "您需要先 [[Special:Userlogin|登入]] 檢視或者編輯此頁面。",
+ "exception-nologin-text": "請先登入以檢視或修改",
"exception-nologin-text-manual": "請先 $1 以存取此頁面或操作。",
"virus-badscanner": "錯誤的設定:不明的病毒掃瞄程式:<em>$1</em>",
"virus-scanfailed": "掃瞄失敗 (代碼 $1)",
"userlogin-yourpassword": "密碼",
"userlogin-yourpassword-ph": "輸入您的密碼",
"createacct-yourpassword-ph": "輸入密碼",
- "yourpasswordagain": "再次輸入密碼:",
+ "yourpasswordagain": "再輸入密碼一次:",
"createacct-yourpasswordagain": "確認密碼",
"createacct-yourpasswordagain-ph": "再次輸入密碼",
"remembermypassword": "在瀏覽器上記住我的登入資訊 (上限 $1 {{PLURAL:$1|天}})",
"userloginnocreate": "登入",
"logout": "登出",
"userlogout": "登出",
- "notloggedin": "未登入",
+ "notloggedin": "尚未登入",
"userlogin-noaccount": "沒有帳號嗎?",
"userlogin-joinproject": "加入 {{SITENAME}}",
"nologin": "您還沒有帳號嗎? $1。",
"parser-template-recursion-depth-warning": "超出樣版遞迴深度限制 ($1)",
"language-converter-depth-warning": "已超出語言轉換器深度限制 ($1)",
"node-count-exceeded-category": "節點數量超出限制的頁面",
- "node-count-exceeded-category-desc": "用來顯示超過節點數量頁面的分類。",
+ "node-count-exceeded-category-desc": "這個頁面超出最大節點數",
"node-count-exceeded-warning": "頁面超出節點數量限制",
"expansion-depth-exceeded-category": "展開深度超出限制的頁面",
- "expansion-depth-exceeded-category-desc": "é\80\99æ\98¯è¶\85å\87ºå±\95é\96\8b深度é \81é\9d¢ç\9a\84å\88\86é¡\9eã\80\82",
+ "expansion-depth-exceeded-category-desc": "é \81é\9d¢è¶\85å\87ºé¡¯ç¤ºç¯\84å\9c\8d",
"expansion-depth-exceeded-warning": "頁面超出展開深度限制",
"parser-unstrip-loop-warning": "偵測到 Unstrip 迴圈",
"parser-unstrip-recursion-limit": "Unstrip 遞迴超出限制 ($1)",
"history-feed-item-nocomment": "$1 於 $2",
"history-feed-empty": "請求的頁面不存在,\n可能已被刪除或重新命名。\n請嘗試 [[Special:Search|搜尋本站]] 取得其他相關的新頁面。",
"rev-deleted-comment": "(已移除編輯摘要)",
- "rev-deleted-user": "(已移除使用者名稱)",
+ "rev-deleted-user": " (已移除使用者名稱)",
"rev-deleted-event": "(已移除日誌)",
"rev-deleted-user-contribs": "[使用者名稱或 IP 位址已移除 - 已隱藏貢獻清單中的編輯]",
"rev-deleted-text-permission": "此頁面修訂已被 <strong>刪除</strong>。\n可至 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 取得詳細資訊。",
"mergehistory-empty": "沒有可以合併的修訂",
"mergehistory-success": "[[:$1]] 中 $3 次修訂已經成功地合併至 [[:$2]]。",
"mergehistory-fail": "不可以進行歷史合併,請重新檢查該頁面以及時間參數。",
- "mergehistory-fail-toobig": "由於超出$1個合併移動版本的上限,故此無法進行歷史合併。",
+ "mergehistory-fail-toobig": "超過 $1 個修訂移動的上限,無法進行歷史合併。",
"mergehistory-no-source": "來源頁面 $1 不存在。",
"mergehistory-no-destination": "目標頁面 $1 不存在。",
"mergehistory-invalid-source": "來源頁面必須使用有效的標題。",
"diff-multi-sameuser": "(未顯示相同使用者於中間所作的 $1 次修訂)",
"diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)",
"diff-multi-manyusers": "(未顯示由超過 $2 位使用者於中間所作的 $1 次修訂)",
- "difference-missing-revision": "{{PLURAL:$2|1次修訂|$2 次修訂}}差異($1)不存在。\n\n這通常是因為過時的頁面修訂差異連結被刪除。\n詳情請閱[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
+ "difference-missing-revision": "查無此差異 ($1) 中的{{PLURAL:$2|1 次修訂|$2 次修訂}}。\n\n這通常是因為差異的連結過時,頁面已被刪除。\n詳情資訊請參閱 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
"searchresults": "搜尋結果",
"searchresults-title": "\"$1\" 的搜尋結果",
"titlematches": "頁面標題符合",
"searchprofile-advanced-tooltip": "搜尋自訂命名空間",
"search-result-size": "$1 ($2 個字)",
"search-result-category-size": "$1 位成員 ($2 個子分類,$3 個檔案)",
- "search-result-score": "相關度:$1%",
"search-redirect": "(重新導向 $1)",
"search-section": "(章節 $1)",
"search-file-match": "(符合檔案內容)",
"preferences": "偏好設定",
"mypreferences": "偏好設定",
"prefs-edits": "編輯次數:",
- "prefsnologintext2": "請 $1 以更改您的偏好設定。",
+ "prefsnologintext2": "請登入以更改您的偏好設定。",
"prefs-skin": "外觀",
"skin-preview": "預覽",
"datedefault": "預設值",
"recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
"recentchangescount": "預設顯示的編輯數:",
"prefs-help-recentchangescount": "這包含最近變更、頁面歷史以及日誌。",
- "prefs-help-watchlist-token2": "è¨\82é\96±æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\96®æ\89\80é\9c\80ç\9a\84å¯\86é\91°ã\80\82\nä»»ä½\95人å\8fªè¦\81ç\9f¥é\81\93å¯\86é\91°å°±è\83½å¤ è®\80å\8f\96æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\8d\95,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
- "savedprefs": "您的偏好設定已儲存。",
+ "prefs-help-watchlist-token2": "è¨\82é\96±æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\96®æ\89\80é\9c\80ç\9a\84å¯\86é\91°ã\80\82\nä»»ä½\95人å\8fªè¦\81ç\9f¥é\81\93å¯\86é\91°å°±è\83½å¤ è®\80å\8f\96æ\82¨ç\9a\84ç\9b£è¦\96æ¸\85å\96®,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
+ "savedprefs": "已儲存您的偏好設定。",
"timezonelegend": "時區:",
"localtime": "當地時間:",
"timezoneuseserverdefault": "使用 Wiki 預設值 ($1)",
"prefs-help-variant": "您希望用於顯示本站內容的語種或拼寫語系。",
"yournick": "新的簽名:",
"prefs-help-signature": "在對話頁面上評論時應使用 \"<nowiki>~~~~</nowiki>\" 簽名,\n該符號會轉換成您的簽名與時間。",
- "badsig": "錯誤的原始簽名。請檢查HTML標籤。",
- "badsiglength": "您的簽名過長。\n它的長度不可超過$1個字元。",
+ "badsig": "錯誤的原始簽名。請檢查 HTML 標籤。",
+ "badsiglength": "您的簽名過長。\n它的長度不可超過 $1 個字元。",
"yourgender": "您希望如何被描述?",
"gender-unknown": "我不想說明",
"gender-male": "他編輯了 Wiki 頁面",
"prefs-tokenwatchlist": "密鑰",
"prefs-diffs": "差異",
"prefs-help-prefershttps": "此偏好設定將於您下次登入時生效。",
- "prefs-tabs-navigation-hint": "提示:您可通過左、右鍵於選項卡之間切換。",
+ "prefs-tabs-navigation-hint": "提示:您可使用左、右方向鍵切換頁籤。",
"email-address-validity-valid": "電子郵件位址有效",
- "email-address-validity-invalid": "請提供一個有效的電子郵件位址",
+ "email-address-validity-invalid": "請輸入一個有效的電子郵件位址",
"userrights": "使用者權限管理",
"userrights-lookup-user": "管理使用者群組",
- "userrights-user-editname": "輸入使用者名稱:",
+ "userrights-user-editname": "è«\8b輸å\85¥ä½¿ç\94¨è\80\85å\90\8d稱ï¼\9a",
"editusergroup": "編輯使用者群組",
- "editinguser": "變更使用者 '''[[User:$1|$1]]''' 的使用者權限 $2",
+ "editinguser": "變更使用者 <strong>[[User:$1|$1]]</strong> 的使用者權限 $2",
"userrights-editusergroup": "編輯使用者群組",
"saveusergroups": "儲存使用者群組",
"userrights-groupsmember": "所屬群組:",
"userrights-no-interwiki": "您沒有權限去編輯其它使用者在 Wiki 上的權限。",
"userrights-nodatabase": "資料庫 $1 不存在或不在本地主機的。",
"userrights-nologin": "您必須 [[Special:UserLogin|登入]] 管理員帳號以指定使用者權限。",
- "userrights-notallowed": "你無權加入或刪除使用者權限。",
+ "userrights-notallowed": "您沒有權限加入或刪除使用者權限。",
"userrights-changeable-col": "您可變更的群組",
"userrights-unchangeable-col": "您不可變更的群組",
"userrights-conflict": "使用者權限更改發生衝突!請重新檢視並確認你的更改。",
- "userrights-removed-self": "æ\82¨å·²æ\88\90å\8a\9f移é\99¤è\87ªå·±ç\9a\84æ¬\8aé\99\90ï¼\8cæ\95\85æ¤æ\82¨ç\84¡æ³\95å\86\8d次å\98å\8f\96æ¤é \81。",
+ "userrights-removed-self": "æ\82¨å·²æ\88\90å\8a\9f移é\99¤è\87ªå·±ç\9a\84æ¬\8aé\99\90ï¼\8cæ\82¨å·²ç\84¡æ³\95å\86\8d次å\98å\8f\96æ¤é \81é\9d¢。",
"group": "群組:",
"group-user": "使用者",
- "group-autoconfirmed": "自動確認使用者",
+ "group-autoconfirmed": "自動確認的使用者",
"group-bot": "機器人",
"group-sysop": "管理員",
"group-bureaucrat": "行政員",
- "group-suppress": "監督",
+ "group-suppress": "監督員",
"group-all": "(全部)",
"group-user-member": "{{GENDER:$1|使用者}}",
"group-autoconfirmed-member": "自動確認使用者",
"action-minoredit": "標示此編輯為小修訂",
"action-move": "移動此頁面",
"action-move-subpages": "移動此頁面與它的子頁面",
- "action-move-rootuserpages": "移動使用者根頁面",
+ "action-move-rootuserpages": "移動根使用者頁面",
"action-move-categorypages": "移動分類頁面",
"action-movefile": "移動此檔案",
"action-upload": "上傳此檔案",
"action-sendemail": "傳送電子郵件",
"action-editmywatchlist": "編輯您的監視清單",
"action-viewmywatchlist": "檢視您的監視清單",
- "action-viewmyprivateinfo": "檢視您的個人資料",
- "action-editmyprivateinfo": "編輯您的個人資料",
+ "action-viewmyprivateinfo": "檢視您的個人資訊",
+ "action-editmyprivateinfo": "編輯您的個人資訊",
"nchanges": "$1 次變更",
"enhancedrc-since-last-visit": "自上次訪問已有 $1",
"enhancedrc-history": "歷史",
"uploadbtn": "上傳檔案",
"reuploaddesc": "取消上傳並返回上傳表單",
"upload-tryagain": "送出修改後的檔案描述",
- "uploadnologin": "未登入",
+ "uploadnologin": "尚未登入",
"uploadnologintext": "您必須先 $1 才能上傳檔案。",
"upload_directory_missing": "缺少上傳目錄 ($1) 且網頁伺服器沒有權限建立。",
"upload_directory_read_only": "網頁伺服器沒有上傳目錄 ($1) 的寫入權限。",
"uploadlogpage": "上傳日誌",
"uploadlogpagetext": "以下清單為最近上傳的檔案。\n請檢視 [[Special:NewFiles|最新檔案圖庫]] 以視覺化的方式檢視。",
"filename": "檔案名稱",
- "filedesc": "æª\94æ¡\88æ\91\98è¦\81",
- "fileuploadsummary": "æª\94æ¡\88æ\91\98è¦\81ï¼\9a",
+ "filedesc": "摘要",
+ "fileuploadsummary": "摘要:",
"filereuploadsummary": "檔案變更:",
"filestatus": "版權狀態:",
"filesource": "來源:",
"uploadwarning": "上傳警告",
"uploadwarning-text": "請修改以下的檔案描述並重試。",
"savefile": "儲存檔案",
- "uploadedimage": "已上傳 \"[[$1]]\"",
- "overwroteimage": "已上傳新版本的 \"[[$1]]\"",
"uploaddisabled": "己停用上傳。",
"copyuploaddisabled": "己停用使用 URL 上傳。",
"uploaddisabledtext": "已停用檔案上傳。",
"watchthisupload": "監視此檔案",
"filewasdeleted": "先前已有同樣名稱的檔案上傳,後來被刪除。\n您應在上傳此檔案前檢查 $1。",
"filename-bad-prefix": "您上傳的檔案名稱以 <strong>\"$1\"</strong> 開頭,是不具任何描述意義的名稱,通常由數位相機自動產生。\n請替您的檔案使用一個更具描述意義的名稱。",
- "upload-success-subj": "上傳成功",
+ "upload-success-subj": "成功上傳",
"upload-success-msg": "您已成功使用 [$2] 上傳檔案,可於此處取得檔案:[[:{{ns:file}}:$1]]",
"upload-failure-subj": "上傳問題",
"upload-failure-msg": "您使用 [$2] 上傳的檔案發生問題:\n\n$1",
"licenses-edit": "編輯授權條款選項",
"license-nopreview": "(不可預覽)",
"upload_source_url": "(您選擇的檔案來自有效,可公開存取的 URL)",
- "upload_source_file": "(在您電腦上您選擇的檔案)",
+ "upload_source_file": "(您在您的電腦上選擇的檔案)",
"listfiles-delete": "刪除",
- "listfiles-summary": "此特殊頁面顯示所有上傳過的檔案。",
+ "listfiles-summary": "此特殊頁面顯示所有已上傳的檔案。",
"listfiles_search_for": "搜尋媒體名稱:",
"imgfile": "檔案",
"listfiles": "檔案列表",
"filehist-user": "使用者",
"filehist-dimensions": "尺寸",
"filehist-filesize": "檔案大小",
- "filehist-comment": "註解",
+ "filehist-comment": "備註",
"imagelinks": "檔案用途",
"linkstoimage": "下列 {{PLURAL:$1|頁面連結|$1 個頁面連結}}到此檔案:",
"linkstoimage-more": "超過$1個{{PLURAL:$1|頁面連結|頁面連結}}到這個檔案。\n此處只列出{{PLURAL:$1|首個連結|首$1個連結}}到此檔案的頁面。\n您也可以檢視[[Special:WhatLinksHere/$2|完整的清單]]。",
"download": "下載",
"unwatchedpages": "未監視的頁面",
"listredirects": "重新導向頁面清單",
- "listduplicatedfiles": "重複檔案列表",
- "listduplicatedfiles-summary": "以下列表中某檔案之最新版本與其他檔案之最新版本重複。進包含本地檔案",
+ "listduplicatedfiles": "重複檔案清單",
+ "listduplicatedfiles-summary": "此清單中包含最新版本的檔案與其他檔案重複的清單,本清單只顯示本地檔案。",
"listduplicatedfiles-entry": "[[:File:$1|$1]] 有[[$3|其他 $2 個重複檔案]]。",
"unusedtemplates": "未使用的樣版",
"unusedtemplatestext": "此頁面列出所有於 {{ns:template}} 命名空間下未被其他頁面引用的樣版。\n在刪除前,仍需檢查是否有連結這些樣版的其他頁面。",
"unusedtemplateswlh": "其他連結",
"randompage": "隨機頁面",
"randompage-nopages": "在{{PLURAL:$2|命名空間}}中沒有任何頁面:$1。",
- "randomincategory": "分類中的隨機頁面",
+ "randomincategory": "隨機分類頁面",
"randomincategory-invalidcategory": "\"$1\" 不是一個有效的分類名稱。",
- "randomincategory-nopages": "[[:Category:$1]]中沒有頁面。",
- "randomincategory-selectcategory": "å¾\9eå\88\86é¡\9eä¸ç\8d²å\8f\96é\9a¨æ©\9fé \81é\9d¢ï¼\9a$1 $2",
+ "randomincategory-nopages": "[[:Category:$1]] 中沒有任何頁面。",
+ "randomincategory-selectcategory": "å\8f\96å¾\97é\9a¨æ©\9fé \81é\9d¢æ\96¼å\88\86é¡\9eï¼\9a$1 $2ã\80\82",
"randomincategory-selectcategory-submit": "執行",
"randomredirect": "隨機重新導向",
"randomredirect-nopages": "在命名空間 \"$1\" 中沒有任何重新導向頁面。",
"statistics-articles": "內容頁面",
"statistics-pages": "頁面",
"statistics-pages-desc": "在 Wiki 上所有的頁面,包括對話頁面、重新導向頁面等。",
- "statistics-files": "已經上傳的檔案",
+ "statistics-files": "已上傳的檔案",
"statistics-edits": "自 {{SITENAME}} 成立以來的頁面編輯數",
"statistics-edits-average": "每頁平均編輯數",
"statistics-views-total": "檢視總數",
- "statistics-views-total-desc": "ä¸\8då\98å\9c¨é \81é\9d¢å\92\8cç\89¹æ®\8aé \81é\9d¢ç\9a\84æ\9f¥ç\9c\8bæ\95¸æ\9cªè¨\88å\85¥",
+ "statistics-views-total-desc": "ä¸\8då\8c\85å\90«ä¸\8då\98å\9c¨é \81é\9d¢è\88\87ç\89¹æ®\8aé \81é\9d¢ç\9a\84檢è¦\96æ\95¸",
"statistics-views-peredit": "每次編輯檢視數",
"statistics-users": "已註冊的 [[Special:ListUsers|使用者]]",
"statistics-users-active": "活動使用者",
"statistics-users-active-desc": "在最近 $1 天操作過的使用者",
- "statistics-mostpopular": "被查閱次數最多的頁面",
+ "statistics-mostpopular": "檢視最多次的頁面",
"pageswithprop": "擁有屬性的頁面",
- "pageswithprop-legend": "有頁面屬性的頁面",
+ "pageswithprop-legend": "æ\93\81æ\9c\89é \81é\9d¢å±¬æ\80§ç\9a\84é \81é\9d¢",
"pageswithprop-text": "此頁面用來查詢使用了指定屬性的頁面。",
"pageswithprop-prop": "屬性名稱:",
"pageswithprop-submit": "執行",
"specialpage-empty": "此報表無查無任何結果。",
"lonelypages": "孤立頁面",
"lonelypagestext": "下列頁面尚未被 {{SITENAME}} 中的其它頁面連結或引用。",
- "uncategorizedpages": "待分類頁面",
- "uncategorizedcategories": "待分類類別",
- "uncategorizedimages": "待分類檔案",
+ "uncategorizedpages": "未分類的頁面",
+ "uncategorizedcategories": "未分類的分類",
+ "uncategorizedimages": "未分類的檔案",
"uncategorizedtemplates": "待分類樣版",
"unusedcategories": "未使用的分類",
"unusedimages": "未使用的檔案",
- "popularpages": "ç\86±é»\9e頁面",
+ "popularpages": "ç\86±é\96\80頁面",
"wantedcategories": "需要的分類",
"wantedpages": "需要的頁面",
- "wantedpages-badtitle": "在結果組上的無效標題: $1",
+ "wantedpages-badtitle": "結果集合中的標題無效:$1",
"wantedfiles": "需要的檔案",
"wantedfiletext-cat": "以下檔案被使用,但不存在。外部儲存庫的檔案儘管現有,但可能會在此列出,任何此類的誤報將被<del>剔除</del>。此外,內嵌了不存在的檔案的網頁將在[[:$1]]列出。",
"wantedfiletext-cat-noforeign": "下列檔案已被使用但不存在。 除此之外,頁面已內嵌但不存在的檔案列於 [[:$1]]。",
"wantedfiletext-nocat": "以下檔案被使用,但不存在。外部儲存庫的文件儘管現有,但可能會在此列出,任何此類的誤報將被<del>剔除</del>。",
"wantedfiletext-nocat-noforeign": "下列檔案已被使用但不存在。",
"wantedtemplates": "需要的樣版",
- "mostlinked": "最多連結頁面",
- "mostlinkedcategories": "最多連結分類",
+ "mostlinked": "被連結最多的頁面",
+ "mostlinkedcategories": "被連結最多的分類",
"mostlinkedtemplates": "被引用最多的頁面",
- "mostcategories": "最多分類頁面",
- "mostimages": "最多連結檔案",
+ "mostcategories": "最多分類的頁面",
+ "mostimages": "被連結最多的檔案",
"mostinterwikis": "最多 Interwiki 連結的頁面",
- "mostrevisions": "最多修訂頁面",
+ "mostrevisions": "最多修訂的頁面",
"prefixindex": "所有頁面與字首",
"prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
"prefixindex-strip": "於清單中省略字首",
"protectedpages-summary": "此頁面列出目前受保護的頁面。 欲查詢受保護標題清單,請參考 [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]。",
"protectedpages-cascade": "只顯示連鎖的保護頁面",
"protectedpages-noredirect": "隱藏重新導向頁面",
- "protectedpagesempty": "在這些參數下沒有頁面正在保護。",
+ "protectedpagesempty": "目前沒有使用這些參數的受保護頁面。",
"protectedpages-timestamp": "日期時間",
"protectedpages-page": "頁面",
"protectedpages-expiry": "期限",
"protectedpages-unknown-performer": "不明的使用者",
"protectedtitles": "受保護標題",
"protectedtitles-summary": "此頁面列出目前受保護的標題。 欲查詢受保護頁面清單,請參考 [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]。",
- "protectedtitlesempty": "在這些參數之下並無標題正在保護。",
+ "protectedtitlesempty": "目前沒有使用這些參數的受保護標題。",
"listusers": "使用者清單",
"listusers-editsonly": "只顯示有編輯的使用者",
"listusers-creationsort": "依建立日期排序",
"newpages-username": "使用者名稱:",
"ancientpages": "最舊頁面",
"move": "移動",
- "movethispage": "移å\8b\95æ\9c¬é \81",
+ "movethispage": "移å\8b\95æ¤é \81é\9d¢",
"unusedimagestext": "下列為未被任何頁面使用的檔案。\n請注意,其它網站可能直接透過 URL 連結至檔案,所以這裡列出的檔案仍有可能被使用。",
"unusedcategoriestext": "下列分類沒有被其它頁面或者分類所使用。",
"notargettitle": "無目標",
"notargettext": "您尚未指定目標頁面或使用者以進行此項操作。",
- "nopagetitle": "無目標頁面",
+ "nopagetitle": "沒有此目標頁面",
"nopagetext": "您所指定的目標頁面並不存在。",
"pager-newer-n": "較新 $1 筆",
"pager-older-n": "較舊 $1 筆",
"booksources-go": "執行",
"booksources-text": "以下是一份銷售新書或二手書的列表,並可能有{{GENDER:|你|妳|你}}正尋找的書的進一步訊息:",
"booksources-invalid-isbn": "提供的ISBN號碼並不正確,請檢查原始複製來源號碼是否有誤。",
- "specialloguserlabel": "操作者:",
+ "specialloguserlabel": "執行者:",
"speciallogtitlelabel": "目標 (標題或使用者):",
"log": "日誌",
"all-logs-page": "所有公開日誌",
"allpages": "所有頁面",
"nextpage": "下一頁 ($1)",
"prevpage": "上一頁 ($1)",
- "allpagesfrom": "顯示從此處開始的頁面:",
- "allpagesto": "顯示從此處結束的頁面:",
+ "allpagesfrom": "顯示頁面開始於:",
+ "allpagesto": "顯示頁面結束於:",
"allarticles": "所有頁面",
"allinnamespace": "所有頁面 ($1 命名空間)",
"allpagessubmit": "執行",
"allpagesbadtitle": "指定的頁面標題無效、包含內部語言或內部 Wiki 的字首。\n它可能包含一個或多個的不能用於標題的字元。",
"allpages-bad-ns": "{{SITENAME}} 沒有 \"$1\" 命名空間。",
"allpages-hide-redirects": "隱藏重新導向頁面",
- "cachedspecial-viewing-cached-ttl": "你正在瀏覽本頁的緩存版本,至多可能存在$1的延遲。",
- "cachedspecial-viewing-cached-ts": "您正在閱讀此頁的緩存版本,這可能不是完整的版本。",
- "cachedspecial-refresh-now": "檢視最新。",
- "categories": "頁面分類",
+ "cachedspecial-viewing-cached-ttl": "你正在檢視此頁面的快取版本,最多會有 $1 的延遲。",
+ "cachedspecial-viewing-cached-ts": "你正在檢視此頁面的快取版本,可能不完全與實際相同。",
+ "cachedspecial-refresh-now": "檢視最新版本。",
+ "categories": "分類",
"categoriespagetext": "下列為包含頁面或媒體的{{PLURAL:$1|分類}}。\n[[Special:UnusedCategories|未使用的分類]] 不會在此顯示。\n請參考 [[Special:WantedCategories|需要的分類]]。",
- "categoriesfrom": "顯示由此項起之分類:",
- "special-categories-sort-count": "按數量排列",
- "special-categories-sort-abc": "按字母排列",
+ "categoriesfrom": "顯示分類開始於:",
+ "special-categories-sort-count": "依數量排列",
+ "special-categories-sort-abc": "依字母排列",
"deletedcontributions": "已刪除的使用者貢獻",
"deletedcontributions-title": "已刪除的使用者貢獻",
"sp-deletedcontributions-contribs": "貢獻",
"listgrouprights-key": "說明:\n* <span class=\"listgrouprights-granted\">已授予的權限</span>\n* <span class=\"listgrouprights-revoked\">已撤銷的權限</span>",
"listgrouprights-group": "群組",
"listgrouprights-rights": "權限",
- "listgrouprights-helppage": "Help:群組權限",
+ "listgrouprights-helppage": "Help:Group rights",
"listgrouprights-members": "(成員清單)",
"listgrouprights-addgroup": "加入的{{PLURAL:$2|一個|多個}}群組: $1",
"listgrouprights-removegroup": "移除的{{PLURAL:$2|一個|多個}}群組: $1",
"trackingcategories-desc": "分類收錄準則",
"noindex-category-desc": "命名空間允許,且含有魔術字 <code><nowiki>__NOINDEX__</nowiki></code> 未被機器人列入索引的頁面。",
"index-category-desc": "命名空間允許,且含有魔術字 <code><nowiki>__INDEX__</nowiki></code> 被機器人列入索引的頁面。",
- "post-expand-template-inclusion-category-desc": "展開顯示所有樣版後,頁面大小超出 <code>$wgMaxArticleSize</code> 限制,因此部份樣版將不會顯示。",
- "post-expand-template-argument-category-desc": "å\9c¨å±\95é\96\8b模樣版參數之後 (有些於三括號中,如 <code>{{{Foo}}}</code>),頁面大小超過<code>$wgMaxArticleSize</code> 設定的限制。",
+ "post-expand-template-inclusion-category-desc": "當展開所有模組,大小大於<code>$wgMaxArticleSize</code>,因此一些模組尚未展開",
+ "post-expand-template-argument-category-desc": "å±\95é\96\8b樣版參數之後 (有些於三括號中,如 <code>{{{Foo}}}</code>),頁面大小超過<code>$wgMaxArticleSize</code> 設定的限制。",
"expensive-parserfunction-category-desc": "頁面使用太多消耗系統資源的分析器函數 (如 <code>#ifexist</code>)。\n請參考 [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit]。",
- "broken-file-category-desc": "若該頁面包含損壞的檔案連結則新增分類 (內嵌檔案連結的檔案不存在時)",
- "hidden-category-category-desc": "此分類帶有<code><nowiki>__HIDDENCAT__</nowiki></code>,它預設防止於頁面分類連接盒中顯示。",
- "trackingcategories-nodesc": "並無說明。",
- "trackingcategories-disabled": "å\88\86é¡\9e被ç¦\81ç\94¨",
+ "broken-file-category-desc": "頁面包含損壞的檔案連結 (內嵌檔案連結的檔案不存在時)",
+ "hidden-category-category-desc": "該分類使用了 <code><nowiki>__HIDDENCAT__</nowiki></code>,可預設避免在頁面中顯示該分類的分類連結框。",
+ "trackingcategories-nodesc": "沒有可用的描述。",
+ "trackingcategories-disabled": "å·²å\81\9cç\94¨å\88\86é¡\9e",
"mailnologin": "沒有傳送位址",
"mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件位址才可以傳送信件給其他使用者。",
- "emailuser": "E-mail該使用者",
- "emailuser-title-target": "E-mail該{{GENDER:$1|使用者}}",
- "emailuser-title-notarget": "E-mail給使用者",
+ "emailuser": "Email 此使用者",
+ "emailuser-title-target": "Email 給此{{GENDER:$1|使用者}}",
+ "emailuser-title-notarget": "E-mail 給使用者",
"emailpage": "E-mail 給使用者",
"emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件位址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
"defemailsubject": "來自使用者 \"$1\" 於 {{SITENAME}} 寄來的電子郵件",
"email-legend": "傳送電子郵件給另一位 {{SITENAME}} 使用者",
"emailfrom": "寄件人:",
"emailto": "收件人:",
- "emailsubject": "主題:",
+ "emailsubject": "主旨:",
"emailmessage": "訊息:",
"emailsend": "傳送",
"emailccme": "傳送一份副本到我的電子郵件信箱。",
"emailccsubject": "您寄給 $1 的訊息副本:$2",
- "emailsent": "電子郵件已寄出",
- "emailsenttext": "您的電子郵件訊息已經寄出。",
- "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"E-mail該使用者\" 功能寄給 $2。",
+ "emailsent": "已寄出電子郵件",
+ "emailsenttext": "已寄出您的電子郵件訊息。",
+ "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"Email 給此使用者\" 功能寄給 $2。",
"usermessage-summary": "留給系統訊息。",
"usermessage-editor": "系統訊息",
"watchlist": "監視清單",
"mywatchlist": "監視清單",
"watchlistfor2": "$1 的監視清單 $2",
"nowatchlist": "您的監視清單沒有任何項目。",
- "watchlistanontext": "請 $1 以檢視或編輯您的監視清單。",
+ "watchlistanontext": "請先登入以檢視或修改在監控表的項目",
"watchnologin": "尚未登入",
"addwatch": "新增至監視清單",
"addedwatchtext": "已於[[Special:Watchlist|您的監視清單]]新增頁面 \"[[:$1]]\"。\n未來對此頁面及其關聯的對話頁面的變更將會在此清單中列出。",
"reverted": "還原到較早的版本",
"deletecomment": "原因:",
"deleteotherreason": "其它/額外的原因:",
- "deletereasonotherlist": "其它理由",
+ "deletereasonotherlist": "其它原因",
"deletereason-dropdown": "* 常見的刪除原因\n** 濫發廣告訊息\n** 破壞\n** 侵犯版權\n** 作者請求\n** 損壞的重新導向連結",
- "delete-edit-reasonlist": "編輯刪除理由",
+ "delete-edit-reasonlist": "編輯刪除原因",
"delete-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。",
"delete-warning-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。",
+ "delete-cantedit": "您沒有權限編輯此頁面,您無法刪除。",
"deleting-backlinks-warning": "<strong>警告:</strong>您正要刪除的頁面有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他頁面]]連結或引用。",
"rollback": "還原編輯",
"rollback_short": "還原",
"rollbackfailed": "還原失敗",
"cantrollback": "無法還原編輯;\n此頁面的最後貢獻者是唯一的作者。",
"alreadyrolled": "無法還原由 [[User:$2|$2]] ([[User talk:$2|對話]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]] 所作的最後一次編輯 [[:$1]],已有其他人編輯或還原了該頁面。\n\n最後一次編輯該頁面的使用者是 [[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": "已還原 $1 做的編輯;\n更變回最後由 $2 修訂的版本。",
- "sessionfailure-title": "登入資訊失敗",
+ "sessionfailure-title": "連線階段失敗",
"sessionfailure": "似乎您的登入會話有問題;\n為了防止會話劫持,這個操作已經被取消。\n請返回先前的頁面,重新載入該頁面,然後重試。",
"protectlogpage": "保護日誌",
"protectlogtext": "以下為變更頁面保護的列表。\n請參考 [[Special:ProtectedPages|受保護頁面列表]] 檢視目前受保護頁面。",
"protect-othertime-op": "其它時間",
"protect-existing-expiry": "已設定期限:$2 $3",
"protect-otherreason": "其它/額外的原因:",
- "protect-otherreason-op": "其它理由",
+ "protect-otherreason-op": "其它原因",
"protect-dropdown": "*常見的保護原因\n** 過度的破壞\n** 過多垃圾訊息\n** 反生產性的編輯戰\n** 高流量頁面",
"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,不限期:infinite",
"restriction-upload": "上傳",
"restriction-level-sysop": "全保護",
"restriction-level-autoconfirmed": "半保護",
- "restriction-level-all": "任何級別",
+ "restriction-level-all": "任何層級",
"undelete": "檢視已刪除的頁面",
"undeletepage": "檢視與還原已刪除的頁面",
"undeletepagetitle": "'''以下包含[[:$1]]的已刪除之修訂版本'''。",
- "viewdeletedpage": "檢視已刪除的頁面",
+ "viewdeletedpage": "檢視已刪除頁面",
"undeletepagetext": "以下的$1個頁面已經被刪除,但依然在檔案中並可以被恢復。\n檔案庫可能被定時清理。",
"undelete-fieldset-title": "還原修訂",
"undeleteextrahelp": "若要還原所有的頁面歷史,請取消勾選所有核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。\n若要還原指定的頁面歷史,請勾選要還原的修訂核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。",
"whatlinkshere-hidelinks": "$1 連結",
"whatlinkshere-hideimages": "$1 檔案連結",
"whatlinkshere-filters": "搜尋",
- "autoblockid": "自動查封 #$1",
+ "autoblockid": "自動封鎖 #$1",
"block": "封鎖使用者",
"unblock": "解除封鎖使用者",
- "blockip": "封鎖使用者",
+ "blockip": "封鎖{{GENDER:$1|使用者}}",
"blockip-legend": "封鎖使用者",
"blockiptext": "填寫以下單據可封鎖特定 IP 位址或使用者名稱的存取權限。\n這個動作應用來避免破壞行為,可根據 [[{{MediaWiki:Policy-url}}|管理政策]]。\n請在下方填寫一個具體的原因 (例如:引述一段破壞頁面的事實)。",
"ipaddressorusername": "IP 位址或使用者名稱:",
"ipbcreateaccount": "禁止建立帳號",
"ipbemailban": "禁止使用者傳送電子郵件",
"ipbenableautoblock": "自動封鎖此使用者最後使用的 IP 位址,以及所有之後嘗試編輯使用的 IP 位址",
- "ipbsubmit": "封禁該使用者",
- "ipbother": "其它時間:",
+ "ipbsubmit": "封鎖此使用者",
+ "ipbother": "其他時間:",
"ipboptions": "2小時:2 hours,1天:1 day,3天:3 days,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,無限期:infinite",
"ipbhidename": "在編輯及清單中隱藏使用者名稱",
- "ipbwatchuser": "監視這位使用者的使用者頁面以及其對話頁面",
+ "ipbwatchuser": "監視這位使用者的使用者頁面及其對話頁面",
"ipb-disableusertalk": "避免在封鎖此使用者的期間編輯自己的對話頁面",
"ipb-change-block": "使用現有設定重新封鎖使用者",
"ipb-confirm": "確認封鎖",
"ipb-unblock-addr": "解除封鎖 $1",
"ipb-unblock": "解除封鎖使用者名稱或 IP 位址",
"ipb-blocklist": "檢視目前的封鎖",
- "ipb-blocklist-contribs": "$1的貢獻",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}} 的貢獻",
"unblockip": "解除封鎖使用者",
"unblockiptext": "填寫以下單據以取消先前封鎖的 IP 位址或使用者名稱。",
"ipusubmit": "移除這個封鎖",
"unblocked": "[[User:$1|$1]] 的封鎖已經解除。",
- "unblocked-range": "$1已被解封",
+ "unblocked-range": "已解除封鎖 $1。",
"unblocked-id": "已經移除 $1 的封鎖。",
"blocklist": "已封鎖的使用者",
"ipblocklist": "已封鎖的使用者",
"blocklist-nousertalk": "無法編輯自己的對話頁面",
"ipblocklist-empty": "封鎖清單無任何資訊。",
"ipblocklist-no-results": "指定的 IP 位址或使用者名稱尚未被封鎖。",
- "blocklink": "查封",
+ "blocklink": "封鎖",
"unblocklink": "解除封鎖",
"change-blocklink": "變更封鎖",
"contribslink": "貢獻",
"emaillink": "傳送電子郵件",
"autoblocker": "您的 IP 位址因最近被 [[User:$1|$1]] 使用過而被自動封鎖。\n封鎖 $1 的原因為 \"$2\"",
- "blocklogpage": "查封日誌",
+ "blocklogpage": "封鎖日誌",
"blocklog-showlog": "此使用者先前被封鎖過。\n以下為封鎖紀錄以供參考:",
"blocklog-showsuppresslog": "此使用者先前被封鎖並且隱藏過。\n以下為禁止顯示紀錄以供參考:",
"blocklogentry": "已封鎖 [[$1]] 的期限至 $2 $3",
"reblock-logentry": "更改 [[$1]] 的封鎖期限至 $2 $3",
"blocklogtext": "此為使用者的封鎖及取消封鎖記錄。\n不包自動封鎖的 IP 位址。\n請參考 [[Special:BlockList|封鎖清單]] 以檢視目前的封鎖。",
- "unblocklogentry": "已解封 $1",
+ "unblocklogentry": "已解除封鎖 $1",
"block-log-flags-anononly": "僅限匿名使用者",
"block-log-flags-nocreate": "停用帳號建立",
"block-log-flags-noautoblock": "停用自動封鎖",
"ipb_expiry_temp": "隱藏使用者名稱的封鎖不可設定期限。",
"ipb_hide_invalid": "無法禁止顯示此帳號;它擁有超過 $1 次的編輯。",
"ipb_already_blocked": "已經封鎖 \"$1\"。",
- "ipb-needreblock": "$1已經被封鎖。您是否想更改這個設定?",
+ "ipb-needreblock": "$1 已經被封鎖。您是否想更改設定?",
"ipb-otherblocks-header": "其他{{PLURAL:$1|封鎖}}",
"unblock-hideuser": "由於此使用者名稱已被設為隱藏,您無法解除封鎖這個使用者。",
"ipb_cant_unblock": "錯誤:查無封鎖 ID $1,可能已被解除封鎖。",
"movenologintext": "您必須是已註冊的使用者並且 [[Special:UserLogin|登入]] 才可移動頁面。",
"movenotallowed": "您沒有權限移動頁面。",
"movenotallowedfile": "您沒有權限移動檔案。",
- "cant-move-user-page": "您沒有權限移動使用者頁面 (除使用者子頁面外)。",
+ "cant-move-user-page": "您沒有權限移動使用者頁面 (子頁面除外)。",
"cant-move-to-user-page": "您沒有權限移動頁面至使用者頁面 (除使用者子頁面外)。",
"cant-move-category-page": "您沒有權限移動分類頁面。",
"cant-move-to-category-page": "您沒有權限移動頁面至分類頁面。",
"newtitle": "新標題:",
"move-watch": "監視來源以及目標頁面",
"movepagebtn": "移動頁面",
- "pagemovedsub": "移動成功",
+ "pagemovedsub": "已成功移動",
"movepage-moved": "<strong>已移動 \"$1\" 至 \"$2\"</strong>",
"movepage-moved-redirect": "已建立重新導向頁面。",
"movepage-moved-noredirect": "已禁止建立重新導向頁面。",
"importtext": "請使用 [[Special:Export|匯出工具]] 從來源 Wiki 匯出檔案,\n儲存至您的電腦後再上傳到這裡。",
"importstart": "正在匯入頁面...",
"import-revision-count": "$1 個修訂",
- "importnopages": "沒有匯入的頁面。",
+ "importnopages": "æ²\92æ\9c\89å\8f¯å\8c¯å\85¥ç\9a\84é \81é\9d¢ã\80\82",
"imported-log-entries": "已匯入 $1 筆日誌項目。",
"importfailed": "匯入失敗:<nowiki>$1</nowiki>",
"importunknownsource": "不明的來源匯入類型",
"importcantopen": "無法開啟匯入檔案",
"importbadinterwiki": "無效的 Interwiki 連結",
- "importsuccess": "å\8c¯å\85¥å®\8cæ\88\90!",
+ "importsuccess": "å·²å®\8cæ\88\90å\8c¯å\85¥!",
"importnosources": "未定義任何 Transwiki 匯入來源且已關閉使用歷史記錄上傳功能。",
"importnofile": "未上傳匯入檔案。",
"importuploaderrorsize": "上載匯入檔案失敗。\n檔案大小超過允許上傳大小。",
"import-error-create": "您沒有權限建立頁面 \"$1\",無法匯入。",
"import-error-interwiki": "頁面 \"$1\" 的名稱已保留作為外部連結 (Interwiki) 使用,無法匯入。",
"import-error-special": "頁面 \"$1\" 屬於不允許頁面的特殊命名空間,無法匯入。",
- "import-error-invalid": "é \81é\9d¢ \"$1\" å\9b å\85¶å\90\8d稱å\9c¨æ¤wiki無效,無法匯入。",
+ "import-error-invalid": "é \81é\9d¢ \"$1\" å\8c¯å\85¥æ¤ Wiki ç\9a\84å\90\8d稱無效,無法匯入。",
"import-error-unserialize": "頁面 \"$1\" 的修訂 $2 無法反序列反。 此修訂使用 $3 內容模型以 $4 的方式序列化。",
"import-error-bad-location": "此 Wiki 的頁面 \"$1\" 不支援使用內容模型 $3,修訂 $2 無法儲存至該頁面 。",
"import-options-wrong": "{{PLURAL:$2|選項}}錯誤:<nowiki>$1</nowiki>",
"tooltip-ca-nstab-special": "此頁面為特殊頁面,無法編輯",
"tooltip-ca-nstab-project": "檢視專案頁面",
"tooltip-ca-nstab-image": "檢視檔案頁面",
- "tooltip-ca-nstab-mediawiki": "檢è¦\96系統è³\87è¨\8a",
+ "tooltip-ca-nstab-mediawiki": "檢è¦\96系統è¨\8aæ\81¯",
"tooltip-ca-nstab-template": "檢視樣版",
"tooltip-ca-nstab-help": "檢視說明頁面",
"tooltip-ca-nstab-category": "檢視分類頁面",
"pageinfo-header-restrictions": "頁面保護",
"pageinfo-header-properties": "頁面屬性",
"pageinfo-display-title": "顯示標題",
- "pageinfo-default-sort": "預設排序字:",
+ "pageinfo-default-sort": "預設排序方式:",
"pageinfo-length": "頁面長度 (位元組)",
- "pageinfo-article-id": "頁面編號",
+ "pageinfo-article-id": "頁面 ID",
"pageinfo-language": "頁面內容語言",
"pageinfo-content-model": "頁面內容模型",
"pageinfo-robot-policy": "由機器人建立索引",
"pageinfo-watchers": "頁面監視者數",
"pageinfo-few-watchers": "少於 $1 名監視者",
"pageinfo-redirects-name": "指向此頁面的重新導向頁面數量",
- "pageinfo-subpages-name": "此頁面的子頁面",
+ "pageinfo-subpages-name": "此頁面的子頁面數",
"pageinfo-subpages-value": "$1 ($2 個重新導向頁面; $3 個非重新導向頁面)",
"pageinfo-firstuser": "頁面建立者",
"pageinfo-firsttime": "頁面建立日期",
"pageinfo-category-info": "分類資訊",
"pageinfo-category-pages": "頁面數量",
"pageinfo-category-subcats": "子分類數量",
- "pageinfo-category-files": "編輯數量",
+ "pageinfo-category-files": "檔案數量",
"markaspatrolleddiff": "標記為已巡查",
"markaspatrolledtext": "標記此頁面為已巡查",
"markedaspatrolled": "己標記為已巡查",
"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-nohires": "無更高解像度可提供。",
+ "file-nohires": "無更高解析度可提供。",
"svg-long-desc": "SVG 檔案,表面大小:$1 × $2 像素,檔案大小:$3",
"svg-long-desc-animated": "SVG 動畫檔案,表面大小:$1 × $2 像素,檔案大小:$3",
"svg-long-error": "無效的 SVG 檔案:$1",
"exif-gpsaltituderef": "海拔參考值",
"exif-gpsaltitude": "海拔",
"exif-gpstimestamp": "GPS 時間 (原子鐘)",
- "exif-gpssatellites": "測量使用的衛星",
+ "exif-gpssatellites": "測量用的衛星",
"exif-gpsstatus": "接收器狀態",
"exif-gpsmeasuremode": "測量模式",
"exif-gpsdop": "測量精度",
"exif-pngfilecomment": "PNG 檔案備註",
"exif-disclaimer": "免責聲明",
"exif-contentwarning": "內容警告",
- "exif-giffilecomment": "GIF註釋",
+ "exif-giffilecomment": "GIF 檔案備註",
"exif-intellectualgenre": "項目類型",
"exif-subjectnewscode": "主題代碼",
"exif-scenecode": "IPTC現場代碼",
"exif-compression-6": "JPEG (舊)",
"exif-copyrighted-true": "受版權保護",
"exif-copyrighted-false": "版權所屬者不明",
- "exif-unknowndate": "æ\9cªç\9f¥ç\9a\84æ\97¥æ\9c\9f",
+ "exif-unknowndate": "æ\97¥æ\9c\9fä¸\8dæ\98\8e",
"exif-orientation-1": "標準",
"exif-orientation-2": "水平翻轉",
"exif-orientation-3": "旋轉 180°",
"exif-exposureprogram-7": "人像模式 (用於近距離照片,對焦不在背景)",
"exif-exposureprogram-8": "風景模式 (用於風景照片,對焦在背景)",
"exif-subjectdistance-value": "$1 尺",
- "exif-meteringmode-0": "未知",
+ "exif-meteringmode-0": "不明",
"exif-meteringmode-1": "平均",
"exif-meteringmode-2": "中心加權平均",
"exif-meteringmode-3": "點測",
"exif-meteringmode-5": "模式",
"exif-meteringmode-6": "部分",
"exif-meteringmode-255": "其他",
- "exif-lightsource-0": "未知",
+ "exif-lightsource-0": "不明",
"exif-lightsource-1": "日光",
"exif-lightsource-2": "螢光燈",
"exif-lightsource-3": "鎢絲燈 (白熾燈)",
"exif-sensingmethod-5": "連續彩色區域傳感器",
"exif-sensingmethod-7": "三線傳感器",
"exif-sensingmethod-8": "連續彩色線性傳感器",
- "exif-filesource-3": "數碼相機",
+ "exif-filesource-3": "數位相機",
"exif-scenetype-1": "直接照像圖片",
"exif-customrendered-0": "標準處理",
"exif-customrendered-1": "自定義處理",
"exif-sharpness-0": "標準",
"exif-sharpness-1": "低",
"exif-sharpness-2": "高",
- "exif-subjectdistancerange-0": "未知",
+ "exif-subjectdistancerange-0": "不明",
"exif-subjectdistancerange-1": "巨集",
"exif-subjectdistancerange-2": "近景",
"exif-subjectdistancerange-3": "遠景",
"exif-dc-rights": "權利",
"exif-dc-source": "來源媒體",
"exif-dc-type": "介質類型",
- "exif-rating-rejected": "拒絕",
+ "exif-rating-rejected": "已拒絕",
"exif-isospeedratings-overflow": "大於 65535",
"exif-iimcategory-ace": "藝術、文化與娛樂",
"exif-iimcategory-clj": "犯罪與法律",
"watchlistall2": "全部",
"namespacesall": "全部",
"monthsall": "全部",
- "confirmemail": "確èª\8dé\83µç®±位址",
+ "confirmemail": "確èª\8dé\9b»å\90é\83µä»¶位址",
"confirmemail_noemail": "您尚未於 [[Special:Preferences|偏好設定]] 輸入一個有效的電子郵件位址。",
"confirmemail_text": "{{SITENAME}}要求您在使用郵件功能之前驗證您的郵箱位址。\n點選以下按鈕可向您的郵箱傳送一封確認郵件。該郵件包含有一行代碼連結;\n請在您的瀏覽器中載入此連結以確認您的郵箱位址是有效的。",
"confirmemail_pending": "確認碼已傳送至您的電子郵件,\n若您才剛建立好您的帳號,可能需要稍後幾分鐘才能收到。\n若沒有收到,請再重新申請一次確認碼。",
- "confirmemail_send": "é\83µç\99¼確認代碼",
- "confirmemail_sent": "確認郵件已寄出。",
+ "confirmemail_send": "é\9b»å\90é\83µä»¶å¯\84é\80\81確認代碼",
+ "confirmemail_sent": "已寄出確認電子郵件。",
"confirmemail_oncreate": "一個確認代碼已經被傳送到您的郵箱。該代碼並不要求您進行登入,\n但若您要啟用在此 wiki 上的任何基於電子郵件的功能,您必須先提交此代碼。",
"confirmemail_sendfailed": "{{SITENAME}}無法傳送確認郵件,請檢查郵箱位址是否包含非法字元。\n\n郵件傳送員回應: $1",
"confirmemail_invalid": "無效的確認碼,該代碼可能已經過期。",
- "confirmemail_needlogin": "您需要$1以確認您的郵箱位址。",
+ "confirmemail_needlogin": "請 $1 以確認您的電子郵件地址。",
"confirmemail_success": "您的郵箱已經被確認。您現在可以[[Special:UserLogin|登入]]並使用此網站了。",
- "confirmemail_loggedin": "您的郵箱位址現下已被確認。",
- "confirmemail_subject": "{{SITENAME}}郵箱位址確認",
+ "confirmemail_loggedin": "已確認您的電子郵件地址。",
+ "confirmemail_subject": "{{SITENAME}} 電子郵件地址確認",
"confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1) 已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件位址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
"confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
"confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以啟用在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
- "confirmemail_invalidated": "電郵位址確認已取消",
- "invalidateemail": "取消電郵確認",
+ "confirmemail_invalidated": "已取消電子郵件地址確認",
+ "invalidateemail": "取消電子郵件確認",
"scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
"scarytranscludefailed": "[樣版 $1 讀取失敗]",
"scarytranscludefailed-httpstatus": "[樣版 $1 讀取失敗:HTTP $2]",
- "scarytranscludetoolong": "[URL 網址太長]",
+ "scarytranscludetoolong": "[URL 過長]",
"deletedwhileediting": "<strong>警告:</strong>此頁在您開始編輯之後已經被刪除﹗",
"confirmrecreate": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,原因為:\n: <em>$2</em>\n請確認您是否真的要重新建立此頁面。",
"confirmrecreate-noreason": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,請確認您是否真的要重新建立此頁面。",
"version-hook-name": "連結名稱",
"version-hook-subscribedby": "署名",
"version-version": "($1)",
- "version-no-ext-name": "[無名]",
+ "version-no-ext-name": "[未命名]",
"version-license": "MediaWiki 授權條款",
"version-ext-license": "授權條款",
"version-ext-colheader-name": "擴充套件",
"version-skin-colheader-name": "外觀",
"version-ext-colheader-version": "版本",
"version-ext-colheader-license": "授權條款",
- "version-ext-colheader-description": "說明",
+ "version-ext-colheader-description": "描述",
"version-ext-colheader-credits": "作者",
"version-license-title": "$1 的授權條款",
"version-license-not-found": "查無此擴充套件的詳細授權條款資訊。",
"specialpages-note": "* 一般特殊頁面。\n* <span class=\"mw-specialpagerestricted\">受限制的特殊頁面。</span>",
"specialpages-group-maintenance": "維護報表",
"specialpages-group-other": "其它特殊頁面",
- "specialpages-group-login": "登入/建立新帳號",
+ "specialpages-group-login": "登入 / 建立帳號",
"specialpages-group-changes": "最近變更與日誌",
"specialpages-group-media": "媒體上傳與報表",
"specialpages-group-users": "使用者與權限",
"tags-tag": "標籤名稱",
"tags-display-header": "在更改清單中的出現方式",
"tags-description-header": "完整含意說明",
- "tags-active-header": "å\98æª\94?",
+ "tags-active-header": "å\95\9fç\94¨?",
"tags-hitcount-header": "已加上標籤的更改",
"tags-active-yes": "是",
"tags-active-no": "否",
"compare-invalid-title": "所指定標題無效。",
"compare-title-not-exists": "所指定的話題不存在。",
"compare-revision-not-exists": "所指定的修訂不存在。",
- "dberr-problems": "歉!這個網站出現了一些技術上的問題。",
+ "dberr-problems": "æ\8a±æ\89ï¼\81é\80\99å\80\8b網ç«\99å\87ºç\8f¾äº\86ä¸\80äº\9bæ\8a\80è¡\93ä¸\8aç\9a\84å\95\8fé¡\8cã\80\82",
"dberr-again": "嘗試等候數分鐘後,然後再試。",
"dberr-info": "(無法連線資料庫伺服器:$1)",
"dberr-info-hidden": "(無法連線資料庫伺服器)",
"logentry-rights-rights": "$1 {{GENDER:$2|已更改}} $3 的群組成員資格由 $4 成為 $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|已更改}} $3 的群組成員資格",
"logentry-rights-autopromote": "$1 已自動{{GENDER:$2|提升}}從 $4 成為 $5",
+ "logentry-upload-upload": "$1 {{GENDER:$2|已上傳}} $3",
+ "logentry-upload-overwrite": "$1 {{GENDER:$2|上傳了}}新版本的 $3",
+ "logentry-upload-revert": "$1 {{GENDER:$2|已上傳}} $3",
"rightsnone": "(無)",
"feedback-bugornote": "如果您準備要詳細描述一個技術問題,請至 [$1 回報問題]。\n或您可以使用以下的簡易表單回報問題,您的使用者名稱與評論將被新增到頁面 \"[$3 $2]\"。",
"feedback-subject": "主旨:",
"expand_templates_intro": "本特殊頁面會將文字中的樣版展開,可以包含支援的分析程式語法,如 <code><nowiki>{{</nowiki>#language:…}}</code> 與變數如 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>。\n實際上,絕大部分在雙括號中的內容都會被展開。",
"expand_templates_title": "上下文標題,用於 {{FULLPAGENAME}} 等:",
"expand_templates_input": "輸入文字:",
- "expand_templates_output": "結果:",
+ "expand_templates_output": "結果",
"expand_templates_xml_output": "XML 輸出",
"expand_templates_html_output": "原始 HTML 輸出",
"expand_templates_ok": "確定",
"action-pagelang": "更改頁面語言",
"log-name-pagelang": "更改語言日誌",
"log-description-pagelang": "這是頁面語言更改日誌。",
- "logentry-pagelang-pagelang": "$1 {{GENDER:$2|已更改}}頁面 $3 的語言從 $4 到 $5。"
+ "logentry-pagelang-pagelang": "$1 {{GENDER:$2|已更改}}頁面 $3 的語言從 $4 到 $5。",
+ "default-skin-not-found": "注意! 此維基預設的介面(<code>$wgDefaultSkin</code>), <code>$1</code>目前無法使用.",
+ "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (已開啟)",
+ "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''已關閉''')"
}
*
*/
+$digitTransformTable = array();
+
+$separatorTransformTable = array(
+ '.' => ',',
+ ',' => '.'
+);
+
$fallback = 'ar';
'Kategorie_Diskussion' => NS_CATEGORY_TALK,
);
+// Remove German aliases
+$namespaceGenderAliases = array();
+
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
$linkTrail = '/^([äöüėëijßəğåůæœça-z]+)(.*)$/sDu';
+// Remove German aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Activeusers' => array( 'Aktive', 'AktiveMetmaacher', 'Aktive_Metmaacher', 'AktiveMedmaacher', 'Aktive_Medmaacher' ),
'Allmessages' => array( 'MediaWiki-Appachtemang' ),
'Bild_Diskussioun' => NS_FILE_TALK,
);
+// Remove German aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Activeusers' => array( 'Aktiv_Benotzer' ),
'Allmessages' => array( 'All_Systemmessagen' ),
'ymd both' => 'H:i, Y M j.',
);
+// Remove German aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Allmessages' => array( 'Systemnarichten' ),
'Allpages' => array( 'Alle Sieden' ),
'Kategorie_Diskussion' => NS_CATEGORY_TALK,
);
+// Remove German aliases
+$namespaceGenderAliases = array();
+
$specialPageAliases = array(
'Listadmins' => array( 'Verwalter', 'Administratoren' ),
'Listbots' => array( 'Waddefresser', 'Bots' ),
'Kadegorie_Dischbediere' => NS_CATEGORY_TALK,
);
+// Remove German aliases
+$namespaceGenderAliases = array();
+
'Watchlist' => array( 'Bäoobôchdungslisdâ' ),
);
+// Remove German aliases
+$namespaceGenderAliases = array();
+
/**
* Private constructor.
+ * @param string $rule
*/
protected function __construct( $rule ) {
$this->rule = $rule;
/**
* Throw an error
+ * @param string $message
*/
protected function error( $message ) {
throw new CLDRPluralRuleError( $message );
CREATE TABLE /*$wgDBprefix*/hitcounter (
hc_id INTEGER UNSIGNED NOT NULL
-) ENGINE=HEAP MAX_ROWS=25000;
+) ENGINE=MEMORY MAX_ROWS=25000;
--- Add indexes to the mime types in image for use on Special:MIMEsearch,
+-- Add indexes to the MIME types in image for use on Special:MIMEsearch,
-- changes a query like
--
-- SELECT img_name FROM image WHERE img_major_mime = "image" AND img_minor_mime = "svg";
pf_memory float NOT NULL default 0,
pf_name varchar(255) NOT NULL default '',
pf_server varchar(30) NOT NULL default ''
-) ENGINE=HEAP;
+) ENGINE=MEMORY;
CREATE UNIQUE INDEX /*i*/pf_name_server ON /*_*/profiling (pf_name, pf_server);
\ No newline at end of file
$ns = 0;
}
+ # Namespace which no longer exists. Put the page in the main namespace
+ # since we don't have any idea of the old namespace name. See bug 68501.
+ if ( !MWNamespace::exists( $ns ) ) {
+ $ns = 0;
+ }
+
$clean = 'Broken/' . $prior;
$verified = Title::makeTitleSafe( $ns, $clean );
if ( $verified->exists() ) {
}
}
if ( $mime ) {
- # Use custom handling to serve files with a known mime type
+ # Use custom handling to serve files with a known MIME type
# This way we can serve things like .svg files that the built-in
# PHP webserver doesn't understand.
# ;) Nicely enough we just happen to bundle a mime.types file
aifc
aiff
aiprop
+airtel
aisort
ajaxwatch
al
allpagesprefix
allpagesredirect
allpagessubmit
+allpartners
allredirects
allrev
alltitles
anchorencode
and
andconvert
+andreescu
andtitle
anon
anoneditwarning
autogenerated
autohide
autoload
-autoload
autoloader
autoloaders
autoloading
balancer
balancers
banjar
+barebone
barstein
base
basefont
booksources
bool
boolean
+bordercolor
borderhack
bot
botedit
ceebc
cellpadding
cellspacing
+cellulant
central
centralauth
centralnotice
danielc
darr
datalen
+datapath
dataset
datasets
datasize
dump
dumpfm
dupfunc
+dupl
duplicatefiles
duplicatesoffile
dvips
epcoordinator
epinstructor
eponline
+eqiad
erevoke
errno
error
forceditsummary
forceeditsummary
forcelinkupdate
+forcerecursivelinkupdate
forcetoc
forcontent
formaction
ilto
im
image
+imagecolorallocate
imagegetsize
imageinfo
imageinvalidfilename
iwprefix
iwtitle
iwurl
+ized
javascript
javascripttest
jbartsh
lastedit
lasteditor
lastedittime
+lastfile
lastlink
lastmod
lastmodifiedat
linkcolour
linkprefix
linkprefixcharset
+linkpurge
links
linkstoimage
linktbl
mailto
mainmodule
mainpage
+maint
maintainership
makesafe
male
mediaqueries
mediatype
mediawarning
+mediawiki
mediawiki's
mediawikipage
megapixels
mtype
mullane
multi
+multiactions
multibyte
multicast
multipage
nextrevision
nextval
nfkc
+nfkd
nginx
nheight
niklas
openssl's
openxml
openxmlformats
+operamini
oplus
oppositedm
optgroup
ordf
ordm
org
+orghttp
origcategory
ortime
oslash
pagetriagetemplate
pageurl
pageview
+pango
param
parameters
paraminfo
plusminus
plusmn
pname
+png'd
pnmtojpeg
pnmtopng
+pointsize
poolcounter
popts
popularpages
sm
smaxage
smil
+smpp
+sms's
+smscontent
+smslogs
smtp
snippet
sodipodi
stable
stablesettings
stansvik
+starcode
start
startid
startime
storedversion
strcasecmp
strcmp
+strftime
string
stripos
stripslashes
tags
tagset
tagstack
+tahoma
tailorings
talk
talkable
topbar
toplevel
toplinks
+topojson
toponly
torev
torevid
true
truespeed
trustworthy
+truteq
truthy
tsearch
tsquery
unhidden
unhide
unidata
+unidecode
unindent
unindexed
uniq
useskin
useto
usort
+usrmonth
+ussd
+ussdcontent
ustar
ustoken
utfnormal
vpad
vrml
vslow
+vumi
vvcv
vxml
wais
wddx
wddxfm
weblog
+weblogs
webm
webp
webrequest
wikiloveimagelog
wikimedia
wikimediacommons
+wikimediafoundation
+wikinews
wikipage
wikipedia
wikipedian
wikipedias
+wikiquote
wikis
+wikisource
wikisyntax
wikitable
wikitables
wikitech
wikitext
wikiuser
+wikiversity
+wikivoyage
wiktionary
wincache
wininet
wmlsc
wmlscript
wmlscriptc
+wmnet
wordcount
wordprocessingml
wordwg
writerights
wrongpassword
x
+xanalytics
xbitmap
xcache
xcancel
yourwiki
yuml
yyyymmddhhiiss
+zcmd
zerobanner
zerobar
zerobutton
zerodontask
zerodot
zeroinfo
+zeronet
zeroportal
+zfile
zhdaemon
zhengzhu
zhtable
zijdel
+zlang
zlib
zoffset
zrma
/**
* Get the hook documentation, either locally or from MediaWiki.org
- * @return array of documented hooks
+ * @return Array of documented hooks
*/
private function getHooksFromDoc( $doc ) {
if ( $this->hasOption( 'online' ) ) {
/**
* Get hooks from a local file (for example docs/hooks.txt)
- * @param string $doc filename to look in
- * @return array Array of documented hooks
+ * @param string $doc Filename to look in
+ * @return Array of documented hooks
*/
private function getHooksFromLocalDoc( $doc ) {
$m = array();
/**
* Get hooks from www.mediawiki.org using the API
- * @return array of documented hooks
+ * @return Array of documented hooks
*/
private function getHooksFromOnlineDoc() {
// All hooks
/**
* Get hooks from a PHP file
* @param string $file Full filename to the PHP file.
- * @return array of hooks found.
+ * @return Array of hooks found.
*/
private function getHooksFromFile( $file ) {
$content = file_get_contents( $file );
/**
* Get hooks from the source code.
* @param string $path Directory where the include files can be found
- * @return array Array of hooks found.
+ * @return Array of hooks found.
*/
private function getHooksFromPath( $path ) {
$hooks = array();
/**
* Get bad hooks (where the hook name could not be determined) from a PHP file
* @param string $file Full filename to the PHP file.
- * @return array Array of bad wfRunHooks() lines
+ * @return Array of bad wfRunHooks() lines
*/
private function getBadHooksFromFile( $file ) {
$content = file_get_contents( $file );
/**
* Get bad hooks from the source code.
* @param string $path Directory where the include files can be found
- * @return array Array of bad wfRunHooks() lines
+ * @return Array of bad wfRunHooks() lines
*/
private function getBadHooksFromPath( $path ) {
$hooks = array();
--- /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
+ * @author Aaron Schulz
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+class FindMissingFiles extends Maintenance {
+ function __construct() {
+ parent::__construct();
+
+ $this->mDescription = 'Find registered files with no corresponding file.';
+ $this->addOption( 'start', 'Starting file name', false, true );
+ $this->setBatchSize( 200 );
+ }
+
+ function execute() {
+ $lastName = $this->getOption( 'start', '' );
+
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $dbr = $repo->getSlaveDB();
+ $be = $repo->getBackend();
+
+ do {
+ $res = $dbr->select( 'image',
+ 'img_name',
+ array( "img_name >= " . $dbr->addQuotes( $lastName ) ),
+ __METHOD__,
+ array( 'ORDER BY' => 'img_name', 'LIMIT' => $this->mBatchSize )
+ );
+
+ // Check if any of these files are missing...
+ $pathsByName = array();
+ foreach ( $res as $row ) {
+ $file = $repo->newFile( $row->img_name );
+ $pathsByName[$row->img_name] = $file->getPath();
+ $lastName = $row->img_name;
+ }
+ $be->preloadFileStat( array( 'srcs' => $pathsByName ) );
+ foreach ( $pathsByName as $path ) {
+ if ( $be->fileExists( array( 'src' => $path ) ) === false ) {
+ $this->output( "$path\n" );
+ }
+ }
+
+ // Find all missing old versions of any of the files in this batch...
+ if ( count( $pathsByName ) ) {
+ $ores = $dbr->select( 'oldimage',
+ array( 'oi_name', 'oi_archive_name' ),
+ array( 'oi_name' => array_keys( $pathsByName ) ),
+ __METHOD__
+ );
+ foreach ( $ores as $row ) {
+ if ( !strlen( $row->oi_archive_name ) ) {
+ continue; // broken row
+ }
+ $file = $repo->newFromArchiveName( $row->oi_name, $row->oi_archive_name );
+ $path = $file->getPath();
+ if ( $be->fileExists( array( 'src' => $path ) ) === false ) {
+ $this->output( "$path\n" );
+ }
+ }
+ }
+ } while ( $res->numRows() >= $this->mBatchSize );
+ }
+}
+
+$maintClass = 'FindMissingFiles';
+require_once RUN_MAINTENANCE_IF_MAIN;
s23wiki|http://s23.org/wiki/$1|0
seattlewireless|http://seattlewireless.net/$1|0
senseislibrary|http://senseis.xmp.net/?$1|0
+shoutwiki|http://www.shoutwiki.com/wiki/$1|0
sourceforge|http://sourceforge.net/$1|0
sourcewatch|http://www.sourcewatch.org/index.php?title=$1|0
squeak|http://wiki.squeak.org/squeak/$1|0
theopedia|http://www.theopedia.com/$1|0
twiki|http://twiki.org/cgi-bin/view/$1|0
uea|http://uea.org/vikio/index.php/$1|0
+uncyclopedia|http://en.uncyclopedia.co/wiki/$1|0
unreal|http://wiki.beyondunreal.com/$1|0
usemod|http://www.usemod.com/cgi-bin/wiki.pl?$1|0
webseitzwiki|http://webseitz.fluxent.com/wiki/$1|0
('s23wiki','http://s23.org/wiki/$1',0),
('seattlewireless','http://seattlewireless.net/$1',0),
('senseislibrary','http://senseis.xmp.net/?$1',0),
+('shoutwiki','http://www.shoutwiki.com/wiki/$1',0),
('sourceforge','http://sourceforge.net/$1',0),
('sourcewatch','http://www.sourcewatch.org/index.php?title=$1',0),
('squeak','http://wiki.squeak.org/squeak/$1',0),
('theopedia','http://www.theopedia.com/$1',0),
('twiki','http://twiki.org/cgi-bin/view/$1',0),
('uea','http://uea.org/vikio/index.php/$1',0),
+('uncyclopedia','http://en.uncyclopedia.co/wiki/$1',0),
('unreal','http://wiki.beyondunreal.com/$1',0),
('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1',0),
('webseitzwiki','http://webseitz.fluxent.com/wiki/$1',0),
"../../resources/src/jquery/jquery.checkboxShiftClick.js",
"../../resources/src/jquery/jquery.client.js",
"../../resources/src/jquery/jquery.colorUtil.js",
+ "../../resources/src/jquery/jquery.confirmable.js",
"../../resources/src/jquery/jquery.footHovzer.js",
"../../resources/src/jquery/jquery.getAttrs.js",
"../../resources/src/jquery/jquery.hidpi.js",
/** @var array Magic words */
protected $mMagicWords;
- /** @var array Special page aliases */
+ /** @var array Special page aliases */
protected $mSpecialPageAliases;
/**
/**
* @todo Do this for real
- * @param int $ns
- * @param string $name
+ * @param int $key
+ * @param string $prefix
* @param bool $fix
* @param string $suffix
* @return bool
* Default title is 'CLIParser', it can be overriden with the option
* --title <Your:Title>
*
- * @return Title object
+ * @return Title
*/
protected function getTitle() {
$title = $this->getOption( 'title' )
public function __construct() {
parent::__construct();
$this->mDescription = "Populate the *_from_namespace fields";
+ $this->addOption( 'lastUpdatedId', "Highest page_id with updated links", false, true );
}
protected function getUpdateKey() {
$this->output( "Updating *_from_namespace fields in links tables.\n" );
- $start = $db->selectField( 'page', 'MIN(page_id)', false, __METHOD__ );
+ $start = $this->getOption( 'lastUpdatedId' );
+ if ( !$start ) {
+ $start = $db->selectField( 'page', 'MIN(page_id)', false, __METHOD__ );
+ }
if ( !$start ) {
$this->output( "Nothing to do." );
return false;
$this->addOption(
'mime',
- '(Inefficient!) Only refresh files with this mime type. Can accept wild-card image/*',
+ '(Inefficient!) Only refresh files with this MIME type. Can accept wild-card image/*',
false,
true
);
/**
* Print the results, callback for $db->sourceStream()
* @param ResultWrapper $res The results object
- * @param DatabaseBase $db object
+ * @param DatabaseBase $db
*/
public function sqlPrintResult( $res, $db ) {
if ( !$res ) {
* Will throw exceptions on SQL errors
* @param array|string $files
* @throws MWException
- * @return string|bool true if no error or error string in case of errors
+ * @return True if no error or error string in case of errors
*/
public static function checkSqlSyntax( $files ) {
if ( !Sqlite::isPresent() ) {
--
CREATE TABLE /*_*/hitcounter (
hc_id int unsigned NOT NULL
-) ENGINE=HEAP MAX_ROWS=25000;
+) ENGINE=MEMORY MAX_ROWS=25000;
--
if ( !$wgUser ) {
$this->error( "Invalid username", true );
}
- $archive = new PageArchive( $title );
+ $archive = new PageArchive( $title, RequestContext::getMain()->getConfig() );
$this->output( "Undeleting " . $title->getPrefixedDBkey() . '...' );
$archive->undelete( array(), $reason );
$this->output( "done\n" );
}
}
+// @codingStandardsIgnoreStart
class profile_point {
- var $name;
- var $count;
- var $time;
- var $children;
+ // @codingStandardsIgnoreEnd
- static $totaltime, $totalmemory, $totalcount;
+ public $name;
+ public $count;
+ public $time;
+ public $children;
- function __construct( $name, $count, $time, $memory ) {
+ public static $totaltime, $totalmemory, $totalcount;
+
+ public function __construct( $name, $count, $time, $memory ) {
$this->name = $name;
$this->count = $count;
$this->time = $time;
$this->children = array();
}
- function add_child( $child ) {
+ public function add_child( $child ) {
$this->children[] = $child;
}
- function display( $expand, $indent = 0.0 ) {
+ public function display( $expand, $indent = 0.0 ) {
usort( $this->children, 'compare_point' );
$ex = isset( $expand[$this->name()] );
<?php echo htmlspecialchars( str_replace( ',', ', ', $this->name() ) ) . $extet ?>
</div>
</th>
+ <?php //@codingStandardsIgnoreStart ?>
<td class="mw-profileinfo-timep"><?php echo @wfPercent( $this->time() / self::$totaltime * 100 ); ?></td>
<td class="mw-profileinfo-memoryp"><?php echo @wfPercent( $this->memory() / self::$totalmemory * 100 ); ?></td>
<td class="mw-profileinfo-count"><?php echo $this->count(); ?></td>
<td class="mw-profileinfo-mpc"><?php echo round( sprintf( '%.2f', $this->memoryPerCall() / 1024 ), 2 ); ?></td>
<td class="mw-profileinfo-tpr"><?php echo @round( sprintf( '%.2f', $this->time() / self::$totalcount ), 2 ); ?></td>
<td class="mw-profileinfo-mpr"><?php echo @round( sprintf( '%.2f', $this->memory() / self::$totalcount / 1024 ), 2 ); ?></td>
+ <?php //@codingStandardsIgnoreEnd ?>
</tr>
<?php
if ( $ex ) {
}
}
- function name() {
+ public function name() {
return $this->name;
}
- function count() {
+ public function count() {
return $this->count;
}
- function time() {
+ public function time() {
return $this->time;
}
- function memory() {
+ public function memory() {
return $this->memory;
}
- function timePerCall() {
+ public function timePerCall() {
+ // @codingStandardsIgnoreStart
return @( $this->time / $this->count );
+ // @codingStandardsIgnoreEnd
}
- function memoryPerCall() {
+ public function memoryPerCall() {
+ // @codingStandardsIgnoreStart
return @( $this->memory / $this->count );
+ // @codingStandardsIgnoreEnd
}
- function callsPerRequest() {
+ public function callsPerRequest() {
+ // @codingStandardsIgnoreStart
return @( $this->count / self::$totalcount );
+ // @codingStandardsIgnoreEnd
}
- function timePerRequest() {
+ public function timePerRequest() {
+ // @codingStandardsIgnoreStart
return @( $this->time / self::$totalcount );
+ // @codingStandardsIgnoreEnd
}
- function memoryPerRequest() {
+ public function memoryPerRequest() {
+ // @codingStandardsIgnoreStart
return @( $this->memory / self::$totalcount );
+ // @codingStandardsIgnoreEnd
}
- function fmttime() {
+ public function fmttime() {
return sprintf( '%5.02f', $this->time );
}
};
function compare_point( profile_point $a, profile_point $b ) {
+ // @codingStandardsIgnoreStart
global $sort;
+ // @codingStandardsIgnoreEnd
switch ( $sort ) {
case 'name':
return strcmp( $a->name(), $b->name() );
profile_point::$totalmemory = 0.0;
function getEscapedProfileUrl( $_filter = false, $_sort = false, $_expand = false ) {
+ // @codingStandardsIgnoreStart
global $filter, $sort, $expand;
+ // @codingStandardsIgnoreEnd
if ( $_expand === false ) {
$_expand = $expand;
array(
'resources/lib/jquery/jquery.js'
) ),
- 'debugRaw' => false,
+ 'raw' => true,
'targets' => array( 'desktop', 'mobile' ),
),
'jquery.colorUtil' => array(
'scripts' => 'resources/src/jquery/jquery.colorUtil.js',
),
+ 'jquery.confirmable' => array(
+ 'scripts' => array(
+ 'resources/src/jquery/jquery.confirmable.js',
+ 'resources/src/jquery/jquery.confirmable.mediawiki.js',
+ ),
+ 'messages' => array(
+ 'confirmable-confirm',
+ 'confirmable-yes',
+ 'confirmable-no',
+ ),
+ 'styles' => 'resources/src/jquery/jquery.confirmable.css',
+ 'dependencies' => 'mediawiki.jqueryMsg',
+ ),
// Use mediawiki.cookie in new code, rather than jquery.cookie.
'jquery.cookie' => array(
'scripts' => 'resources/lib/jquery/jquery.cookie.js',
'moment' => array(
'scripts' => 'resources/lib/moment/moment.js',
'languageScripts' => array(
+ 'af' => 'resources/lib/moment/lang/af.js',
'ar' => 'resources/lib/moment/lang/ar.js',
'ar-ma' => 'resources/lib/moment/lang/ar-ma.js',
'ar-sa' => 'resources/lib/moment/lang/ar-sa.js',
'az' => 'resources/lib/moment/lang/az.js',
+ 'be' => 'resources/lib/moment/lang/be.js',
'bg' => 'resources/lib/moment/lang/bg.js',
'bn' => 'resources/lib/moment/lang/bn.js',
+ 'bo' => 'resources/lib/moment/lang/bo.js',
'br' => 'resources/lib/moment/lang/br.js',
'bs' => 'resources/lib/moment/lang/bs.js',
'ca' => 'resources/lib/moment/lang/ca.js',
'ml' => 'resources/lib/moment/lang/ml.js',
'mr' => 'resources/lib/moment/lang/mr.js',
'ms-my' => 'resources/lib/moment/lang/ms-my.js',
+ 'my' => 'resources/lib/moment/lang/my.js',
'nb' => 'resources/lib/moment/lang/nb.js',
'ne' => 'resources/lib/moment/lang/ne.js',
'nl' => 'resources/lib/moment/lang/nl.js',
'mediawiki' => array(
'scripts' => 'resources/src/mediawiki/mediawiki.js',
'debugScripts' => 'resources/src/mediawiki/mediawiki.log.js',
- 'debugRaw' => false,
+ 'raw' => true,
'targets' => array( 'desktop', 'mobile' ),
),
'mediawiki.api' => array(
'user.tokens',
),
),
+ 'mediawiki.content.json' => array(
+ 'styles' => 'resources/src/mediawiki/mediawiki.content.json.css',
+ ),
'mediawiki.debug' => array(
'scripts' => array(
'resources/src/mediawiki/mediawiki.debug.js',
),
'mediawiki.Uri' => array(
'scripts' => 'resources/src/mediawiki/mediawiki.Uri.js',
+ 'dependencies' => 'mediawiki.util',
'targets' => array( 'desktop', 'mobile' ),
),
'mediawiki.user' => array(
'dependencies' => array(
'mediawiki.api.watch',
'mediawiki.notify',
+ 'mediawiki.page.startup',
'mediawiki.util',
'jquery.accessKeyLabel',
'jquery.mwExtension',
'mediawiki.api',
'mediawiki.api.watch',
'mediawiki.notify',
- 'mediawiki.Title'
+ 'mediawiki.Title',
+ 'mediawiki.util',
),
),
'mediawiki.special.javaScriptTest' => array(
'styles' => array(
'resources/src/mediawiki.ui/components/checkbox.less',
),
+ 'position' => 'top',
+ 'targets' => array( 'desktop', 'mobile' ),
),
// Lightweight module for anchor styles
'mediawiki.ui.anchor' => array(
--- /dev/null
+// moment.js locale configuration
+// locale : afrikaans (af)
+// author : Werner Mollentze : https://github.com/wernerm
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['moment'], factory); // AMD
+ } else if (typeof exports === 'object') {
+ module.exports = factory(require('../moment')); // Node
+ } else {
+ factory(window.moment); // Browser global
+ }
+}(function (moment) {
+ return moment.defineLocale('af', {
+ months : "Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),
+ monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),
+ weekdays : "Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),
+ weekdaysShort : "Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),
+ weekdaysMin : "So_Ma_Di_Wo_Do_Vr_Sa".split("_"),
+ meridiem : function (hours, minutes, isLower) {
+ if (hours < 12) {
+ return isLower ? 'vm' : 'VM';
+ } else {
+ return isLower ? 'nm' : 'NM';
+ }
+ },
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY LT",
+ LLLL : "dddd, D MMMM YYYY LT"
+ },
+ calendar : {
+ sameDay : '[Vandag om] LT',
+ nextDay : '[Môre om] LT',
+ nextWeek : 'dddd [om] LT',
+ lastDay : '[Gister om] LT',
+ lastWeek : '[Laas] dddd [om] LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "oor %s",
+ past : "%s gelede",
+ s : "'n paar sekondes",
+ m : "'n minuut",
+ mm : "%d minute",
+ h : "'n uur",
+ hh : "%d ure",
+ d : "'n dag",
+ dd : "%d dae",
+ M : "'n maand",
+ MM : "%d maande",
+ y : "'n jaar",
+ yy : "%d jaar"
+ },
+ ordinal : function (number) {
+ return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
+ },
+ week : {
+ dow : 1, // Maandag is die eerste dag van die week.
+ doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
+ }
+ });
+}));
-// moment.js language configuration
-// language : Moroccan Arabic (ar-ma)
+// moment.js locale configuration
+// locale : Moroccan Arabic (ar-ma)
// author : ElFadili Yassine : https://github.com/ElFadiliY
// author : Abdel Said : https://github.com/abdelsaid
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('ar-ma', {
+ return moment.defineLocale('ar-ma', {
months : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
monthsShort : "يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),
weekdays : "الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
-// moment.js language configuration
-// language : Arabic Saudi Arabia (ar-sa)
+// moment.js locale configuration
+// locale : Arabic Saudi Arabia (ar-sa)
// author : Suhail Alkowaileet : https://github.com/xsoh
(function (factory) {
'٠': '0'
};
- return moment.lang('ar-sa', {
+ return moment.defineLocale('ar-sa', {
months : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),
monthsShort : "يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),
weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
-// moment.js language configuration
-// language : Arabic (ar)
+// moment.js locale configuration
+// locale : Arabic (ar)
// author : Abdel Said : https://github.com/abdelsaid
// changes in months, weekdays : Ahmed Elkhatib
'٠': '0'
};
- return moment.lang('ar', {
+ return moment.defineLocale('ar', {
months : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
monthsShort : "يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),
weekdays : "الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),
-// moment.js language configuration
-// language : azerbaijani (az)
+// moment.js locale configuration
+// locale : azerbaijani (az)
// author : topchiyev : https://github.com/topchiyev
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
-
var suffixes = {
1: "-inci",
5: "-inci",
60: "-ıncı",
90: "-ıncı"
};
- return moment.lang('az', {
+ return moment.defineLocale('az', {
months : "yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),
monthsShort : "yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),
weekdays : "Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),
--- /dev/null
+// moment.js locale configuration
+// locale : belarusian (be)
+// author : Dmitry Demidov : https://github.com/demidov91
+// author: Praleska: http://praleska.pro/
+// Author : Menelion Elensúle : https://github.com/Oire
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['moment'], factory); // AMD
+ } else if (typeof exports === 'object') {
+ module.exports = factory(require('../moment')); // Node
+ } else {
+ factory(window.moment); // Browser global
+ }
+}(function (moment) {
+ function plural(word, num) {
+ var forms = word.split('_');
+ return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
+ }
+
+ function relativeTimeWithPlural(number, withoutSuffix, key) {
+ var format = {
+ 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
+ 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
+ 'dd': 'дзень_дні_дзён',
+ 'MM': 'месяц_месяцы_месяцаў',
+ 'yy': 'год_гады_гадоў'
+ };
+ if (key === 'm') {
+ return withoutSuffix ? 'хвіліна' : 'хвіліну';
+ }
+ else if (key === 'h') {
+ return withoutSuffix ? 'гадзіна' : 'гадзіну';
+ }
+ else {
+ return number + ' ' + plural(format[key], +number);
+ }
+ }
+
+ function monthsCaseReplace(m, format) {
+ var months = {
+ 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'),
+ 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_')
+ },
+
+ nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return months[nounCase][m.month()];
+ }
+
+ function weekdaysCaseReplace(m, format) {
+ var weekdays = {
+ 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
+ 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_')
+ },
+
+ nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ?
+ 'accusative' :
+ 'nominative';
+
+ return weekdays[nounCase][m.day()];
+ }
+
+ return moment.defineLocale('be', {
+ months : monthsCaseReplace,
+ monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
+ weekdays : weekdaysCaseReplace,
+ weekdaysShort : "нд_пн_ат_ср_чц_пт_сб".split("_"),
+ weekdaysMin : "нд_пн_ат_ср_чц_пт_сб".split("_"),
+ longDateFormat : {
+ LT : "HH:mm",
+ L : "DD.MM.YYYY",
+ LL : "D MMMM YYYY г.",
+ LLL : "D MMMM YYYY г., LT",
+ LLLL : "dddd, D MMMM YYYY г., LT"
+ },
+ calendar : {
+ sameDay: '[Сёння ў] LT',
+ nextDay: '[Заўтра ў] LT',
+ lastDay: '[Учора ў] LT',
+ nextWeek: function () {
+ return '[У] dddd [ў] LT';
+ },
+ lastWeek: function () {
+ switch (this.day()) {
+ case 0:
+ case 3:
+ case 5:
+ case 6:
+ return '[У мінулую] dddd [ў] LT';
+ case 1:
+ case 2:
+ case 4:
+ return '[У мінулы] dddd [ў] LT';
+ }
+ },
+ sameElse: 'L'
+ },
+ relativeTime : {
+ future : "праз %s",
+ past : "%s таму",
+ s : "некалькі секунд",
+ m : relativeTimeWithPlural,
+ mm : relativeTimeWithPlural,
+ h : relativeTimeWithPlural,
+ hh : relativeTimeWithPlural,
+ d : "дзень",
+ dd : relativeTimeWithPlural,
+ M : "месяц",
+ MM : relativeTimeWithPlural,
+ y : "год",
+ yy : relativeTimeWithPlural
+ },
+
+
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 4) {
+ return "ночы";
+ } else if (hour < 12) {
+ return "раніцы";
+ } else if (hour < 17) {
+ return "дня";
+ } else {
+ return "вечара";
+ }
+ },
+
+ ordinal: function (number, period) {
+ switch (period) {
+ case 'M':
+ case 'd':
+ case 'DDD':
+ case 'w':
+ case 'W':
+ return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
+ case 'D':
+ return number + '-га';
+ default:
+ return number;
+ }
+ },
+
+ week : {
+ dow : 1, // Monday is the first day of the week.
+ doy : 7 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+}));
-// moment.js language configuration
-// language : bulgarian (bg)
+// moment.js locale configuration
+// locale : bulgarian (bg)
// author : Krasen Borisov : https://github.com/kraz
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('bg', {
+ return moment.defineLocale('bg', {
months : "януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),
monthsShort : "янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),
weekdays : "неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),
-// moment.js language configuration
-// language : Bengali (bn)
+// moment.js locale configuration
+// locale : Bengali (bn)
// author : Kaushik Gandhi : https://github.com/kaushikgandhi
(function (factory) {
'০': '0'
};
- return moment.lang('bn', {
+ return moment.defineLocale('bn', {
months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split("_"),
monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split("_"),
weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split("_"),
return symbolMap[match];
});
},
- //Bengali is a vast language its spoken
+ //Bengali is a vast language its spoken
//in different forms in various parts of the world.
//I have just generalized with most common one used
meridiem : function (hour, minute, isLower) {
--- /dev/null
+// moment.js locale configuration
+// locale : tibetan (bo)
+// author : Thupten N. Chakrishar : https://github.com/vajradog
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['moment'], factory); // AMD
+ } else if (typeof exports === 'object') {
+ module.exports = factory(require('../moment')); // Node
+ } else {
+ factory(window.moment); // Browser global
+ }
+}(function (moment) {
+ var symbolMap = {
+ '1': '༡',
+ '2': '༢',
+ '3': '༣',
+ '4': '༤',
+ '5': '༥',
+ '6': '༦',
+ '7': '༧',
+ '8': '༨',
+ '9': '༩',
+ '0': '༠'
+ },
+ numberMap = {
+ '༡': '1',
+ '༢': '2',
+ '༣': '3',
+ '༤': '4',
+ '༥': '5',
+ '༦': '6',
+ '༧': '7',
+ '༨': '8',
+ '༩': '9',
+ '༠': '0'
+ };
+
+ return moment.defineLocale('bo', {
+ months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split("_"),
+ monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split("_"),
+ weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split("_"),
+ weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split("_"),
+ weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split("_"),
+ longDateFormat : {
+ LT : "A h:mm",
+ L : "DD/MM/YYYY",
+ LL : "D MMMM YYYY",
+ LLL : "D MMMM YYYY, LT",
+ LLLL : "dddd, D MMMM YYYY, LT"
+ },
+ calendar : {
+ sameDay : '[དི་རིང] LT',
+ nextDay : '[སང་ཉིན] LT',
+ nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
+ lastDay : '[ཁ་སང] LT',
+ lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
+ sameElse : 'L'
+ },
+ relativeTime : {
+ future : "%s ལ་",
+ past : "%s སྔན་ལ",
+ s : "ལམ་སང",
+ m : "སྐར་མ་གཅིག",
+ mm : "%d སྐར་མ",
+ h : "ཆུ་ཚོད་གཅིག",
+ hh : "%d ཆུ་ཚོད",
+ d : "ཉིན་གཅིག",
+ dd : "%d ཉིན་",
+ M : "ཟླ་བ་གཅིག",
+ MM : "%d ཟླ་བ",
+ y : "ལོ་གཅིག",
+ yy : "%d ལོ"
+ },
+ preparse: function (string) {
+ return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
+ return numberMap[match];
+ });
+ },
+ postformat: function (string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ });
+ },
+ meridiem : function (hour, minute, isLower) {
+ if (hour < 4) {
+ return "མཚན་མོ";
+ } else if (hour < 10) {
+ return "ཞོགས་ཀས";
+ } else if (hour < 17) {
+ return "ཉིན་གུང";
+ } else if (hour < 20) {
+ return "དགོང་དག";
+ } else {
+ return "མཚན་མོ";
+ }
+ },
+ week : {
+ dow : 0, // Sunday is the first day of the week.
+ doy : 6 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+}));
-// moment.js language configuration
-// language : breton (br)
+// moment.js locale configuration
+// locale : breton (br)
// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
(function (factory) {
return mutationTable[text.charAt(0)] + text.substring(1);
}
- return moment.lang('br', {
+ return moment.defineLocale('br', {
months : "Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),
monthsShort : "Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),
weekdays : "Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),
-// moment.js language configuration
-// language : bosnian (bs)
+// moment.js locale configuration
+// locale : bosnian (bs)
// author : Nedim Cholich : https://github.com/frontyard
// based on (hr) translation by Bojan Marković
factory(window.moment); // Browser global
}
}(function (moment) {
-
function translate(number, withoutSuffix, key) {
var result = number + " ";
switch (key) {
}
}
- return moment.lang('bs', {
- months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),
- monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
+ return moment.defineLocale('bs', {
+ months : "januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),
+ monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
weekdaysShort : "ned._pon._uto._sri._čet._pet._sub.".split("_"),
weekdaysMin : "ne_po_ut_sr_če_pe_su".split("_"),
-// moment.js language configuration
-// language : catalan (ca)
+// moment.js locale configuration
+// locale : catalan (ca)
// author : Juan G. Hurtado : https://github.com/juanghurtado
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('ca', {
+ return moment.defineLocale('ca', {
months : "gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),
monthsShort : "gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),
weekdays : "diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),
-// moment.js language configuration
-// language : czech (cs)
+// moment.js locale configuration
+// locale : czech (cs)
// author : petrbela : https://github.com/petrbela
(function (factory) {
}
}
- return moment.lang('cs', {
+ return moment.defineLocale('cs', {
months : months,
monthsShort : monthsShort,
monthsParse : (function (months, monthsShort) {
-// moment.js language configuration
-// language : chuvash (cv)
+// moment.js locale configuration
+// locale : chuvash (cv)
// author : Anatoly Mironov : https://github.com/mirontoli
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('cv', {
+ return moment.defineLocale('cv', {
months : "кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),
monthsShort : "кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),
weekdays : "вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),
-// moment.js language configuration
-// language : Welsh (cy)
+// moment.js locale configuration
+// locale : Welsh (cy)
// author : Robert Allen
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang("cy", {
+ return moment.defineLocale("cy", {
months: "Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),
monthsShort: "Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),
weekdays: "Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),
-// moment.js language configuration
-// language : danish (da)
+// moment.js locale configuration
+// locale : danish (da)
// author : Ulrik Nielsen : https://github.com/mrbase
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('da', {
+ return moment.defineLocale('da', {
months : "januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),
monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
-// moment.js language configuration
-// language : austrian german (de-at)
+// moment.js locale configuration
+// locale : austrian german (de-at)
// author : lluchs : https://github.com/lluchs
// author: Menelion Elensúle: https://github.com/Oire
// author : Martin Groller : https://github.com/MadMG
return withoutSuffix ? format[key][0] : format[key][1];
}
- return moment.lang('de-at', {
+ return moment.defineLocale('de-at', {
months : "Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
monthsShort : "Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
-// moment.js language configuration
-// language : german (de)
+// moment.js locale configuration
+// locale : german (de)
// author : lluchs : https://github.com/lluchs
// author: Menelion Elensúle: https://github.com/Oire
return withoutSuffix ? format[key][0] : format[key][1];
}
- return moment.lang('de', {
+ return moment.defineLocale('de', {
months : "Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
monthsShort : "Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
weekdays : "Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),
-// moment.js language configuration
-// language : modern greek (el)
+// moment.js locale configuration
+// locale : modern greek (el)
// author : Aggelos Karalias : https://github.com/mehiel
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('el', {
+ return moment.defineLocale('el', {
monthsNominativeEl : "Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),
monthsGenitiveEl : "Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),
months : function (momentToFormat, format) {
nextDay : '[Αύριο {}] LT',
nextWeek : 'dddd [{}] LT',
lastDay : '[Χθες {}] LT',
- lastWeek : function() {
+ lastWeek : function () {
switch (this.day()) {
case 6:
return '[το προηγούμενο] dddd [{}] LT';
-// moment.js language configuration
-// language : australian english (en-au)
+// moment.js locale configuration
+// locale : australian english (en-au)
(function (factory) {
if (typeof define === 'function' && define.amd) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('en-au', {
+ return moment.defineLocale('en-au', {
months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
},
ordinal : function (number) {
var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'th' :
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
(b === 1) ? 'st' :
(b === 2) ? 'nd' :
(b === 3) ? 'rd' : 'th';
-// moment.js language configuration
-// language : canadian english (en-ca)
+// moment.js locale configuration
+// locale : canadian english (en-ca)
// author : Jonathan Abourbih : https://github.com/jonbca
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('en-ca', {
+ return moment.defineLocale('en-ca', {
months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
},
ordinal : function (number) {
var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'th' :
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
(b === 1) ? 'st' :
(b === 2) ? 'nd' :
(b === 3) ? 'rd' : 'th';
-// moment.js language configuration
-// language : great britain english (en-gb)
+// moment.js locale configuration
+// locale : great britain english (en-gb)
// author : Chris Gedrim : https://github.com/chrisgedrim
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('en-gb', {
+ return moment.defineLocale('en-gb', {
months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
},
ordinal : function (number) {
var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'th' :
+ output = (~~(number % 100 / 10) === 1) ? 'th' :
(b === 1) ? 'st' :
(b === 2) ? 'nd' :
(b === 3) ? 'rd' : 'th';
-// moment.js language configuration
-// language : esperanto (eo)
+// moment.js locale configuration
+// locale : esperanto (eo)
// author : Colin Dean : https://github.com/colindean
// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('eo', {
+ return moment.defineLocale('eo', {
months : "januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),
monthsShort : "jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),
weekdays : "Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),
-// moment.js language configuration
-// language : spanish (es)
+// moment.js locale configuration
+// locale : spanish (es)
// author : Julio Napurí : https://github.com/julionc
(function (factory) {
var monthsShortDot = "ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),
monthsShort = "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");
- return moment.lang('es', {
+ return moment.defineLocale('es', {
months : "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
-// moment.js language configuration
-// language : estonian (et)
+// moment.js locale configuration
+// locale : estonian (et)
// author : Henry Kehlmann : https://github.com/madhenry
// improvements : Illimar Tambek : https://github.com/ragulka
return isFuture ? format[key][0] : format[key][1];
}
- return moment.lang('et', {
+ return moment.defineLocale('et', {
months : "jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),
monthsShort : "jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),
weekdays : "pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),
-// moment.js language configuration
-// language : euskara (eu)
+// moment.js locale configuration
+// locale : euskara (eu)
// author : Eneko Illarramendi : https://github.com/eillarra
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('eu', {
+ return moment.defineLocale('eu', {
months : "urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),
monthsShort : "urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),
weekdays : "igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),
-// moment.js language configuration
-// language : Persian Language
+// moment.js locale configuration
+// locale : Persian
// author : Ebrahim Byagowi : https://github.com/ebraminio
(function (factory) {
'۰': '0'
};
- return moment.lang('fa', {
+ return moment.defineLocale('fa', {
months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
-// moment.js language configuration
-// language : finnish (fi)
+// moment.js locale configuration
+// locale : finnish (fi)
// author : Tarmo Aidantausta : https://github.com/bleadof
(function (factory) {
}
}(function (moment) {
var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
- numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
- numbersPast[7], numbersPast[8], numbersPast[9]];
+ numbersFuture = [
+ 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
+ numbersPast[7], numbersPast[8], numbersPast[9]
+ ];
function translate(number, withoutSuffix, key, isFuture) {
var result = "";
return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
}
- return moment.lang('fi', {
+ return moment.defineLocale('fi', {
months : "tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),
monthsShort : "tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),
weekdays : "sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),
-// moment.js language configuration
-// language : faroese (fo)
+// moment.js locale configuration
+// locale : faroese (fo)
// author : Ragnar Johannesen : https://github.com/ragnar123
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('fo', {
+ return moment.defineLocale('fo', {
months : "januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),
monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
weekdays : "sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),
-// moment.js language configuration
-// language : canadian french (fr-ca)
+// moment.js locale configuration
+// locale : canadian french (fr-ca)
// author : Jonathan Abourbih : https://github.com/jonbca
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('fr-ca', {
+ return moment.defineLocale('fr-ca', {
months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
-// moment.js language configuration
-// language : french (fr)
+// moment.js locale configuration
+// locale : french (fr)
// author : John Fischer : https://github.com/jfroffice
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('fr', {
+ return moment.defineLocale('fr', {
months : "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),
monthsShort : "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),
weekdays : "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),
-// moment.js language configuration
-// language : galician (gl)
+// moment.js locale configuration
+// locale : galician (gl)
// author : Juan G. Hurtado : https://github.com/juanghurtado
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('gl', {
+ return moment.defineLocale('gl', {
months : "Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),
monthsShort : "Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),
weekdays : "Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),
-// moment.js language configuration
-// language : Hebrew (he)
+// moment.js locale configuration
+// locale : Hebrew (he)
// author : Tomer Cohen : https://github.com/tomer
// author : Moshe Simantov : https://github.com/DevelopmentIL
// author : Tal Ater : https://github.com/TalAter
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('he', {
+ return moment.defineLocale('he', {
months : "ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),
monthsShort : "ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),
weekdays : "ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),
-// moment.js language configuration
-// language : hindi (hi)
+// moment.js locale configuration
+// locale : hindi (hi)
// author : Mayank Singhal : https://github.com/mayanksinghal
(function (factory) {
'०': '0'
};
- return moment.lang('hi', {
+ return moment.defineLocale('hi', {
months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split("_"),
monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split("_"),
weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
-// moment.js language configuration
-// language : hrvatski (hr)
+// moment.js locale configuration
+// locale : hrvatski (hr)
// author : Bojan Marković : https://github.com/bmarkovic
// based on (sl) translation by Robert Sedovšek
factory(window.moment); // Browser global
}
}(function (moment) {
-
function translate(number, withoutSuffix, key) {
var result = number + " ";
switch (key) {
}
}
- return moment.lang('hr', {
+ return moment.defineLocale('hr', {
months : "sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),
monthsShort : "sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),
weekdays : "nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),
-// moment.js language configuration
-// language : hungarian (hu)
+// moment.js locale configuration
+// locale : hungarian (hu)
// author : Adam Brunner : https://github.com/adambrunner
(function (factory) {
return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
}
- return moment.lang('hu', {
+ return moment.defineLocale('hu', {
months : "január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),
monthsShort : "jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),
weekdays : "vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),
-// moment.js language configuration
-// language : Armenian (hy-am)
+// moment.js locale configuration
+// locale : Armenian (hy-am)
// author : Armendarabyan : https://github.com/armendarabyan
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
-
function monthsCaseReplace(m, format) {
var months = {
'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'),
return weekdays[m.day()];
}
- return moment.lang('hy-am', {
+ return moment.defineLocale('hy-am', {
months : monthsCaseReplace,
monthsShort : monthsShortCaseReplace,
weekdays : weekdaysCaseReplace,
-// moment.js language configuration
-// language : Bahasa Indonesia (id)
+// moment.js locale configuration
+// locale : Bahasa Indonesia (id)
// author : Mohammad Satrio Utomo : https://github.com/tyok
// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('id', {
+ return moment.defineLocale('id', {
months : "Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),
monthsShort : "Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),
weekdays : "Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),
-// moment.js language configuration
-// language : icelandic (is)
+// moment.js locale configuration
+// locale : icelandic (is)
// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
(function (factory) {
}
}
- return moment.lang('is', {
+ return moment.defineLocale('is', {
months : "janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),
monthsShort : "jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),
weekdays : "sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),
-// moment.js language configuration
-// language : italian (it)
+// moment.js locale configuration
+// locale : italian (it)
// author : Lorenzo : https://github.com/aliem
// author: Mattia Larentis: https://github.com/nostalgiaz
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('it', {
+ return moment.defineLocale('it', {
months : "gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),
monthsShort : "gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),
weekdays : "Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),
-// moment.js language configuration
-// language : japanese (ja)
+// moment.js locale configuration
+// locale : japanese (ja)
// author : LI Long : https://github.com/baryon
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('ja', {
+ return moment.defineLocale('ja', {
months : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
weekdays : "日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),
-// moment.js language configuration
-// language : Georgian (ka)
+// moment.js locale configuration
+// locale : Georgian (ka)
// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
-
function monthsCaseReplace(m, format) {
var months = {
'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
return weekdays[nounCase][m.day()];
}
- return moment.lang('ka', {
+ return moment.defineLocale('ka', {
months : monthsCaseReplace,
monthsShort : "იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),
weekdays : weekdaysCaseReplace,
-// moment.js language configuration
-// language : khmer (km)
+// moment.js locale configuration
+// locale : khmer (km)
// author : Kruy Vanna : https://github.com/kruyvanna
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('km', {
+ return moment.defineLocale('km', {
months: "មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),
monthsShort: "មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),
weekdays: "អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),
-// moment.js language configuration
-// language : korean (ko)
+// moment.js locale configuration
+// locale : korean (ko)
//
-// authors
+// authors
//
// - Kyungwook, Park : https://github.com/kyungw00k
// - Jeeeyul Lee <jeeeyul@gmail.com>
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('ko', {
+ return moment.defineLocale('ko', {
months : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
monthsShort : "1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),
weekdays : "일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),
-// moment.js language configuration
-// language : Luxembourgish (lb)
-// author : mweimerskirch : https://github.com/mweimerskirch
+// moment.js locale configuration
+// locale : Luxembourgish (lb)
+// author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
// Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the
// deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday"
'm': ['eng Minutt', 'enger Minutt'],
'h': ['eng Stonn', 'enger Stonn'],
'd': ['een Dag', 'engem Dag'],
- 'dd': [number + ' Deeg', number + ' Deeg'],
'M': ['ee Mount', 'engem Mount'],
- 'MM': [number + ' Méint', number + ' Méint'],
- 'y': ['ee Joer', 'engem Joer'],
- 'yy': [number + ' Joer', number + ' Joer']
+ 'y': ['ee Joer', 'engem Joer']
};
return withoutSuffix ? format[key][0] : format[key][1];
}
return "virun " + string;
}
- function processLastWeek(string1) {
- var weekday = this.format('d');
- if (eifelerRegelAppliesToWeekday(weekday)) {
- return '[Leschte] dddd [um] LT';
- }
- return '[Leschten] dddd [um] LT';
- }
-
- /**
- * Returns true if the word before the given week day loses the "-n" ending.
- * e.g. "Leschten Dënschdeg" but "Leschte Méindeg"
- *
- * @param weekday {integer}
- * @returns {boolean}
- */
- function eifelerRegelAppliesToWeekday(weekday) {
- weekday = parseInt(weekday, 10);
- switch (weekday) {
- case 0: // Sonndeg
- case 1: // Méindeg
- case 3: // Mëttwoch
- case 5: // Freideg
- case 6: // Samschdeg
- return true;
- default: // 2 Dënschdeg, 4 Donneschdeg
- return false;
- }
- }
-
/**
* Returns true if the word before the given number loses the "-n" ending.
* e.g. "an 10 Deeg" but "a 5 Deeg"
}
}
- return moment.lang('lb', {
+ return moment.defineLocale('lb', {
months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),
nextDay: '[Muer um] LT',
nextWeek: 'dddd [um] LT',
lastDay: '[Gëschter um] LT',
- lastWeek: processLastWeek
+ lastWeek: function () {
+ // Different date string for "Dënschdeg" (Tuesday) and "Donneschdeg" (Thursday) due to phonological rule
+ switch (this.day()) {
+ case 2:
+ case 4:
+ return '[Leschten] dddd [um] LT';
+ default:
+ return '[Leschte] dddd [um] LT';
+ }
+ }
},
- relativeTime: {
- future: processFutureTime,
- past: processPastTime,
- s: "e puer Sekonnen",
- m: processRelativeTime,
- mm: "%d Minutten",
- h: processRelativeTime,
- hh: "%d Stonnen",
- d: processRelativeTime,
- dd: processRelativeTime,
- M: processRelativeTime,
- MM: processRelativeTime,
- y: processRelativeTime,
- yy: processRelativeTime
+ relativeTime : {
+ future : processFutureTime,
+ past : processPastTime,
+ s : "e puer Sekonnen",
+ m : processRelativeTime,
+ mm : "%d Minutten",
+ h : processRelativeTime,
+ hh : "%d Stonnen",
+ d : processRelativeTime,
+ dd : "%d Deeg",
+ M : processRelativeTime,
+ MM : "%d Méint",
+ y : processRelativeTime,
+ yy : "%d Joer"
},
ordinal: '%d.',
week: {
-// moment.js language configuration
-// language : Lithuanian (lt)
+// moment.js locale configuration
+// locale : Lithuanian (lt)
// author : Mindaugas Mozūras : https://github.com/mmozuras
(function (factory) {
return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + "į";
}
- return moment.lang("lt", {
- months : "sausio_vasario_kovo_balandžio_gegužės_biržėlio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),
+ return moment.defineLocale("lt", {
+ months : "sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),
monthsShort : "sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),
weekdays : relativeWeekDay,
weekdaysShort : "Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),
-// moment.js language configuration
-// language : latvian (lv)
+// moment.js locale configuration
+// locale : latvian (lv)
// author : Kristaps Karlsons : https://github.com/skakri
(function (factory) {
return number + ' ' + format(units[key], number, withoutSuffix);
}
- return moment.lang('lv', {
+ return moment.defineLocale('lv', {
months : "janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),
monthsShort : "jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),
weekdays : "svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),
-// moment.js language configuration
-// language : macedonian (mk)
+// moment.js locale configuration
+// locale : macedonian (mk)
// author : Borislav Mickov : https://github.com/B0k0
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('mk', {
+ return moment.defineLocale('mk', {
months : "јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),
monthsShort : "јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),
weekdays : "недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),
-// moment.js language configuration
-// language : malayalam (ml)
+// moment.js locale configuration
+// locale : malayalam (ml)
// author : Floyd Pink : https://github.com/floydpink
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('ml', {
+ return moment.defineLocale('ml', {
months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split("_"),
monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split("_"),
weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split("_"),
-// moment.js language configuration
-// language : Marathi (mr)
+// moment.js locale configuration
+// locale : Marathi (mr)
// author : Harshad Kale : https://github.com/kalehv
(function (factory) {
'०': '0'
};
- return moment.lang('mr', {
+ return moment.defineLocale('mr', {
months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split("_"),
monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split("_"),
weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split("_"),
-// moment.js language configuration
-// language : Bahasa Malaysia (ms-MY)
+// moment.js locale configuration
+// locale : Bahasa Malaysia (ms-MY)
// author : Weldan Jamili : https://github.com/weldan
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('ms-my', {
+ return moment.defineLocale('ms-my', {
months : "Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),
monthsShort : "Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),
weekdays : "Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),
--- /dev/null
+// moment.js locale configuration
+// locale : Burmese (my)
+// author : Squar team, mysquar.com
+
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['moment'], factory); // AMD
+ } else if (typeof exports === 'object') {
+ module.exports = factory(require('../moment')); // Node
+ } else {
+ factory(window.moment); // Browser global
+ }
+}(function (moment) {
+ var symbolMap = {
+ '1': '၁',
+ '2': '၂',
+ '3': '၃',
+ '4': '၄',
+ '5': '၅',
+ '6': '၆',
+ '7': '၇',
+ '8': '၈',
+ '9': '၉',
+ '0': '၀'
+ }, numberMap = {
+ '၁': '1',
+ '၂': '2',
+ '၃': '3',
+ '၄': '4',
+ '၅': '5',
+ '၆': '6',
+ '၇': '7',
+ '၈': '8',
+ '၉': '9',
+ '၀': '0'
+ };
+ return moment.defineLocale('my', {
+ months: "ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),
+ monthsShort: "ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),
+ weekdays: "တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),
+ weekdaysShort: "နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),
+ weekdaysMin: "နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),
+ longDateFormat: {
+ LT: "HH:mm",
+ L: "DD/MM/YYYY",
+ LL: "D MMMM YYYY",
+ LLL: "D MMMM YYYY LT",
+ LLLL: "dddd D MMMM YYYY LT"
+ },
+ calendar: {
+ sameDay: '[ယနေ.] LT [မှာ]',
+ nextDay: '[မနက်ဖြန်] LT [မှာ]',
+ nextWeek: 'dddd LT [မှာ]',
+ lastDay: '[မနေ.က] LT [မှာ]',
+ lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
+ sameElse: 'L'
+ },
+ relativeTime: {
+ future: "လာမည့် %s မှာ",
+ past: "လွန်ခဲ့သော %s က",
+ s: "စက္ကန်.အနည်းငယ်",
+ m: "တစ်မိနစ်",
+ mm: "%d မိနစ်",
+ h: "တစ်နာရီ",
+ hh: "%d နာရီ",
+ d: "တစ်ရက်",
+ dd: "%d ရက်",
+ M: "တစ်လ",
+ MM: "%d လ",
+ y: "တစ်နှစ်",
+ yy: "%d နှစ်"
+ },
+ preparse: function (string) {
+ return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
+ return numberMap[match];
+ });
+ },
+ postformat: function (string) {
+ return string.replace(/\d/g, function (match) {
+ return symbolMap[match];
+ });
+ },
+ week: {
+ dow: 1, // Monday is the first day of the week.
+ doy: 4 // The week that contains Jan 1st is the first week of the year.
+ }
+ });
+}));
-// moment.js language configuration
-// language : norwegian bokmål (nb)
+// moment.js locale configuration
+// locale : norwegian bokmål (nb)
// authors : Espen Hovlandsdal : https://github.com/rexxars
// Sigurd Gartmann : https://github.com/sigurdga
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('nb', {
+ return moment.defineLocale('nb', {
months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
monthsShort : "jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),
weekdays : "søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),
-// moment.js language configuration
-// language : nepali/nepalese
+// moment.js locale configuration
+// locale : nepali/nepalese
// author : suvash : https://github.com/suvash
(function (factory) {
'०': '0'
};
- return moment.lang('ne', {
+ return moment.defineLocale('ne', {
months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split("_"),
monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split("_"),
weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split("_"),
-// moment.js language configuration
-// language : dutch (nl)
+// moment.js locale configuration
+// locale : dutch (nl)
// author : Joris Röling : https://github.com/jjupiter
(function (factory) {
var monthsShortWithDots = "jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),
monthsShortWithoutDots = "jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");
- return moment.lang('nl', {
+ return moment.defineLocale('nl', {
months : "januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
-// moment.js language configuration
-// language : norwegian nynorsk (nn)
+// moment.js locale configuration
+// locale : norwegian nynorsk (nn)
// author : https://github.com/mechuwind
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('nn', {
+ return moment.defineLocale('nn', {
months : "januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),
monthsShort : "jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),
weekdays : "sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),
-// moment.js language configuration
-// language : polish (pl)
+// moment.js locale configuration
+// locale : polish (pl)
// author : Rafal Hirsz : https://github.com/evoL
(function (factory) {
}
}
- return moment.lang('pl', {
+ return moment.defineLocale('pl', {
months : function (momentToFormat, format) {
if (/D MMMM/.test(format)) {
return monthsSubjective[momentToFormat.month()];
-// moment.js language configuration
-// language : brazilian portuguese (pt-br)
+// moment.js locale configuration
+// locale : brazilian portuguese (pt-br)
// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('pt-br', {
+ return moment.defineLocale('pt-br', {
months : "janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),
monthsShort : "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),
weekdays : "domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),
-// moment.js language configuration
-// language : portuguese (pt)
+// moment.js locale configuration
+// locale : portuguese (pt)
// author : Jefferson : https://github.com/jalex79
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('pt', {
+ return moment.defineLocale('pt', {
months : "janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),
monthsShort : "jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),
weekdays : "domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),
-// moment.js language configuration
-// language : romanian (ro)
+// moment.js locale configuration
+// locale : romanian (ro)
// author : Vlad Gurdiga : https://github.com/gurdiga
// author : Valentin Agachi : https://github.com/avaly
}(function (moment) {
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
- 'mm': 'minute',
- 'hh': 'ore',
- 'dd': 'zile',
- 'MM': 'luni',
- 'yy': 'ani'
- },
+ 'mm': 'minute',
+ 'hh': 'ore',
+ 'dd': 'zile',
+ 'MM': 'luni',
+ 'yy': 'ani'
+ },
separator = ' ';
if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
separator = ' de ';
return number + separator + format[key];
}
- return moment.lang('ro', {
+ return moment.defineLocale('ro', {
months : "ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),
monthsShort : "ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),
weekdays : "duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),
-// moment.js language configuration
-// language : russian (ru)
+// moment.js locale configuration
+// locale : russian (ru)
// author : Viktorminator : https://github.com/Viktorminator
// Author : Menelion Elensúle : https://github.com/Oire
return weekdays[nounCase][m.day()];
}
- return moment.lang('ru', {
+ return moment.defineLocale('ru', {
months : monthsCaseReplace,
monthsShort : monthsShortCaseReplace,
weekdays : weekdaysCaseReplace,
-// moment.js language configuration
-// language : slovak (sk)
+// moment.js locale configuration
+// locale : slovak (sk)
// author : Martin Minka : https://github.com/k2s
// based on work of petrbela : https://github.com/petrbela
}
}
- return moment.lang('sk', {
+ return moment.defineLocale('sk', {
months : months,
monthsShort : monthsShort,
monthsParse : (function (months, monthsShort) {
-// moment.js language configuration
-// language : slovenian (sl)
+// moment.js locale configuration
+// locale : slovenian (sl)
// author : Robert Sedovšek : https://github.com/sedovsek
(function (factory) {
}
}
- return moment.lang('sl', {
+ return moment.defineLocale('sl', {
months : "januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),
monthsShort : "jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),
weekdays : "nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),
-// moment.js language configuration
-// language : Albanian (sq)
+// moment.js locale configuration
+// locale : Albanian (sq)
// author : Flakërim Ismani : https://github.com/flakerimi
// author: Menelion Elensúle: https://github.com/Oire (tests)
// author : Oerd Cukalla : https://github.com/oerd (fixes)
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('sq', {
+ return moment.defineLocale('sq', {
months : "Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),
monthsShort : "Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),
weekdays : "E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),
-// moment.js language configuration
-// language : Serbian-cyrillic (sr-cyrl)
+// moment.js locale configuration
+// locale : Serbian-cyrillic (sr-cyrl)
// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
-
var translator = {
words: { //Different grammatical cases
m: ['један минут', 'једне минуте'],
}
};
- return moment.lang('sr-cyrl', {
+ return moment.defineLocale('sr-cyrl', {
months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
-// moment.js language configuration
-// language : Serbian-latin (sr)
+// moment.js locale configuration
+// locale : Serbian-latin (sr)
// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
-
var translator = {
words: { //Different grammatical cases
m: ['jedan minut', 'jedne minute'],
}
};
- return moment.lang('sr', {
+ return moment.defineLocale('sr', {
months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
-// moment.js language configuration
-// language : swedish (sv)
+// moment.js locale configuration
+// locale : swedish (sv)
// author : Jens Alm : https://github.com/ulmus
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('sv', {
+ return moment.defineLocale('sv', {
months : "januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),
monthsShort : "jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),
weekdays : "söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),
},
ordinal : function (number) {
var b = number % 10,
- output = (~~ (number % 100 / 10) === 1) ? 'e' :
+ output = (~~(number % 100 / 10) === 1) ? 'e' :
(b === 1) ? 'a' :
(b === 2) ? 'a' :
(b === 3) ? 'e' : 'e';
-// moment.js language configuration
-// language : tamil (ta)
+// moment.js locale configuration
+// locale : tamil (ta)
// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
(function (factory) {
'௦': '0'
}; */
- return moment.lang('ta', {
+ return moment.defineLocale('ta', {
months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"),
monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split("_"),
weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split("_"),
},
-// refer http://ta.wikipedia.org/s/1er1
+ // refer http://ta.wikipedia.org/s/1er1
meridiem : function (hour, minute, isLower) {
if (hour >= 6 && hour <= 10) {
return " காலை";
- } else if (hour >= 10 && hour <= 14) {
+ } else if (hour >= 10 && hour <= 14) {
return " நண்பகல்";
- } else if (hour >= 14 && hour <= 18) {
+ } else if (hour >= 14 && hour <= 18) {
return " எற்பாடு";
- } else if (hour >= 18 && hour <= 20) {
+ } else if (hour >= 18 && hour <= 20) {
return " மாலை";
- } else if (hour >= 20 && hour <= 24) {
+ } else if (hour >= 20 && hour <= 24) {
return " இரவு";
- } else if (hour >= 0 && hour <= 6) {
+ } else if (hour >= 0 && hour <= 6) {
return " வைகறை";
}
},
-// moment.js language configuration
-// language : thai (th)
+// moment.js locale configuration
+// locale : thai (th)
// author : Kridsada Thanabulpong : https://github.com/sirn
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('th', {
+ return moment.defineLocale('th', {
months : "มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),
monthsShort : "มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),
weekdays : "อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),
-// moment.js language configuration
-// language : Tagalog/Filipino (tl-ph)
+// moment.js locale configuration
+// locale : Tagalog/Filipino (tl-ph)
// author : Dan Hagman
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('tl-ph', {
+ return moment.defineLocale('tl-ph', {
months : "Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),
monthsShort : "Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),
weekdays : "Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),
-// moment.js language configuration
-// language : turkish (tr)
+// moment.js locale configuration
+// locale : turkish (tr)
// authors : Erhan Gundogan : https://github.com/erhangundogan,
// Burak Yiğit Kaya: https://github.com/BYK
factory(window.moment); // Browser global
}
}(function (moment) {
-
var suffixes = {
1: "'inci",
5: "'inci",
90: "'ıncı"
};
- return moment.lang('tr', {
+ return moment.defineLocale('tr', {
months : "Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),
monthsShort : "Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),
weekdays : "Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),
-// moment.js language configuration
-// language : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
+// moment.js locale configuration
+// locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
// author : Abdel Said : https://github.com/abdelsaid
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('tzm-latn', {
+ return moment.defineLocale('tzm-latn', {
months : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
monthsShort : "innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),
weekdays : "asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),
-// moment.js language configuration
-// language : Morocco Central Atlas Tamaziɣt (tzm)
+// moment.js locale configuration
+// locale : Morocco Central Atlas Tamaziɣt (tzm)
// author : Abdel Said : https://github.com/abdelsaid
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('tzm', {
+ return moment.defineLocale('tzm', {
months : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),
monthsShort : "ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),
weekdays : "ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),
-// moment.js language configuration
-// language : ukrainian (uk)
+// moment.js locale configuration
+// locale : ukrainian (uk)
// author : zemlanin : https://github.com/zemlanin
// Author : Menelion Elensúle : https://github.com/Oire
};
}
- return moment.lang('uk', {
+ return moment.defineLocale('uk', {
months : monthsCaseReplace,
monthsShort : "січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),
weekdays : weekdaysCaseReplace,
-// moment.js language configuration
-// language : uzbek
+// moment.js locale configuration
+// locale : uzbek
// author : Sardor Muminov : https://github.com/muminoff
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('uz', {
+ return moment.defineLocale('uz', {
months : "январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),
monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),
weekdays : "Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),
-// moment.js language configuration
-// language : vietnamese (vi)
+// moment.js locale configuration
+// locale : vietnamese (vi)
// author : Bang Nguyen : https://github.com/bangnk
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('vi', {
+ return moment.defineLocale('vi', {
months : "tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),
monthsShort : "Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),
weekdays : "chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),
-// moment.js language configuration
-// language : chinese
+// moment.js locale configuration
+// locale : chinese
// author : suupic : https://github.com/suupic
// author : Zeno Zeng : https://github.com/zenozeng
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('zh-cn', {
+ return moment.defineLocale('zh-cn', {
months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
-// moment.js language configuration
-// language : traditional chinese (zh-tw)
+// moment.js locale configuration
+// locale : traditional chinese (zh-tw)
// author : Ben : https://github.com/ben-lin
(function (factory) {
factory(window.moment); // Browser global
}
}(function (moment) {
- return moment.lang('zh-tw', {
+ return moment.defineLocale('zh-tw', {
months : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),
monthsShort : "1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),
weekdays : "星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),
//! moment.js
-//! version : 2.7.0
+//! version : 2.8.1
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
(function (undefined) {
-
/************************************
Constants
************************************/
var moment,
- VERSION = "2.7.0",
+ VERSION = '2.8.1',
// the global-scope this is NOT the global object in Node.js
globalScope = typeof global !== 'undefined' ? global : this,
oldGlobalMoment,
SECOND = 5,
MILLISECOND = 6,
- // internal storage for language config files
- languages = {},
+ // internal storage for locale config files
+ locales = {},
- // moment internal properties
- momentProperties = {
- _isAMomentObject: null,
- _i : null,
- _f : null,
- _l : null,
- _strict : null,
- _tzm : null,
- _isUTC : null,
- _offset : null, // optional. Combine with _isUTC
- _pf : null,
- _lang : null // optional
- },
+ // extra moment internal properties (plugins register props here)
+ momentProperties = [],
// check for nodeJS
hasModule = (typeof module !== 'undefined' && module.exports),
// default relative time thresholds
relativeTimeThresholds = {
- s: 45, //seconds to minutes
- m: 45, //minutes to hours
- h: 22, //hours to days
- dd: 25, //days to month (month == 1)
- dm: 45, //days to months (months > 1)
- dy: 345 //days to year
+ s: 45, // seconds to minute
+ m: 45, // minutes to hour
+ h: 22, // hours to day
+ d: 26, // days to month
+ M: 11 // months to year
},
// tokens to ordinalize and pad
return this.month() + 1;
},
MMM : function (format) {
- return this.lang().monthsShort(this, format);
+ return this.localeData().monthsShort(this, format);
},
MMMM : function (format) {
- return this.lang().months(this, format);
+ return this.localeData().months(this, format);
},
D : function () {
return this.date();
return this.day();
},
dd : function (format) {
- return this.lang().weekdaysMin(this, format);
+ return this.localeData().weekdaysMin(this, format);
},
ddd : function (format) {
- return this.lang().weekdaysShort(this, format);
+ return this.localeData().weekdaysShort(this, format);
},
dddd : function (format) {
- return this.lang().weekdays(this, format);
+ return this.localeData().weekdays(this, format);
},
w : function () {
return this.week();
return this.isoWeekday();
},
a : function () {
- return this.lang().meridiem(this.hours(), this.minutes(), true);
+ return this.localeData().meridiem(this.hours(), this.minutes(), true);
},
A : function () {
- return this.lang().meridiem(this.hours(), this.minutes(), false);
+ return this.localeData().meridiem(this.hours(), this.minutes(), false);
},
H : function () {
return this.hours();
},
Z : function () {
var a = -this.zone(),
- b = "+";
+ b = '+';
if (a < 0) {
a = -a;
- b = "-";
+ b = '-';
}
- return b + leftZeroFill(toInt(a / 60), 2) + ":" + leftZeroFill(toInt(a) % 60, 2);
+ return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
},
ZZ : function () {
var a = -this.zone(),
- b = "+";
+ b = '+';
if (a < 0) {
a = -a;
- b = "-";
+ b = '-';
}
return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
},
}
},
+ deprecations = {},
+
lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];
// Pick the first defined of two or three arguments. dfl comes from
switch (arguments.length) {
case 2: return a != null ? a : b;
case 3: return a != null ? a : b != null ? b : c;
- default: throw new Error("Implement me");
+ default: throw new Error('Implement me');
}
}
};
}
+ function printMsg(msg) {
+ if (moment.suppressDeprecationWarnings === false &&
+ typeof console !== 'undefined' && console.warn) {
+ console.warn("Deprecation warning: " + msg);
+ }
+ }
+
function deprecate(msg, fn) {
var firstTime = true;
- function printMsg() {
- if (moment.suppressDeprecationWarnings === false &&
- typeof console !== 'undefined' && console.warn) {
- console.warn("Deprecation warning: " + msg);
- }
- }
return extend(function () {
if (firstTime) {
- printMsg();
+ printMsg(msg);
firstTime = false;
}
return fn.apply(this, arguments);
}, fn);
}
+ function deprecateSimple(name, msg) {
+ if (!deprecations[name]) {
+ printMsg(msg);
+ deprecations[name] = true;
+ }
+ }
+
function padToken(func, count) {
return function (a) {
return leftZeroFill(func.call(this, a), count);
}
function ordinalizeToken(func, period) {
return function (a) {
- return this.lang().ordinal(func.call(this, a), period);
+ return this.localeData().ordinal(func.call(this, a), period);
};
}
Constructors
************************************/
- function Language() {
-
+ function Locale() {
}
// Moment prototype object
- function Moment(config) {
- checkOverflow(config);
- extend(this, config);
+ function Moment(config, skipOverflow) {
+ if (skipOverflow !== false) {
+ checkOverflow(config);
+ }
+ copyConfig(this, config);
+ this._d = new Date(+config._d);
}
// Duration Constructor
this._data = {};
+ this._locale = moment.localeData();
+
this._bubble();
}
}
}
- if (b.hasOwnProperty("toString")) {
+ if (b.hasOwnProperty('toString')) {
a.toString = b.toString;
}
- if (b.hasOwnProperty("valueOf")) {
+ if (b.hasOwnProperty('valueOf')) {
a.valueOf = b.valueOf;
}
return a;
}
- function cloneMoment(m) {
- var result = {}, i;
- for (i in m) {
- if (m.hasOwnProperty(i) && momentProperties.hasOwnProperty(i)) {
- result[i] = m[i];
+ function copyConfig(to, from) {
+ var i, prop, val;
+
+ if (typeof from._isAMomentObject !== 'undefined') {
+ to._isAMomentObject = from._isAMomentObject;
+ }
+ if (typeof from._i !== 'undefined') {
+ to._i = from._i;
+ }
+ if (typeof from._f !== 'undefined') {
+ to._f = from._f;
+ }
+ if (typeof from._l !== 'undefined') {
+ to._l = from._l;
+ }
+ if (typeof from._strict !== 'undefined') {
+ to._strict = from._strict;
+ }
+ if (typeof from._tzm !== 'undefined') {
+ to._tzm = from._tzm;
+ }
+ if (typeof from._isUTC !== 'undefined') {
+ to._isUTC = from._isUTC;
+ }
+ if (typeof from._offset !== 'undefined') {
+ to._offset = from._offset;
+ }
+ if (typeof from._pf !== 'undefined') {
+ to._pf = from._pf;
+ }
+ if (typeof from._locale !== 'undefined') {
+ to._locale = from._locale;
+ }
+
+ if (momentProperties.length > 0) {
+ for (i in momentProperties) {
+ prop = momentProperties[i];
+ val = from[prop];
+ if (typeof val !== 'undefined') {
+ to[prop] = val;
+ }
}
}
- return result;
+ return to;
}
function absRound(number) {
return (sign ? (forceSign ? '+' : '') : '-') + output;
}
- // helper function for _.addTime and _.subtractTime
+ function positiveMomentsDifference(base, other) {
+ var res = {milliseconds: 0, months: 0};
+
+ res.months = other.month() - base.month() +
+ (other.year() - base.year()) * 12;
+ if (base.clone().add(res.months, 'M').isAfter(other)) {
+ --res.months;
+ }
+
+ res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
+
+ return res;
+ }
+
+ function momentsDifference(base, other) {
+ var res;
+ other = makeAs(other, base);
+ if (base.isBefore(other)) {
+ res = positiveMomentsDifference(base, other);
+ } else {
+ res = positiveMomentsDifference(other, base);
+ res.milliseconds = -res.milliseconds;
+ res.months = -res.months;
+ }
+
+ return res;
+ }
+
+ // TODO: remove 'name' arg after deprecation is removed
+ function createAdder(direction, name) {
+ return function (val, period) {
+ var dur, tmp;
+ //invert the arguments, but complain about it
+ if (period !== null && !isNaN(+period)) {
+ deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period).");
+ tmp = val; val = period; period = tmp;
+ }
+
+ val = typeof val === 'string' ? +val : val;
+ dur = moment.duration(val, period);
+ addOrSubtractDurationFromMoment(this, dur, direction);
+ return this;
+ };
+ }
+
function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
var milliseconds = duration._milliseconds,
days = duration._days,
}
function isDate(input) {
- return Object.prototype.toString.call(input) === '[object Date]' ||
- input instanceof Date;
+ return Object.prototype.toString.call(input) === '[object Date]' ||
+ input instanceof Date;
}
// compare two arrays, return the number of differences
moment[field] = function (format, index) {
var i, getter,
- method = moment.fn._lang[field],
+ method = moment._locale[field],
results = [];
if (typeof format === 'number') {
getter = function (i) {
var m = moment().utc().set(setter, i);
- return method.call(moment.fn._lang, m, format || '');
+ return method.call(moment._locale, m, format || '');
};
if (index != null) {
return m._isValid;
}
- function normalizeLanguage(key) {
+ function normalizeLocale(key) {
return key ? key.toLowerCase().replace('_', '-') : key;
}
+ // pick the locale from the array
+ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
+ // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
+ function chooseLocale(names) {
+ var i = 0, j, next, locale, split;
+
+ while (i < names.length) {
+ split = normalizeLocale(names[i]).split('-');
+ j = split.length;
+ next = normalizeLocale(names[i + 1]);
+ next = next ? next.split('-') : null;
+ while (j > 0) {
+ locale = loadLocale(split.slice(0, j).join('-'));
+ if (locale) {
+ return locale;
+ }
+ if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
+ //the next array item is better than a shallower substring of this one
+ break;
+ }
+ j--;
+ }
+ i++;
+ }
+ return null;
+ }
+
+ function loadLocale(name) {
+ var oldLocale = null;
+ if (!locales[name] && hasModule) {
+ try {
+ oldLocale = moment.locale();
+ require('./locale/' + name);
+ // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
+ moment.locale(oldLocale);
+ } catch (e) { }
+ }
+ return locales[name];
+ }
+
// Return a moment from input, that is local/utc/zone equivalent to model.
function makeAs(input, model) {
return model._isUTC ? moment(input).zone(model._offset || 0) :
}
/************************************
- Languages
+ Locale
************************************/
- extend(Language.prototype, {
+ extend(Locale.prototype, {
set : function (config) {
var prop, i;
}
},
- _months : "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
months : function (m) {
return this._months[m.month()];
},
- _monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
+ _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
monthsShort : function (m) {
return this._monthsShort[m.month()];
},
}
},
- _weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
weekdays : function (m) {
return this._weekdays[m.day()];
},
- _weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
+ _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
weekdaysShort : function (m) {
return this._weekdaysShort[m.day()];
},
- _weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+ _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
weekdaysMin : function (m) {
return this._weekdaysMin[m.day()];
},
},
_longDateFormat : {
- LT : "h:mm A",
- L : "MM/DD/YYYY",
- LL : "MMMM D YYYY",
- LLL : "MMMM D YYYY LT",
- LLLL : "dddd, MMMM D YYYY LT"
+ LT : 'h:mm A',
+ L : 'MM/DD/YYYY',
+ LL : 'MMMM D, YYYY',
+ LLL : 'MMMM D, YYYY LT',
+ LLLL : 'dddd, MMMM D, YYYY LT'
},
longDateFormat : function (key) {
var output = this._longDateFormat[key];
},
_relativeTime : {
- future : "in %s",
- past : "%s ago",
- s : "a few seconds",
- m : "a minute",
- mm : "%d minutes",
- h : "an hour",
- hh : "%d hours",
- d : "a day",
- dd : "%d days",
- M : "a month",
- MM : "%d months",
- y : "a year",
- yy : "%d years"
+ future : 'in %s',
+ past : '%s ago',
+ s : 'a few seconds',
+ m : 'a minute',
+ mm : '%d minutes',
+ h : 'an hour',
+ hh : '%d hours',
+ d : 'a day',
+ dd : '%d days',
+ M : 'a month',
+ MM : '%d months',
+ y : 'a year',
+ yy : '%d years'
},
+
relativeTime : function (number, withoutSuffix, string, isFuture) {
var output = this._relativeTime[string];
return (typeof output === 'function') ?
output(number, withoutSuffix, string, isFuture) :
output.replace(/%d/i, number);
},
+
pastFuture : function (diff, output) {
var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
},
ordinal : function (number) {
- return this._ordinal.replace("%d", number);
+ return this._ordinal.replace('%d', number);
},
- _ordinal : "%d",
+ _ordinal : '%d',
preparse : function (string) {
return string;
}
});
- // Loads a language definition into the `languages` cache. The function
- // takes a key and optionally values. If not in the browser and no values
- // are provided, it will load the language file module. As a convenience,
- // this function also returns the language values.
- function loadLang(key, values) {
- values.abbr = key;
- if (!languages[key]) {
- languages[key] = new Language();
- }
- languages[key].set(values);
- return languages[key];
- }
-
- // Remove a language from the `languages` cache. Mostly useful in tests.
- function unloadLang(key) {
- delete languages[key];
- }
-
- // Determines which language definition to use and returns it.
- //
- // With no parameters, it will return the global language. If you
- // pass in a language key, such as 'en', it will return the
- // definition for 'en', so long as 'en' has already been loaded using
- // moment.lang.
- function getLangDefinition(key) {
- var i = 0, j, lang, next, split,
- get = function (k) {
- if (!languages[k] && hasModule) {
- try {
- require('./lang/' + k);
- } catch (e) { }
- }
- return languages[k];
- };
-
- if (!key) {
- return moment.fn._lang;
- }
-
- if (!isArray(key)) {
- //short-circuit everything else
- lang = get(key);
- if (lang) {
- return lang;
- }
- key = [key];
- }
-
- //pick the language from the array
- //try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
- //substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
- while (i < key.length) {
- split = normalizeLanguage(key[i]).split('-');
- j = split.length;
- next = normalizeLanguage(key[i + 1]);
- next = next ? next.split('-') : null;
- while (j > 0) {
- lang = get(split.slice(0, j).join('-'));
- if (lang) {
- return lang;
- }
- if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
- //the next array item is better than a shallower substring of this one
- break;
- }
- j--;
- }
- i++;
- }
- return moment.fn._lang;
- }
-
/************************************
Formatting
************************************/
function removeFormattingTokens(input) {
if (input.match(/\[[\s\S]/)) {
- return input.replace(/^\[|\]$/g, "");
+ return input.replace(/^\[|\]$/g, '');
}
- return input.replace(/\\/g, "");
+ return input.replace(/\\/g, '');
}
function makeFormatFunction(format) {
}
return function (mom) {
- var output = "";
+ var output = '';
for (i = 0; i < length; i++) {
output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
}
// format date using native date object
function formatMoment(m, format) {
-
if (!m.isValid()) {
- return m.lang().invalidDate();
+ return m.localeData().invalidDate();
}
- format = expandFormat(format, m.lang());
+ format = expandFormat(format, m.localeData());
if (!formatFunctions[format]) {
formatFunctions[format] = makeFormatFunction(format);
return formatFunctions[format](m);
}
- function expandFormat(format, lang) {
+ function expandFormat(format, locale) {
var i = 5;
function replaceLongDateFormatTokens(input) {
- return lang.longDateFormat(input) || input;
+ return locale.longDateFormat(input) || input;
}
localFormattingTokens.lastIndex = 0;
case 'ggggg':
return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
case 'S':
- if (strict) { return parseTokenOneDigit; }
+ if (strict) {
+ return parseTokenOneDigit;
+ }
/* falls through */
case 'SS':
- if (strict) { return parseTokenTwoDigits; }
+ if (strict) {
+ return parseTokenTwoDigits;
+ }
/* falls through */
case 'SSS':
- if (strict) { return parseTokenThreeDigits; }
+ if (strict) {
+ return parseTokenThreeDigits;
+ }
/* falls through */
case 'DDD':
return parseTokenOneToThreeDigits;
return parseTokenWord;
case 'a':
case 'A':
- return getLangDefinition(config._l)._meridiemParse;
+ return config._locale._meridiemParse;
case 'X':
return parseTokenTimestampMs;
case 'Z':
case 'Do':
return parseTokenOrdinal;
default :
- a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), "i"));
+ a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
return a;
}
}
function timezoneMinutesFromString(string) {
- string = string || "";
+ string = string || '';
var possibleTzMatches = (string.match(parseTokenTimezone) || []),
tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
break;
case 'MMM' : // fall through to MMMM
case 'MMMM' :
- a = getLangDefinition(config._l).monthsParse(input);
+ a = config._locale.monthsParse(input);
// if we didn't find a month name, mark the date as invalid.
if (a != null) {
datePartArray[MONTH] = a;
// AM / PM
case 'a' : // fall through to A
case 'A' :
- config._isPm = getLangDefinition(config._l).isPM(input);
+ config._isPm = config._locale.isPM(input);
break;
// 24 HOUR
case 'H' : // fall through to hh
case 'dd':
case 'ddd':
case 'dddd':
- a = getLangDefinition(config._l).weekdaysParse(input);
+ a = config._locale.weekdaysParse(input);
// if we didn't get a weekday name, mark the date as invalid
if (a != null) {
config._w = config._w || {};
}
function dayOfYearFromWeekInfo(config) {
- var w, weekYear, week, weekday, dow, doy, temp, lang;
+ var w, weekYear, week, weekday, dow, doy, temp;
w = config._w;
if (w.GG != null || w.W != null || w.E != null) {
week = dfl(w.W, 1);
weekday = dfl(w.E, 1);
} else {
- lang = getLangDefinition(config._l);
- dow = lang._week.dow;
- doy = lang._week.doy;
+ dow = config._locale._week.dow;
+ doy = config._locale._week.doy;
weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
week = dfl(w.w, 1);
// date from string and format string
function makeDateFromStringAndFormat(config) {
-
if (config._f === moment.ISO_8601) {
parseISO(config);
return;
config._pf.empty = true;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
- var lang = getLangDefinition(config._l),
- string = '' + config._i,
+ var string = '' + config._i,
i, parsedInput, tokens, token, skipped,
stringLength = string.length,
totalParsedInputLength = 0;
- tokens = expandFormat(config._f, lang).match(formattingTokens) || [];
+ tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
for (i = 0; i < tokens.length; i++) {
token = tokens[i];
for (i = 0; i < config._f.length; i++) {
currentScore = 0;
- tempConfig = extend({}, config);
+ tempConfig = copyConfig({}, config);
tempConfig._pf = defaultParsingFlags();
tempConfig._f = config._f[i];
makeDateFromStringAndFormat(tempConfig);
for (i = 0, l = isoDates.length; i < l; i++) {
if (isoDates[i][1].exec(string)) {
// match[5] should be "T" or undefined
- config._f = isoDates[i][0] + (match[6] || " ");
+ config._f = isoDates[i][0] + (match[6] || ' ');
break;
}
}
}
}
if (string.match(parseTokenTimezone)) {
- config._f += "Z";
+ config._f += 'Z';
}
makeDateFromStringAndFormat(config);
} else {
}
function makeDateFromInput(config) {
- var input = config._i,
- matched = aspNetJsonRegex.exec(input);
-
+ var input = config._i, matched;
if (input === undefined) {
config._d = new Date();
- } else if (matched) {
+ } else if (isDate(input)) {
+ config._d = new Date(+input);
+ } else if ((matched = aspNetJsonRegex.exec(input)) !== null) {
config._d = new Date(+matched[1]);
} else if (typeof input === 'string') {
makeDateFromString(config);
} else if (isArray(input)) {
config._a = input.slice(0);
dateFromConfig(config);
- } else if (isDate(input)) {
- config._d = new Date(+input);
} else if (typeof(input) === 'object') {
dateFromObject(config);
} else if (typeof(input) === 'number') {
return date;
}
- function parseWeekday(input, language) {
+ function parseWeekday(input, locale) {
if (typeof input === 'string') {
if (!isNaN(input)) {
input = parseInt(input, 10);
}
else {
- input = language.weekdaysParse(input);
+ input = locale.weekdaysParse(input);
if (typeof input !== 'number') {
return null;
}
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
- function substituteTimeAgo(string, number, withoutSuffix, isFuture, lang) {
- return lang.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
+ function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
+ return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
}
- function relativeTime(milliseconds, withoutSuffix, lang) {
- var seconds = round(Math.abs(milliseconds) / 1000),
- minutes = round(seconds / 60),
- hours = round(minutes / 60),
- days = round(hours / 24),
- years = round(days / 365),
- args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
+ function relativeTime(posNegDuration, withoutSuffix, locale) {
+ var duration = moment.duration(posNegDuration).abs(),
+ seconds = round(duration.as('s')),
+ minutes = round(duration.as('m')),
+ hours = round(duration.as('h')),
+ days = round(duration.as('d')),
+ months = round(duration.as('M')),
+ years = round(duration.as('y')),
+
+ args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
minutes === 1 && ['m'] ||
minutes < relativeTimeThresholds.m && ['mm', minutes] ||
hours === 1 && ['h'] ||
hours < relativeTimeThresholds.h && ['hh', hours] ||
days === 1 && ['d'] ||
- days <= relativeTimeThresholds.dd && ['dd', days] ||
- days <= relativeTimeThresholds.dm && ['M'] ||
- days < relativeTimeThresholds.dy && ['MM', round(days / 30)] ||
+ days < relativeTimeThresholds.d && ['dd', days] ||
+ months === 1 && ['M'] ||
+ months < relativeTimeThresholds.M && ['MM', months] ||
years === 1 && ['y'] || ['yy', years];
+
args[2] = withoutSuffix;
- args[3] = milliseconds > 0;
- args[4] = lang;
+ args[3] = +posNegDuration > 0;
+ args[4] = locale;
return substituteTimeAgo.apply({}, args);
}
daysToDayOfWeek += 7;
}
- adjustedMoment = moment(mom).add('d', daysToDayOfWeek);
+ adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
return {
week: Math.ceil(adjustedMoment.dayOfYear() / 7),
year: adjustedMoment.year()
var input = config._i,
format = config._f;
+ config._locale = config._locale || moment.localeData(config._l);
+
if (input === null || (format === undefined && input === '')) {
return moment.invalid({nullInput: true});
}
if (typeof input === 'string') {
- config._i = input = getLangDefinition().preparse(input);
+ config._i = input = config._locale.preparse(input);
}
if (moment.isMoment(input)) {
- config = cloneMoment(input);
-
- config._d = new Date(+input._d);
+ return new Moment(input, true);
} else if (format) {
if (isArray(format)) {
makeDateFromStringAndArray(config);
return new Moment(config);
}
- moment = function (input, format, lang, strict) {
+ moment = function (input, format, locale, strict) {
var c;
- if (typeof(lang) === "boolean") {
- strict = lang;
- lang = undefined;
+ if (typeof(locale) === "boolean") {
+ strict = locale;
+ locale = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c._isAMomentObject = true;
c._i = input;
c._f = format;
- c._l = lang;
+ c._l = locale;
c._strict = strict;
c._isUTC = false;
c._pf = defaultParsingFlags();
moment.suppressDeprecationWarnings = false;
moment.createFromInputFallback = deprecate(
- "moment construction falls back to js Date. This is " +
- "discouraged and will be removed in upcoming major " +
- "release. Please refer to " +
- "https://github.com/moment/moment/issues/1407 for more info.",
- function (config) {
- config._d = new Date(config._i);
- });
+ 'moment construction falls back to js Date. This is ' +
+ 'discouraged and will be removed in upcoming major ' +
+ 'release. Please refer to ' +
+ 'https://github.com/moment/moment/issues/1407 for more info.',
+ function (config) {
+ config._d = new Date(config._i);
+ }
+ );
// Pick a moment m from moments so that m[fn](other) is true for all
// other. This relies on the function fn to be transitive.
};
// creating with utc
- moment.utc = function (input, format, lang, strict) {
+ moment.utc = function (input, format, locale, strict) {
var c;
- if (typeof(lang) === "boolean") {
- strict = lang;
- lang = undefined;
+ if (typeof(locale) === "boolean") {
+ strict = locale;
+ locale = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c._isAMomentObject = true;
c._useUTC = true;
c._isUTC = true;
- c._l = lang;
+ c._l = locale;
c._i = input;
c._f = format;
c._strict = strict;
match = null,
sign,
ret,
- parseIso;
+ parseIso,
+ diffRes;
if (moment.isDuration(input)) {
duration = {
duration.milliseconds = input;
}
} else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
- sign = (match[1] === "-") ? -1 : 1;
+ sign = (match[1] === '-') ? -1 : 1;
duration = {
y: 0,
d: toInt(match[DATE]) * sign,
ms: toInt(match[MILLISECOND]) * sign
};
} else if (!!(match = isoDurationRegex.exec(input))) {
- sign = (match[1] === "-") ? -1 : 1;
+ sign = (match[1] === '-') ? -1 : 1;
parseIso = function (inp) {
// We'd normally use ~~inp for this, but unfortunately it also
// converts floats to ints.
s: parseIso(match[7]),
w: parseIso(match[8])
};
+ } else if (typeof duration === 'object' &&
+ ('from' in duration || 'to' in duration)) {
+ diffRes = momentsDifference(moment(duration.from), moment(duration.to));
+
+ duration = {};
+ duration.ms = diffRes.milliseconds;
+ duration.M = diffRes.months;
}
ret = new Duration(duration);
- if (moment.isDuration(input) && input.hasOwnProperty('_lang')) {
- ret._lang = input._lang;
+ if (moment.isDuration(input) && input.hasOwnProperty('_locale')) {
+ ret._locale = input._locale;
}
return ret;
moment.updateOffset = function () {};
// This function allows you to set a threshold for relative time strings
- moment.relativeTimeThreshold = function(threshold, limit) {
- if (relativeTimeThresholds[threshold] === undefined) {
- return false;
- }
- relativeTimeThresholds[threshold] = limit;
- return true;
+ moment.relativeTimeThreshold = function (threshold, limit) {
+ if (relativeTimeThresholds[threshold] === undefined) {
+ return false;
+ }
+ if (limit === undefined) {
+ return relativeTimeThresholds[threshold];
+ }
+ relativeTimeThresholds[threshold] = limit;
+ return true;
};
- // This function will load languages and then set the global language. If
+ moment.lang = deprecate(
+ "moment.lang is deprecated. Use moment.locale instead.",
+ function (key, value) {
+ return moment.locale(key, value);
+ }
+ );
+
+ // This function will load locale and then set the global locale. If
// no arguments are passed in, it will simply return the current global
- // language key.
- moment.lang = function (key, values) {
- var r;
- if (!key) {
- return moment.fn._lang._abbr;
- }
- if (values) {
- loadLang(normalizeLanguage(key), values);
- } else if (values === null) {
- unloadLang(key);
- key = 'en';
- } else if (!languages[key]) {
- getLangDefinition(key);
- }
- r = moment.duration.fn._lang = moment.fn._lang = getLangDefinition(key);
- return r._abbr;
+ // locale key.
+ moment.locale = function (key, values) {
+ var data;
+ if (key) {
+ if (typeof(values) !== "undefined") {
+ data = moment.defineLocale(key, values);
+ }
+ else {
+ data = moment.localeData(key);
+ }
+
+ if (data) {
+ moment.duration._locale = moment._locale = data;
+ }
+ }
+
+ return moment._locale._abbr;
};
- // returns language data
- moment.langData = function (key) {
- if (key && key._lang && key._lang._abbr) {
- key = key._lang._abbr;
+ moment.defineLocale = function (name, values) {
+ if (values !== null) {
+ values.abbr = name;
+ if (!locales[name]) {
+ locales[name] = new Locale();
+ }
+ locales[name].set(values);
+
+ // backwards compat for now: also set the locale
+ moment.locale(name);
+
+ return locales[name];
+ } else {
+ // useful for testing
+ delete locales[name];
+ return null;
+ }
+ };
+
+ moment.langData = deprecate(
+ "moment.langData is deprecated. Use moment.localeData instead.",
+ function (key) {
+ return moment.localeData(key);
+ }
+ );
+
+ // returns locale data
+ moment.localeData = function (key) {
+ var locale;
+
+ if (key && key._locale && key._locale._abbr) {
+ key = key._locale._abbr;
+ }
+
+ if (!key) {
+ return moment._locale;
}
- return getLangDefinition(key);
+
+ if (!isArray(key)) {
+ //short-circuit everything else
+ locale = loadLocale(key);
+ if (locale) {
+ return locale;
+ }
+ key = [key];
+ }
+
+ return chooseLocale(key);
};
// compare moment object
},
toString : function () {
- return this.clone().lang('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
+ return this.clone().locale('en').format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
},
toDate : function () {
},
isDSTShifted : function () {
-
if (this._a) {
return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
}
return this._pf.overflow;
},
- utc : function () {
- return this.zone(0);
+ utc : function (keepLocalTime) {
+ return this.zone(0, keepLocalTime);
},
- local : function () {
- this.zone(0);
- this._isUTC = false;
+ local : function (keepLocalTime) {
+ if (this._isUTC) {
+ this.zone(0, keepLocalTime);
+ this._isUTC = false;
+
+ if (keepLocalTime) {
+ this.add(this._d.getTimezoneOffset(), 'm');
+ }
+ }
return this;
},
format : function (inputString) {
var output = formatMoment(this, inputString || moment.defaultFormat);
- return this.lang().postformat(output);
+ return this.localeData().postformat(output);
},
- add : function (input, val) {
- var dur;
- // switch args to support add('s', 1) and add(1, 's')
- if (typeof input === 'string' && typeof val === 'string') {
- dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
- } else if (typeof input === 'string') {
- dur = moment.duration(+val, input);
- } else {
- dur = moment.duration(input, val);
- }
- addOrSubtractDurationFromMoment(this, dur, 1);
- return this;
- },
+ add : createAdder(1, 'add'),
- subtract : function (input, val) {
- var dur;
- // switch args to support subtract('s', 1) and subtract(1, 's')
- if (typeof input === 'string' && typeof val === 'string') {
- dur = moment.duration(isNaN(+val) ? +input : +val, isNaN(+val) ? val : input);
- } else if (typeof input === 'string') {
- dur = moment.duration(+val, input);
- } else {
- dur = moment.duration(input, val);
- }
- addOrSubtractDurationFromMoment(this, dur, -1);
- return this;
- },
+ subtract : createAdder(-1, 'subtract'),
diff : function (input, units, asFloat) {
var that = makeAs(input, this),
},
from : function (time, withoutSuffix) {
- return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix);
+ return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
},
fromNow : function (withoutSuffix) {
diff < 1 ? 'sameDay' :
diff < 2 ? 'nextDay' :
diff < 7 ? 'nextWeek' : 'sameElse';
- return this.format(this.lang().calendar(format, this));
+ return this.format(this.localeData().calendar(format, this));
},
isLeapYear : function () {
day : function (input) {
var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
if (input != null) {
- input = parseWeekday(input, this.lang());
- return this.add({ d : input - day });
+ input = parseWeekday(input, this.localeData());
+ return this.add(input - day, 'd');
} else {
return day;
}
month : makeAccessor('Month', true),
- startOf: function (units) {
+ startOf : function (units) {
units = normalizeUnits(units);
// the following switch intentionally omits break keywords
// to utilize falling through the cases.
endOf: function (units) {
units = normalizeUnits(units);
- return this.startOf(units).add((units === 'isoWeek' ? 'week' : units), 1).subtract('ms', 1);
+ return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
},
isAfter: function (input, units) {
},
min: deprecate(
- "moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",
+ 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
function (other) {
other = moment.apply(null, arguments);
return other < this ? this : other;
),
max: deprecate(
- "moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",
+ 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
function (other) {
other = moment.apply(null, arguments);
return other > this ? this : other;
}
),
- // keepTime = true means only change the timezone, without affecting
- // the local hour. So 5:31:26 +0300 --[zone(2, true)]--> 5:31:26 +0200
- // It is possible that 5:31:26 doesn't exist int zone +0200, so we
- // adjust the time as needed, to be valid.
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone
+ // +0200, so we adjust the time as needed, to be valid.
//
// Keeping the time actually adds/subtracts (one hour)
// from the actual represented time. That is why we call updateOffset
// a second time. In case it wants us to change the offset again
// _changeInProgress == true case, then we have to adjust, because
// there is no such time in the given timezone.
- zone : function (input, keepTime) {
- var offset = this._offset || 0;
+ zone : function (input, keepLocalTime) {
+ var offset = this._offset || 0,
+ localAdjust;
if (input != null) {
- if (typeof input === "string") {
+ if (typeof input === 'string') {
input = timezoneMinutesFromString(input);
}
if (Math.abs(input) < 16) {
input = input * 60;
}
+ if (!this._isUTC && keepLocalTime) {
+ localAdjust = this._d.getTimezoneOffset();
+ }
this._offset = input;
this._isUTC = true;
+ if (localAdjust != null) {
+ this.subtract(localAdjust, 'm');
+ }
if (offset !== input) {
- if (!keepTime || this._changeInProgress) {
+ if (!keepLocalTime || this._changeInProgress) {
addOrSubtractDurationFromMoment(this,
moment.duration(offset - input, 'm'), 1, false);
} else if (!this._changeInProgress) {
},
zoneAbbr : function () {
- return this._isUTC ? "UTC" : "";
+ return this._isUTC ? 'UTC' : '';
},
zoneName : function () {
- return this._isUTC ? "Coordinated Universal Time" : "";
+ return this._isUTC ? 'Coordinated Universal Time' : '';
},
parseZone : function () {
dayOfYear : function (input) {
var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
- return input == null ? dayOfYear : this.add("d", (input - dayOfYear));
+ return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
},
quarter : function (input) {
},
weekYear : function (input) {
- var year = weekOfYear(this, this.lang()._week.dow, this.lang()._week.doy).year;
- return input == null ? year : this.add("y", (input - year));
+ var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
+ return input == null ? year : this.add((input - year), 'y');
},
isoWeekYear : function (input) {
var year = weekOfYear(this, 1, 4).year;
- return input == null ? year : this.add("y", (input - year));
+ return input == null ? year : this.add((input - year), 'y');
},
week : function (input) {
- var week = this.lang().week(this);
- return input == null ? week : this.add("d", (input - week) * 7);
+ var week = this.localeData().week(this);
+ return input == null ? week : this.add((input - week) * 7, 'd');
},
isoWeek : function (input) {
var week = weekOfYear(this, 1, 4).week;
- return input == null ? week : this.add("d", (input - week) * 7);
+ return input == null ? week : this.add((input - week) * 7, 'd');
},
weekday : function (input) {
- var weekday = (this.day() + 7 - this.lang()._week.dow) % 7;
- return input == null ? weekday : this.add("d", input - weekday);
+ var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return input == null ? weekday : this.add(input - weekday, 'd');
},
isoWeekday : function (input) {
},
weeksInYear : function () {
- var weekInfo = this._lang._week;
+ var weekInfo = this.localeData()._week;
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
},
return this;
},
- // If passed a language key, it will set the language for this
- // instance. Otherwise, it will return the language configuration
+ // If passed a locale key, it will set the locale for this
+ // instance. Otherwise, it will return the locale configuration
// variables for this instance.
- lang : function (key) {
+ locale : function (key) {
if (key === undefined) {
- return this._lang;
+ return this._locale._abbr;
} else {
- this._lang = getLangDefinition(key);
+ this._locale = moment.localeData(key);
return this;
}
+ },
+
+ lang : deprecate(
+ "moment().lang() is deprecated. Use moment().localeData() instead.",
+ function (key) {
+ if (key === undefined) {
+ return this.localeData();
+ } else {
+ this._locale = moment.localeData(key);
+ return this;
+ }
+ }
+ ),
+
+ localeData : function () {
+ return this._locale;
}
});
// TODO: Move this out of here!
if (typeof value === 'string') {
- value = mom.lang().monthsParse(value);
+ value = mom.localeData().monthsParse(value);
// TODO: Another silent failure?
if (typeof value !== 'number') {
return mom;
moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true);
// moment.fn.month is defined separately
moment.fn.date = makeAccessor('Date', true);
- moment.fn.dates = deprecate("dates accessor is deprecated. Use date instead.", makeAccessor('Date', true));
+ moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true));
moment.fn.year = makeAccessor('FullYear', true);
- moment.fn.years = deprecate("years accessor is deprecated. Use year instead.", makeAccessor('FullYear', true));
+ moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true));
// add plural methods
moment.fn.days = moment.fn.day;
************************************/
+ function daysToYears (days) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ return days * 400 / 146097;
+ }
+
+ function yearsToDays (years) {
+ // years * 365 + absRound(years / 4) -
+ // absRound(years / 100) + absRound(years / 400);
+ return years * 146097 / 400;
+ }
+
extend(moment.duration.fn = Duration.prototype, {
_bubble : function () {
days = this._days,
months = this._months,
data = this._data,
- seconds, minutes, hours, years;
+ seconds, minutes, hours, years = 0;
// The following code bubbles up values, see the tests for
// examples of what that means.
data.hours = hours % 24;
days += absRound(hours / 24);
- data.days = days % 30;
+ // Accurately convert days to years, assume start from year 0.
+ years = absRound(daysToYears(days));
+ days -= absRound(yearsToDays(years));
+
+ // 30 days to a month
+ // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
months += absRound(days / 30);
- data.months = months % 12;
+ days %= 30;
+
+ // 12 months -> 1 year
+ years += absRound(months / 12);
+ months %= 12;
- years = absRound(months / 12);
+ data.days = days;
+ data.months = months;
data.years = years;
},
+ abs : function () {
+ this._milliseconds = Math.abs(this._milliseconds);
+ this._days = Math.abs(this._days);
+ this._months = Math.abs(this._months);
+
+ this._data.milliseconds = Math.abs(this._data.milliseconds);
+ this._data.seconds = Math.abs(this._data.seconds);
+ this._data.minutes = Math.abs(this._data.minutes);
+ this._data.hours = Math.abs(this._data.hours);
+ this._data.months = Math.abs(this._data.months);
+ this._data.years = Math.abs(this._data.years);
+
+ return this;
+ },
+
weeks : function () {
return absRound(this.days() / 7);
},
},
humanize : function (withSuffix) {
- var difference = +this,
- output = relativeTime(difference, !withSuffix, this.lang());
+ var output = relativeTime(this, !withSuffix, this.localeData());
if (withSuffix) {
- output = this.lang().pastFuture(difference, output);
+ output = this.localeData().pastFuture(+this, output);
}
- return this.lang().postformat(output);
+ return this.localeData().postformat(output);
},
add : function (input, val) {
},
as : function (units) {
+ var days, months;
units = normalizeUnits(units);
- return this['as' + units.charAt(0).toUpperCase() + units.slice(1) + 's']();
+
+ days = this._days + this._milliseconds / 864e5;
+ if (units === 'month' || units === 'year') {
+ months = this._months + daysToYears(days) * 12;
+ return units === 'month' ? months : months / 12;
+ } else {
+ days += yearsToDays(this._months / 12);
+ switch (units) {
+ case 'week': return days / 7;
+ case 'day': return days;
+ case 'hour': return days * 24;
+ case 'minute': return days * 24 * 60;
+ case 'second': return days * 24 * 60 * 60;
+ case 'millisecond': return days * 24 * 60 * 60 * 1000;
+ default: throw new Error('Unknown unit ' + units);
+ }
+ }
},
lang : moment.fn.lang,
+ locale : moment.fn.locale,
+
+ toIsoString : deprecate(
+ "toIsoString() is deprecated. Please use toISOString() instead " +
+ "(notice the capitals)",
+ function () {
+ return this.toISOString();
+ }
+ ),
- toIsoString : function () {
+ toISOString : function () {
// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
var years = Math.abs(this.years()),
months = Math.abs(this.months()),
(hours ? hours + 'H' : '') +
(minutes ? minutes + 'M' : '') +
(seconds ? seconds + 'S' : '');
+ },
+
+ localeData : function () {
+ return this._locale;
}
});
};
}
- function makeDurationAsGetter(name, factor) {
- moment.duration.fn['as' + name] = function () {
- return +this / factor;
- };
- }
-
for (i in unitMillisecondFactors) {
if (unitMillisecondFactors.hasOwnProperty(i)) {
- makeDurationAsGetter(i, unitMillisecondFactors[i]);
makeDurationGetter(i.toLowerCase());
}
}
- makeDurationAsGetter('Weeks', 6048e5);
+ moment.duration.fn.asMilliseconds = function () {
+ return this.as('ms');
+ };
+ moment.duration.fn.asSeconds = function () {
+ return this.as('s');
+ };
+ moment.duration.fn.asMinutes = function () {
+ return this.as('m');
+ };
+ moment.duration.fn.asHours = function () {
+ return this.as('h');
+ };
+ moment.duration.fn.asDays = function () {
+ return this.as('d');
+ };
+ moment.duration.fn.asWeeks = function () {
+ return this.as('weeks');
+ };
moment.duration.fn.asMonths = function () {
- return (+this - this.years() * 31536e6) / 2592e6 + this.years() * 12;
+ return this.as('M');
+ };
+ moment.duration.fn.asYears = function () {
+ return this.as('y');
};
-
/************************************
- Default Lang
+ Default Locale
************************************/
- // Set default language, other languages will inherit from English.
- moment.lang('en', {
+ // Set default locale, other locale will inherit from English.
+ moment.locale('en', {
ordinal : function (number) {
var b = number % 10,
output = (toInt(number % 100 / 10) === 1) ? 'th' :
}
});
- /* EMBED_LANGUAGES */
+ /* EMBED_LOCALES */
/************************************
Exposing Moment
oldGlobalMoment = globalScope.moment;
if (shouldDeprecate) {
globalScope.moment = deprecate(
- "Accessing Moment through the global scope is " +
- "deprecated, and will be removed in an upcoming " +
- "release.",
+ 'Accessing Moment through the global scope is ' +
+ 'deprecated, and will be removed in an upcoming ' +
+ 'release.',
moment);
} else {
globalScope.moment = moment;
// CommonJS module is defined
if (hasModule) {
module.exports = moment;
- } else if (typeof define === "function" && define.amd) {
- define("moment", function (require, exports, module) {
+ } else if (typeof define === 'function' && define.amd) {
+ define('moment', function (require, exports, module) {
if (module.config && module.config() && module.config().noGlobal === true) {
// release the global variable
globalScope.moment = oldGlobalMoment;
"Xiaomingyan",
"Yfdyh000",
"Zhangjintao",
- "乌拉跨氪"
+ "乌拉跨氪",
+ "Great Brightstar"
]
},
"ooui-outline-control-move-down": "下移项",
"ooui-outline-control-move-up": "上移项",
"ooui-outline-control-remove": "删除项",
"ooui-toolbar-more": "更多",
- "ooui-dialog-message-accept": "好",
+ "ooui-dialog-message-accept": "确定",
"ooui-dialog-message-reject": "取消",
"ooui-dialog-process-error": "发生一些错误",
"ooui-dialog-process-dismiss": "解除",
/*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * OOjs UI v0.1.0-pre (0e50d2e336)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
*/
.oo-ui-dialog-content > .oo-ui-window-head,
.oo-ui-dialog-content > .oo-ui-window-body,
/*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * OOjs UI v0.1.0-pre (0e50d2e336)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
*/
.oo-ui-dialog-content > .oo-ui-window-head,
.oo-ui-dialog-content > .oo-ui-window-body,
/*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * OOjs UI v0.1.0-pre (0e50d2e336)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
*/
( function ( OO ) {
// Properties
this.loading = null;
this.config = config;
+ this.dir = null;
// Initialize
this.$element
win = this.$element.prop( 'contentWindow' );
doc = win.document;
- // Figure out directionality:
+ // Cache directionality
this.dir = OO.ui.Element.getDir( this.$element ) || 'ltr';
// Initialize contents
doc.write(
'<!doctype html>' +
'<html>' +
- '<body class="oo-ui-frame-content oo-ui-' + this.dir + '" dir="' + this.dir + '">' +
+ '<body class="oo-ui-frame-content oo-ui-' + this.getDir() + '" dir="' + this.getDir() + '">' +
'</body>' +
'</html>'
);
return this;
};
+/**
+ * Get the directionality of the frame
+ *
+ * @return {string} Directionality, 'ltr' or 'rtl'
+ */
+OO.ui.Frame.prototype.getDir = function () {
+ return this.dir;
+};
+
/**
* Container for elements.
*
/*!
- * OOjs UI v0.1.0-pre (dd294dc785)
+ * OOjs UI v0.1.0-pre (0e50d2e336)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-07-30T23:10:53Z
+ * Date: 2014-08-06T12:56:55Z
*/
/* Textures */
--- /dev/null
+.jquery-confirmable-button {
+ /* Automatically flipped */
+ margin-left: 1ex;
+}
+
+.jquery-confirmable-wrapper {
+ /* Line breaks within the interface text are unpleasant */
+ white-space: nowrap;
+ /* Hiding the original text when it slides to the left */
+ overflow: hidden;
+}
+
+.jquery-confirmable-wrapper,
+.jquery-confirmable-element,
+.jquery-confirmable-interface {
+ /* We need inline-block to be able to size the elements and calculate their dimensions */
+ display: inline-block;
+ /* inline-block elements in this context align to baseline by default */
+ vertical-align: bottom;
+}
+
+.jquery-confirmable-element {
+ transition: margin 250ms cubic-bezier(0.2, 0.8, 0.2, 0.8);
+}
+
+.jquery-confirmable-interface {
+ transition: width 250ms cubic-bezier(0.2, 0.8, 0.2, 0.8);
+}
--- /dev/null
+/**
+ * jQuery confirmable plugin
+ *
+ * Released under the MIT License.
+ *
+ * @author Bartosz Dziewoński
+ *
+ * @class jQuery.plugin.confirmable
+ */
+( function ( $ ) {
+ var identity = function ( data ) {
+ return data;
+ };
+
+ /**
+ * Enable inline confirmation for given clickable element (like `<a />` or `<button />`).
+ *
+ * An additional inline confirmation step being shown before the default action is carried out on
+ * click.
+ *
+ * Calling `.confirmable( { handler: function () { … } } )` will fire the handler only after the
+ * confirmation step.
+ *
+ * The element will have the `jquery-confirmable-element` class added to it when it's clicked for
+ * the first time, which has `white-space: nowrap;` and `display: inline-block;` defined in CSS.
+ * If the computed values for the element are different when you make it confirmable, you might
+ * encounter unexpected behavior.
+ *
+ * @param {Object} [options]
+ * @param {string} [options.events='click'] Events to hook to.
+ * @param {Function} [options.wrapperCallback] Callback to fire when preparing confirmable
+ * interface. Receives the interface jQuery object as the only parameter.
+ * @param {Function} [options.buttonCallback] Callback to fire when preparing confirmable buttons.
+ * It is fired separately for the 'Yes' and 'No' button. Receives the button jQuery object as
+ * the first parameter and 'yes' or 'no' as the second.
+ * @param {Function} [options.handler] Callback to fire when the action is confirmed (user clicks
+ * the 'Yes' button).
+ * @param {string} [options.i18n] Text to use for interface elements.
+ * @param {string} [options.i18n.confirm] Text to use for the confirmation question.
+ * @param {string} [options.i18n.yes] Text to use for the 'Yes' button.
+ * @param {string} [options.i18n.no] Text to use for the 'No' button.
+ *
+ * @chainable
+ */
+ $.fn.confirmable = function ( options ) {
+ options = $.extend( true, {}, $.fn.confirmable.defaultOptions, options || {} );
+
+ return this.on( options.events, function ( e ) {
+ var $element, $text, $buttonYes, $buttonNo, $wrapper, $interface, $elementClone,
+ interfaceWidth, elementWidth, rtl, positionOffscreen, positionRestore, sideMargin;
+
+ $element = $( this );
+
+ if ( $element.data( 'jquery-confirmable-button' ) ) {
+ // We're running on a clone of this element that represents the 'Yes' or 'No' button.
+ // (This should never happen for the 'No' case unless calling code does bad things.)
+ return;
+ }
+
+ // Only prevent native event handling. Stopping other JavaScript event handlers
+ // is impossible because they might have already run (we have no control over the order).
+ e.preventDefault();
+
+ rtl = $element.css( 'direction' ) === 'rtl';
+ if ( rtl ) {
+ positionOffscreen = { position: 'absolute', right: '-9999px' };
+ positionRestore = { position: '', right: '' };
+ sideMargin = 'marginRight';
+ } else {
+ positionOffscreen = { position: 'absolute', left: '-9999px' };
+ positionRestore = { position: '', left: '' };
+ sideMargin = 'marginLeft';
+ }
+
+ if ( $element.hasClass( 'jquery-confirmable-element' ) ) {
+ $wrapper = $element.closest( '.jquery-confirmable-wrapper' );
+ $interface = $wrapper.find( '.jquery-confirmable-interface' );
+ $text = $interface.find( '.jquery-confirmable-text' );
+ $buttonYes = $interface.find( '.jquery-confirmable-button-yes' );
+ $buttonNo = $interface.find( '.jquery-confirmable-button-no' );
+
+ interfaceWidth = $interface.data( 'jquery-confirmable-width' );
+ elementWidth = $element.data( 'jquery-confirmable-width' );
+ } else {
+ $elementClone = $element.clone( true );
+ $element.addClass( 'jquery-confirmable-element' );
+
+ elementWidth = $element.width();
+ $element.data( 'jquery-confirmable-width', elementWidth );
+
+ $wrapper = $( '<span>' )
+ .addClass( 'jquery-confirmable-wrapper' );
+ $element.wrap( $wrapper );
+
+ // Build the mini-dialog
+ $text = $( '<span>' )
+ .addClass( 'jquery-confirmable-text' )
+ .text( options.i18n.confirm );
+
+ // Clone original element along with event handlers to easily replicate its behavior.
+ // We could fiddle with .trigger() etc., but that is troublesome especially since
+ // Safari doesn't implement .click() on <a> links and jQuery follows suit.
+ $buttonYes = $elementClone.clone( true )
+ .addClass( 'jquery-confirmable-button jquery-confirmable-button-yes' )
+ .data( 'jquery-confirmable-button', true )
+ .text( options.i18n.yes );
+ if ( options.handler ) {
+ $buttonYes.on( options.events, options.handler );
+ }
+ $buttonYes = options.buttonCallback( $buttonYes, 'yes' );
+
+ // Clone it without any events and prevent default action to represent the 'No' button.
+ $buttonNo = $elementClone.clone( false )
+ .addClass( 'jquery-confirmable-button jquery-confirmable-button-no' )
+ .data( 'jquery-confirmable-button', true )
+ .text( options.i18n.no )
+ .on( options.events, function ( e ) {
+ $element.css( sideMargin, 0 );
+ $interface.css( 'width', 0 );
+ e.preventDefault();
+ } );
+ $buttonNo = options.buttonCallback( $buttonNo, 'no' );
+
+ // Prevent memory leaks
+ $elementClone.remove();
+
+ $interface = $( '<span>' )
+ .addClass( 'jquery-confirmable-interface' )
+ .append( $text, $buttonYes, $buttonNo );
+ $interface = options.wrapperCallback( $interface );
+
+ // Render offscreen to measure real width
+ $interface.css( positionOffscreen );
+ // Insert it in the correct place while we're at it
+ $element.after( $interface );
+ interfaceWidth = $interface.width();
+ $interface.data( 'jquery-confirmable-width', interfaceWidth );
+ $interface.css( positionRestore );
+
+ // Hide to animate the transition later
+ $interface.css( 'width', 0 );
+ }
+
+ // Hide element, show interface. This triggers both transitions.
+ // In a timeout to trigger the 'width' transition.
+ setTimeout( function () {
+ $element.css( sideMargin, -elementWidth );
+ $interface.css( 'width', interfaceWidth );
+ }, 1 );
+ } );
+ };
+
+ /**
+ * Default options. Overridable primarily for internationalisation handling.
+ * @property {Object} defaultOptions
+ */
+ $.fn.confirmable.defaultOptions = {
+ events: 'click',
+ wrapperCallback: identity,
+ buttonCallback: identity,
+ handler: null,
+ i18n: {
+ confirm: 'Are you sure?',
+ yes: 'Yes',
+ no: 'No'
+ }
+ };
+}( jQuery ) );
--- /dev/null
+/*!
+ * jQuery confirmable plugin customization for MediaWiki
+ *
+ * This file serves to inject our localised messages into it.
+ */
+
+( function ( mw, $ ) {
+ $.fn.confirmable.defaultOptions.i18n = {
+ confirm: mw.message( 'confirmable-confirm', mw.user ).text(),
+ yes: mw.message( 'confirmable-yes' ).text(),
+ no: mw.message( 'confirmable-no' ).text()
+ };
+}( mediaWiki, jQuery ) );
border: none;
z-index: 1099;
padding: 0;
- margin: -1px -1px 0 0;
-}
-
-/* IGNORED BY IE6 */
-html > body .suggestions {
margin: -1px 0 0 0;
}
} else {
regionWidth = $region.outerWidth();
docWidth = $( document ).width();
- if ( ( regionWidth / docWidth ) > 0.85 ) {
+ if ( regionWidth > ( 0.85 * docWidth ) ) {
// If the input size takes up more than 85% of the document horizontally
// expand the suggestions to the writing direction's native end.
expandFrom = 'start';
// Calculate the center points of the input and document
regionCenter = $region.offset().left + regionWidth / 2;
docCenter = docWidth / 2;
- if ( Math.abs( regionCenter - docCenter ) / docCenter < 0.10 ) {
+ if ( Math.abs( regionCenter - docCenter ) < ( 0.10 * docCenter ) ) {
// If the input's center is within 10% of the document center
// use the writing direction's native end.
expandFrom = 'start';
colspan,
headerCount,
longestTR,
- matrixRowIndex,
- matrixColumnIndex,
exploded,
$tableHeaders = $( [] ),
$tableRows = $( 'thead:eq(0) > tr', table );
// Loop through all the dom cells of the thead
$tableRows.each( function ( rowIndex, row ) {
$.each( row.cells, function ( columnIndex, cell ) {
+ var matrixRowIndex,
+ matrixColumnIndex;
+
rowspan = Number( cell.rowSpan );
colspan = Number( cell.colSpan );
} );
// We want to find the row that has the most columns (ignoring colspan)
$.each( exploded, function ( index, cellArray ) {
- headerCount = $.unique( $( cellArray ) ).length;
+ headerCount = $( uniqueElements( cellArray ) ).filter( 'th' ).length;
if ( headerCount >= maxSeen ) {
maxSeen = headerCount;
longestTR = index;
}
} );
// We cannot use $.unique() here because it sorts into dom order, which is undesirable
- $tableHeaders = $( uniqueElements( exploded[longestTR] ) );
+ $tableHeaders = $( uniqueElements( exploded[longestTR] ) ).filter( 'th' );
}
// as each header can span over multiple columns (using colspan=N),
}
/* Special:Allpages */
-table.mw-allpages-table-form, table.mw-allpages-table-chunk {
+table.mw-allpages-table-form {
width: 100%;
}
+table.mw-allpages-table-form tr {
+ vertical-align: top;
+}
.mw-allpages-nav {
text-align: right;
margin-bottom: 1em;
}
-table.mw-allpages-table-form tr {
+
+ul.mw-allpages-chunk {
+ margin: 0;
+ padding: 0;
+}
+ul.mw-allpages-chunk li {
+ border-top: 1px solid #ccc;
+ display: inline-block;
+ margin: 0 1% 0 0;
+ padding: .2em 0;
vertical-align: top;
+ width: 31%;
}
/* Special:BlockList */
} );
} ).trigger( 'change' );
+ // When saving settings, use the proper request method (POST instead of GET).
+ $( '#mw-search-powersearch-remember' ).change( function () {
+ this.form.method = this.checked ? 'post' : 'get';
+ } ).trigger( 'change' );
+
} );
}( mediaWiki, jQuery ) );
#mw-createaccount-join {
margin-left: 0.75em;
- /* Separate from background image */
- box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
width: auto;
display: inline-block;
}
width: 100%;
padding: .3em .3em .3em .6em;
display: block;
+ vertical-align: middle;
// Override user agent stylesheet properties. Instead use parent element.
color: inherit;
font-family: inherit;
.mw-ui-input-large {
margin-top: 0;
margin-bottom: 0;
+
+ // When two large inputs are together, we make them flush by hiding one of the borders
& + .mw-ui-input-large {
- border-top-width: 0;
+ margin-top: -1px;
+ }
+ // When focusing, make the input relative to raise it above any attached inputs to unhide its borders
+ &:focus {
+ position: relative;
}
}
--- /dev/null
+/*!
+ * CSS for styling HTML-formatted JSON Schema objects
+ *
+ * @file
+ * @author Munaf Assaf <massaf@wikimedia.org>
+ */
+
+.mw-json {
+ border-collapse: collapse;
+ border-spacing: 0;
+ font-style: normal;
+}
+
+.mw-json th,
+.mw-json td {
+ border: 1px solid gray;
+ font-size: 16px;
+ padding: 0.5em 1em;
+}
+
+.mw-json td {
+ background-color: #eee;
+ font-style: italic;
+}
+
+.mw-json .value {
+ background-color: #dcfae3;
+ font-family: monospace, monospace;
+ white-space: pre-wrap;
+}
+
+.mw-json tr {
+ margin-bottom: 0.5em;
+}
+
+.mw-json th {
+ background-color: #fff;
+ font-weight: normal;
+}
+
+.mw-json caption {
+ /* For stylistic reasons, suppress the caption of the outermost table */
+ display: none;
+}
+
+.mw-json table caption {
+ color: gray;
+ display: inline-block;
+ font-size: 10px;
+ font-style: italic;
+ margin-bottom: 0.5em;
+ text-align: left;
+}
} else {
$el = $( '<a>' );
if ( typeof arg === 'function' ) {
- $el.click( arg ).attr( 'href', '#' );
+ $el.attr( 'href', '#' )
+ .click( function ( e ) {
+ e.preventDefault();
+ } )
+ .click( arg );
} else {
$el.attr( 'href', arg.toString() );
}
*
* @param {string|Array} modules Either the name of a module, array of modules,
* or a URL of an external script or style
- * @param {string} [type='text/javascript'] mime-type to use if calling with a URL of an
+ * @param {string} [type='text/javascript'] MIME type to use if calling with a URL of an
* external script or style; acceptable values are "text/css" and
* "text/javascript"; if no type is provided, text/javascript is assumed.
* @param {boolean} [async] Whether to load modules asynchronously.
position: fixed;
}
-* html .mw-notification-area-floating {
- /* Make it at least 'absolute' in IE6 since 'fixed' is not supported */
- position: absolute;
-}
-
.mw-notification {
padding: 0.25em 1em;
margin-bottom: 0.5em;
/**
* Display a notification message to the user.
*
- * @param {HTMLElement|jQuery|mw.Message|string} message
+ * @param {HTMLElement|HTMLElement[]|jQuery|mw.Message|string} message
* @param {Object} options The options to use for the notification.
* See #defaults for details.
* @return {mw.Notification} Notification object
/**
* @class mw.plugin.notify
*/
-( function ( mw, $ ) {
+( function ( mw ) {
'use strict';
/**
* @return {jQuery.Promise}
*/
mw.notify = function ( message, options ) {
- var d = $.Deferred();
// Don't bother loading the whole notification system if we never use it.
- mw.loader.using( 'mediawiki.notification', function () {
- // Call notify with the notification the user requested of us.
- d.resolve( mw.notification.notify( message, options ) );
- }, d.reject );
- return d.promise();
+ return mw.loader.using( 'mediawiki.notification' )
+ .then( function () {
+ // Call notify with the notification the user requested of us.
+ return mw.notification.notify( message, options );
+ } );
};
/**
* @mixins mw.plugin.notify
*/
-}( mediaWiki, jQuery ) );
+}( mediaWiki ) );
if ( $toc.length && $tocTitle.length && $tocList.length && !$tocToggleLink.length ) {
hideToc = $.cookie( 'mw_hidetoc' ) === '1';
- $tocToggleLink = $( '<a href="#" class="internal" id="togglelink"></a>' )
+ $tocToggleLink = $( '<a href="#" id="togglelink"></a>' )
.text( hideToc ? mw.msg( 'showtoc' ) : mw.msg( 'hidetoc' ) )
.click( function ( e ) {
e.preventDefault();
ua = navigator.userAgent;
}
- // MediaWiki JS or jQuery is known to have issues with:
+ // Browsers with outdated or limited JavaScript engines get the no-JS experience
return !(
- // Internet Explorer < 6
- ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 6 ) ||
+ // Internet Explorer < 7
+ ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 7 ) ||
// Firefox < 3
( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[1] ) < 3 ) ||
// BlackBerry < 6
/*
!/common/
-!/MonoBook/
-!/Vector/
!/.gitignore
+++ /dev/null
-== GNU GENERAL PUBLIC LICENSE ==
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-=== Preamble ===
-
-The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-== TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ==
-
-'''0.''' This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-'''1.''' You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-'''2.''' You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- '''a)''' You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- '''b)''' You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- '''c)''' If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-'''3.''' You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- '''a)''' Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- '''b)''' Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- '''c)''' Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-'''4.''' You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-'''5.''' You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-'''6.''' Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-'''7.''' If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-'''8.''' If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-'''9.''' The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-'''10.''' If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-=== NO WARRANTY ===
-
-'''11.''' BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-'''12.''' IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- '''END OF TERMS AND CONDITIONS'''
-
-== How to Apply These Terms to Your New Programs ==
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
-
- Copyright (C) <year> <name of author>
-
- 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
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
-
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+++ /dev/null
-/* 6.0 - only fixes */
-/* content area */
-/* workaround for various ie float bugs */
-div#column-content {
- float: none;
- margin-left: 0;
- height: 1%;
-}
-
-div#column-content div#content {
- margin-left: 12.2em;
- margin-top: 3em;
- height: 1%;
-}
-
-.rtl div#column-content div#content {
- margin-right: 12.2em;
- margin-left: 0;
-}
-
-div#column-one {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 4;
-}
-
-.rtl div#column-one {
- left: auto;
- right: 0;
-}
-
-div#footer {
- margin-left: 13.6em;
- border-left: 1px solid #fabd23;
-}
-
-.rtl div#footer {
- margin-left: 0;
- margin-right: 13.6em;
- border-left: none;
- border-right: 1px solid #fabd23;
-}
-
-/* float/negative margin brokenness */
-* html div#footer {
- margin-top: 0;
-}
-
-* html div#column-content {
- display: inline;
- margin-bottom: 0;
-}
-
-/* the tabs */
-
-#p-cactions {
- z-index: 3;
-}
-
-#p-cactions li {
- padding-bottom: 0 !important;
- border: none;
- background-color: transparent;
- cursor: default;
- float: none !important;
-}
-
-#p-cactions li a {
- display: inline-block !important;
- vertical-align: top;
- padding-bottom: 0;
- border: solid #aaa;
- border-width: 1px 1px 0;
-}
-
-#p-cactions li.selected a {
- border-color: #fabd23;
- padding-bottom: 0.17em;
-}
-
-#p-cactions li a:hover {
- padding-bottom: 0.17em;
-}
-
-#p-navigation a {
- display: inline-block;
- width: 100%;
-}
-
-#portal-personaltools {
- padding-bottom: 0.1em;
-}
-
-.rtl a.feedlink {
- background-position: right;
- padding-right: 0;
- padding-left: 16px;
-}
-
-/* show the hand */
-#p-logo a,
-#p-logo a:hover {
- cursor: pointer;
-}
-
-div.visualClear {
- width: 100%;
- line-height: 0;
-}
-
-textarea {
- width: 96%;
-}
-
-#catlinks,
-div.tright,
-div.tleft {
- position: relative;
-}
-
-/* bug 12846 */
-body.rtl #preftoc a, body.rtl #preftoc a:active {
- float: left;
-}
+++ /dev/null
-/* 7.0 - only fixes */
-/* content area */
-/* workaround for various ie float bugs */
-
-/* This bit is needed to make links clickable... WTF */
-div#column-content div#content {
- margin-left: 12.2em;
- margin-top: 3em;
- height: 1%;
-}
-
-.rtl div#column-content div#content {
- margin-right: 12.2em;
- margin-left: 0;
-}
-
-.rtl div#column-one {
- /* For some reason it tries to inherit the padding-top into every div,
- * and I can't figure out how to get it back off.
- * Margin works correctly for this use, though.
- */
- padding-top: 0;
- margin-top: 160px;
-}
-
-/* These elements also have padding-left: 20px; in main.css, but in RTL mode this is flipped.
- * That's good in normal browsers, but in IE7 it needs to not be flipped for some daft reason.
- * Also clear the right margin (originally margin-left: 1em)
- */
-li#pt-userpage, li#pt-anonuserpage, li#pt-login {
- padding-left: 20px;
- margin-right: 0;
-}
-
-.rtl a.feedlink {
- background-position: right;
- padding-right: 0;
- padding-left: 16px;
-}
-
-/* the tabs */
-
-#p-cactions {
- z-index: 3;
-}
-
-#p-cactions li {
- padding-bottom: 0 !important;
- border: none;
- background-color: transparent;
- cursor: default;
- float: none !important;
-}
-
-#p-cactions li a {
- display: inline-block !important;
- vertical-align: top;
- padding-bottom: 0;
- border: solid #aaa;
- border-width: 1px 1px 0;
-}
-
-#p-cactions li.selected a {
- border-color: #fabd23;
- padding-bottom: 0.17em;
-}
-
-#p-cactions li a:hover {
- padding-bottom: 0.17em;
-}
-
-#p-navigation a {
- display: inline-block;
- width: 100%;
-}
-
-#portal-personaltools {
- padding-bottom: 0.1em;
-}
-
-textarea {
- width: 96%;
-}
-
-/*
-#catlinks,
-div.tright,
-div.tleft {
- position: relative;
-}
-*/
-
-div#footer li {
- /* Work around bug with inline <li> tags with right margins and nowrap */
- margin-right: 0;
-}
+++ /dev/null
-<?php
-/**
- * MonoBook nouveau.
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-$wgExtensionCredits['skin'][] = array(
- 'path' => __FILE__,
- 'name' => 'MonoBook',
- 'namemsg' => 'skinname-monobook',
- 'descriptionmsg' => 'monobook-desc',
- 'url' => 'https://www.mediawiki.org/wiki/Skin:MonoBook',
- 'author' => array( 'Gabriel Wicke', '...' ),
- 'license-name' => 'GPLv2+',
-);
-
-// Register files
-$wgAutoloadClasses['SkinMonoBook'] = __DIR__ . '/SkinMonoBook.php';
-$wgAutoloadClasses['MonoBookTemplate'] = __DIR__ . '/MonoBookTemplate.php';
-$wgMessagesDirs['MonoBook'] = __DIR__ . '/i18n';
-
-// Register skin
-$wgValidSkinNames['monobook'] = 'MonoBook';
-
-// Register modules
-$wgResourceModules['skins.monobook.styles'] = array(
- 'styles' => array(
- 'main.css' => array( 'media' => 'screen' ),
- ),
- 'remoteSkinPath' => 'MonoBook',
- 'localBasePath' => __DIR__,
-);
+++ /dev/null
-<?php
-/**
- * MonoBook nouveau.
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * @ingroup Skins
- */
-class MonoBookTemplate extends BaseTemplate {
-
- /**
- * Template filter callback for MonoBook skin.
- * Takes an associative array of data set from a SkinTemplate-based
- * class, and a wrapper for MediaWiki's localization database, and
- * outputs a formatted page.
- *
- * @access private
- */
- function execute() {
- // Suppress warnings to prevent notices about missing indexes in $this->data
- wfSuppressWarnings();
-
- $this->html( 'headelement' );
- ?><div id="globalWrapper">
- <div id="column-content">
- <div id="content" class="mw-body-primary" role="main">
- <a id="top"></a>
- <?php
- if ( $this->data['sitenotice'] ) {
- ?>
- <div id="siteNotice"><?php
- $this->html( 'sitenotice' )
- ?></div><?php
- }
- ?>
-
- <h1 id="firstHeading" class="firstHeading" lang="<?php
- $this->data['pageLanguage'] =
- $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode();
- $this->text( 'pageLanguage' );
- ?>"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
-
- <div id="bodyContent" class="mw-body">
- <div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
- <div id="contentSub"<?php
- $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' )
- ?></div>
- <?php if ( $this->data['undelete'] ) { ?>
- <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
- <?php
-}
- ?><?php
- if ( $this->data['newtalk'] ) {
- ?>
- <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
- <?php
- }
- ?>
- <div id="jump-to-nav" class="mw-jump"><?php
- $this->msg( 'jumpto' )
- ?> <a href="#column-one"><?php
- $this->msg( 'jumptonavigation' )
- ?></a><?php
- $this->msg( 'comma-separator' )
- ?><a href="#searchInput"><?php
- $this->msg( 'jumptosearch' )
- ?></a></div>
-
- <!-- start content -->
- <?php $this->html( 'bodytext' ) ?>
- <?php
- if ( $this->data['catlinks'] ) {
- $this->html( 'catlinks' );
- }
- ?>
- <!-- end content -->
- <?php
- if ( $this->data['dataAfterContent'] ) {
- $this->html( 'dataAfterContent'
- );
- }
- ?>
- <div class="visualClear"></div>
- </div>
- </div>
- </div>
- <div id="column-one"<?php $this->html( 'userlangattributes' ) ?>>
- <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
- <?php $this->cactions(); ?>
- <div class="portlet" id="p-personal" role="navigation">
- <h3><?php $this->msg( 'personaltools' ) ?></h3>
-
- <div class="pBody">
- <ul<?php $this->html( 'userlangattributes' ) ?>>
- <?php foreach ( $this->getPersonalTools() as $key => $item ) { ?>
- <?php echo $this->makeListItem( $key, $item ); ?>
-
- <?php
-}
- ?>
- </ul>
- </div>
- </div>
- <div class="portlet" id="p-logo" role="banner">
- <?php
- echo Html::element( 'a', array(
- 'href' => $this->data['nav_urls']['mainpage']['href'],
- 'style' => "background-image: url({$this->data['logopath']});" )
- + Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ); ?>
-
- </div>
- <?php
- $this->renderPortals( $this->data['sidebar'] );
- ?>
- </div><!-- end of the left (by default at least) column -->
- <div class="visualClear"></div>
- <?php
- $validFooterIcons = $this->getFooterIcons( "icononly" );
- $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
-
- if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) {
- ?>
- <div id="footer" role="contentinfo"<?php $this->html( 'userlangattributes' ) ?>>
- <?php
- $footerEnd = '</div>';
- } else {
- $footerEnd = '';
- }
-
- foreach ( $validFooterIcons as $blockName => $footerIcons ) {
- ?>
- <div id="f-<?php echo htmlspecialchars( $blockName ); ?>ico">
- <?php foreach ( $footerIcons as $icon ) { ?>
- <?php echo $this->getSkin()->makeFooterIcon( $icon ); ?>
-
- <?php
-}
- ?>
- </div>
- <?php
- }
-
- if ( count( $validFooterLinks ) > 0 ) {
- ?>
- <ul id="f-list">
- <?php
- foreach ( $validFooterLinks as $aLink ) {
- ?>
- <li id="<?php echo $aLink ?>"><?php $this->html( $aLink ) ?></li>
- <?php
- }
- ?>
- </ul>
- <?php
- }
-
- echo $footerEnd;
- ?>
-
- </div>
- <?php
- $this->printTrail();
- echo Html::closeElement( 'body' );
- echo Html::closeElement( 'html' );
- wfRestoreWarnings();
- } // end of execute() method
-
- /*************************************************************************************************/
-
- /**
- * @param array $sidebar
- */
- protected function renderPortals( $sidebar ) {
- if ( !isset( $sidebar['SEARCH'] ) ) {
- $sidebar['SEARCH'] = true;
- }
- if ( !isset( $sidebar['TOOLBOX'] ) ) {
- $sidebar['TOOLBOX'] = true;
- }
- if ( !isset( $sidebar['LANGUAGES'] ) ) {
- $sidebar['LANGUAGES'] = true;
- }
-
- foreach ( $sidebar as $boxName => $content ) {
- if ( $content === false ) {
- continue;
- }
-
- if ( $boxName == 'SEARCH' ) {
- $this->searchBox();
- } elseif ( $boxName == 'TOOLBOX' ) {
- $this->toolbox();
- } elseif ( $boxName == 'LANGUAGES' ) {
- $this->languageBox();
- } else {
- $this->customBox( $boxName, $content );
- }
- }
- }
-
- function searchBox() {
- global $wgUseTwoButtonsSearchForm;
- ?>
- <div id="p-search" class="portlet" role="search">
- <h3><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3>
-
- <div id="searchBody" class="pBody">
- <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
- <input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
- <?php echo $this->makeSearchInput( array( "id" => "searchInput" ) ); ?>
-
- <?php
- echo $this->makeSearchButton(
- "go",
- array( "id" => "searchGoButton", "class" => "searchButton" )
- );
-
- if ( $wgUseTwoButtonsSearchForm ) {
- ?> 
- <?php echo $this->makeSearchButton(
- "fulltext",
- array( "id" => "mw-searchButton", "class" => "searchButton" )
- );
- } else {
- ?>
-
- <div><a href="<?php
- $this->text( 'searchaction' )
- ?>" rel="search"><?php $this->msg( 'powersearch-legend' ) ?></a></div><?php
- } ?>
-
- </form>
-
- <?php $this->renderAfterPortlet( 'search' ); ?>
- </div>
- </div>
- <?php
- }
-
- /**
- * Prints the cactions bar.
- * Shared between MonoBook and Modern
- */
- function cactions() {
- ?>
- <div id="p-cactions" class="portlet" role="navigation">
- <h3><?php $this->msg( 'views' ) ?></h3>
-
- <div class="pBody">
- <ul><?php
- foreach ( $this->data['content_actions'] as $key => $tab ) {
- echo '
- ' . $this->makeListItem( $key, $tab );
- } ?>
-
- </ul>
- <?php $this->renderAfterPortlet( 'cactions' ); ?>
- </div>
- </div>
- <?php
- }
-
- /*************************************************************************************************/
- function toolbox() {
- ?>
- <div class="portlet" id="p-tb" role="navigation">
- <h3><?php $this->msg( 'toolbox' ) ?></h3>
-
- <div class="pBody">
- <ul>
- <?php
- foreach ( $this->getToolbox() as $key => $tbitem ) {
- ?>
- <?php echo $this->makeListItem( $key, $tbitem ); ?>
-
- <?php
- }
- wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
- wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
- ?>
- </ul>
- <?php $this->renderAfterPortlet( 'tb' ); ?>
- </div>
- </div>
- <?php
- }
-
- /*************************************************************************************************/
- function languageBox() {
- if ( $this->data['language_urls'] !== false ) {
- ?>
- <div id="p-lang" class="portlet" role="navigation">
- <h3<?php $this->html( 'userlangattributes' ) ?>><?php $this->msg( 'otherlanguages' ) ?></h3>
-
- <div class="pBody">
- <ul>
- <?php foreach ( $this->data['language_urls'] as $key => $langlink ) { ?>
- <?php echo $this->makeListItem( $key, $langlink ); ?>
-
- <?php
-}
- ?>
- </ul>
-
- <?php $this->renderAfterPortlet( 'lang' ); ?>
- </div>
- </div>
- <?php
- }
- }
-
- /*************************************************************************************************/
- /**
- * @param string $bar
- * @param array|string $cont
- */
- function customBox( $bar, $cont ) {
- $portletAttribs = array(
- 'class' => 'generated-sidebar portlet',
- 'id' => Sanitizer::escapeId( "p-$bar" ),
- 'role' => 'navigation'
- );
-
- $tooltip = Linker::titleAttrib( "p-$bar" );
- if ( $tooltip !== false ) {
- $portletAttribs['title'] = $tooltip;
- }
- echo ' ' . Html::openElement( 'div', $portletAttribs );
- $msgObj = wfMessage( $bar );
- ?>
-
- <h3><?php echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $bar ); ?></h3>
- <div class='pBody'>
- <?php
- if ( is_array( $cont ) ) {
- ?>
- <ul>
- <?php
- foreach ( $cont as $key => $val ) {
- ?>
- <?php echo $this->makeListItem( $key, $val ); ?>
-
- <?php
- }
- ?>
- </ul>
- <?php
- } else {
- # allow raw HTML block to be defined by extensions
- print $cont;
- }
-
- $this->renderAfterPortlet( $bar );
- ?>
- </div>
- </div>
- <?php
- }
-} // end of class
+++ /dev/null
-<?php
-/**
- * MonoBook nouveau.
- *
- * Translated from gwicke's previous TAL template version to remove
- * dependency on PHPTAL.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * Inherit main code from SkinTemplate, set the CSS and template filter.
- * @ingroup Skins
- */
-class SkinMonoBook extends SkinTemplate {
- /** Using MonoBook. */
- public $skinname = 'monobook';
- public $stylename = 'MonoBook';
- public $template = 'MonoBookTemplate';
-
- /**
- * @param OutputPage $out
- */
- function setupSkinUserCss( OutputPage $out ) {
- parent::setupSkinUserCss( $out );
-
- $out->addModuleStyles( array( 'mediawiki.skinning.interface', 'skins.monobook.styles' ) );
-
- // TODO: Migrate all of these
- $out->addStyle( $this->stylename . '/IE60Fixes.css', 'screen', 'IE 6' );
- $out->addStyle( $this->stylename . '/IE70Fixes.css', 'screen', 'IE 7' );
- }
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bresta"
- ]
- },
- "monobook.css": "/* CSS i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Monobook */",
- "monobook.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Juanpabl"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Monobook */",
- "monobook.js": "/* O codigo Javascript que se meta aquí será cargau por os usuarios faigan servir l'apariencia MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Meno25"
- ]
- },
- "skinname-monobook": "مونوبوك",
- "monobook.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مونوبوك */",
- "monobook.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مونوبوك */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Meno25"
- ]
- },
- "skinname-monobook": "مونوبوك",
- "monobook.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمى واجهة مونوبوك */",
- "monobook.js": "/* أى جافاسكريبت هنا ح تتحمل لليوزرز اللى بيستعملو واجهة مونوبوك */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Xuacu"
- ]
- },
- "monobook-desc": "El tema clásicu de MediaWiki dende 2004, llamáu asina pola foto en blanco y negro d'un llibru nel fondu de la páxina",
- "monobook.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */",
- "monobook.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Vago",
- "Vugar 1981"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Burada yerləşən CSS Monobook skin istifadəçilərinə tətbiq olunur */",
- "monobook.js": "/* Burada MonoBook skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mostafadaneshvar"
- ]
- },
- "skinname-monobook": "منوبوک",
- "monobook.css": "/* CSS که اداننت کابران پوست مونوبوک تاثیر کننت */",
- "monobook.js": "/* جاوا اسکریپت ادان فقط په کابرانی که چه پوست منوبوک استفاده کننت بار بیت. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Filipinayzd"
- ]
- },
- "monobook.css": "/* an CSS na pigbugtak digdi makakaapektar sa mga parágamit kan Monobook skin */",
- "monobook.js": "/* Deprecado; gamiton an [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "skinname-monobook": "Монакніга"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Yury Tarasievich",
- "Mikalai Udodau"
- ]
- },
- "skinname-monobook": "Манабук",
- "monobook-desc": "Класічная вокладка MediaWiki з 2004 года, названая ў гонар чорна-белай фатаграфіі кнігі ў фоне старонкі",
- "monobook.css": "/* CSS, упісаны сюды, будзе дзейнічаць на браўзер кожнага чытача з актыўнай світай Monobook */",
- "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
-}
+++ /dev/null
-{
- "skinname-monobook": "Монобук",
- "monobook.css": "/* Чрез редактиране на този файл можете да промените облика Монобук */",
- "monobook.js": "/* Остаряла страница; използвайте [[MediaWiki:Common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Aftab1995"
- ]
- },
- "skinname-monobook": "মনোবুক"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Fulup"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Monobook */",
- "monobook.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "CERminator",
- "Kal-El"
- ]
- },
- "skinname-monobook": "MonoKnjiga",
- "monobook.css": "/* CSS umetnut ovdje uticat će na korisnike koji koriste Monobook skin */",
- "monobook.js": "/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste MonoBook skin */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Martorell",
- "Toniher"
- ]
- },
- "monobook-desc": "El tema clàssic de MediaWiki des del 2004, que rep el nom d'una foto en blanc i negre d'un llibre en el fons de la pàgina.",
- "monobook.css": "/* Editeu aquest fitxer per personalitzar l'aparença del monobook per a tot el lloc sencer */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Умар"
- ]
- },
- "monobook.css": "/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */",
- "monobook.js": "/* Кхузе чу язийна йолу JavaScript код, чу ера ю, массо MonoBook хатl лелош болу декъашхошна */"
-}
+++ /dev/null
-{
- "skinname-monobook": "مۆنۆ"
-}
+++ /dev/null
-{
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* monobook темасынынъ аярларыны (настройкаларыны) денъиштирмек ичюн бу ерини денъиштиринъиз. Бутюн сайтта тесирли олур. */"
-}
+++ /dev/null
-{
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* monobook temasınıñ ayarlarını (nastroykalarını) deñiştirmek içün bu yerini deñiştiriñiz. Bütün saytta tesirli olur. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Danny B.",
- "Li-sung",
- "Mormegil"
- ]
- },
- "monobook-desc": "Klasický vzhled MediaWiki od roku 2004, pojmenovaný po černobílé fotografii knihy v pozadí stránky",
- "monobook.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Monobook“ */",
- "monobook.js": "/* JavaScript pro uživatele používající vzhled MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Peter Alberti",
- "Christian List"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "Den klassiske MediaWiki hud siden 2004, opkaldt efter det sort-hvide foto af en bog i baggrunden af siderne",
- "monobook.css": "/** CSS inkluderet her vil være aktivt for brugere af Monobook-temaet . */",
- "monobook.js": "/* JavaScript i denne fil vil indlæses for brugere af udseendet MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Geitost",
- "Metalhead64"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "Ergänzt die klassische MediaWiki-Benutzeroberfläche seit 2004, benannt nach dem Schwarzweißfoto eines Buches im Seitenhintergrund",
- "monobook.css": "/* Das folgende CSS wird für Benutzer der MonoBook-Benutzeroberfläche geladen */",
- "monobook.js": "/* Das folgende JavaScript wird für Benutzer der Monobook-Benutzeroberfläche geladen. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Erdemaslancan"
- ]
- },
- "skinname-monobook": "MonoBook"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Michawiki",
- "Nepl1"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* How zaměstnjony CSS wustatkujo se na wužywarje monobook-šata */",
- "monobook.js": "/* Slědujucy JavaScript zacytajo se za wužywarjow, kótarež skin MonoBook wužywaju */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dead3y3"
- ]
- },
- "monobook.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Monobook skin */",
- "monobook.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το MonoBook skin */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": []
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "The classic MediaWiki skin since 2004, named after the black-and-white photo of a book in the page background",
- "monobook.css": "/* CSS placed here will affect users of the MonoBook skin */",
- "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Objectivesea"
- ]
- },
- "skinname-monobook": "Librejo",
- "monobook.css": "/* La jena CSS influos la paĝaspekton por uzantoj de la Libreja temo. */",
- "monobook.js": "/* La jena Ĝavaskripto ŝargiĝos por uzantoj de la Libreja temo. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sanbec",
- "Vivaelcelta",
- "Fitoschido"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "El tema clásico de MediaWiki desde 2004, cuyo nombre viene de la foto en blanco y negro de un libro en el fondo",
- "monobook.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"MonoBook\" */",
- "monobook.js": "/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Pikne"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Siin asuv kaskaadilaadistik puudutab kõiki MonoBooki-kujunduse kasutajaid. */",
- "monobook.js": "/* Siin asuv JavaScript laaditakse MonoBooki-kujunduse kasutajate jaoks. */"
-}
+++ /dev/null
-{
- "monobook.css": "/* Hemen idatzitako CSS kodeak Monobook itxuran bakarrik izango du eragina */"
-}
+++ /dev/null
-{
- "monobook.js": "/* Antigu; gasta [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Reza1615"
- ]
- },
- "skinname-monobook": "مونوبوک",
- "monobook-desc": "پوسته کلاسیک مدیاویکی از سال ۲۰۰۴ از عکس سیاه و سفید در زمینه صفحه کتاب نام گرفت",
- "monobook.css": "/* دستورات این بخش کاربرانی را که از پوستهٔ مونوبوک استفاده کنند تحت تاثیر قرار میدهند. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Crt"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook.css": "/* Tämä sivu sisältää Monobook-ulkoasua muuttavia tyylejä. */",
- "monobook.js": "/* Tämän sivun JavaScript-koodi liitetään Monobook-tyyliin */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gomoko",
- "Verdy p"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook-desc": "L’habillage classique de MédiaWiki depuis 2004, nommé d’après la photo en noir et blanc d’un livre dans l’arrière-plan de la page",
- "monobook.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Monobook. */",
- "monobook.js": "/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage MonoBook uniquement. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "ChrisPtDe"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « MonoBook ». */",
- "monobook.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « MonoBook ». */"
-}
+++ /dev/null
-{
- "monobook.css": "/* modifiche chest file par personalizâ la skin monobook par dut il sît */"
-}
+++ /dev/null
-{
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* athraigh an comhad seo chun an craiceann MonoBook a athrú don suíomh ar fad */"
-}
+++ /dev/null
-{
- "monobook.css": "/* 个首𠮶 CSS 会碍到正用Monobook皮肤𠮶用户 */",
- "monobook.js": "/* 伓再使用;请用[[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "monobook.css": "/* 箇首嗰 CSS 會礙到正用Monobook皮膚嗰用戶 */",
- "monobook.js": "/* 伓再使用;請用[[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "GunChleoc"
- ]
- },
- "monobook-desc": "Craiceann MediaWiki clasaigeach o 2004 a chaidh ainmeachadh a-rèir dealbh de leabhar ann an dubh 's geal air cùlaibh nan duilleagan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Toliño",
- "Xosé"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "A aparencia clásica de MediaWiki desde 2004; recibe o seu nome pola foto en branco e negro dun libro que aparece no fondo das páxinas",
- "monobook.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Monobook */",
- "monobook.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hakka"
- ]
- },
- "monobook.css": "/* Chhṳ́-chhu ke CSS chiông-voi yáng-hióng sṳ́-yung Monobook mien-pán ke yung-fu */",
- "monobook.js": "/* Yí-kîn put-chai sṳ́-yung; chhiáng-yung [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Rotemliss",
- "Amire80"
- ]
- },
- "skinname-monobook": "מונובוק",
- "monobook-desc": "העיצוב הקלאסי של מדיה־ויקי מ־2004, שנקרא על שם הצילום השחור־לבן של ספר ברקע",
- "monobook.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב MonoBook בלבד */",
- "monobook.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kaustubh",
- "Siddhartha Ghai"
- ]
- },
- "monobook-desc": "2004 से मीडियाविकि की क्लासिक त्वचा, जिसका नाम पृष्ठभूमि में पुस्तक के इकरंगा चित्र से पड़ा।",
- "monobook.css": "/* यहां रखी गई css मोनोबुक त्वचा का इस्तेमाल करने वाले सभी सदस्योंपर असर करेगी */",
- "monobook.js": "/* यहाँ पर दी गई जावास्क्रिप्ट मोनोबुक त्वचा का प्रयोग कर रहे सदस्यों के लिए लोड होगी */"
-}
+++ /dev/null
-{
- "skinname-monobook": "MonoBook",
- "monobook.css": "/** Ovdje idu izmjene monobook stylesheeta */",
- "monobook.js": "/* Ne rabi se više; molimo rabite [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Michawiki"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* CSS wobdźěłać, zo by so skin „monobook” za wšěčh wužiwarjow tutoho skina priměrił */",
- "monobook.js": "/* Slědowacy JavaScript začita so za wužiwarjow, kotřiž šat MonoBook wužiwaja */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dani"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Az ide elhelyezett CSS hatással lesz a Monobook felület használóira */",
- "monobook.js": "/* A Monobook felületet használó szerkesztők számára betöltendő JavaScriptek */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Teak"
- ]
- },
- "skinname-monobook": "ՄիաԳիրք",
- "monobook.css": "/* Այստեղ տեղադրված CSS կոդը կկիրառվի Monobook տեսքի վրա*/",
- "monobook.js": "/* Հնացած է. օգտագործեք [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "McDutchie"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "Le apparentia classic de MediaWiki depost 2004, nominate assi pro le imagine in nigro e blanco (\"mono\") de un libro (\"book\") in le fundo del pagina.",
- "monobook.css": "/* Le CSS placiate hic afficera le usatores del apparentia MonoBook */",
- "monobook.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Iwan Novirion",
- "Rex",
- "Arifin.wijaya"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "Kulit MediaWiki klasik sejak tahun 2004, dinamai foto hitam-putih dari buku di latar belakang halaman",
- "monobook.css": "/* CSS yang ada di sini akan diterapkan pada kulit Monobook. */",
- "monobook.js": "/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lam-ang"
- ]
- },
- "monobook-desc": "Ti klasiko a kudil ti MediaWiki manipud idi 2004, nanaganan manipud ti nangisit-ken-puraw a retrato ti libro iti likudan ti panid"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "לערי ריינהארט"
- ]
- },
- "skinname-monobook": "EinBók",
- "monobook.css": "/* Það sem sett er hingað er bætt við Monobook stilsniðið fyrir allan vefinn */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Beta16",
- "Darth Kule"
- ]
- },
- "monobook-desc": "La skin classica di MediaWiki dal 2004, prende il nome dall'immagine in bianco e nero del libro usata come sfondo della pagina",
- "monobook.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Monobook */",
- "monobook.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Fryed-peach",
- "青子守歌"
- ]
- },
- "skinname-monobook": "モノブック",
- "monobook.css": "/* ここに記述したCSSはモノブック外装の利用者に影響します */",
- "monobook.js": "/* ここにあるすべてのJavaScriptは、モノブック外装を使用している利用者に対して読み込まれます */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Alsandro",
- "David1010"
- ]
- },
- "skinname-monobook": "მონობუკი",
- "monobook.css": "/* აქ ჩასმული CSS გავლენას იქონიებს Monobook ინტერფეისის მომხმარებლებზე */"
-}
+++ /dev/null
-{
- "skinname-monobook": "دارا كىتاپ (monobook)",
- "monobook.css": "/* مىندا ورنالاستىرىلعان CSS تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلارىنا ىقپال ەتەدى */",
- "monobook.js": "/* مىنداعى JavaScript تەك «دارا كىتاپ» (monobook) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arystanbek"
- ]
- },
- "skinname-monobook": "Жеке кітап (monobook)",
- "monobook.css": "/* Мында орналастырылған CSS тек «Дара кітап» (monobook) мәнерін пайдаланушыларына ықпал етеді */",
- "monobook.js": "/* Мындағы JavaScript тек «Дара кітап» (monobook) мәнерін пайдаланушылар үшін жегіледі */"
-}
+++ /dev/null
-{
- "skinname-monobook": "Dara kitap (monobook)",
- "monobook.css": "/* Mında ornalastırılğan CSS tek «Dara kitap» (monobook) mänerin paýdalanwşılarına ıqpal etedi */",
- "monobook.js": "/* Mındağı JavaScript tek «Dara kitap» (monobook) mänerin paýdalanwşılar üşin jegiledi */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "វ័ណថារិទ្ធ"
- ]
- },
- "skinname-monobook": "សៀវភៅឯក",
- "monobook.css": "/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "아라"
- ]
- },
- "skinname-monobook": "모노북",
- "monobook-desc": "문서 배경에서 책의 흑백 사진을 이른, 2004년 이후의 고전 미디어위키 스킨",
- "monobook.css": "/* 이 CSS 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */",
- "monobook.js": "/* 이 자바스크립트 설정은 모노북 스킨을 사용하는 사용자에게 적용됩니다 */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Къарачайлы"
- ]
- },
- "skinname-monobook": "Моно-китаб"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Purodha"
- ]
- },
- "skinname-monobook": "MonoBoch",
- "monobook.css": "/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Monobooch“ */",
- "monobook.js": "/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch \"Monnobooch\" jescheck */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Krinkle"
- ]
- },
- "monobook.css": "/* CSS placed here will affect users of the Monobook skin */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Robby"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "De klassesche Look vu MediaWiki zanter 2004, benannt no der Schwaarzwäissfoto vun engem Buch am Hannergrond vun der Säit",
- "monobook.css": "/* Dës CSS huet nëmmen Afloss op de Skin ''Monobook'' */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Garas"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Čia įdėtas CSS bus rodomas Monobook išvaizdos naudotojams */",
- "monobook.js": "/* Šis JavaScript bus įkeltas tik „MonoBook“ išvaizdos naudotojams. */"
-}
+++ /dev/null
-{
- "skinname-monobook": "單書",
- "monobook.css": "/* 此之 CSS 用於單書面之簿也 */",
- "monobook.js": "/* 此之JavaScript將載於用單書面之簿 */"
-}
+++ /dev/null
-{
- "monobook.css": "/* Ovay ity rakitra ity raha hampiasa takilan'angaly (stylesheet) anao manokana amin'ny wiki iray manontolo */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Iwan Novirion"
- ]
- },
- "skinname-monobook": "MonoBook"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bjankuloski06"
- ]
- },
- "skinname-monobook": "Монобук",
- "monobook-desc": "Класичното руво на МедијаВики од 2004 г., наречена по црнобелата слика на книга во позадината",
- "monobook.css": "/* Тука поставениот CSS ќе се применува врз корисниците на рувото „Монобук“ */",
- "monobook.js": "/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Монобук“ */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Praveenp"
- ]
- },
- "skinname-monobook": "മോണോബുക്ക്",
- "monobook.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */",
- "monobook.js": "/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് മോണോബുക്ക് ദൃശ്യരൂപം ഉപയോഗിക്കുന്നവർക്ക് ബാധകമായിരിക്കും */"
-}
+++ /dev/null
-{
- "skinname-monobook": "मोनोबुक"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Anakmalaysia",
- "Pizza1016"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "Kulit MediaWiki yang klasik sejak tahun 2004, dinamakan selepas foto hitam-dan-putih sebuah buku dalam belakang laman.",
- "monobook.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Giangian15"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook.css": "/* CSS li tpoġġa hawnhekk se jaffetwa dawk l-utenti li jagħmlu użu mill-iskin ''Monobook'' */",
- "monobook.js": "/* Kull ''JavaScript'' hawnhekk jiġi mniżżel għal dawk l-utenti li qegħdin jagħmlu użu mill-iskin ''Monobook'' */"
-}
+++ /dev/null
-{
- "skinname-monobook": "Lhibro"
-}
+++ /dev/null
-{
- "skinname-monobook": "Monobook",
- "monobook.css": "/* CSS i denne fila vil gjelde alle som bruker drakta Monobook */",
- "monobook.js": "/* Javascript i denne fila vil gjelde for brukere av drakta Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Servien"
- ]
- },
- "skinname-monobook": "Monobook"
-}
+++ /dev/null
-{
- "monobook.css": "/* disse Datei ännern üm de Monobook-Stilvörlaag för de ganze Siet antopassen */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "सरोज कुमार ढकाल"
- ]
- },
- "skinname-monobook": "मोनोबुक",
- "monobook.css": "/* यहाँ राखिएको CSS ले मोनोबुक स्किनको प्रयोगकर्ताहरुलाई प्रभावित गर्ने छ */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Eukesh"
- ]
- },
- "monobook.css": "/* थन तःगु CSS नं मोनोबुक स्किनया छ्य्लामितेत असर याइ */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Siebrand",
- "Sjoerddebruin"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook-desc": "De klassieke MediaWiki-vormgeving sinds 2004, genoemd naar de zwart-witfoto van een boek op de achtergrond van de pagina",
- "monobook.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */",
- "monobook.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Eirik",
- "Frokor",
- "Njardarlogar"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* CSS-tekst som vert plassert her, endrar utsjånaden til sidedrakta Monobook */",
- "monobook.js": "/* Javascript i denne fila vil gjelde for brukarar av drakta Monobook */"
-}
+++ /dev/null
-{
- "skinname-monobook": "NaaltsoosŁáa'ígíí"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Cedric31"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook.css": "/* Lo CSS plaçat aicí afectarà los utilizaires del skin Monobook */",
- "monobook.js": "/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge MonoBook unicament. */"
-}
+++ /dev/null
-{
- "skinname-monobook": "Моно-чиныг"
-}
+++ /dev/null
-{
- "skinname-monobook": "ਮੋਨੋਬੁੱਕ"
-}
+++ /dev/null
-{
- "monobook.css": "/* CSS a mikabit keni miapectuan la reng gagamit king Monobook a pabalat */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Wikipeeta"
- ]
- },
- "monobook.css": "/* CSS opp dise Sted wirtjt opp daut Monobook-Skin */",
- "monobook.js": "/* Daut neachste JavaScript woat fe Brucka mett Monobook-Skin jelode */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sp5uhe",
- "Matma Rex"
- ]
- },
- "skinname-monobook": "Książka",
- "monobook-desc": "Klasyczna skórka MediaWiki, stworzona w 2004 roku, nazwana od czarno-białego zdjęcia książki w tle strony",
- "monobook.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Książka */",
- "monobook.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Książka */"
-}
+++ /dev/null
-{
- "monobook.css": "/* cangé st'archivi-sì për modifiché la formatassion dël sit antregh */",
- "monobook.js": "/* Ës messagi-sì as dovrìa pa pì dovrelo; a sò pòst ch'a dòvra [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "skinname-monobook": "مونوبوک"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Fabsouza1"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "A skin clássica do MediaWiki desde 2004, assim chamada depois de uma foto preto-e-branco de um livro colocada plano de fundo da página",
- "monobook.css": "/* o código CSS colocado aqui terá efeito nos usuários do tema Monobook */",
- "monobook.js": "/* Qualquer JavaScript aqui colocado afetará os usuários do skin MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hamilton Abreu",
- "Fúlvio",
- "Vitorvicentevalente"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook-desc": "O tema clássico do MediaWiki desde 2004, tendo este nome sido atribuído devido a uma imagem a preto-e-branco de um livro no plano de fundo da página",
- "monobook.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Monobook */",
- "monobook.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Meno25",
- "Umherirrender",
- "Matma Rex"
- ]
- },
- "skinname-monobook": "{{optional}}",
- "monobook-desc": "{{desc|what=skin|name=MonoBook|url=https://www.mediawiki.org/wiki/Skin:MonoBook}}",
- "monobook.css": "{{optional}}\nCSS applied to users using MonoBook skin.",
- "monobook.js": "{{optional}}\nJS for users using MonoBook skin."
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AlimanRuna"
- ]
- },
- "monobook.css": "/* Kayman churasqa CSS nisqaqa Monobook qaratam hukchanqa tukuy internet tiyanapaq */",
- "monobook.js": "/* Ima kaypi qillqamusqa JavaScript nisqa wakichi qillqapas MonoBook nisqata llamk'achiq ruraqkunapaq chaqnasqa kanqa */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gion-andri"
- ]
- },
- "monobook.css": "/* editescha quest file per adattar il skin momobook per l'entira pagina */",
- "monobook.js": ""
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Firilacroco"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook.css": "/* modificați acest fișier pentru a adapta înfățișarea monobook-ului pentru tot situl*/"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Joetaras"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Monobook */",
- "monobook.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AlexSm",
- "Kaganer",
- "Okras"
- ]
- },
- "monobook-desc": "Классическая тема оформления MediaWiki, созданная в 2004 году и названая в честь чёрно-белой фотографии книги с фонового изображения страницы",
- "monobook.css": "/* Размещённый здесь CSS будет применяться к теме оформления Monobook */",
- "monobook.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления MonoBook */"
-}
+++ /dev/null
-{
- "skinname-monobook": "पुस्तक"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "HalanTul"
- ]
- },
- "monobook.css": "/* Манна оҥоһуллубут CSS Monobook диэн скиҥҥа туһаныллыа */",
- "monobook.js": "/* Эргэрбит; маны туһан:[[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Santu",
- "Sarvaturi",
- "Tonyfroio"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Li stili CSS nziriti ccà s'àpplicanu a l'utenti chi usanu la skin Monobook */",
- "monobook.js": "/* Lu còdici JavaScript nzirutu ccà veni carricatu di l'utenti c'ùsanu la skin MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "නන්දිමිතුරු"
- ]
- },
- "monobook.css": "/* මෙහි CSS බහාලීම ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන් හට බලපෑම් සිදු කල හැක */",
- "monobook.js": "/* මෙහි ඕනෑම ජාවාස්ක්රිප්ට් එකක් ඒකායන ඡවිය භාවිතා කරන පරිශීලකයන්හට ප්රවේශනය කෙරේ */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Helix84",
- "Rudko"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Monobook */",
- "monobook.js": "/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dori"
- ]
- },
- "monobook.css": "/* redaktoni këtë faqe për të përshtatur pamjen Monobook për tëra faqet tuaja */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Rancher"
- ]
- },
- "skinname-monobook": "Монобук",
- "monobook.css": "/* CSS постављен овде ће утицати на све кориснике теме „Монобук“ */",
- "monobook.js": "/* Јаваскрипт постављен овде ће се учитати за све оне који користе тему „Монобук“ */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Rancher"
- ]
- },
- "skinname-monobook": "Monobuk",
- "monobook.css": "/* CSS postavljen ovde će uticati na sve korisnike teme „Monobuk“ */",
- "monobook.js": "/* Javaskript postavljen ovde će se učitati za sve one koji koriste temu „Monobuk“ */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Maartenvdbent"
- ]
- },
- "monobook.css": "/* Littikschrieuwen nit twinge */",
- "monobook.js": "/* Ferallerd; benutsje insteede deerfon [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "monobook.css": "/* édit koropak ieu pikeun nyaluyukeun kulit ''monobook'' pikeun sakabéh situs */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lejonel",
- "Lokal Profil",
- "Skalman"
- ]
- },
- "skinname-monobook": "Monobook",
- "monobook-desc": "Det klassiska MediaWiki-utseendet sedan 2004, uppkallad efter det svart-vita foto på en bok som syns i bakgrunden på sidan.",
- "monobook.css": "/* CSS som skrivs här kommer att påverka alla användare av skalet Monobook */",
- "monobook.js": "/* JavaScript här kommer att laddas för dem som använder skalet Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Veeven"
- ]
- },
- "skinname-monobook": "మోనోబుక్"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Manop",
- "Octahedron80"
- ]
- },
- "skinname-monobook": "โมโนบุ๊ก",
- "monobook.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */",
- "monobook.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมโนบุ๊ก */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AnakngAraw",
- "Sky Harbor"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* Ang CSS na inilagay dito ay makakaapekto sa mga tagagamit ng pabalat na Monobook */",
- "monobook.js": "/* Ang anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng pabalat na MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dbl2010"
- ]
- },
- "monobook.css": "/* Buraya konulacak CSS kodu tüm Monobook teması kullanan tüm kullanıcılarda etkin olur */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ильнар"
- ]
- },
- "skinname-monobook": "Китап"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Don Alessandro"
- ]
- },
- "skinname-monobook": "Kitap"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sborsody"
- ]
- },
- "skinname-monobook": "МоноБук"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arlin"
- ]
- },
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* CSS placed here will affect users of the Monobook skin */",
- "monobook.js": "/* Any JavaScript here will be loaded for users using the MonoBook skin */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dim Grits",
- "Matma Rex",
- "Ата"
- ]
- },
- "skinname-monobook": "Моно-книга",
- "monobook-desc": "Класична тема оформлення MediaWiki з 2004 року, названа за чорно-білим фото книги на фоні сторінки",
- "monobook.css": "/* Розміщений тут CSS буде застосовуватися до всіх тем оформлення Monobook */",
- "monobook.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують тему оформлення Моно-книга */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Игорь Бродский"
- ]
- },
- "skinname-monobook": "MonoBook"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Minh Nguyen"
- ]
- },
- "monobook-desc": "Giao diện MediaWiki cổ điển năm 2004, được đặt tên theo bức hình nền cuốn sách đen trắng",
- "monobook.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện MonoBook */",
- "monobook.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện MonoBook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Silvicola"
- ]
- },
- "monobook.css": "/* CSS hiir beâjflusd nôr dii Monobook-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */"
-}
+++ /dev/null
-{
- "monobook.css": "/* El CSS isio pepladöl otefon gebanis padafomäta: Monobook */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Võrok"
- ]
- },
- "monobook.css": "/* Taa lehe pääl om Monobook-vällänägemist muutvit kujonduisi. */",
- "monobook.js": "/* Olõi soovitõt; pruugiq [[MediaWiki:common.js]] */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Srtxg"
- ]
- },
- "monobook.css": "/* li côde CSS metou chal serè eployî pa tos les uzeus eployant l' pea «monobook» */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ibou"
- ]
- },
- "monobook.css": "/* CSS yiñ def fii dañuy am ay njeexit ci jëfandikukatu col gu Monobook. */",
- "monobook.js": "/*Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Monobook keppa koy yeb. */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "פוילישער"
- ]
- },
- "skinname-monobook": "מאנאבוק",
- "monobook.css": "/* סטייל דא געלייגט וועט באאיינפלוסן דעם Monobook סקין */"
-}
+++ /dev/null
-{
- "skinname-monobook": "MonoBook",
- "monobook.css": "/* 響呢度放 CSS 碼去改用戶用嘅 Monobook 畫面 */",
- "monobook.js": "/* 響每一次個頁面載入時,用 Monobook 畫面嘅用戶都會載入呢度任何嘅JavaScript */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Xiaomingyan",
- "Cwek",
- "Liuxinyu970226"
- ]
- },
- "monobook-desc": "自2004年就出现的经典MediaWiki皮肤,命名依据一本书中某页面的黑白照片背景",
- "monobook.css": "/* 放置于这里的CSS将影响使用MonoBook皮肤的用户 */",
- "monobook.js": "/* 这里的任何JavaScript将为使用MonoBook皮肤的用户加载 */"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Cwlin0416"
- ]
- },
- "monobook-desc": "MediaWiki 自 2004 年以來的經典外觀,根據頁面背景的書本黑白照命名",
- "monobook.css": "/* 此 CSS 會影響使用 Monobook 介面外觀的使用者 */",
- "monobook.js": "/* 此 JavaScript 會用於使用 Monobook 介面外觀使用者 */"
-}
+++ /dev/null
-/*
-** MediaWiki 'monobook' style sheet for CSS2-capable browsers.
-** Copyright Gabriel Wicke - http://wikidev.net/
-** License: GPL (http://www.gnu.org/copyleft/gpl.html)
-**
-** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John
-** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,
-** Michael Zeltner and Geir Bækholt)
-** All you guys rock :)
-*/
-
-div#column-content {
- width: 100%;
- float: right;
- margin: 0 0 .6em -12.2em;
- padding: 0;
-}
-
-div#content {
- margin: 2.8em 0 0 12.2em;
- padding: 1em;
- position: relative;
- z-index: 2;
-}
-
-div#column-one {
- padding-top: 160px;
-}
-
-/* Hide, but keep accessible for screen-readers */
-#column-one h2 {
- position: absolute;
- top: -9999px;
-}
-
-div#content {
- background: white;
- color: black;
- border: 1px solid #aaa;
- border-right: none;
- line-height: 1.5em;
-}
-
-/* the left column width is specified in class .portlet */
-
-/* Font size:
-** We take advantage of keyword scaling- browsers won't go below 9px
-** More at http://www.w3.org/2003/07/30-font-size
-** http://style.cleverchimp.com/font_size_intervals/altintervals.html
-*/
-
-body {
- font: x-small sans-serif;
- /* @embed */
- background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
- color: black;
- margin: 0;
- padding: 0;
- direction: ltr; /* Needed for RTL flipping */
- unicode-bidi: embed;
-}
-
-/* scale back up to a sane default */
-div#globalWrapper {
- font-size: 127%;
- width: 100%;
- margin: 0;
- padding: 0;
-}
-
-/* general styles */
-a {
- color: #002bb8;
-}
-
-a:visited {
- color: #5a3696;
-}
-
-a.new,
-#p-personal a.new {
- color: #cc2200;
-}
-
-ul {
- list-style-type: square;
- /* @embed */
- list-style-image: url(bullet.gif);
-}
-
-input.historysubmit {
- padding: 0 .3em .3em .3em !important;
- font-size: 94%;
- cursor: pointer;
- height: 1.7em !important;
- margin-left: 1.6em;
-}
-
-pre, .mw-code {
- line-height: 1.1em;
-}
-
-#firstHeading {
- padding-top: 0;
-}
-
-/*
-** the main content area
-*/
-
-#siteNotice {
- font-size: 95%;
- padding: 0 0.9em;
-}
-
-#localNotice {
- margin: 0;
-}
-
-#siteNotice p {
- margin: 0;
- padding: 0;
-}
-
-/*
-** classes for special content elements like town boxes
-** intended to be referenced directly from the wiki src
-*/
-
-/*
-** User styles
-*/
-/* table standards */
-table.rimage {
- float: right;
- position: relative;
- margin-left: 1em;
- margin-bottom: 1em;
- text-align: center;
-}
-
-/*
-** edit views etc
-*/
-.special li {
- line-height: 1.4em;
- margin: 0;
- padding: 0;
-}
-
-/*
-** keep the whitespace in front of the ^=, hides rule from konqueror
-** this is css3, the validator doesn't like it when validating as css2
-*/
-#bodyContent a.external {
- /* @embed */
- background: url(external-ltr.png) center right no-repeat;
- padding-right: 13px;
-}
-
-#bodyContent a.external[href ^="https://"],
-.link-https {
- /* @embed */
- background: url(lock_icon.gif) center right no-repeat;
- padding-right: 16px;
-}
-
-#bodyContent a.external[href ^="mailto:"],
-.link-mailto {
- /* @embed */
- background: url(mail_icon.gif) center right no-repeat;
- padding-right: 18px;
-}
-
-#bodyContent a.external[href ^="news:"] {
- /* @embed */
- background: url(news_icon.png) center right no-repeat;
- padding-right: 18px;
-}
-
-#bodyContent a.external[href ^="ftp://"],
-.link-ftp {
- /* @embed */
- background: url(file_icon.gif) center right no-repeat;
- padding-right: 18px;
-}
-
-#bodyContent a.external[href ^="irc://"],
-#bodyContent a.external[href ^="ircs://"],
-.link-irc {
- /* @embed */
- background: url(discussionitem_icon.gif) center right no-repeat;
- padding-right: 18px;
-}
-
-#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"],
-#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"],
-#bodyContent a.external[href $=".midi"], #bodyContent a.external[href $=".MIDI"],
-#bodyContent a.external[href $=".mp3"], #bodyContent a.external[href $=".MP3"],
-#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"],
-#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"],
-.link-audio {
- /* @embed */
- background: url(audio.png) center right no-repeat;
- padding-right: 13px;
-}
-
-#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"],
-#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"],
-#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"],
-#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"],
-.link-video {
- /* @embed */
- background: url(video.png) center right no-repeat;
- padding-right: 13px;
-}
-
-#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"],
-#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"],
-#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"],
-.link-document {
- /* @embed */
- background: url(document.png) center right no-repeat;
- padding-right: 12px;
-}
-
-/* Interwiki Styling */
-#bodyContent a.extiw,
-#bodyContent a.extiw:active {
- color: #36b;
-}
-
-/* External links */
-#bodyContent a.external {
- color: #36b;
-}
-
-/*
-** Structural Elements
-*/
-
-/*
-** general portlet styles (elements in the quickbar)
-*/
-.portlet {
- border: none;
- margin: 0 0 .5em;
- padding: 0;
- float: none;
- width: 11.6em;
- overflow: hidden;
-}
-
-.portlet h3 {
- background: transparent;
- padding: 0 1em 0 .5em;
- display: inline;
- height: 1em;
- text-transform: lowercase;
- font-size: 91%;
- font-weight: normal;
- white-space: nowrap;
-}
-
-.pBody {
- font-size: 95%;
- background-color: white;
- color: black;
- border-collapse: collapse;
- border: 1px solid #aaa;
- padding: 0 .8em .3em .5em;
-}
-
-/* allows .pBody styles to wrap around content added via BaseTemplateAfterPortlet hook */
-.pBody:after {
- content: '';
- clear: both;
- display: block;
-}
-
-.portlet ul {
- line-height: 1.5em;
- font-size: 95%;
-}
-
-.portlet li {
- padding: 0;
- margin: 0;
-}
-
-/*
-** Logo properties
-*/
-
-#p-logo {
- top: 0;
- left: 0;
- position: absolute; /*needed to use z-index */
- z-index: 3;
- height: 155px;
- width: 12em;
- overflow: visible;
-}
-
-#p-logo h3 {
- display: none;
-}
-
-#p-logo a,
-#p-logo a:hover {
- display: block;
- height: 155px;
- width: 12.2em;
- background-repeat: no-repeat;
- background-position: 35% 50% !important;
- text-decoration: none;
-}
-
-/*
-** Search portlet
-*/
-#p-search {
- position: relative;
- z-index: 3;
-}
-
-input.searchButton {
- margin-top: 1px;
- font-size: 95%;
-}
-
-#searchGoButton {
- padding-left: .5em;
- padding-right: .5em;
- font-weight: bold;
-}
-
-#searchInput {
- width: 10.9em;
- margin: 0;
- font-size: 95%;
-}
-
-#p-search .pBody {
- padding: .5em .4em .4em .4em;
- text-align: center;
-}
-
-#p-search #searchform div div {
- margin-top: .4em;
- font-size: 95%;
-}
-
-/*
-** the personal toolbar
-*/
-#p-personal {
- position: absolute;
- left: 0;
- top: 0;
- z-index: 3;
-}
-
-#p-personal {
- width: 100%;
- white-space: nowrap;
- padding: 0;
- margin: 0;
- border: none;
- background: none;
- overflow: visible;
- line-height: 1.2em;
-}
-
-#p-personal h3 {
- display: none;
-}
-
-#p-personal .portlet,
-#p-personal .pBody {
- z-index: 0;
- padding: 0;
- margin: 0;
- border: none;
- overflow: visible;
- background: none;
-}
-
-/* this is the ul contained in the portlet */
-#p-personal ul {
- border: none;
- line-height: 1.4em;
- color: #2f6fab;
- padding: 0 2em 0 3em;
- margin: 0;
- text-align: right;
- list-style-type: none;
- list-style-image: none;
- z-index: 0;
- background: none;
- cursor: default;
-}
-
-#p-personal li {
- z-index: 0;
- border: none;
- padding: 0;
- display: inline;
- color: #2f6fab;
- margin-left: 1em;
- line-height: 1.2em;
- background: none;
-}
-
-#p-personal li a {
- text-decoration: none;
- color: #005896;
- padding-bottom: .2em;
- background: none;
-}
-
-#p-personal li a:hover {
- background-color: white;
- padding-bottom: .2em;
- text-decoration: none;
-}
-
-#p-personal li.active a:hover {
- background-color: transparent;
-}
-
-/* The icon in front of the username / login link */
-li#pt-userpage,
-li#pt-anonuserpage,
-li#pt-login {
- /* @embed */
- background: url(user.gif) top left no-repeat;
- padding-left: 20px;
-}
-
-#p-personal ul {
- text-transform: lowercase;
-}
-
-/* Don't lowercase username or IP addresses (IPv6) */
-li#pt-userpage,
-li#pt-anonuserpage {
- text-transform: none;
-}
-
-#p-personal li.active {
- font-weight: bold;
-}
-
-/*
-** the page-related actions- page/talk, edit etc
-*/
-#p-cactions {
- position: absolute;
- top: 1.3em;
- left: 11.5em;
- margin: 0;
- white-space: nowrap;
- width: 76%;
- line-height: 1.1em;
- overflow: visible;
- background: none;
- border-collapse: collapse;
- padding-left: 1em;
- font-size: 95%;
-}
-
-#p-cactions ul {
- list-style-type: none;
- list-style-image: none;
-}
-
-#p-cactions li {
- display: inline;
- border: 1px solid #aaa;
- border-bottom: none;
- padding: 0 0 1em 0;
- margin: 0 .3em 0 0;
- overflow: visible;
- background: white;
-}
-
-#p-cactions li.selected {
- border-color: #fabd23;
- font-weight: bold;
-}
-
-#p-cactions li a {
- background-color: #fbfbfb;
- color: #002bb8;
- border: none;
- padding: 0 .8em .3em;
- position: relative;
- z-index: 0;
- margin: 0;
- text-decoration: none;
-}
-
-#p-cactions li.selected a {
- z-index: 3;
- background-color: white;
-}
-
-#p-cactions .new a {
- color: #ba0000;
-}
-
-#p-cactions li a:hover {
- z-index: 3;
- text-decoration: none;
- background-color: white;
-}
-
-#p-cactions h3 {
- display: none;
-}
-
-#p-cactions li.istalk {
- margin-right: 0;
-}
-
-#p-cactions li.istalk a {
- padding-right: .5em;
-}
-
-#p-cactions #ca-addsection a {
- padding-left: .4em;
- padding-right: .4em;
-}
-
-/* offsets to distinguish the tab groups */
-li#ca-talk {
- margin-right: 1.6em;
-}
-
-li#ca-watch,
-li#ca-unwatch,
-li#ca-varlang-0,
-li#ca-print {
- margin-left: 1.6em;
-}
-
-#p-cactions .pBody {
- font-size: 1em;
- background-color: transparent;
- color: inherit;
- border-collapse: inherit;
- border: 0;
- padding: 0;
-}
-
-#p-cactions li a {
- text-transform: lowercase;
-}
-
-#p-lang {
- position: relative;
- z-index: 3;
-}
-
-/* Override text-transform on languages where capitalization is significant */
-.capitalize-all-nouns .portlet h3,
-.capitalize-all-nouns #p-personal ul,
-.capitalize-all-nouns #p-cactions ul li a {
- text-transform: none;
-}
-
-/* TODO: #t-iscite is only used by the Cite extension, come up with some
- * system which allows extensions to add to this file on the fly
- */
-#t-ispermalink, #t-iscite {
- color: #999;
-}
-
-/*
-** footer
-*/
-div#footer {
- background-color: white;
- border-top: 1px solid #fabd23;
- border-bottom: 1px solid #fabd23;
- margin: .6em 0 1em 0;
- overflow: hidden;
- padding: .4em 0 .3em 0;
- text-align: center;
- font-size: 90%;
-}
-
-div#footer li {
- display: inline;
- margin: 0 1.3em;
-}
-
-#f-poweredbyico, #f-copyrightico {
- margin: 0 8px;
- position: relative;
- top: -2px; /* Bump it up just a tad */
-}
-
-#f-poweredbyico {
- float: right;
- height: 1%;
-}
-
-#f-copyrightico {
- float: left;
- height: 1%;
-}
-
-.mw-htmlform-submit {
- font-weight: bold;
- padding-left: .3em;
- padding-right: .3em;
- margin-right: 2em;
-}
-
-/* js pref toc */
-#preftoc {
- margin: 0;
- padding: 0;
- width: 100%;
- clear: both;
-}
-
-#preftoc li {
- background-color: #f0f0f0;
- color: #000;
-}
-
-#preftoc li {
- margin: 1px -2px 1px 2px;
- float: left;
- padding: 2px 0 3px 0;
- border: 1px solid #fff;
- border-right-color: #716f64;
- border-bottom: 0;
- position: relative;
- white-space: nowrap;
- list-style-type: none;
- list-style-image: none;
- z-index: 3;
-}
-
-#preftoc li.selected {
- font-weight: bold;
- background-color: #f9f9f9;
- border: 1px solid #aaa;
- border-bottom: none;
- cursor: default;
- top: 1px;
- padding-top: 2px;
- margin-right: -3px;
-}
-
-#preftoc > li.selected {
- top: 2px;
-}
-
-#preftoc a,
-#preftoc a:active {
- display: block;
- color: #000;
- padding: 0 .7em;
- position: relative;
- text-decoration: none;
-}
-
-#preftoc li.selected a {
- cursor: default;
- text-decoration: none;
-}
-
-#preferences {
- margin: 0;
- border: 1px solid #aaa;
- clear: both;
- padding: 1.5em;
- background-color: #F9F9F9;
-}
-
-.prefsection {
- border: none;
- padding: 0;
- margin: 0;
-}
-
-.prefsection legend {
- font-weight: bold;
-}
-
-.prefsection table, .prefsection legend {
- background-color: #F9F9F9;
-}
-
-.mainLegend {
- display: none;
-}
-
-td.htmlform-tip {
- font-size: x-small;
- padding: .2em 2em;
- color: #666;
-}
-
-.preferences-login {
- clear: both;
- margin-bottom: 1.5em;
-}
-
-.prefcache {
- font-size: 90%;
- margin-top: 2em;
-}
-
-#userloginprompt, #languagelinks {
- font-size: 85%;
-}
-
-#login-sectiontip {
- font-size: 85%;
- line-height: 1.2;
- padding-top: 2em;
-}
-
-#userloginlink a, #wpLoginattempt, #wpCreateaccount {
- font-weight: bold;
-}
-
-/**
- * This was originally added by Gabriel Wicke in r3681 (committed on 25 May 2004)
- * with the commit message "tweaks to page history".
- * Unlike the other IE/Mac fixes that used to be present here, this seems to get
- * applied on more modern browsers, so let's keep it here until someone has the
- * time to properly test it out.
- */
-#pagehistory li.selected {
- position: relative;
-}
-
-.redirectText {
- font-size: 150%;
- margin: 5px;
-}
-
-div.patrollink {
- clear: both;
-}
-
-.sharedUploadNotice {
- font-style: italic;
-}
-
-span.updatedmarker {
- color: black;
- background-color: #0f0;
-}
-
-.editExternally {
- border: 1px solid gray;
- background-color: #ffffff;
- padding: 3px;
- margin-top: 0.5em;
- float: left;
- font-size: small;
- text-align: center;
-}
-
-.editExternallyHelp {
- font-style: italic;
- color: gray;
-}
-
-.toggle {
- margin-left: 2em;
- text-indent: -2em;
-}
-
-/* @bug 1714 */
-input#wpSave,
-input#wpDiff {
- margin-right: 0.33em;
-}
-
-#wpSave {
- font-weight: bold;
-}
-
-/* noarticletext */
-div.noarticletext {
- border: 1px solid #ccc;
- background: #fff;
- padding: .2em 1em;
- color: #000;
-}
-
-div#searchTargetContainer {
- left: 10px;
- top: 10px;
- width: 90%;
- background: white;
-}
-
-div#searchTarget {
- padding: 3px;
- margin: 5px;
- background: #F0F0F0;
- border: solid 1px blue;
-}
-
-div#searchTarget ul li {
- list-style-type: none;
- list-style-image: none;
-}
-
-div#searchTarget ul li:before {
- color: orange;
- content: "\00BB \0020";
-}
-
-div#searchTargetHide {
- float: right;
- border: solid 1px black;
- background: #DCDCDC;
- padding: 2px;
-}
-
-#powersearch p {
- margin-top: 0;
-}
-
-div.multipageimagenavbox {
- border: solid 1px silver;
- padding: 4px;
- margin: 1em;
- background: #f0f0f0;
-}
-
-div.multipageimagenavbox div.thumb {
- border: none;
- margin-left: 2em;
- margin-right: 2em;
-}
-
-div.multipageimagenavbox hr {
- margin: 6px;
-}
-
-table.multipageimage td {
- text-align: center;
-}
-
-.templatesUsed {
- margin-top: 1.5em;
-}
-
-.mw-summary-preview {
- margin: 0.1em 0;
-}
-
-/* Friendlier slave lag warnings */
-div.mw-lag-warn-normal,
-div.mw-lag-warn-high {
- padding: 3px;
- text-align: center;
- margin: 3px auto;
-}
-
-div.mw-lag-warn-normal {
- border: 1px solid #FFCC66;
- background-color: #FFFFCC;
-}
-
-div.mw-lag-warn-high {
- font-weight: bold;
- border: 2px solid #FF0033;
- background-color: #FFCCCC;
-}
-
-.MediaTransformError {
- background-color: #ccc;
- padding: 0.1em;
-}
-
-.MediaTransformError td {
- text-align: center;
- vertical-align: middle;
- font-size: 90%;
-}
-
-/* Sometimes people don't want personal tools to be lowercase! */
-.no-text-transform {
- text-transform: none;
-}
-
-/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
-.tipsy {
- font-size: 127%;
-}
-
-/* mediawiki.notification */
-.skin-monobook .mw-notification {
- box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.125);
-}
--- /dev/null
+Skins, such as the default skin Vector, are distributed separately. Drop them
+into this directory and enable as per the skin's installation instructions.
+
+You can find a list of available skins at
+<https://www.mediawiki.org/wiki/Category:All_skins>,
+and more information about installing and configuring skins at
+<https://www.mediawiki.org/wiki/Manual:Skin_configuration>.
+
+If you are a developer, you might want to fetch the skin tree in another
+directory and make a symbolic link:
+
+ mediawiki/skins$ ln -s ../../skins-trunk/FooBar
+
+Most skins are available through Git:
+ https://gerrit.wikimedia.org/r/#/admin/projects/?filter=mediawiki%252Fskins%252F
+ https://git.wikimedia.org/project/mediawiki
+
+
+Please note that under POSIX systems (Linux...), parent of a symbolic path
+refers to the link source, NOT to the target! You should check the env
+variable MW_INSTALL_PATH in case the extension is not in the default location.
+
+The following code snippet lets you override the default path:
+
+ $IP = getenv( 'MW_INSTALL_PATH' );
+ if( $IP === false ) {
+ $IP = __DIR__ . '/../..';
+ }
+ require_once "$IP/maintenance/Maintenance.php"; // a MediaWiki core file
+++ /dev/null
-== GNU GENERAL PUBLIC LICENSE ==
-
-Version 2, June 1991
-
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-=== Preamble ===
-
-The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
-When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
-We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-== TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ==
-
-'''0.''' This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-'''1.''' You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-'''2.''' You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- '''a)''' You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- '''b)''' You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- '''c)''' If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-'''3.''' You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- '''a)''' Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- '''b)''' Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- '''c)''' Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-'''4.''' You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-'''5.''' You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-'''6.''' Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-'''7.''' If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-'''8.''' If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-'''9.''' The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-'''10.''' If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-=== NO WARRANTY ===
-
-'''11.''' BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-'''12.''' IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- '''END OF TERMS AND CONDITIONS'''
-
-== How to Apply These Terms to Your New Programs ==
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
-
- Copyright (C) <year> <name of author>
-
- 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
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
-
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+++ /dev/null
-<?php
-/**
- * Vector - Modern version of MonoBook with fresh look and many usability
- * improvements.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * SkinTemplate class for Vector skin
- * @ingroup Skins
- */
-class SkinVector extends SkinTemplate {
- public $skinname = 'vector';
- public $stylename = 'Vector';
- public $template = 'VectorTemplate';
-
- protected static $bodyClasses = array( 'vector-animateLayout' );
-
- /**
- * Initializes output page and sets up skin-specific parameters
- * @param OutputPage $out Object to initialize
- */
- public function initPage( OutputPage $out ) {
- global $wgLocalStylePath;
-
- parent::initPage( $out );
-
- // Append CSS which includes IE only behavior fixes for hover support -
- // this is better than including this in a CSS file since it doesn't
- // wait for the CSS file to load before fetching the HTC file.
- $min = $this->getRequest()->getFuzzyBool( 'debug' ) ? '' : '.min';
- $out->addHeadItem( 'csshover',
- '<!--[if lt IE 7]><style type="text/css">body{behavior:url("' .
- htmlspecialchars( $wgLocalStylePath ) .
- "/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
- );
-
- $out->addModules( array( 'skins.vector.js' ) );
- }
-
- /**
- * Loads skin and user CSS files.
- * @param OutputPage $out
- */
- function setupSkinUserCss( OutputPage $out ) {
- parent::setupSkinUserCss( $out );
-
- $styles = array( 'mediawiki.skinning.interface', 'skins.vector.styles' );
- wfRunHooks( 'SkinVectorStyleModules', array( $this, &$styles ) );
- $out->addModuleStyles( $styles );
- }
-
- /**
- * Adds classes to the body element.
- *
- * @param OutputPage $out
- * @param array &$bodyAttrs Array of attributes that will be set on the body element
- */
- function addToBodyAttributes( $out, &$bodyAttrs ) {
- if ( isset( $bodyAttrs['class'] ) && strlen( $bodyAttrs['class'] ) > 0 ) {
- $bodyAttrs['class'] .= ' ' . implode( ' ', static::$bodyClasses );
- } else {
- $bodyAttrs['class'] = implode( ' ', static::$bodyClasses );
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * Vector - Modern version of MonoBook with fresh look and many usability
- * improvements.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-$wgExtensionCredits['skin'][] = array(
- 'path' => __FILE__,
- 'name' => 'Vector',
- 'namemsg' => 'skinname-vector',
- 'descriptionmsg' => 'vector-skin-desc',
- 'url' => 'https://www.mediawiki.org/wiki/Skin:Vector',
- 'author' => array( 'Trevor Parscal', 'Roan Kattouw', '...' ),
- 'license-name' => 'GPLv2+',
-);
-
-// Register files
-$wgAutoloadClasses['SkinVector'] = __DIR__ . '/SkinVector.php';
-$wgAutoloadClasses['VectorTemplate'] = __DIR__ . '/VectorTemplate.php';
-$wgMessagesDirs['Vector'] = __DIR__ . '/i18n';
-
-// Register skin
-$wgValidSkinNames['vector'] = 'Vector';
-
-// Register modules
-$wgResourceModules['skins.vector.styles'] = array(
- 'styles' => array(
- 'screen.less' => array( 'media' => 'screen' ),
- 'screen-hd.less' => array( 'media' => 'screen and (min-width: 982px)' ),
- ),
- 'remoteSkinPath' => 'Vector',
- 'localBasePath' => __DIR__,
-);
-$wgResourceModules['skins.vector.js'] = array(
- 'scripts' => array(
- 'collapsibleTabs.js',
- 'vector.js',
- ),
- 'position' => 'top',
- 'dependencies' => array(
- 'jquery.throttle-debounce',
- 'jquery.tabIndex',
- ),
- 'remoteSkinPath' => 'Vector',
- 'localBasePath' => __DIR__,
-);
-
-// Apply module customizations
-$wgResourceModuleSkinStyles['vector'] = array(
- 'jquery.tipsy' => 'skinStyles/jquery.tipsy.less',
- 'jquery.ui.core' => array(
- 'skinStyles/jquery.ui/jquery.ui.core.css',
- 'skinStyles/jquery.ui/jquery.ui.theme.css',
- ),
- 'jquery.ui.accordion' => 'skinStyles/jquery.ui/jquery.ui.accordion.css',
- 'jquery.ui.autocomplete' => 'skinStyles/jquery.ui/jquery.ui.autocomplete.css',
- 'jquery.ui.button' => 'skinStyles/jquery.ui/jquery.ui.button.css',
- 'jquery.ui.datepicker' => 'skinStyles/jquery.ui/jquery.ui.datepicker.css',
- 'jquery.ui.dialog' => 'skinStyles/jquery.ui/jquery.ui.dialog.css',
- 'jquery.ui.progressbar' => 'skinStyles/jquery.ui/jquery.ui.progressbar.css',
- 'jquery.ui.resizable' => 'skinStyles/jquery.ui/jquery.ui.resizable.css',
- 'jquery.ui.selectable' => 'skinStyles/jquery.ui/jquery.ui.selectable.css',
- 'jquery.ui.slider' => 'skinStyles/jquery.ui/jquery.ui.slider.css',
- 'jquery.ui.tabs' => 'skinStyles/jquery.ui/jquery.ui.tabs.css',
- 'mediawiki.notification' => 'skinStyles/mediawiki.notification.less',
- 'mediawiki.special' => 'skinStyles/mediawiki.special.less',
- 'mediawiki.special.preferences' => 'skinStyles/mediawiki.special.preferences.less',
- 'remoteSkinPath' => 'Vector',
- 'localBasePath' => __DIR__,
-);
+++ /dev/null
-<?php
-/**
- * Vector - Modern version of MonoBook with fresh look and many usability
- * improvements.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Skins
- */
-
-/**
- * QuickTemplate class for Vector skin
- * @ingroup Skins
- */
-class VectorTemplate extends BaseTemplate {
- /* Functions */
-
- /**
- * Outputs the entire contents of the (X)HTML page
- */
- public function execute() {
- global $wgVectorUseIconWatch;
-
- // Build additional attributes for navigation urls
- $nav = $this->data['content_navigation'];
-
- if ( $wgVectorUseIconWatch ) {
- $mode = $this->getSkin()->getUser()->isWatched( $this->getSkin()->getRelevantTitle() )
- ? 'unwatch'
- : 'watch';
-
- if ( isset( $nav['actions'][$mode] ) ) {
- $nav['views'][$mode] = $nav['actions'][$mode];
- $nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' );
- $nav['views'][$mode]['primary'] = true;
- unset( $nav['actions'][$mode] );
- }
- }
-
- $xmlID = '';
- foreach ( $nav as $section => $links ) {
- foreach ( $links as $key => $link ) {
- if ( $section == 'views' && !( isset( $link['primary'] ) && $link['primary'] ) ) {
- $link['class'] = rtrim( 'collapsible ' . $link['class'], ' ' );
- }
-
- $xmlID = isset( $link['id'] ) ? $link['id'] : 'ca-' . $xmlID;
- $nav[$section][$key]['attributes'] =
- ' id="' . Sanitizer::escapeId( $xmlID ) . '"';
- if ( $link['class'] ) {
- $nav[$section][$key]['attributes'] .=
- ' class="' . htmlspecialchars( $link['class'] ) . '"';
- unset( $nav[$section][$key]['class'] );
- }
- if ( isset( $link['tooltiponly'] ) && $link['tooltiponly'] ) {
- $nav[$section][$key]['key'] =
- Linker::tooltip( $xmlID );
- } else {
- $nav[$section][$key]['key'] =
- Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( $xmlID ) );
- }
- }
- }
- $this->data['namespace_urls'] = $nav['namespaces'];
- $this->data['view_urls'] = $nav['views'];
- $this->data['action_urls'] = $nav['actions'];
- $this->data['variant_urls'] = $nav['variants'];
-
- // Reverse horizontally rendered navigation elements
- if ( $this->data['rtl'] ) {
- $this->data['view_urls'] =
- array_reverse( $this->data['view_urls'] );
- $this->data['namespace_urls'] =
- array_reverse( $this->data['namespace_urls'] );
- $this->data['personal_urls'] =
- array_reverse( $this->data['personal_urls'] );
- }
- // Output HTML Page
- $this->html( 'headelement' );
- ?>
- <div id="mw-page-base" class="noprint"></div>
- <div id="mw-head-base" class="noprint"></div>
- <div id="content" class="mw-body" role="main">
- <a id="top"></a>
-
- <?php
- if ( $this->data['sitenotice'] ) {
- ?>
- <div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
- <?php
- }
- ?>
- <h1 id="firstHeading" class="firstHeading" lang="<?php
- $this->data['pageLanguage'] =
- $this->getSkin()->getTitle()->getPageViewLanguage()->getHtmlCode();
- $this->text( 'pageLanguage' );
- ?>"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
- <?php $this->html( 'prebodyhtml' ) ?>
- <div id="bodyContent" class="mw-body-content">
- <?php
- if ( $this->data['isarticle'] ) {
- ?>
- <div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
- <?php
- }
- ?>
- <div id="contentSub"<?php
- $this->html( 'userlangattributes' )
- ?>><?php $this->html( 'subtitle' ) ?></div>
- <?php
- if ( $this->data['undelete'] ) {
- ?>
- <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
- <?php
- }
- ?>
- <?php
- if ( $this->data['newtalk'] ) {
- ?>
- <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
- <?php
- }
- ?>
- <div id="jump-to-nav" class="mw-jump">
- <?php $this->msg( 'jumpto' ) ?>
- <a href="#mw-navigation"><?php
- $this->msg( 'jumptonavigation' )
- ?></a><?php
- $this->msg( 'comma-separator' )
- ?>
- <a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
- </div>
- <?php $this->html( 'bodycontent' ) ?>
- <?php
- if ( $this->data['printfooter'] ) {
- ?>
- <div class="printfooter">
- <?php $this->html( 'printfooter' ); ?>
- </div>
- <?php
- }
- ?>
- <?php
- if ( $this->data['catlinks'] ) {
- ?>
- <?php
- $this->html( 'catlinks' );
- ?>
- <?php
- }
- ?>
- <?php
- if ( $this->data['dataAfterContent'] ) {
- ?>
- <?php
- $this->html( 'dataAfterContent' );
- ?>
- <?php
- }
- ?>
- <div class="visualClear"></div>
- <?php $this->html( 'debughtml' ); ?>
- </div>
- </div>
- <div id="mw-navigation">
- <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
-
- <div id="mw-head">
- <?php $this->renderNavigation( 'PERSONAL' ); ?>
- <div id="left-navigation">
- <?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
- </div>
- <div id="right-navigation">
- <?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
- </div>
- </div>
- <div id="mw-panel">
- <div id="p-logo" role="banner"><a style="background-image: url(<?php
- $this->text( 'logopath' )
- ?>);" href="<?php
- echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] )
- ?>" <?php
- echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) )
- ?>></a></div>
- <?php $this->renderPortals( $this->data['sidebar'] ); ?>
- </div>
- </div>
- <div id="footer" role="contentinfo"<?php $this->html( 'userlangattributes' ) ?>>
- <?php
- foreach ( $this->getFooterLinks() as $category => $links ) {
- ?>
- <ul id="footer-<?php
- echo $category
- ?>">
- <?php
- foreach ( $links as $link ) {
- ?>
- <li id="footer-<?php
- echo $category
- ?>-<?php
- echo $link
- ?>"><?php
- $this->html( $link )
- ?></li>
- <?php
- }
- ?>
- </ul>
- <?php
- }
- ?>
- <?php $footericons = $this->getFooterIcons( "icononly" );
- if ( count( $footericons ) > 0 ) {
- ?>
- <ul id="footer-icons" class="noprint">
- <?php
- foreach ( $footericons as $blockName => $footerIcons ) {
- ?>
- <li id="footer-<?php
- echo htmlspecialchars( $blockName ); ?>ico">
- <?php
- foreach ( $footerIcons as $icon ) {
- ?>
- <?php
- echo $this->getSkin()->makeFooterIcon( $icon );
- ?>
-
- <?php
- }
- ?>
- </li>
- <?php
- }
- ?>
- </ul>
- <?php
- }
- ?>
- <div style="clear:both"></div>
- </div>
- <?php $this->printTrail(); ?>
-
- </body>
-</html>
- <?php
- }
-
- /**
- * Render a series of portals
- *
- * @param array $portals
- */
- protected function renderPortals( $portals ) {
- // Force the rendering of the following portals
- if ( !isset( $portals['SEARCH'] ) ) {
- $portals['SEARCH'] = true;
- }
- if ( !isset( $portals['TOOLBOX'] ) ) {
- $portals['TOOLBOX'] = true;
- }
- if ( !isset( $portals['LANGUAGES'] ) ) {
- $portals['LANGUAGES'] = true;
- }
- // Render portals
- foreach ( $portals as $name => $content ) {
- if ( $content === false ) {
- continue;
- }
-
- switch ( $name ) {
- case 'SEARCH':
- break;
- case 'TOOLBOX':
- $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' );
- break;
- case 'LANGUAGES':
- if ( $this->data['language_urls'] !== false ) {
- $this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' );
- }
- break;
- default:
- $this->renderPortal( $name, $content );
- break;
- }
- }
- }
-
- /**
- * @param string $name
- * @param array $content
- * @param null|string $msg
- * @param null|string|array $hook
- */
- protected function renderPortal( $name, $content, $msg = null, $hook = null ) {
- if ( $msg === null ) {
- $msg = $name;
- }
- $msgObj = wfMessage( $msg );
- ?>
- <div class="portal" role="navigation" id='<?php
- echo Sanitizer::escapeId( "p-$name" )
- ?>'<?php
- echo Linker::tooltip( 'p-' . $name )
- ?> aria-labelledby='<?php echo Sanitizer::escapeId( "p-$name-label" ) ?>'>
- <h3<?php
- $this->html( 'userlangattributes' )
- ?> id='<?php
- echo Sanitizer::escapeId( "p-$name-label" )
- ?>'><?php
- echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg );
- ?></h3>
-
- <div class="body">
- <?php
- if ( is_array( $content ) ) {
- ?>
- <ul>
- <?php
- foreach ( $content as $key => $val ) {
- ?>
- <?php echo $this->makeListItem( $key, $val ); ?>
-
- <?php
- }
- if ( $hook !== null ) {
- wfRunHooks( $hook, array( &$this, true ) );
- }
- ?>
- </ul>
- <?php
- } else {
- ?>
- <?php
- echo $content; /* Allow raw HTML block to be defined by extensions */
- }
-
- $this->renderAfterPortlet( $name );
- ?>
- </div>
- </div>
- <?php
- }
-
- /**
- * Render one or more navigations elements by name, automatically reveresed
- * when UI is in RTL mode
- *
- * @param array $elements
- */
- protected function renderNavigation( $elements ) {
- global $wgVectorUseSimpleSearch;
-
- // If only one element was given, wrap it in an array, allowing more
- // flexible arguments
- if ( !is_array( $elements ) ) {
- $elements = array( $elements );
- // If there's a series of elements, reverse them when in RTL mode
- } elseif ( $this->data['rtl'] ) {
- $elements = array_reverse( $elements );
- }
- // Render elements
- foreach ( $elements as $name => $element ) {
- switch ( $element ) {
- case 'NAMESPACES':
- ?>
- <div id="p-namespaces" role="navigation" class="vectorTabs<?php
- if ( count( $this->data['namespace_urls'] ) == 0 ) {
- echo ' emptyPortlet';
- }
- ?>" aria-labelledby="p-namespaces-label">
- <h3 id="p-namespaces-label"><?php $this->msg( 'namespaces' ) ?></h3>
- <ul<?php $this->html( 'userlangattributes' ) ?>>
- <?php
- foreach ( $this->data['namespace_urls'] as $link ) {
- ?>
- <li <?php
- echo $link['attributes']
- ?>><span><a href="<?php
- echo htmlspecialchars( $link['href'] )
- ?>" <?php
- echo $link['key']
- ?>><?php
- echo htmlspecialchars( $link['text'] )
- ?></a></span></li>
- <?php
- }
- ?>
- </ul>
- </div>
- <?php
- break;
- case 'VARIANTS':
- ?>
- <div id="p-variants" role="navigation" class="vectorMenu<?php
- if ( count( $this->data['variant_urls'] ) == 0 ) {
- echo ' emptyPortlet';
- }
- ?>" aria-labelledby="p-variants-label">
- <?php
- // Replace the label with the name of currently chosen variant, if any
- $variantLabel = $this->getMsg( 'variants' )->text();
- foreach ( $this->data['variant_urls'] as $link ) {
- if ( stripos( $link['attributes'], 'selected' ) !== false ) {
- $variantLabel = $link['text'];
- break;
- }
- }
- ?>
- <h3 id="p-variants-label"><span
- style="display: block;" <?php /* Temporary WMF deployment hack, to be removed before 1.24 release */ ?>
- ><?php echo htmlspecialchars( $variantLabel ) ?></span><a href="#"></a></h3>
-
- <div class="menu">
- <ul>
- <?php
- foreach ( $this->data['variant_urls'] as $link ) {
- ?>
- <li<?php
- echo $link['attributes']
- ?>><a href="<?php
- echo htmlspecialchars( $link['href'] )
- ?>" lang="<?php
- echo htmlspecialchars( $link['lang'] )
- ?>" hreflang="<?php
- echo htmlspecialchars( $link['hreflang'] )
- ?>" <?php
- echo $link['key']
- ?>><?php
- echo htmlspecialchars( $link['text'] )
- ?></a></li>
- <?php
- }
- ?>
- </ul>
- </div>
- </div>
- <?php
- break;
- case 'VIEWS':
- ?>
- <div id="p-views" role="navigation" class="vectorTabs<?php
- if ( count( $this->data['view_urls'] ) == 0 ) {
- echo ' emptyPortlet';
- }
- ?>" aria-labelledby="p-views-label">
- <h3 id="p-views-label"><?php $this->msg( 'views' ) ?></h3>
- <ul<?php
- $this->html( 'userlangattributes' )
- ?>>
- <?php
- foreach ( $this->data['view_urls'] as $link ) {
- ?>
- <li<?php
- echo $link['attributes']
- ?>><span><a href="<?php
- echo htmlspecialchars( $link['href'] )
- ?>" <?php
- echo $link['key']
- ?>><?php
- // $link['text'] can be undefined - bug 27764
- if ( array_key_exists( 'text', $link ) ) {
- echo array_key_exists( 'img', $link )
- ? '<img src="' . $link['img'] . '" alt="' . $link['text'] . '" />'
- : htmlspecialchars( $link['text'] );
- }
- ?></a></span></li>
- <?php
- }
- ?>
- </ul>
- </div>
- <?php
- break;
- case 'ACTIONS':
- ?>
- <div id="p-cactions" role="navigation" class="vectorMenu<?php
- if ( count( $this->data['action_urls'] ) == 0 ) {
- echo ' emptyPortlet';
- }
- ?>" aria-labelledby="p-cactions-label">
- <h3 id="p-cactions-label"><span><?php
- $this->msg( 'vector-more-actions' )
- ?></span><a href="#"></a></h3>
-
- <div class="menu">
- <ul<?php $this->html( 'userlangattributes' ) ?>>
- <?php
- foreach ( $this->data['action_urls'] as $link ) {
- ?>
- <li<?php
- echo $link['attributes']
- ?>>
- <a href="<?php
- echo htmlspecialchars( $link['href'] )
- ?>" <?php
- echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] )
- ?></a>
- </li>
- <?php
- }
- ?>
- </ul>
- </div>
- </div>
- <?php
- break;
- case 'PERSONAL':
- ?>
- <div id="p-personal" role="navigation" class="<?php
- if ( count( $this->data['personal_urls'] ) == 0 ) {
- echo ' emptyPortlet';
- }
- ?>" aria-labelledby="p-personal-label">
- <h3 id="p-personal-label"><?php $this->msg( 'personaltools' ) ?></h3>
- <ul<?php $this->html( 'userlangattributes' ) ?>>
- <?php
- $personalTools = $this->getPersonalTools();
- foreach ( $personalTools as $key => $item ) {
- echo $this->makeListItem( $key, $item );
- }
- ?>
- </ul>
- </div>
- <?php
- break;
- case 'SEARCH':
- ?>
- <div id="p-search" role="search">
- <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 ) {
- ?>
- <div id="simpleSearch">
- <?php
- } else {
- ?>
- <div>
- <?php
- }
- ?>
- <?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>
- <?php
-
- break;
- }
- }
- }
-}
+++ /dev/null
-/**
- * Collapsible tabs jQuery Plugin
- */
-( function ( $ ) {
- var rtl = $( 'html' ).attr( 'dir' ) === 'rtl';
- $.fn.collapsibleTabs = function ( options ) {
- // return if the function is called on an empty jquery object
- if ( !this.length ) {
- return this;
- }
- // Merge options into the defaults
- var settings = $.extend( {}, $.collapsibleTabs.defaults, options );
-
- this.each( function () {
- var $el = $( this );
- // add the element to our array of collapsible managers
- $.collapsibleTabs.instances = ( $.collapsibleTabs.instances.length === 0 ?
- $el : $.collapsibleTabs.instances.add( $el ) );
- // attach the settings to the elements
- $el.data( 'collapsibleTabsSettings', settings );
- // attach data to our collapsible elements
- $el.children( settings.collapsible ).each( function () {
- $.collapsibleTabs.addData( $( this ) );
- } );
- } );
-
- // if we haven't already bound our resize handler, bind it now
- if ( !$.collapsibleTabs.boundEvent ) {
- $( window ).on( 'resize', $.debounce( 500, function () {
- $.collapsibleTabs.handleResize();
- } ) );
- $.collapsibleTabs.boundEvent = true;
- }
-
- // call our resize handler to setup the page
- $.collapsibleTabs.handleResize();
- return this;
- };
- $.collapsibleTabs = {
- instances: [],
- boundEvent: null,
- defaults: {
- expandedContainer: '#p-views ul',
- collapsedContainer: '#p-cactions ul',
- collapsible: 'li.collapsible',
- shifting: false,
- expandCondition: function ( eleWidth ) {
- // If there are at least eleWidth + 1 pixels of free space, expand.
- // We add 1 because .width() will truncate fractional values but .offset() will not.
- return $.collapsibleTabs.calculateTabDistance() >= eleWidth + 1;
- },
- collapseCondition: function () {
- // If there's an overlap, collapse.
- return $.collapsibleTabs.calculateTabDistance() < 0;
- }
- },
- addData: function ( $collapsible ) {
- var settings = $collapsible.parent().data( 'collapsibleTabsSettings' );
- if ( settings ) {
- $collapsible.data( 'collapsibleTabsSettings', {
- expandedContainer: settings.expandedContainer,
- collapsedContainer: settings.collapsedContainer,
- expandedWidth: $collapsible.width(),
- prevElement: $collapsible.prev()
- } );
- }
- },
- getSettings: function ( $collapsible ) {
- var settings = $collapsible.data( 'collapsibleTabsSettings' );
- if ( !settings ) {
- $.collapsibleTabs.addData( $collapsible );
- settings = $collapsible.data( 'collapsibleTabsSettings' );
- }
- return settings;
- },
- handleResize: function () {
- $.collapsibleTabs.instances.each( function () {
- var $el = $( this ),
- data = $.collapsibleTabs.getSettings( $el );
-
- if ( data.shifting ) {
- return;
- }
-
- // if the two navigations are colliding
- if ( $el.children( data.collapsible ).length > 0 && data.collapseCondition() ) {
-
- $el.trigger( 'beforeTabCollapse' );
- // move the element to the dropdown menu
- $.collapsibleTabs.moveToCollapsed( $el.children( data.collapsible + ':last' ) );
- }
-
- // if there are still moveable items in the dropdown menu,
- // and there is sufficient space to place them in the tab container
- if ( $( data.collapsedContainer + ' ' + data.collapsible ).length > 0 &&
- data.expandCondition( $.collapsibleTabs.getSettings( $( data.collapsedContainer ).children(
- data.collapsible + ':first' ) ).expandedWidth ) ) {
- //move the element from the dropdown to the tab
- $el.trigger( 'beforeTabExpand' );
- $.collapsibleTabs
- .moveToExpanded( data.collapsedContainer + ' ' + data.collapsible + ':first' );
- }
- } );
- },
- moveToCollapsed: function ( ele ) {
- var outerData, expContainerSettings, target,
- $moving = $( ele );
-
- outerData = $.collapsibleTabs.getSettings( $moving );
- if ( !outerData ) {
- return;
- }
- expContainerSettings = $.collapsibleTabs.getSettings( $( outerData.expandedContainer ) );
- if ( !expContainerSettings ) {
- return;
- }
- expContainerSettings.shifting = true;
-
- // Remove the element from where it's at and put it in the dropdown menu
- target = outerData.collapsedContainer;
- $moving.css( 'position', 'relative' )
- .css( ( rtl ? 'left' : 'right' ), 0 )
- .animate( { width: '1px' }, 'normal', function () {
- var data, expContainerSettings;
- $( this ).hide();
- // add the placeholder
- $( '<span class="placeholder" style="display: none;"></span>' ).insertAfter( this );
- $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', outerData );
- $( this ).attr( 'style', 'display: list-item;' );
- data = $.collapsibleTabs.getSettings( $( ele ) );
- if ( data ) {
- expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
- if ( expContainerSettings ) {
- expContainerSettings.shifting = false;
- $.collapsibleTabs.handleResize();
- }
- }
- } );
- },
- moveToExpanded: function ( ele ) {
- var data, expContainerSettings, $target, expandedWidth,
- $moving = $( ele );
-
- data = $.collapsibleTabs.getSettings( $moving );
- if ( !data ) {
- return;
- }
- expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
- if ( !expContainerSettings ) {
- return;
- }
- expContainerSettings.shifting = true;
-
- // grab the next appearing placeholder so we can use it for replacing
- $target = $( data.expandedContainer ).find( 'span.placeholder:first' );
- expandedWidth = data.expandedWidth;
- $moving.css( 'position', 'relative' ).css( ( rtl ? 'right' : 'left' ), 0 ).css( 'width', '1px' );
- $target.replaceWith(
- $moving
- .detach()
- .css( 'width', '1px' )
- .data( 'collapsibleTabsSettings', data )
- .animate( { width: expandedWidth + 'px' }, 'normal', function () {
- $( this ).attr( 'style', 'display: block;' );
- var data, expContainerSettings;
- data = $.collapsibleTabs.getSettings( $( this ) );
- if ( data ) {
- expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
- if ( expContainerSettings ) {
- expContainerSettings.shifting = false;
- $.collapsibleTabs.handleResize();
- }
- }
- } )
- );
- },
- /**
- * Returns the amount of horizontal distance between the two tabs groups
- * (#left-navigation and #right-navigation), in pixels. If negative, this
- * means that the tabs overlap, and the value is the width of overlapping
- * parts.
- *
- * Used in default expandCondition and collapseCondition.
- *
- * @return {Numeric} distance/overlap in pixels
- */
- calculateTabDistance: function () {
- var $leftTab, $rightTab, leftEnd, rightStart;
-
- // In RTL, #right-navigation is actually on the left and vice versa.
- // Hooray for descriptive naming.
- if ( !rtl ) {
- $leftTab = $( '#left-navigation' );
- $rightTab = $( '#right-navigation' );
- } else {
- $leftTab = $( '#right-navigation' );
- $rightTab = $( '#left-navigation' );
- }
-
- leftEnd = $leftTab.offset().left + $leftTab.width();
- rightStart = $rightTab.offset().left;
-
- return rightStart - leftEnd;
- }
- };
-
-}( jQuery ) );
+++ /dev/null
-/* 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
-/*
- * 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;
-}
-
-/* Content */
-div#content {
- 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;
-
- .mw-editsection,
- .mw-editsection-like {
- font-family: @content-font-family;
- }
-
- p {
- line-height: inherit;
- margin: 0.5em 0;
- }
-
- h1,
- h2,
- #firstHeading {
- font-family: @content-heading-font-family;
- line-height: @heading-line-height;
- margin-bottom: 0.25em;
- padding: 0;
- }
-
- h1,
- #firstHeading {
- font-size: @content-heading-font-size;
- }
-
- h2 {
- font-size: 1.5em;
- margin-top: 1em;
- }
-
- h3,
- h4,
- h5,
- h6 {
- line-height: @content-line-height;
- margin-top: 0.3em;
- margin-bottom: 0;
- padding-bottom: 0;
- }
-
- h3 {
- font-size: 1.17em;
- }
-
- h3,
- h4 {
- font-weight: bold;
- }
-
- h4,
- h5,
- h6 {
- font-size: 100%; /* (reset) */
- }
-
- #toc h2,
- .toc h2 {
- font-size: 100%; /* (reset) */
- font-family: @content-font-family;
- }
-}
-
-/* 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;
-}
-
-.redirectText {
- font-size: 140%;
-}
-
-.redirectMsg img {
- vertical-align: text-bottom;
-}
-
-.mw-body-content {
- position: relative;
- line-height: @content-line-height;
- font-size: @content-font-size;
-}
+++ /dev/null
-@import "mediawiki.mixins.less";
-// External links
-#content {
- .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;
- }
-}
+++ /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 "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;
- /* This image is only a fallback (for IE 6-9), so we do not @embed it. */
- background-image: url('images/page-fade.png');
- .vertical-gradient(@body-background-color, @menu-background-color, 50%, 100%);
- background-color: @body-background-color;
-}
-
-#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 {
- margin: 0 0.6em 0 0.7em;
- padding: 0.25em 0;
- direction: ltr;
- background-position: top left;
- background-repeat: no-repeat;
- .background-image('images/portal-break.png');
-
- h3 {
- font-size: @menu-main-heading-font-size;
- color: @menu-main-heading-color;
- font-weight: normal;
- margin: 0;
- padding: @menu-main-heading-padding;
- cursor: default;
- border: none;
- }
-
- div.body {
- margin: @menu-main-body-margin;
- padding-top: 0;
-
- ul {
- list-style-type: none;
- list-style-image: none;
- margin: 0;
- padding: @menu-main-body-padding;
-
- li {
- line-height: 1.125em;
- margin: 0;
- padding: 0.25em 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;
- }
- }
- }
- }
- }
-
- &.first {
- background-image: none;
- margin-top: 0;
- h3 {
- display: none;
- }
- div.body {
- margin-left: 0.5em;
- }
- }
- }
-}
+++ /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!
- // Note these rules ensure that placeholder text can be distinguished from
- // standard text. In browsers which make this distinction clear these rules
- // are not necessary.
- // For inputs that use jquery.placeholder.js e.g. IE9-
- &.placeholder {
- color: #999;
- }
- // Distinguish placeholder text in IE10+
- &:-ms-input-placeholder {
- color: #999;
- }
- // Distinguish placeholder text in Firefox 18-
- &:-moz-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. */
- /* This would be 100% if not for Firefox shenanigans (bug 60900). */
- text-indent: 200%;
- /* 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;
- }
-}
+++ /dev/null
-/*
-Styling for namespace tabs (page, discussion) and views (read, edit, view history, watch and other actions)
-*/
-
-/* Navigation Labels */
-div.vectorTabs h3 {
- 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;
- cursor: pointer;
- position: relative;
-}
-
-body.rtl div.vectorMenu {
- /* @noflip */
- direction: rtl;
-}
-
-div#mw-head div.vectorMenu h3 {
- /* @noflip */
- float: left;
- .background-image('images/tab-break.png');
- background-repeat: no-repeat;
- background-position: bottom right;
- margin-left: -1px;
- font-size: 1em;
- height: 2.5em;
- // This effectively moves the "background border" outside of the element to act like a real
- // border. It is necessary for the dropdown (div.vectorMenu div.menu) to align well.
- padding-right: 1px;
- margin-right: -1px;
-}
-
-// The "Variants" menu has a really funny structure
-// Temporary WMF deployment hack, to be removed before 1.24 release
-div#mw-head div.vectorMenu#p-variants {
- #p-variants-label span {
- display: none;
- }
-
- #mw-vector-current-variant {
- display: inline-block;
- float: left;
- padding-right: 20px;
- font-size: 0.8em;
- padding-left: 0.5em;
- padding-top: 1.375em;
- font-weight: normal;
- border: none;
- background-image: none;
- }
-}
-
-div.vectorMenu h3 span {
- display: block;
- font-size: 0.8em;
- padding-left: 0.7em;
- padding-top: 1.375em;
- margin-right: 20px;
- font-weight: normal;
- color: @menu-main-heading-color;
-}
-
-div.vectorMenu h3 a {
- position: absolute;
- top: 0;
- right: 0;
- width: 20px;
- height: 2.5em;
- .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
- background-position: 100% 70%;
- background-repeat: no-repeat;
- .transition(background-position 250ms);
-}
-
-div.vectorMenu.menuForceShow h3 a {
- background-position: 100% 100%;
-}
-
-div.vectorMenuFocus h3 a {
- .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
-}
-
-div.vectorMenu div.menu {
- // Match the width of the dropdown "heading" (the tab)
- min-width: 100%;
- position: absolute;
- top: 2.5em;
- left: -1px;
- background-color: white;
- border: solid 1px silver;
- border-top-width: 0;
- clear: both;
- text-align: left;
- display: none;
-}
-
-/* Enable forcing showing of the menu for accessibility */
-div.vectorMenu:hover div.menu,
-div.vectorMenu.menuForceShow div.menu {
- display: block;
-}
-
-div.vectorMenu ul {
- list-style-type: none;
- list-style-image: none;
- padding: 0;
- margin: 0;
- 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
-@import "mediawiki.mixins.rotation"
-
-/* Watch/Unwatch Icon Styling */
-#ca-unwatch.icon a,
-#ca-watch.icon a {
- margin: 0;
- padding: 0;
- 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);
- /* Suppress the hilarious rotating focus outline on Firefox */
- outline: none;
- cursor: default;
- pointer-events: none;
- 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
-<public:attach event="ondocumentready" onevent="CSSHover()" />
-<script>
-/**
- * Whatever:hover - V3.11
- * ------------------------------------------------------------
- * Author - Peter Nederlof, http://www.xs4all.nl/~peterned
- * License - http://creativecommons.org/licenses/LGPL/2.1
- *
- * Special thanks to Sergiu Dumitriu, http://purl.org/net/sergiu,
- * for fixing the expression loop.
- *
- * Whatever:hover is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * Whatever:hover 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
- * Lesser General Public License for more details.
- *
- * howto: body { behavior:url("csshover3.htc"); }
- * ------------------------------------------------------------
- */
-
-window.CSSHover = (function(){
-
- // regular expressions, used and explained later on.
- var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;
- var REG_AFFECTED = /(.*?)\:(hover|active|focus)/i;
- var REG_PSEUDO = /[^:]+:([a-z\-]+).*/i;
- var REG_SELECT = /(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;
- var REG_CLASS = /\.([a-z0-9_\-]*on(hover|active|focus))/i;
- var REG_MSIE = /msie (5|6|7)/i;
- var REG_COMPAT = /backcompat/i;
-
- // property mapping, real css properties must be used in order to clear expressions later on...
- // Uses obscure css properties that no-one is likely to use. The properties are borrowed to
- // set an expression, and are then restored to the most likely correct value.
- var Properties = {
- index: 0,
- list: ['text-kashida', 'text-kashida-space', 'text-justify'],
- get: function() {
- return this.list[(this.index++)%this.list.length];
- }
- };
-
- // camelize is used to convert css properties from (eg) text-kashida to textKashida
- var camelize = function(str) {
- return str.replace(/-(.)/mg, function(result, match){
- return match.toUpperCase();
- });
- };
-
- /**
- * Local CSSHover object
- * --------------------------
- */
-
- var CSSHover = {
-
- // array of CSSHoverElements, used to unload created events
- elements: [],
-
- // buffer used for checking on duplicate expressions
- callbacks: {},
-
- // init, called once ondomcontentready via the exposed window.CSSHover function
- init:function() {
- // don't run in IE8 standards; expressions don't work in standards mode anyway,
- // and the stuff we're trying to fix should already work properly
- if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) {
- return;
- }
-
- // start parsing the existing stylesheets
- var sheets = window.document.styleSheets, l = sheets.length;
- for(var i=0; i<l; i++) {
- this.parseStylesheet(sheets[i]);
- }
- },
-
- // called from init, parses individual stylesheets
- parseStylesheet:function(sheet) {
- // check sheet imports and parse those recursively
- if(sheet.imports) {
- try {
- var imports = sheet.imports;
- var l = imports.length;
- for(var i=0; i<l; i++) {
- this.parseStylesheet(sheet.imports[i]);
- }
- } catch(securityException){
- // trycatch for various possible errors
- }
- }
-
- // interate the sheet's rules and send them to the parser
- try {
- var rules = sheet.rules;
- var r = rules.length;
- for(var j=0; j<r; j++) {
- this.parseCSSRule(rules[j], sheet);
- }
- } catch(someException){
- // trycatch for various errors, most likely accessing the sheet's rules.
- }
- },
-
- // magic starts here ...
- parseCSSRule:function(rule, sheet) {
-
- // The sheet is used to insert new rules into, this must be the same sheet the rule
- // came from, to ensure that relative paths keep pointing to the right location.
-
- // only parse a rule if it contains an interactive pseudo.
- var select = rule.selectorText;
- if(REG_INTERACTIVE.test(select)) {
- var style = rule.style.cssText;
-
- // affected elements are found by truncating the selector after the interactive pseudo,
- // eg: "div li:hover" >> "div li"
- var affected = REG_AFFECTED.exec(select)[1];
-
- // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
- // eg: "li:hover" >> "onhover"
- var pseudo = select.replace(REG_PSEUDO, 'on$1');
-
- // the new selector is going to use that classname in a new css rule,
- // since IE6 doesn't support multiple classnames, this is merged into one classname
- // eg: "li:hover" >> "li.onhover", "li.folder:hover" >> "li.folderonhover"
- var newSelect = select.replace(REG_SELECT, '.$2' + pseudo);
-
- // the classname is needed for the events that are going to be set on affected nodes
- // eg: "li.folder:hover" >> "folderonhover"
- var className = REG_CLASS.exec(newSelect)[1];
-
- // no need to set the same callback more than once when the same selector uses the same classname
- var hash = affected + className;
- if(!this.callbacks[hash]) {
-
- // affected elements are given an expression under a borrowed css property, because fake properties
- // can't have their expressions cleared. Different properties are used per pseudo, to avoid
- // expressions from overwriting eachother. The expression does a callback to CSSHover.patch,
- // rerouted via the exposed window.CSSHover function.
- var property = Properties.get();
- var atRuntime = camelize(property);
-
- // because the expression is added to the stylesheet, and styles are always applied to html that is
- // dynamically added to the dom, the expression will also trigger for those new elements (provided
- // they are selected by the affected selector).
- sheet.addRule(affected, property + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'", "'+atRuntime+'"))');
-
- // hash it, so an identical selector/class combo does not duplicate the expression
- this.callbacks[hash] = true;
- }
-
- // duplicate expressions need not be set, but the style could differ
- sheet.addRule(newSelect, style);
- }
- },
-
- // called via the expression, patches individual nodes
- patch:function(node, type, className, property) {
-
- // restores the borrowed css property to the value of its immediate parent, clearing
- // the expression so that it's not repeatedly called.
- try {
- var value = node.parentNode.currentStyle[property];
- node.style[property] = value;
- } catch(e) {
- // the above reset should never fail, but just in case, clear the runtimeStyle if it does.
- // this will also stop the expression.
- node.runtimeStyle[property] = '';
- }
-
- // just to make sure, also keep track of patched classnames locally on the node
- if(!node.csshover) {
- node.csshover = [];
- }
-
- // and check for it to prevent duplicate events with the same classname from being set
- if(!node.csshover[className]) {
- node.csshover[className] = true;
-
- // create an instance for the given type and class
- var element = new CSSHoverElement(node, type, className);
-
- // and store that instance for unloading later on
- this.elements.push(element);
- }
-
- // returns a dummy value to the expression
- return type;
- },
-
- // unload stuff onbeforeunload
- unload:function() {
- try {
-
- // remove events
- var l = this.elements.length;
- for(var i=0; i<l; i++) {
- this.elements[i].unload();
- }
-
- // and set properties to null
- this.elements = [];
- this.callbacks = {};
-
- } catch (e) {
- }
- }
- };
-
- /**
- * CSSHoverElement
- * --------------------------
- */
-
- // the event types associated with the interactive pseudos
- var CSSEvents = {
- onhover: { activator: 'onmouseenter', deactivator: 'onmouseleave' },
- onactive: { activator: 'onmousedown', deactivator: 'onmouseup' },
- onfocus: { activator: 'onfocus', deactivator: 'onblur' }
- };
-
- // CSSHoverElement constructor, called via CSSHover.patch
- function CSSHoverElement(node, type, className) {
-
- // the CSSHoverElement patches individual nodes by manually applying the events that should
- // have fired by the css pseudoclasses, eg mouseenter and mouseleave for :hover.
-
- this.node = node;
- this.type = type;
- var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g');
-
- // store event handlers for removal onunload
- this.activator = function(){ node.className += ' ' + className; };
- this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); };
-
- // add the events
- node.attachEvent(CSSEvents[type].activator, this.activator);
- node.attachEvent(CSSEvents[type].deactivator, this.deactivator);
- }
-
- CSSHoverElement.prototype = {
- // onbeforeunload, called via CSSHover.unload
- unload:function() {
-
- // remove events
- this.node.detachEvent(CSSEvents[this.type].activator, this.activator);
- this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator);
-
- // and set properties to null
- this.activator = null;
- this.deactivator = null;
- this.node = null;
- this.type = null;
- }
- };
-
- // add the unload to the onbeforeunload event
- window.attachEvent('onbeforeunload', function(){
- CSSHover.unload();
- });
-
- /**
- * Public hook
- * --------------------------
- */
-
- return function(node, type, className, property) {
- if(node) {
- // called via the css expression; patches individual nodes
- return CSSHover.patch(node, type, className, property);
- } else {
- // called ondomcontentready via the public:attach node
- CSSHover.init();
- }
- };
-
-})();
-</script>
\ No newline at end of file
+++ /dev/null
-<public:attach event="ondocumentready" onevent="CSSHover()" />
-<script>
-/**
- * Whatever:hover - V3.11
- * http://www.xs4all.nl/~peterned/
- *
- * Copyright (c) 2009 Peter Nederlof
- * Licensed under the LGPL license
- * http://creativecommons.org/licenses/LGPL/2.1
- */
-window.CSSHover=(function(){var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={index:0,list:['text-kashida','text-kashida-space','text-justify'],get:function(){return this.list[(this.index++)%this.list.length]}};var v=function(c){return c.replace(/-(.)/mg,function(a,b){return b.toUpperCase()})};var w={elements:[],callbacks:{},init:function(){if(!s.test(navigator.userAgent)&&!t.test(window.document.compatMode)){return}var a=window.document.styleSheets,l=a.length;for(var i=0;i<l;i++){this.parseStylesheet(a[i])}},parseStylesheet:function(a){if(a.imports){try{var b=a.imports;var l=b.length;for(var i=0;i<l;i++){this.parseStylesheet(a.imports[i])}}catch(securityException){}}try{var c=a.rules;var r=c.length;for(var j=0;j<r;j++){this.parseCSSRule(c[j],a)}}catch(someException){}},parseCSSRule:function(a,b){var c=a.selectorText;if(m.test(c)){var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,'on$1');var g=c.replace(p,'.$2'+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){var j=u.get();var k=v(j);b.addRule(e,j+':expression(CSSHover(this, "'+f+'", "'+h+'", "'+k+'"))');this.callbacks[i]=true}b.addRule(g,d)}},patch:function(a,b,c,d){try{var f=a.parentNode.currentStyle[d];a.style[d]=f}catch(e){a.runtimeStyle[d]=''}if(!a.csshover){a.csshover=[]}if(!a.csshover[c]){a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)}return b},unload:function(){try{var l=this.elements.length;for(var i=0;i<l;i++){this.elements[i].unload()}this.elements=[];this.callbacks={}}catch(e){}}};var x={onhover:{activator:'onmouseenter',deactivator:'onmouseleave'},onactive:{activator:'onmousedown',deactivator:'onmouseup'},onfocus:{activator:'onfocus',deactivator:'onblur'}};function CSSHoverElement(a,b,c){this.node=a;this.type=b;var d=new RegExp('(^|\\s)'+c+'(\\s|$)','g');this.activator=function(){a.className+=' '+c};this.deactivator=function(){a.className=a.className.replace(d,' ')};a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)}CSSHoverElement.prototype={unload:function(){this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null}};window.attachEvent('onbeforeunload',function(){w.unload()});return function(a,b,c,d){if(a){return w.patch(a,b,c,d)}else{w.init()}}})();
-</script>
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Temuri rajavi"
- ]
- },
- "vector-action-move": "Ахьӡ аҧсахра",
- "vector-view-create": "Арҿиара",
- "vector-view-edit": "Ариашамҭа",
- "vector-view-history": "Аҭоурых",
- "vector-view-view": "Аҧхьара",
- "vector-view-viewsource": "Ахәаҧшра"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Fadli Idris",
- "Si Gam Acèh"
- ]
- },
- "vector-action-addsection": "Tamah bhaih",
- "vector-action-delete": "Sampôh",
- "vector-action-move": "Pupinah",
- "vector-action-protect": "Peulindông",
- "vector-action-undelete": "Bateuë sampôh",
- "vector-action-unprotect": "Gantoe neulindông",
- "vector-view-create": "Peugöt",
- "vector-view-edit": "Andam",
- "vector-view-history": "Eu riwayat",
- "vector-view-view": "Beuët",
- "vector-view-viewsource": "Eu nè"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Adamsa123",
- "Amire80",
- "Celekan",
- "Siklawy"
- ]
- },
- "vector-action-addsection": "1офтхьабз",
- "vector-action-delete": "ЛъэкӀ",
- "vector-action-move": "Хьы",
- "vector-action-protect": "Иухъумэ",
- "vector-action-undelete": "Умылъэк1",
- "vector-action-unprotect": "Умыухъумэ",
- "vector-view-create": "Игъэхъу",
- "vector-view-edit": "Гъэтэрэзыжь",
- "vector-view-history": "Тарихъым eплъ",
- "vector-view-view": "Едж",
- "vector-view-viewsource": "Еплъ лъапсэм"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Csisc",
- "Malekbr"
- ]
- },
- "vector-action-addsection": "أضف موضوعا",
- "vector-action-delete": "احذف",
- "vector-action-move": "انقل",
- "vector-action-protect": "احم",
- "vector-action-undelete": "استرجع الحذف",
- "vector-action-unprotect": "غير الحماية",
- "vector-view-create": "أنشئ",
- "vector-view-edit": "Baddel",
- "vector-view-history": "Warri l'historique",
- "vector-view-view": "Aqra",
- "vector-view-viewsource": "اعرض المصدر"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Byeboer",
- "Naudefj"
- ]
- },
- "vector-action-addsection": "Nuwe onderwerp",
- "vector-action-delete": "Skrap",
- "vector-action-move": "Skuif",
- "vector-action-protect": "Beskerm",
- "vector-action-undelete": "Ontskrap",
- "vector-action-unprotect": "Wysig beskerming",
- "vector-view-create": "Skep",
- "vector-view-edit": "Wysig",
- "vector-view-history": "Wys geskiedenis",
- "vector-view-view": "Lees",
- "vector-view-viewsource": "Wys bronteks",
- "vector-more-actions": "Meer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bresta"
- ]
- },
- "vector.css": "/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Vector */",
- "vector.js": "/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Vector */",
- "vector-action-addsection": "Shto temë",
- "vector-action-delete": "Fshij",
- "vector-action-move": "Zhvendos",
- "vector-action-protect": "Mbroj",
- "vector-action-undelete": "Kthe fshimjen mbrapsht",
- "vector-action-unprotect": "Hiq mbrojtjen",
- "vector-view-create": "Krijo",
- "vector-view-edit": "Redakto",
- "vector-view-history": "Shih historinë",
- "vector-view-view": "Lexo",
- "vector-view-viewsource": "Shih kodin"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Codex Sinaiticus",
- "Elfalem",
- "Hinstein",
- "Teferra"
- ]
- },
- "vector-action-addsection": "ርዕስ ጨምር",
- "vector-action-delete": "አጥፋ",
- "vector-action-move": "ለማዛወር",
- "vector-action-protect": "ለመቆለፍ",
- "vector-action-undelete": "አታጥፋ",
- "vector-action-unprotect": "አለመቆለፍ",
- "vector-view-create": "አዲስ ፍጠር",
- "vector-view-edit": "አርም",
- "vector-view-history": "ታሪኩን አሳይ",
- "vector-view-view": "ለማንበብ",
- "vector-view-viewsource": "ጥሬ ኮድ ለመመልከት",
- "vector-more-actions": "ተጨማሪ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Juanpabl"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* Os estilos CSS colocaus aquí s'aplicarán ta totz os usuarios que faigan servir l'apariencia Vector */",
- "vector.js": "/* Qualsiquier codigo Javascript escrito aquí se cargará ta totz os usuarios que usen a piel Vector */",
- "vector-action-addsection": "Adhibir nueva sección",
- "vector-action-delete": "Borrar",
- "vector-action-move": "Tresladar",
- "vector-action-protect": "Protecher",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Cambiar protección",
- "vector-view-create": "Creyar",
- "vector-view-edit": "Editar",
- "vector-view-history": "Amostrar l'historial",
- "vector-view-view": "Leyer",
- "vector-view-viewsource": "Veyer o codigo fuent"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gott wisst"
- ]
- },
- "vector-action-addsection": "Besettan mearcunge",
- "vector-action-delete": "Forlēosan",
- "vector-action-move": "Wegan",
- "vector-action-protect": "Beorgan",
- "vector-action-undelete": "Scieppan tramet eft",
- "vector-action-unprotect": "Andwendan beorgunge",
- "vector-view-create": "Scieppan",
- "vector-view-edit": "Adihtan",
- "vector-view-history": "Stǣr",
- "vector-view-view": "Rǣdan",
- "vector-view-viewsource": "Sēon fruman"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Abanima",
- "Calak",
- "Meno25",
- "Mido",
- "OsamaK",
- "أحمد",
- "زكريا"
- ]
- },
- "skinname-vector": "فكتور",
- "vector.css": "/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة فكتور */",
- "vector.js": "/* أي جافاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة فكتور */",
- "vector-action-addsection": "أضف موضوعا",
- "vector-action-delete": "احذف",
- "vector-action-move": "انقل",
- "vector-action-protect": "احم",
- "vector-action-undelete": "ألغ الحذف",
- "vector-action-unprotect": "غير الحماية",
- "vector-view-create": "أنشئ",
- "vector-view-edit": "عدل",
- "vector-view-history": "اعرض التاريخ",
- "vector-view-view": "اقرأ",
- "vector-view-viewsource": "اعرض المصدر",
- "vector-more-actions": "مزيد"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "334a",
- "Basharh",
- "Michaelovic"
- ]
- },
- "vector-action-addsection": "ܐܘܣܦ ܡܠܘܐܐ",
- "vector-action-delete": "ܫܘܦ",
- "vector-action-move": "ܫܢܝ",
- "vector-action-protect": "ܛܪ",
- "vector-action-undelete": "ܠܐ ܫܘܦ",
- "vector-action-unprotect": "ܫܚܠܦ ܢܛܝܪܘܬܐ",
- "vector-view-create": "ܒܪܝ",
- "vector-view-edit": "ܫܚܠܦ",
- "vector-view-history": "ܚܙܝ ܬܫܥܝܬܐ",
- "vector-view-view": "ܩܪܝ",
- "vector-view-viewsource": "ܚܙܝ ܡܒܘܥܐ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Clerc",
- "Fiestoforo"
- ]
- },
- "vector-action-addsection": "Püñamtun dungu",
- "vector-action-delete": "Liftun",
- "vector-action-move": "Wiñamün",
- "vector-action-protect": "Nürüfkünun",
- "vector-action-undelete": "Wüñoñamümün",
- "vector-action-unprotect": "Kalekünun Nürüfkünun",
- "vector-view-create": "Dewman",
- "vector-view-edit": "Kümeelün",
- "vector-view-history": "Pengelün rupañmael",
- "vector-view-view": "Chillkatun",
- "vector-view-viewsource": "Kimam chew küpan chi wirin"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ooswesthoesbes"
- ]
- },
- "vector-view-edit": "Imeakie"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bachounda",
- "Oldstoneage"
- ]
- },
- "vector-action-addsection": "زيد موضوع",
- "vector-action-delete": "امحي",
- "vector-action-move": "حول",
- "vector-action-protect": "بروجي",
- "vector-action-undelete": "ردّ كيما كان",
- "vector-action-unprotect": "بدّل الـحماية",
- "vector-view-create": "أصنع",
- "vector-view-edit": "بدل",
- "vector-view-history": "روح للتاريخي",
- "vector-view-view": "أقرى",
- "vector-view-viewsource": "شوف المصدر"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Enzoreg",
- "Zanatos"
- ]
- },
- "vector-action-addsection": "Zid topic",
- "vector-action-delete": "Suprimi",
- "vector-action-move": "Neqel",
- "vector-action-protect": "Ḫami",
- "vector-action-undelete": "rja lhadf",
- "vector-action-unprotect": "Ḫiyed l-ḫimaya",
- "vector-view-create": "Ĥṫareĝ",
- "vector-view-edit": "Ĝedel",
- "vector-view-history": "Ṫariĥ l-fiċyé",
- "vector-view-view": "Qra",
- "vector-view-viewsource": "Ċof l-masdar"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ghaly",
- "Meno25",
- "Ramsis II"
- ]
- },
- "vector.css": "/* CSS اللى هنا حتأثر على اليوزرز اللى بيستخدموا واجهة فكتور */",
- "vector.js": "/* اى جافاسكريبت هنا حتتحمل لكل يوزر بيستخدم واجهة فكتور */",
- "vector-action-addsection": "ضيف موضوع",
- "vector-action-delete": "مسح",
- "vector-action-move": "نقل",
- "vector-action-protect": "حمايه",
- "vector-action-undelete": "الغى المسح",
- "vector-action-unprotect": "غير الحمايه",
- "vector-view-create": "اعمل",
- "vector-view-edit": "تعديل",
- "vector-view-history": "استعراض التاريخ",
- "vector-view-view": "قرايه",
- "vector-view-viewsource": "استعراض المصدر"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bishnu Saikia",
- "Chaipau",
- "Gitartha.bordoloi"
- ]
- },
- "vector-action-addsection": "বিষয় যোগ",
- "vector-action-delete": "বিলোপ কৰক",
- "vector-action-move": "স্থানান্তৰ কৰক",
- "vector-action-protect": "সুৰক্ষিত কৰক",
- "vector-action-undelete": "পুনৰুদ্ধাৰ কৰক",
- "vector-action-unprotect": "সুৰক্ষা সলনি কৰক",
- "vector-view-create": "সৃষ্টি কৰক",
- "vector-view-edit": "সম্পাদনা",
- "vector-view-history": "ইতিহাস চাওক",
- "vector-view-view": "পঢ়ক",
- "vector-view-viewsource": "উৎস চাওক",
- "vector-more-actions": "অধিক"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Icemandeaf"
- ]
- },
- "skinname-vector": "M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545",
- "vector-skin-desc": "M535x520S19a00507x481S19a08465x481S22f14465x506S22f04509x506 M515x598S18d20494x403S17620499x432S11920493x452S17620499x482S14720500x502S17620499x528S17620499x548S14020485x568 M521x508S1f748479x493S1f740501x493 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M534x547S2ff00482x483S10001513x517S2e305488x487 S38700463x496 M535x536S20300516x521S20308470x521S26500516x502S26510470x502S14c30511x465S14c38465x465 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M520x540S37606481x460S15a40508x513S28801499x491S20500488x492",
- "vector.css": "/* M509x529S16d20492x471S20320493x495S20320493x514 M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M534x518S2ff00482x483S15a10522x486S2b700514x458 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M521x508S1f748479x493S1f740501x493 M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545 M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509 */",
- "vector.js": "/* M520x523S1f540480x477S2a204497x495 M519x527S19220498x489S2a20c482x473S20320498x512 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M534x518S2ff00482x483S15a10522x486S2b700514x458 M524x539S14402493x485S1440a486x461S22b00508x509S22b10476x483 M536x521S2ff00482x483S10011515x491S28108515x461 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M509x575S10e20494x425S14a20493x459S16d20492x478S1fb20494x502S17620493x525S11a20493x545 M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509 */",
- "vector-action-addsection": "M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M522x522S15a37478x479S10041485x492S20600500x492",
- "vector-action-delete": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
- "vector-action-move": "M552x509S18520488x494S18528449x494S26626522x492",
- "vector-action-protect": "M512x519S15a19488x482S15a11489x482S20600488x508",
- "vector-action-undelete": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
- "vector-action-unprotect": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M512x519S15a19488x482S15a11489x482S20600488x508",
- "vector-view-create": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501",
- "vector-view-edit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
- "vector-view-history": "M525x524S2ff00482x483S10e00507x494S26500511x474 M514x523S11541487x478S22f04489x509",
- "vector-view-view": "M513x540S15a06486x459S10e50494x474S22b04493x510",
- "vector-view-viewsource": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
- "vector-more-actions": "M526x508S18510501x493S18518475x493"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Esbardu",
- "Xuacu"
- ]
- },
- "vector-skin-desc": "Versión moderna de MonoBook, con un aspeutu frescu y munchos ameyoramientos d'usabilidá",
- "vector.css": "/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */",
- "vector.js": "/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */",
- "vector-action-addsection": "Amestar seición",
- "vector-action-delete": "Desaniciar",
- "vector-action-move": "Treslladar",
- "vector-action-protect": "Protexer",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Camudar la proteición",
- "vector-view-create": "Crear",
- "vector-view-edit": "Editar",
- "vector-view-history": "Ver historial",
- "vector-view-view": "Lleer",
- "vector-view-viewsource": "Ver fonte",
- "vector-more-actions": "Más"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Умар"
- ]
- },
- "vector-view-edit": "Хисизабизе"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Wikimistusik"
- ]
- },
- "vector-action-addsection": "Loplekura va detce",
- "vector-action-delete": "Sulara",
- "vector-action-move": "Arrundara",
- "vector-action-protect": "Nendara",
- "vector-view-create": "Redura",
- "vector-view-edit": "Betara",
- "vector-view-history": "Wira va izvot",
- "vector-view-view": "Belira",
- "vector-view-viewsource": "klitawira"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AZISS",
- "Arystanbek",
- "Gulmammad",
- "Sortilegus",
- "Vago",
- "Vugar 1981",
- "Wertuose"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* Burada yerləşən CSS Vector istifadəçilərinə tətbiq olunur */",
- "vector.js": "/* Burada Vector skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */",
- "vector-action-addsection": "Mövzu əlavə et",
- "vector-action-delete": "Sil",
- "vector-action-move": "Adını dəyişdir",
- "vector-action-protect": "Mühafizə et",
- "vector-action-undelete": "Bərpa et",
- "vector-action-unprotect": "Mühafizəni kənarlaşdır",
- "vector-view-create": "Yarat",
- "vector-view-edit": "Redaktə",
- "vector-view-history": "Tarixçəyə bax",
- "vector-view-view": "Oxu",
- "vector-view-viewsource": "Mənbəyə bax",
- "vector-more-actions": "Daha"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "E THP",
- "Ebrahimi-amir",
- "Mousa"
- ]
- },
- "vector-action-addsection": "قوْنو آرتیر",
- "vector-action-delete": "سیل",
- "vector-action-move": "داشی",
- "vector-action-protect": "قوْرو",
- "vector-action-undelete": "سیلمگی قایتار",
- "vector-action-unprotect": "قوْروماغی دَییشدیر",
- "vector-view-create": "یارات",
- "vector-view-edit": "دَییشدیر",
- "vector-view-history": "گئچمیشه باخ",
- "vector-view-view": "اوْخو",
- "vector-view-viewsource": "قایناغا باخ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Assele",
- "Haqmar"
- ]
- },
- "skinname-vector": "Векторлы",
- "vector-action-addsection": "Тема өҫтәргә",
- "vector-action-delete": "Юйырға",
- "vector-action-move": "Исемен үҙгәртергә",
- "vector-action-protect": "Һаҡларға",
- "vector-action-undelete": "Тергеҙергә",
- "vector-action-unprotect": "Һаҡлауҙы үҙгәртергә",
- "vector-view-create": "Яһау",
- "vector-view-edit": "Үҙгәртергә",
- "vector-view-history": "Тарихты ҡарау",
- "vector-view-view": "Уҡыу",
- "vector-view-viewsource": "Сығанаҡты ҡарарға"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Adi Mayndra",
- "BASAbali"
- ]
- },
- "vector-action-addsection": "imbuhin indik wacana",
- "vector-action-delete": "ngapus",
- "vector-action-move": "kisidang",
- "vector-action-protect": "nyaga",
- "vector-view-create": "ngawe",
- "vector-view-edit": "mecikang",
- "vector-view-history": "indik sane lintang",
- "vector-view-view": "Waca",
- "vector-view-viewsource": "cingak witnyane"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bua333",
- "Mucalexx"
- ]
- },
- "vector-action-addsection": "An Obschnitt dazua doa",
- "vector-action-delete": "Leschn",
- "vector-action-move": "Vaschiabm",
- "vector-action-protect": "Schitzn",
- "vector-action-undelete": "Wiederherstön",
- "vector-action-unprotect": "freigeem",
- "vector-view-create": "Aufbaun",
- "vector-view-edit": "Werkln",
- "vector-view-history": "Gschicht oschaugn",
- "vector-view-view": "Lesn",
- "vector-view-viewsource": "Quejtext ozoagn"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Daniel Harahap",
- "WBT003Bugari",
- "WBT006Hendra",
- "WBT009Anju"
- ]
- },
- "vector-action-addsection": "Bagian na imbaru",
- "vector-action-delete": "Sesa",
- "vector-action-move": "Pahusor",
- "vector-action-protect": "Ramoti",
- "vector-action-undelete": "unang sesa",
- "vector-action-unprotect": "Uba parlindungan",
- "vector-view-create": "Tompa",
- "vector-view-edit": "Paubah",
- "vector-view-history": "Patudu andorang na",
- "vector-view-view": "Jaha",
- "vector-view-viewsource": "Ida haroanna"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mostafadaneshvar",
- "RigiMahnoor"
- ]
- },
- "vector-action-addsection": "هور کتن عنوان",
- "vector-action-delete": "زورگ",
- "vector-action-move": "جاه په جاه",
- "vector-action-protect": "حفاظت",
- "vector-action-undelete": "ترینگ",
- "vector-action-unprotect": "پروتکشنء ٹگل بدئ",
- "vector-view-create": "شرکتن",
- "vector-view-edit": "اصلاح",
- "vector-view-history": "چارتن تاریح",
- "vector-view-view": "وانتن",
- "vector-view-viewsource": "پیشدارگ بن جاه",
- "vector-more-actions": "گیشتر"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Filipinayzd",
- "Geopoet"
- ]
- },
- "vector-action-addsection": "Idagdag an topic",
- "vector-action-delete": "puráon",
- "vector-action-move": "Ibalyó",
- "vector-action-protect": "Protektaran",
- "vector-action-undelete": "Bawion sa pagkapara",
- "vector-action-unprotect": "Ribayan an proteksyon",
- "vector-view-create": "Magmukna",
- "vector-view-edit": "Liwatón",
- "vector-view-history": "Tanawon sa historiya",
- "vector-view-view": "Basáha",
- "vector-view-viewsource": "Hilingón an ginikánan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "EugeneZelenko",
- "Red Winged Duck",
- "Wizardist"
- ]
- },
- "skinname-vector": "Вэктар",
- "vector-action-addsection": "Дадаць тэму",
- "vector-action-delete": "Выдаліць",
- "vector-action-move": "Перанесьці",
- "vector-action-protect": "Абараніць",
- "vector-action-undelete": "Аднавіць",
- "vector-action-unprotect": "Зьмяніць абарону",
- "vector-view-create": "Стварыць",
- "vector-view-edit": "Рэдагаваць",
- "vector-view-history": "Паказаць гісторыю",
- "vector-view-view": "Чытаць",
- "vector-view-viewsource": "Паказаць крыніцу",
- "vector-more-actions": "Болей"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mikalai Udodau",
- "Yury Tarasievich",
- "Дзяніс Тутэйшы",
- "Хомелка"
- ]
- },
- "vector-skin-desc": "Сучасная версія вокладкі Манабук, з абноўленым відам і шматлікімі зручнымі паляпшэннямі",
- "vector-action-addsection": "Дадаць тэму",
- "vector-action-delete": "Сцерці",
- "vector-action-move": "Перанесці",
- "vector-action-protect": "Ахова",
- "vector-action-undelete": "Аднавіць",
- "vector-action-unprotect": "Змяніць ахову",
- "vector-view-create": "Стварыць",
- "vector-view-edit": "Правіць",
- "vector-view-history": "Паказаць гісторыю",
- "vector-view-view": "Чытаць",
- "vector-view-viewsource": "Паказаць зыходны тэкст",
- "vector-more-actions": "Яшчэ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Naval Scene"
- ]
- },
- "vector-action-delete": "Ngapus",
- "vector-action-move": "Pindahin",
- "vector-action-undelete": "Balikin nyang keapus",
- "vector-view-create": "Bikin"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Borislav",
- "DCLXVI",
- "Spiritia"
- ]
- },
- "vector-action-addsection": "Добавяне на тема",
- "vector-action-delete": "Изтриване",
- "vector-action-move": "Преместване",
- "vector-action-protect": "Защита",
- "vector-action-undelete": "Възстановяване",
- "vector-action-unprotect": "Промяна на защитата",
- "vector-view-create": "Създаване",
- "vector-view-edit": "Редактиране",
- "vector-view-history": "История",
- "vector-view-view": "Преглед",
- "vector-view-viewsource": "Преглед на кода"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ganesh",
- "Nepaboy"
- ]
- },
- "vector-action-addsection": "विषय जोड़ीं",
- "vector-action-delete": "मिटाईं",
- "vector-action-move": "स्थांतरण",
- "vector-action-protect": "संरक्षित करीं",
- "vector-action-undelete": "मत मिटाईं",
- "vector-action-unprotect": "सुरक्षा बदलीं",
- "vector-view-create": "बनाईं",
- "vector-view-edit": "सम्पादन",
- "vector-view-history": "इतिहास देखीं",
- "vector-view-view": "पढ़ीं",
- "vector-view-viewsource": "स्त्रोत देखीं"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sotiale"
- ]
- },
- "vector-action-move": "Muv",
- "vector-view-history": "Lukluk histri",
- "vector-view-view": "Rid"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ezagren",
- "J Subhi"
- ]
- },
- "vector-action-addsection": "Tambahi tupik",
- "vector-action-delete": "Hapus",
- "vector-action-move": "Pindahakan",
- "vector-action-protect": "Lindungi",
- "vector-action-undelete": "Pawalangan pahapusan",
- "vector-action-unprotect": "Palindungan",
- "vector-view-create": "Ulah",
- "vector-view-edit": "Babak",
- "vector-view-history": "Tiringi halam",
- "vector-view-view": "Baca",
- "vector-view-viewsource": "Tiringi asal mula"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Amadouyoro.thiam"
- ]
- },
- "vector-view-view": "Kalan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Aftab1995",
- "Bellayet",
- "Leemon2010",
- "Nasir8891",
- "Tauhid16",
- "Wikitanvir"
- ]
- },
- "skinname-vector": "ভেক্টর",
- "vector-action-addsection": "বিষয় যোগ",
- "vector-action-delete": "অপসারণ",
- "vector-action-move": "স্থানান্তর",
- "vector-action-protect": "সুরক্ষা",
- "vector-action-undelete": "পুনরুদ্ধার",
- "vector-action-unprotect": "সুরক্ষা পরিবর্তন",
- "vector-view-create": "তৈরি",
- "vector-view-edit": "সম্পাদনা",
- "vector-view-history": "ইতিহাস",
- "vector-view-view": "পড়ুন",
- "vector-view-viewsource": "উৎস দেখুন",
- "vector-more-actions": "আরও"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Freeyak",
- "Phurbutsering"
- ]
- },
- "vector-action-addsection": "བརྗོད་གཞི་ཁ་སྣོན།",
- "vector-action-delete": "སུབས།",
- "vector-action-move": "སྤོར་བ།",
- "vector-action-protect": "འགོག་སྲུང།",
- "vector-action-undelete": "མི་བསུབས་",
- "vector-action-unprotect": "སྲུང་སྐྱོབ་གློད་པ།",
- "vector-view-create": "གསར་བཟོ།",
- "vector-view-edit": "རྩོམ་སྒྲིག",
- "vector-view-history": "ལོ་རྒྱུས་ལ་ལྟ་བ།",
- "vector-view-view": "ཀློག་པ།",
- "vector-view-viewsource": "ཁུངས་ལ་ལྟ་བ།"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Usingha"
- ]
- },
- "vector-action-addsection": "বিষয় তিলকর",
- "vector-action-delete": "পুসে বেলা",
- "vector-action-move": "থেইকর",
- "vector-action-protect": "লুকর",
- "vector-action-undelete": "নাপুসি",
- "vector-action-unprotect": "লুকরানিহান সিলকর",
- "vector-view-create": "হঙকরিক",
- "vector-view-edit": "পতানি",
- "vector-view-history": "ইতিহাস চেইক",
- "vector-view-view": "পাকরিক",
- "vector-view-viewsource": "সোর্স চেইক"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Fulup",
- "Y-M D"
- ]
- },
- "skinname-vector": "Vektor",
- "vector.css": "/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Vektor */",
- "vector.js": "/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */",
- "vector-action-addsection": "Rannbennad nevez",
- "vector-action-delete": "Diverkañ",
- "vector-action-move": "Adenvel",
- "vector-action-protect": "Gwareziñ",
- "vector-action-undelete": "Diziverkañ",
- "vector-action-unprotect": "Cheñch gwarez",
- "vector-view-create": "Krouiñ",
- "vector-view-edit": "Kemmañ",
- "vector-view-history": "Gwelet an istor",
- "vector-view-view": "Lenn",
- "vector-view-viewsource": "Sellet ouzh tarzh an destenn",
- "vector-more-actions": "Muioc'h"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Imdadb"
- ]
- },
- "vector-action-addsection": "Púskun sarhál",
- "vector-action-delete": "Mesa",
- "vector-action-move": "Surif",
- "vector-action-protect": "Rakk",
- "vector-view-create": "Biná",
- "vector-view-edit": "Radbadal",
- "vector-view-history": "Lekav e ur",
- "vector-view-view": "Xuán",
- "vector-view-viewsource": "Bumpad e ur"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "CERminator",
- "DzWiki",
- "KWiki",
- "Edinwiki"
- ]
- },
- "vector-action-addsection": "Dodaj temu",
- "vector-action-delete": "Izbriši",
- "vector-action-move": "Preusmjeri",
- "vector-action-protect": "Zaštiti",
- "vector-action-undelete": "Vrati obrisano",
- "vector-action-unprotect": "Promijeni zaštitu",
- "vector-view-create": "Napravi",
- "vector-view-edit": "Uredi",
- "vector-view-history": "Pregled historije",
- "vector-view-view": "Čitanje",
- "vector-view-viewsource": "Pogledaj izvor",
- "vector-more-actions": "Više"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Filipinayzd"
- ]
- },
- "vector-action-delete": "Puraon",
- "vector-action-move": "Ilipat",
- "vector-action-protect": "Protektaran",
- "vector-action-undelete": "Ibalik",
- "vector-action-unprotect": "Ribayan a proteksyon",
- "vector-view-create": "Gumibo",
- "vector-view-edit": "Balyowan",
- "vector-view-history": "Baydon a kasaysayan",
- "vector-view-view": "Basahon",
- "vector-view-viewsource": "Baydon a ginikanan",
- "vector-more-actions": "Dakul pa"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kurniasan"
- ]
- },
- "vector-action-move": "Paléccé'",
- "vector-view-create": "Ebbu",
- "vector-view-edit": "Padéccéng",
- "vector-view-view": "Baca",
- "vector-view-viewsource": "Ita sumber"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bjargal",
- "Elvonudinium"
- ]
- },
- "vector-action-addsection": "Һэдэб нэмэхэ",
- "vector-action-delete": "Усадхаха",
- "vector-action-move": "Зөөхэ",
- "vector-view-create": "Үүдхэхэ",
- "vector-view-edit": "Заһабарилха",
- "vector-view-history": "Түүхые хараха",
- "vector-view-view": "Уншаха",
- "vector-view-viewsource": "эшэ үндэһэндэнь хандаха"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Aleator",
- "Anskar",
- "Calak",
- "Paucabot",
- "Ssola",
- "Vriullop",
- "Toniher"
- ]
- },
- "vector-skin-desc": "Versió moderna del MonoBook amb un nou aspesctes i moltes millores en la usabilitat",
- "vector-action-addsection": "Nova secció",
- "vector-action-delete": "Esborra",
- "vector-action-move": "Reanomena",
- "vector-action-protect": "Protegeix",
- "vector-action-undelete": "Restaura",
- "vector-action-unprotect": "Desprotegeix",
- "vector-view-create": "Crea",
- "vector-view-edit": "Modifica",
- "vector-view-history": "Mostra l'historial",
- "vector-view-view": "Mostra",
- "vector-view-viewsource": "Mostra el codi",
- "vector-more-actions": "Més"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Yejianfei"
- ]
- },
- "vector-action-addsection": "加話題",
- "vector-action-delete": "刪掉咯",
- "vector-action-move": "移動",
- "vector-action-protect": "保護",
- "vector-action-undelete": "取消刪除",
- "vector-action-unprotect": "改變保護",
- "vector-view-create": "創建",
- "vector-view-edit": "修改",
- "vector-view-history": "看歷史",
- "vector-view-view": "讀",
- "vector-view-viewsource": "看源代碼"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sasan700",
- "Умар"
- ]
- },
- "skinname-vector": "Векторан",
- "vector-action-addsection": "ТӀетоха хьедар",
- "vector-action-delete": "ДӀаяккха",
- "vector-action-move": "ЦӀе хийца",
- "vector-action-protect": "Гlаролла дé",
- "vector-action-undelete": "МеттахӀоттае",
- "vector-action-unprotect": "ГӀароллех къаста",
- "vector-view-create": "Кхоллар",
- "vector-view-edit": "Нисъе",
- "vector-view-history": "АгӀона хийцамаш",
- "vector-view-view": "Éшар",
- "vector-view-viewsource": "Билглонашка хьажа",
- "vector-more-actions": "Кхин"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Jordz"
- ]
- },
- "vector-action-addsection": "Pagdugang og topiko",
- "vector-action-delete": "Papasa",
- "vector-action-move": "Ibalhin",
- "vector-action-protect": "Protektahi",
- "vector-action-undelete": "Ayaw papasa",
- "vector-action-unprotect": "Ayaw protektahi",
- "vector-view-create": "Himoa",
- "vector-view-edit": "Usba",
- "vector-view-history": "Tan-awa ang kaagi",
- "vector-view-view": "Basaha",
- "vector-view-viewsource": "Tan-awa ang ginikanan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Asoxor",
- "Calak"
- ]
- },
- "skinname-vector": "ڤێکتۆر",
- "vector-action-addsection": "بابەت دابنێ",
- "vector-action-delete": "بیسڕەوە",
- "vector-action-move": "بیگوازەوە",
- "vector-action-protect": "بیپارێزە",
- "vector-action-undelete": "سڕینەوە بگەڕێنەوە",
- "vector-action-unprotect": "پاراستن بگۆڕە",
- "vector-view-create": "دروستکردن",
- "vector-view-edit": "دەستکاریی بکە",
- "vector-view-history": "مێژووەکەی ببینە",
- "vector-view-view": "بیخوێنەوە",
- "vector-view-viewsource": "سەرچاوەکەی ببینە",
- "vector-more-actions": "زیاتر"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Paulu"
- ]
- },
- "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"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Capisano",
- "Oxyzen"
- ]
- },
- "vector-action-addsection": "Magdugang sang topiko",
- "vector-action-delete": "Panason",
- "vector-action-move": "Isdogon",
- "vector-action-protect": "Protektahan",
- "vector-action-undelete": "Indi pag panason",
- "vector-action-unprotect": "Islan ang proteksyon",
- "vector-view-create": "Ubrahon",
- "vector-view-edit": "Bag-uhon",
- "vector-view-history": "Ipakita ang kasaysayan",
- "vector-view-view": "Basahon",
- "vector-view-viewsource": "Lantawon ang ginhalinan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Don Alessandro"
- ]
- },
- "vector-action-addsection": "Мевзу къош",
- "vector-action-delete": "Ёкъ эт",
- "vector-action-move": "Адыны денъиштир",
- "vector-action-protect": "Къорчала",
- "vector-action-undelete": "Янъыдан ярат",
- "vector-action-unprotect": "Къорчалавны денъиштир",
- "vector-view-create": "Ярат",
- "vector-view-edit": "Денъиштир",
- "vector-view-history": "Кечмишини косьтер",
- "vector-view-view": "Окъу",
- "vector-view-viewsource": "Менба кодуны косьтер"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Don Alessandro"
- ]
- },
- "vector-action-addsection": "Mevzu qoş",
- "vector-action-delete": "Yoq et",
- "vector-action-move": "Adını deñiştir",
- "vector-action-protect": "Qorçala",
- "vector-action-undelete": "Yañıdan yarat",
- "vector-action-unprotect": "Qorçalavnı deñiştir",
- "vector-view-create": "Yarat",
- "vector-view-edit": "Deñiştir",
- "vector-view-history": "Keçmişini köster",
- "vector-view-view": "Oqu",
- "vector-view-viewsource": "Menba kodunı köster"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mormegil"
- ]
- },
- "skinname-vector": "Vektor",
- "vector-skin-desc": "Moderní verze MonoBooku s novějším vzhledem a vylepšenou použitelností",
- "vector.css": "/* Zde uvedené CSS bude ovlivňovat pouze styl „Vektor“ */",
- "vector.js": "/* JavaScript pro uživatele používající vzhled „Vektor“ */",
- "vector-action-addsection": "Přidat téma",
- "vector-action-delete": "Smazat",
- "vector-action-move": "Přesunout",
- "vector-action-protect": "Zamknout",
- "vector-action-undelete": "Obnovit",
- "vector-action-unprotect": "Změnit zámek",
- "vector-view-create": "Založit",
- "vector-view-edit": "Editovat",
- "vector-view-history": "Zobrazit historii",
- "vector-view-view": "Číst",
- "vector-view-viewsource": "Zobrazit zdrojový kód",
- "vector-more-actions": "Další"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kaszeba",
- "Kuvaly"
- ]
- },
- "vector-action-addsection": "Dodôj témã",
- "vector-action-delete": "Rëmôj",
- "vector-action-move": "Przeniesë",
- "vector-action-protect": "Zazychrëjë",
- "vector-action-undelete": "Doprowôdzë nazôd",
- "vector-action-unprotect": "Òdzychrëjë",
- "vector-view-create": "Ùsôdzë",
- "vector-view-edit": "Edicëjô",
- "vector-view-history": "Historëjô lopka",
- "vector-view-view": "Czëtôj",
- "vector-view-viewsource": "Zdrojowi tekst"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "ОйЛ"
- ]
- },
- "vector-action-addsection": "новꙑ бєсѣдꙑ чѧсти сътворѥниѥ",
- "vector-action-delete": "поничьжєниѥ",
- "vector-action-move": "прѣимєнованиѥ",
- "vector-action-protect": "ꙁабранѥниѥ",
- "vector-action-unprotect": "иꙁмѣни ꙁабранѥниꙗ обраꙁъ",
- "vector-view-create": "сътворѥниѥ",
- "vector-view-edit": "исправи",
- "vector-view-history": "їсторїꙗ",
- "vector-view-view": "чьтѥниѥ",
- "vector-view-viewsource": "страницѧ источьнъ обраꙁъ",
- "vector-more-actions": "вѧщє"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Chavash",
- "FLAGELLVM DEI"
- ]
- },
- "vector-action-addsection": "Тема хуш",
- "vector-action-delete": "Кăларса пăрах",
- "vector-action-move": "Ятне улăштар",
- "vector-action-protect": "Хӳтĕле",
- "vector-view-create": "Çĕннине ту",
- "vector-view-edit": "Тӳрлет",
- "vector-view-history": "Кун-çул",
- "vector-view-view": "Вула",
- "vector-view-viewsource": "пуçламăш текста пăх"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lloffiwr"
- ]
- },
- "vector-action-addsection": "Ychwanegu adran",
- "vector-action-delete": "Dileu",
- "vector-action-move": "Symud",
- "vector-action-protect": "Diogelu",
- "vector-action-undelete": "Adfer",
- "vector-action-unprotect": "Newid y diogelwch",
- "vector-view-create": "Dechrau",
- "vector-view-edit": "Golygu",
- "vector-view-history": "Gweld yr hanes",
- "vector-view-view": "Darllen",
- "vector-view-viewsource": "Dangos côd y dudalen",
- "vector-more-actions": "Rhagor"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Byrial",
- "Christian List",
- "Peter Alberti"
- ]
- },
- "vector-skin-desc": "Moderne version af MonoBook med frisk udseende og mange forbedringer af brugervenligheden",
- "vector-action-addsection": "Nyt emne",
- "vector-action-delete": "Slet",
- "vector-action-move": "Flyt",
- "vector-action-protect": "Beskyt",
- "vector-action-undelete": "Gendan",
- "vector-action-unprotect": "Ændr beskyttelse",
- "vector-view-create": "Opret",
- "vector-view-edit": "Redigér",
- "vector-view-history": "Se historik",
- "vector-view-view": "Læs",
- "vector-view-viewsource": "Se kilden",
- "vector-more-actions": "Mere"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kghbln",
- "Metalhead64",
- "The Evil IP address",
- "Umherirrender"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Moderne Version von Monobook mit frischem Aussehen und vielen Verbesserungen an der Benutzerfreundlichkeit",
- "vector.css": "/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */",
- "vector.js": "/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */",
- "vector-action-addsection": "Abschnitt hinzufügen",
- "vector-action-delete": "Löschen",
- "vector-action-move": "Verschieben",
- "vector-action-protect": "Schützen",
- "vector-action-undelete": "Wiederherstellen",
- "vector-action-unprotect": "Seitenschutz ändern",
- "vector-view-create": "Erstellen",
- "vector-view-edit": "Bearbeiten",
- "vector-view-history": "Versionsgeschichte",
- "vector-view-view": "Lesen",
- "vector-view-viewsource": "Quelltext anzeigen",
- "vector-more-actions": "Mehr"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Asmen",
- "Calak",
- "Erdemaslancan",
- "Mirzali"
- ]
- },
- "skinname-vector": "Vektor",
- "vector-action-addsection": "Mewzu vıraze",
- "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-view-create": "Vıraze",
- "vector-view-edit": "Bıvurne",
- "vector-view-history": "Tarixê pele bıvêne",
- "vector-view-view": "Bıwane",
- "vector-view-viewsource": "Çımey bıvêne",
- "vector-more-actions": "Zêde"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Michawiki"
- ]
- },
- "vector-action-addsection": "Temu pśidaś",
- "vector-action-delete": "Wulašowaś",
- "vector-action-move": "Pśesunuś",
- "vector-action-protect": "Šćitaś",
- "vector-action-undelete": "Wótnowiś",
- "vector-action-unprotect": "Šćit změniś",
- "vector-view-create": "Napóraś",
- "vector-view-edit": "Wobźěłaś",
- "vector-view-history": "Wersije a awtory",
- "vector-view-view": "Cytaś",
- "vector-view-viewsource": "Žrědło se woglědaś"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "FRANCIS5091",
- "FRANELYA"
- ]
- },
- "vector-action-addsection": "Ruhangai piboboroson",
- "vector-action-delete": "Pugaso",
- "vector-action-move": "Poundoliho",
- "vector-action-protect": "Tingoligai",
- "vector-action-undelete": "Kada pugaso",
- "vector-action-unprotect": "Alanai tingolig",
- "vector-view-create": "Pomonsoi",
- "vector-view-edit": "Idito",
- "vector-view-history": "Intaai susuyan",
- "vector-view-view": "Basao",
- "vector-view-viewsource": "Intaai wowonod"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ushau97"
- ]
- },
- "vector-action-addsection": "ޚިޔާލެއް އިތުރުކުރައްވާ",
- "vector-action-delete": "ފޮހެލައްވާ",
- "vector-action-move": "ތަން ބަދަލުކުރައްވާ",
- "vector-action-protect": "ދިފާޢުކުރައްވާ",
- "vector-action-unprotect": "ދިފާޢުކުރުން ބަދަލުކުރައްވާ",
- "vector-view-create": "ފަށްޓަވާ",
- "vector-view-edit": "އުނިއިތުރު ގެންނަވާ",
- "vector-view-history": "ޞަފްޙާގެ ތާރީޚް",
- "vector-view-view": "ކިޔުއްވާ",
- "vector-view-viewsource": "މަސްދަރު ބައްލަވާ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Natsubee"
- ]
- },
- "vector-action-delete": "Tutui",
- "vector-action-move": "Ɖɔli eƒe nɔƒe",
- "vector-view-create": "Dze egɔme",
- "vector-view-edit": "Trɔ asi le eŋu",
- "vector-view-history": "Kpɔ xoxoawo",
- "vector-view-view": "Xlẽ",
- "vector-view-viewsource": "Kpɔ alesi woŋlɔe"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lévi"
- ]
- },
- "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-view-create": "Invèinta",
- "vector-view-edit": "Mudéfica",
- "vector-view-history": "Guêrda la stôria",
- "vector-view-view": "Lēş",
- "vector-view-viewsource": "Guêrda la surzéia",
- "vector-more-actions": "Êter"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Calak",
- "Crazymadlover",
- "Evropi",
- "Omnipaedista",
- "Protnet",
- "ZaDiak"
- ]
- },
- "vector.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει χρήστες του Vector skin */",
- "vector.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για χρήστες που χρησιμοποιούν το Vector skin */",
- "vector-action-addsection": "Προσθήκη θέματος",
- "vector-action-delete": "Διαγραφή",
- "vector-action-move": "Μετακίνηση",
- "vector-action-protect": "Προστασία",
- "vector-action-undelete": "Επαναφορά",
- "vector-action-unprotect": "Αλλαγή προστασίας",
- "vector-view-create": "Δημιουργία",
- "vector-view-edit": "Επεξεργασία",
- "vector-view-history": "Προβολή ιστορικού",
- "vector-view-view": "Ανάγνωση",
- "vector-view-viewsource": "Προβολή κώδικα",
- "vector-more-actions": "Περισσότερα"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": []
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Modern version of MonoBook with fresh look and many usability improvements",
- "vector.css": "/* CSS placed here will affect users of the Vector skin */",
- "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */",
- "vector-action-addsection": "Add topic",
- "vector-action-delete": "Delete",
- "vector-action-move": "Move",
- "vector-action-protect": "Protect",
- "vector-action-undelete": "Undelete",
- "vector-action-unprotect": "Change protection",
- "vector-view-create": "Create",
- "vector-view-edit": "Edit",
- "vector-view-history": "View history",
- "vector-view-view": "Read",
- "vector-view-viewsource": "View source",
- "vector-more-actions": "More"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "KuboF",
- "Objectivesea",
- "Yekrats"
- ]
- },
- "skinname-vector": "Vektoro",
- "vector.css": "/* La jena CSS influos la paĝaspekton por uzantoj de la Vektora temo. */",
- "vector.js": "/* La jena Ĝavaskripto ŝargiĝos por uzantoj de la Vektora temo. */",
- "vector-action-addsection": "Aldoni temon",
- "vector-action-delete": "Forigi",
- "vector-action-move": "Alinomigi",
- "vector-action-protect": "Protekti",
- "vector-action-undelete": "Malforigi",
- "vector-action-unprotect": "Ŝanĝi protektadon",
- "vector-view-create": "Krei",
- "vector-view-edit": "Redakti",
- "vector-view-history": "Vidi historion",
- "vector-view-view": "Legi",
- "vector-view-viewsource": "Vidi fonton",
- "vector-more-actions": "Pli"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "XanaG"
- ]
- },
- "vector-view-edit": "Editar",
- "vector-view-history": "Ver historial",
- "vector-view-view": "Leer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Armando-Martin",
- "Crazymadlover",
- "Dalton2",
- "Fitoschido",
- "Locos epraix",
- "Manuelt15",
- "MarcoAurelio",
- "Miguel2706",
- "Platonides",
- "Vivaelcelta"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Versión moderna de MonoBook, con un aspecto actualizado y muchas mejoras de usabilidad",
- "vector.css": "/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia \"Vector\" */",
- "vector.js": "/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */",
- "vector-action-addsection": "Sección nueva",
- "vector-action-delete": "Borrar",
- "vector-action-move": "Trasladar",
- "vector-action-protect": "Proteger",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Cambiar protección",
- "vector-view-create": "Crear",
- "vector-view-edit": "Editar",
- "vector-view-history": "Ver historial",
- "vector-view-view": "Leer",
- "vector-view-viewsource": "Ver código",
- "vector-more-actions": "Más"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "82-145"
- ]
- },
- "vector-action-move": "Atra cimirtuq",
- "vector-view-view": "Naaqe"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ker",
- "Pikne",
- "WikedKentaur"
- ]
- },
- "skinname-vector": "Vektor",
- "vector-skin-desc": "MonoBooki uuem versioon värskema väljanägemise ja mitme kasutajasõbralikuma täiendusega",
- "vector.css": "/* Siin asuv kaskaadilaadistik puudutab kõiki Vektori-kujunduse kasutajaid. */",
- "vector.js": "/* Siin asuv JavaScript laaditakse kõigi Vektori-kujunduse kasutajate jaoks. */",
- "vector-action-addsection": "Lisa teema",
- "vector-action-delete": "Kustuta",
- "vector-action-move": "Teisalda",
- "vector-action-protect": "Kaitse",
- "vector-action-undelete": "Taasta",
- "vector-action-unprotect": "Muuda kaitset",
- "vector-view-create": "Loo",
- "vector-view-edit": "Muuda",
- "vector-view-history": "Näita ajalugu",
- "vector-view-view": "Vaata",
- "vector-view-viewsource": "Vaata lähteteksti",
- "vector-more-actions": "Veel"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Unai Fdz. de Betoño",
- "Xabier Armendaritz",
- "Fitoschido"
- ]
- },
- "vector-action-addsection": "Gehitu atala",
- "vector-action-delete": "Ezabatu",
- "vector-action-move": "Mugitu",
- "vector-action-protect": "Babestu",
- "vector-action-undelete": "Berreskuratu",
- "vector-action-unprotect": "Babesa aldatu",
- "vector-view-create": "Sortu",
- "vector-view-edit": "Aldatu",
- "vector-view-history": "Ikusi historia",
- "vector-view-view": "Irakurri",
- "vector-view-viewsource": "Kodea ikusia",
- "vector-more-actions": "Gehiago"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Better"
- ]
- },
- "vector-action-addsection": "Añiil tema",
- "vector-action-delete": "Esborral",
- "vector-action-move": "Mual",
- "vector-action-protect": "Protegel",
- "vector-action-undelete": "Esborral",
- "vector-action-unprotect": "Esprotegel",
- "vector-view-create": "Crial",
- "vector-view-edit": "Eital",
- "vector-view-history": "Guipal estorial",
- "vector-view-view": "Leyel",
- "vector-view-viewsource": "Guipal cóigu"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Calak",
- "Ebraminio",
- "Huji",
- "Reza1615",
- "Zack90"
- ]
- },
- "skinname-vector": "برداری",
- "vector-skin-desc": "نسخه مدرن منوبوک با نگاه تازه و بهبود قابلیت استفاده",
- "vector-action-addsection": "افزودن بخش",
- "vector-action-delete": "حذف",
- "vector-action-move": "انتقال",
- "vector-action-protect": "محافظت",
- "vector-action-undelete": "احیا",
- "vector-action-unprotect": "تغییر سطح حفاظت",
- "vector-view-create": "ایجاد",
- "vector-view-edit": "ویرایش",
- "vector-view-history": "نمایش تاریخچه",
- "vector-view-view": "خواندن",
- "vector-view-viewsource": "نمایش مبدأ",
- "vector-more-actions": "بیشتر"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ibrahima"
- ]
- },
- "vector-action-addsection": "Ɓeydi toɓɓere",
- "vector-action-move": "Dirtin",
- "vector-view-create": "Sos",
- "vector-view-edit": "Taƴto",
- "vector-view-history": "Yiyto aslol",
- "vector-view-view": "Tar",
- "vector-view-viewsource": "Yiyto ɗaɗol"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Crt",
- "Nedergard",
- "Nike",
- "Pxos"
- ]
- },
- "vector.css": "/* Tämä sivu sisältää Vector-ulkoasua muuttavia tyylejä. */",
- "vector.js": "/* Tämän sivun JavaScript-koodi liitetään Vector-tyyliin */",
- "vector-action-addsection": "Lisää aihe",
- "vector-action-delete": "Poista",
- "vector-action-move": "Siirrä",
- "vector-action-protect": "Suojaa",
- "vector-action-undelete": "Palauta",
- "vector-action-unprotect": "Muuta suojausta",
- "vector-view-create": "Luo",
- "vector-view-edit": "Muokkaa",
- "vector-view-history": "Näytä historia",
- "vector-view-view": "Lue",
- "vector-view-viewsource": "Näytä lähdekoodi",
- "vector-more-actions": "Muut"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mestos"
- ]
- },
- "vector-action-addsection": "Lissää aine",
- "vector-action-delete": "Ota poies",
- "vector-action-move": "Siirä",
- "vector-action-protect": "Suojaa",
- "vector-action-undelete": "Pane takashiin",
- "vector-action-unprotect": "Muuta suojaa",
- "vector-view-create": "Luo",
- "vector-view-edit": "Mookkaa",
- "vector-view-history": "Näytä histuuria",
- "vector-view-view": "Lue",
- "vector-view-viewsource": "Näytä lähekooti"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Diupwijk",
- "EileenSanda"
- ]
- },
- "vector-action-addsection": "Nýtt evni",
- "vector-action-delete": "Strika",
- "vector-action-move": "Flyt",
- "vector-action-protect": "Friða",
- "vector-action-undelete": "Endurstovna",
- "vector-action-unprotect": "Broyt verju",
- "vector-view-create": "Stovna",
- "vector-view-edit": "Rætta",
- "vector-view-history": "Vís søgu",
- "vector-view-view": "Les",
- "vector-view-viewsource": "Vís keldu",
- "vector-more-actions": "Meira"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Akeron",
- "Crochet.david",
- "DavidL",
- "Gomoko",
- "Jean-Frédéric",
- "Od1n"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Version moderne de MonoBook avec un aspect rajeuni et beaucoup d’améliorations ergonomiques",
- "vector.css": "/* Le CSS placé ici affectera les utilisateurs de l’habillage Vector. */",
- "vector.js": "/* Tout code JavaScript placé ici sera chargé pour les utilisateurs de l’habillage Vector */",
- "vector-action-addsection": "Ajouter un sujet",
- "vector-action-delete": "Supprimer",
- "vector-action-move": "Renommer",
- "vector-action-protect": "Protéger",
- "vector-action-undelete": "Rétablir",
- "vector-action-unprotect": "Changer la protection",
- "vector-view-create": "Créer",
- "vector-view-edit": "Modifier",
- "vector-view-history": "Historique",
- "vector-view-view": "Lire",
- "vector-view-viewsource": "Voir la source",
- "vector-more-actions": "Plus"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ebe123"
- ]
- },
- "vector-action-delete": "Supprimer",
- "vector-action-protect": "Protéger"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "ChrisPtDe"
- ]
- },
- "skinname-vector": "Vèctor",
- "vector.css": "/* Lo code CSS betâ ique afècterat los usanciérs de l’habelyâjo « Vèctor ». */",
- "vector.js": "/* Tot code JavaScript betâ ique serat chargiê per los usanciérs de l’habelyâjo « Vèctor ». */",
- "vector-action-addsection": "Apondre na chousa",
- "vector-action-delete": "Suprimar",
- "vector-action-move": "Dèplaciér",
- "vector-action-protect": "Protègiér",
- "vector-action-undelete": "Refâre",
- "vector-action-unprotect": "Changiér la protèccion",
- "vector-view-create": "Fâre",
- "vector-view-edit": "Changiér",
- "vector-view-history": "Vêre l’historico",
- "vector-view-view": "Liére",
- "vector-view-viewsource": "Vêre lo tèxto sôrsa"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Murma174",
- "Pyt"
- ]
- },
- "vector-skin-desc": "Modern werjuun faan Monobook mä frisk skak an föl muar mögelkhaiden",
- "vector-action-addsection": "Nei kirew began",
- "vector-action-delete": "Strik",
- "vector-action-move": "Fersküüw",
- "vector-action-protect": "Seekre",
- "vector-action-undelete": "Weder iinstel",
- "vector-action-unprotect": "Sidjenseekerhaid",
- "vector-view-create": "Maage",
- "vector-view-edit": "Bewerke",
- "vector-view-history": "Ferluup uunluke",
- "vector-view-view": "Lees",
- "vector-view-viewsource": "Kweltekst uunluke",
- "vector-more-actions": "Muar"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Klenje",
- "Tocaibon"
- ]
- },
- "vector-action-addsection": "Gnove sezion",
- "vector-action-delete": "Elimine",
- "vector-action-move": "Môf",
- "vector-action-protect": "Protêç",
- "vector-action-undelete": "Recupere",
- "vector-action-unprotect": "Gambie la protezion",
- "vector-view-create": "Cree",
- "vector-view-edit": "Cambie",
- "vector-view-history": "Cjale il storic",
- "vector-view-view": "Lei",
- "vector-view-viewsource": "Cjale risultive"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kening Aldgilles",
- "SK-luuut"
- ]
- },
- "vector-action-delete": "Fuortsmite",
- "vector-action-move": "Werneam",
- "vector-action-protect": "Beskermje",
- "vector-action-undelete": "Tebeksette",
- "vector-action-unprotect": "Beskerming fuorthelje",
- "vector-view-create": "Oanmeitsje",
- "vector-view-edit": "Wizigje",
- "vector-view-history": "Skiednis sjen litte",
- "vector-view-view": "Lês",
- "vector-view-viewsource": "Besjoch de boarne"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kscanne",
- "Kwekubo",
- "Moydow"
- ]
- },
- "skinname-vector": "Veicteoir",
- "vector-action-addsection": "Cuir topaic leis",
- "vector-action-delete": "Scrios",
- "vector-action-move": "Athainmnigh",
- "vector-action-protect": "Glasáil",
- "vector-action-undelete": "Díscrios",
- "vector-action-unprotect": "Díghlasáil",
- "vector-view-create": "Cruthaigh",
- "vector-view-edit": "Athraigh an lch seo",
- "vector-view-history": "Féach ar stair",
- "vector-view-view": "Léigh",
- "vector-view-viewsource": "Féach ar fhoinse"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Cuman",
- "Emperyan"
- ]
- },
- "vector-view-edit": "Diiştir",
- "vector-view-view": "Oku"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Liangent",
- "Xiaomingyan"
- ]
- },
- "vector-action-addsection": "添主题",
- "vector-action-delete": "删吥",
- "vector-action-move": "移吥",
- "vector-action-protect": "护到",
- "vector-action-undelete": "望下删吥𠮶页面",
- "vector-action-unprotect": "更改保护",
- "vector-view-create": "创建",
- "vector-view-edit": "编辑",
- "vector-view-history": "望下历史",
- "vector-view-view": "读",
- "vector-view-viewsource": "望下原始码"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Symane"
- ]
- },
- "vector-action-addsection": "添主題",
- "vector-action-delete": "刪吥",
- "vector-action-move": "移吥",
- "vector-action-protect": "護到",
- "vector-action-undelete": "望下刪吥嗰頁面",
- "vector-action-unprotect": "解除保護",
- "vector-view-create": "創建",
- "vector-view-edit": "編輯",
- "vector-view-history": "望下歷史",
- "vector-view-view": "讀",
- "vector-view-viewsource": "望下原始碼"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Akerbeltz",
- "GunChleoc"
- ]
- },
- "vector-skin-desc": "Tionndadh ùr-nodha de MonoBook le dreach ùr air 's iomadh leasachadh air a sho-chleachdachd",
- "vector-action-addsection": "Cuir ris cuspair",
- "vector-action-delete": "Sguab às",
- "vector-action-move": "Gluais",
- "vector-action-protect": "Dìon",
- "vector-action-undelete": "Neo-dhèan an sguabadh às",
- "vector-action-unprotect": "Atharraich an dìon",
- "vector-view-create": "Cruthaich",
- "vector-view-edit": "Deasaich",
- "vector-view-history": "Seall an eachdraidh",
- "vector-view-view": "Leugh",
- "vector-view-viewsource": "Seall an tùs",
- "vector-more-actions": "Barrachd"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Elisardojm",
- "Toliño",
- "Vivaelcelta"
- ]
- },
- "vector-skin-desc": "Versión moderna da aparencia MonoBook, cun aspecto fresco e moitas melloras na usabilidade",
- "vector.css": "/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */",
- "vector.js": "/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */",
- "vector-action-addsection": "Nova sección",
- "vector-action-delete": "Borrar",
- "vector-action-move": "Mover",
- "vector-action-protect": "Protexer",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Cambiar a protección",
- "vector-view-create": "Crear",
- "vector-view-edit": "Editar",
- "vector-view-history": "Ver o historial",
- "vector-view-view": "Ler",
- "vector-view-viewsource": "Ver o código fonte",
- "vector-more-actions": "Máis"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Darshan kandolkar",
- "Pooja tople",
- "Sanket.prabhu26",
- "Supriya kankumbikar"
- ]
- },
- "vector-action-addsection": "माथाळो दियात",
- "vector-action-delete": "काडून उडयात",
- "vector-action-move": "दुसरेकडे व्हरात",
- "vector-action-protect": "राख",
- "vector-view-create": "निर्माण कर",
- "vector-view-edit": "बदल",
- "vector-view-history": "इतिहास पळेयात",
- "vector-view-view": "वाचचें",
- "vector-view-viewsource": "उगम पळेयात"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Isidore Dantas",
- "The Discoverer"
- ]
- },
- "vector-action-addsection": "Vixoi zodd",
- "vector-action-delete": "Kadd",
- "vector-action-move": "Zago bodol",
- "vector-action-protect": "Rakh",
- "vector-view-create": "Roch",
- "vector-view-edit": "Sudar",
- "vector-view-history": "Itihas polloi",
- "vector-view-view": "Vach",
- "vector-view-viewsource": "Mull polloi",
- "vector-more-actions": "Anik"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Crazymadlover",
- "Omnipaedista"
- ]
- },
- "vector-action-addsection": "Θέμα προστιθέναι",
- "vector-action-delete": "Σβεννύναι",
- "vector-action-move": "Κινεῖν",
- "vector-action-protect": "Φυλάττειν",
- "vector-action-undelete": "Ἀποκαθιστάναι",
- "vector-action-unprotect": "Ἄλλαξον τὴν φύλαξιν",
- "vector-view-create": "Ποιεῖν",
- "vector-view-edit": "Μεταγράφειν",
- "vector-view-history": "Ἱστορίαν ὁρᾶν",
- "vector-view-view": "Ἀναγνῶναι",
- "vector-view-viewsource": "Ὁρᾶν τὴν πηγήν"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Als-Holder"
- ]
- },
- "vector-action-addsection": "Abschnitt zuefiege",
- "vector-action-delete": "Lesche",
- "vector-action-move": "Verschiebe",
- "vector-action-protect": "Schitze",
- "vector-action-undelete": "Widerhärstelle",
- "vector-action-unprotect": "Syteschutz ändere",
- "vector-view-create": "Aalege",
- "vector-view-edit": "Bearbeite",
- "vector-view-history": "Versionsgschicht",
- "vector-view-view": "Läse",
- "vector-view-viewsource": "Quälltext aaluege"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Aritra",
- "Ashok modhvadia",
- "Dsvyas"
- ]
- },
- "vector-action-addsection": "નવી ચર્ચા",
- "vector-action-delete": "રદ કરો",
- "vector-action-move": "ખસેડો",
- "vector-action-protect": "સુરક્ષિત કરો",
- "vector-action-undelete": "રદ કરેલું પાછું વાળો",
- "vector-action-unprotect": "સુરક્ષા બદલો",
- "vector-view-create": "બનાવો",
- "vector-view-edit": "ફેરફાર કરો",
- "vector-view-history": "ઇતિહાસ જુઓ",
- "vector-view-view": "વાંચો",
- "vector-view-viewsource": "સ્રોત જુઓ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Maor X"
- ]
- },
- "vector-action-delete": "Ojuichajaa",
- "vector-action-move": "Ansülaa",
- "vector-action-protect": "Eisalajaa",
- "vector-view-create": "Akumajaa",
- "vector-view-edit": "Anaataa",
- "vector-view-history": "Achikii a'wanajaayamaajatü",
- "vector-view-view": "Aashaje'eraa",
- "vector-view-viewsource": "Anüliaa eejeetülee"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "MacTire02",
- "Shimmin Beg"
- ]
- },
- "vector-action-addsection": "Cur cooish noa rish",
- "vector-action-delete": "Scryss",
- "vector-action-move": "Scugh",
- "vector-action-protect": "Coadee",
- "vector-action-undelete": "Jee-scryss",
- "vector-action-unprotect": "Caghlaa coadey",
- "vector-view-create": "Croo",
- "vector-view-edit": "Reagh",
- "vector-view-history": "Jeeagh er shennaghys",
- "vector-view-view": "Lhaih",
- "vector-view-viewsource": "Jeeagh er bun"
-}
+++ /dev/null
-{
- "vector-action-delete": "Soke",
- "vector-action-move": "Gusarwa",
- "vector-action-protect": "A kare",
- "vector-view-create": "Ƙirƙira"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Anson2812",
- "Jetlag"
- ]
- },
- "vector-action-addsection": "加入話題",
- "vector-action-delete": "刪除",
- "vector-action-move": "移動",
- "vector-action-protect": "保護",
- "vector-action-undelete": "恢復",
- "vector-action-unprotect": "更改保護",
- "vector-view-create": "建立",
- "vector-view-edit": "編寫",
- "vector-view-history": "查看歷史",
- "vector-view-view": "閱讀",
- "vector-view-viewsource": "查看源碼"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kolonahe"
- ]
- },
- "vector-action-addsection": "Hoʻohui kumuhana",
- "vector-action-delete": "Holoi",
- "vector-action-move": "E hoʻoneʻe",
- "vector-action-protect": "E hoʻomalu",
- "vector-action-undelete": "Holoiʻole",
- "vector-action-unprotect": "E hoʻololi i ka hoʻomalu",
- "vector-view-create": "Haku",
- "vector-view-edit": "Hoʻololi",
- "vector-view-history": "Nānā i ka mōʻaukala",
- "vector-view-view": "Heluhelu",
- "vector-view-viewsource": "Nānā i ke kumu"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Amire80",
- "Rotemliss"
- ]
- },
- "skinname-vector": "וקטור",
- "vector-skin-desc": "גרסה מודרנית של מונובוק עם מראה רענן והרבה שיפורי שמישות",
- "vector.css": "/* הסגנונות הנכתבים כאן ישפיעו על העיצוב Vector בלבד */",
- "vector.js": "/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Vector */",
- "vector-action-addsection": "הוספת נושא",
- "vector-action-delete": "מחיקה",
- "vector-action-move": "העברה",
- "vector-action-protect": "הגנה",
- "vector-action-undelete": "ביטול מחיקה",
- "vector-action-unprotect": "שינוי הגנה",
- "vector-view-create": "יצירה",
- "vector-view-edit": "עריכה",
- "vector-view-history": "הצגת היסטוריה",
- "vector-view-view": "קריאה",
- "vector-view-viewsource": "הצגת מקור",
- "vector-more-actions": "עוד"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Siddhartha Ghai",
- "आलोक",
- "रोहित रावत"
- ]
- },
- "vector-action-addsection": "विषय जोड़ें",
- "vector-action-delete": "हटाएँ",
- "vector-action-move": "स्थानांतरण करें",
- "vector-action-protect": "सुरक्षित करें",
- "vector-action-undelete": "हटाना वापस लें",
- "vector-action-unprotect": "सुरक्षा बदलें",
- "vector-view-create": "बनाएँ",
- "vector-view-edit": "सम्पादन",
- "vector-view-history": "इतिहास देखें",
- "vector-view-view": "पढ़ें",
- "vector-view-viewsource": "स्रोत देखें",
- "vector-more-actions": "अधिक"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Girmitya",
- "Thakurji"
- ]
- },
- "vector-action-addsection": "Topic jorro",
- "vector-action-delete": "Mitao",
- "vector-action-move": "Naam badlo",
- "vector-action-protect": "Bachao",
- "vector-action-undelete": "Pahile jaise karo",
- "vector-action-unprotect": "Surakchha ke badlo",
- "vector-view-create": "Banao",
- "vector-view-edit": "Badlo",
- "vector-view-history": "Itihaas dekho",
- "vector-view-view": "Parrho",
- "vector-view-viewsource": "Source dekho"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Anjoeli9806"
- ]
- },
- "vector-action-addsection": "Magdugang sang topiko",
- "vector-action-delete": "Panason",
- "vector-action-move": "Saylohon",
- "vector-action-protect": "Pangapinan",
- "vector-action-undelete": "Dulaon ang pagpanas",
- "vector-action-unprotect": "Ilisan ang pagpangapin",
- "vector-view-create": "Himuon",
- "vector-view-edit": "Ilisan",
- "vector-view-history": "Lantawon ang kasaysayan",
- "vector-view-view": "Magbasa",
- "vector-view-viewsource": "Lantawon ang ginhalinan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ex13",
- "Tivek"
- ]
- },
- "vector-action-addsection": "Dodaj temu",
- "vector-action-delete": "Izbriši",
- "vector-action-move": "Premjesti",
- "vector-action-protect": "Zaštiti",
- "vector-action-undelete": "Vrati",
- "vector-action-unprotect": "Promijeni zaštitu",
- "vector-view-create": "Započni",
- "vector-view-edit": "Uredi",
- "vector-view-history": "Vidi stare izmjene",
- "vector-view-view": "Čitaj",
- "vector-view-viewsource": "Vidi izvor"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Paul Beppler"
- ]
- },
- "vector-action-addsection": "Abschnitt hinzufüche",
- "vector-action-delete": "Lösche",
- "vector-action-move": "Verschiebe",
- "vector-action-protect": "Schütz",
- "vector-action-undelete": "Wiederherstelle",
- "vector-action-unprotect": "Seiteschutz ännre",
- "vector-view-create": "Erstell",
- "vector-view-edit": "Beoorbeite",
- "vector-view-history": "Versionsgeschicht",
- "vector-view-view": "Lese",
- "vector-view-viewsource": "Quelltext oonzeiche"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Michawiki"
- ]
- },
- "vector-action-addsection": "Temu přidać",
- "vector-action-delete": "wušmórnyć",
- "vector-action-move": "přesunyć",
- "vector-action-protect": "škitać",
- "vector-action-undelete": "Wobnowić",
- "vector-action-unprotect": "Škit wotstronić",
- "vector-view-create": "Wutworić",
- "vector-view-edit": "Wobdźěłać",
- "vector-view-history": "Stawizny",
- "vector-view-view": "Čitać",
- "vector-view-viewsource": "Žórło sej wobhladać",
- "vector-more-actions": "Wjace"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "YulouCN"
- ]
- },
- "vector-view-edit": "增改",
- "vector-view-history": "履歷",
- "vector-view-view": "讀"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Boukman",
- "Internoob",
- "Masterches"
- ]
- },
- "vector-action-addsection": "Ajoute yon sijè",
- "vector-action-delete": "Efase",
- "vector-action-move": "Chanje non",
- "vector-action-protect": "Pwoteje",
- "vector-action-undelete": "Retabli",
- "vector-action-unprotect": "Pa pwoteje",
- "vector-view-create": "Kreye",
- "vector-view-edit": "Modifye",
- "vector-view-history": "Gade istorik",
- "vector-view-view": "Li",
- "vector-view-viewsource": "Wè kòd tèks sa a"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Tacsipacsi"
- ]
- },
- "vector-action-addsection": "Új téma nyitása",
- "vector-action-delete": "Törlés",
- "vector-action-move": "Átnevezés",
- "vector-action-protect": "Lapvédelem",
- "vector-action-undelete": "Visszaállítás",
- "vector-action-unprotect": "Védelem módosítása",
- "vector-view-create": "Létrehozás",
- "vector-view-edit": "Szerkesztés",
- "vector-view-history": "Laptörténet",
- "vector-view-view": "Olvasás",
- "vector-view-viewsource": "A lap forrása"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bdamokos",
- "Dani",
- "Dj",
- "Misibacsi",
- "Tacsipacsi",
- "Tgr"
- ]
- },
- "vector.css": "/* Az ide elhelyezett CSS hatással lesz a Vector felület használóira */",
- "vector.js": "/* A Vector felületet használó szerkesztők számára betöltendő JavaScriptek */",
- "vector-action-addsection": "Új téma nyitása",
- "vector-action-delete": "Törlés",
- "vector-action-move": "Átnevezés",
- "vector-action-protect": "Lapvédelem",
- "vector-action-undelete": "Visszaállítás",
- "vector-action-unprotect": "Védelem módosítása",
- "vector-view-create": "Létrehozás",
- "vector-view-edit": "Szerkesztés",
- "vector-view-history": "Laptörténet",
- "vector-view-view": "Olvasás",
- "vector-view-viewsource": "A lap forrása",
- "vector-more-actions": "Több"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Teak",
- "Vadgt",
- "Xelgen",
- "Arman musikyan"
- ]
- },
- "skinname-vector": "Սովորական",
- "vector-action-addsection": "Ավելացնել քննարկում",
- "vector-action-delete": "Ջնջել",
- "vector-action-move": "Տեղափոխել այս էջը",
- "vector-action-protect": "Պաշտպանել",
- "vector-action-undelete": "Վերականգնել",
- "vector-action-unprotect": "Փոխել պաշտպանումը",
- "vector-view-create": "Ստեղծել",
- "vector-view-edit": "Խմբագրել",
- "vector-view-history": "Դիտել պատմությունը",
- "vector-view-view": "Կարդալ",
- "vector-view-viewsource": "Դիտել ելատեքստը",
- "vector-more-actions": "Ավելին"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "McDutchie"
- ]
- },
- "vector-skin-desc": "Version moderne de MonoBook con aspecto rejuvenescite e multe meliorationes de usabilitate.",
- "vector.css": "/* Le CSS placiate hic afficera le usatores del apparentia Vector */",
- "vector.js": "/* Omne JavaScript hic se executara pro le usatores del apparentia Vector */",
- "vector-action-addsection": "Adder topico",
- "vector-action-delete": "Deler",
- "vector-action-move": "Renominar",
- "vector-action-protect": "Proteger",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Cambiar protection",
- "vector-view-create": "Crear",
- "vector-view-edit": "Modificar",
- "vector-view-history": "Vider historia",
- "vector-view-view": "Leger",
- "vector-view-viewsource": "Vider texto fonte",
- "vector-more-actions": "Plus"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arifin.wijaya",
- "Bennylin",
- "Farras",
- "Iwan Novirion",
- "Rex"
- ]
- },
- "skinname-vector": "Vektor",
- "vector-skin-desc": "Versi modern dari MonoBook dengan tampilan segar dan banyak perbaikan kegunaan",
- "vector.css": "/* CSS nan ado di siko diterapkan pado kulik Vektor. */",
- "vector.js": "/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Vector */",
- "vector-action-addsection": "Bagian baru",
- "vector-action-delete": "Hapus",
- "vector-action-move": "Pindahkan",
- "vector-action-protect": "Lindungi",
- "vector-action-undelete": "Pembatalan penghapusan",
- "vector-action-unprotect": "Ubah perlindungan",
- "vector-view-create": "Buat",
- "vector-view-edit": "Sunting",
- "vector-view-history": "Versi terdahulu",
- "vector-view-view": "Baca",
- "vector-view-viewsource": "Lihat sumber",
- "vector-more-actions": "Lainnya"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Makuba",
- "Renan"
- ]
- },
- "vector.css": "/* CSS colocat ci va afectar usatores de pelle Vector */",
- "vector.js": "/* Alquel JavaScript ci va esser cargat por usatores que usa li pelle Vector */",
- "vector-action-addsection": "Adjunter tema",
- "vector-action-delete": "Deleter",
- "vector-action-move": "Mover",
- "vector-action-protect": "Gardar",
- "vector-action-undelete": "Restituer",
- "vector-action-unprotect": "Desgardar",
- "vector-view-create": "Crear",
- "vector-view-edit": "Redacter",
- "vector-view-history": "Historie de versiones",
- "vector-view-view": "Leer",
- "vector-view-viewsource": "Vider fonte"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ukabia"
- ]
- },
- "vector-action-addsection": "Tinyé Okwu",
- "vector-action-delete": "Kàcha",
- "vector-action-move": "Páfụ",
- "vector-action-protect": "Cẹdolu",
- "vector-action-undelete": "Á gbàkashikwà",
- "vector-action-unprotect": "Nchẹdo mgbanwe",
- "vector-view-create": "Ké",
- "vector-view-edit": "Mèzi",
- "vector-view-history": "Zí ịta",
- "vector-view-view": "Gụ́",
- "vector-view-viewsource": "Zi mkpurụ"
-}
+++ /dev/null
-{
- "vector-view-edit": "Suqusiqpaa"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lam-ang",
- "Saluyot"
- ]
- },
- "vector-skin-desc": "Modernno a bersion ti MonoBook nga addaan iti baro a langa ken adu kadagiti naserbi a panagpasayaat",
- "vector-action-addsection": "Agnayon ti topiko",
- "vector-action-delete": "Ikkaten",
- "vector-action-move": "Iyalis",
- "vector-action-protect": "Salakniban",
- "vector-action-undelete": "Isubli ti inikkat",
- "vector-action-unprotect": "Sukatan ti salaknib",
- "vector-view-create": "Agaramid",
- "vector-view-edit": "Urnosen",
- "vector-view-history": "Kitaen ti pakasaritaan",
- "vector-view-view": "Basaen",
- "vector-view-viewsource": "Kitaen ti taudan",
- "vector-more-actions": "Adu pay"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Amire80",
- "Sapral Mikail"
- ]
- },
- "vector-action-addsection": "БӀагал тӀатоха",
- "vector-action-delete": "ДӀадаккха",
- "vector-action-move": "ЦӀи хувца",
- "vector-action-protect": "Лораде",
- "vector-action-undelete": "Юхаоттаде",
- "vector-action-unprotect": "Лорам хувца",
- "vector-view-create": "Кхолларле",
- "vector-view-edit": "Хувцам",
- "vector-view-history": "Искар",
- "vector-view-view": "Дешар",
- "vector-view-viewsource": "Зембакхама бӀаргтассам"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Malafaya"
- ]
- },
- "vector-action-addsection": "Adjuntar topiko",
- "vector-action-delete": "Efacar",
- "vector-action-move": "Movar",
- "vector-action-protect": "Protektar",
- "vector-action-undelete": "Rekuperar",
- "vector-action-unprotect": "Desprotektar",
- "vector-view-create": "Krear",
- "vector-view-edit": "Redaktar",
- "vector-view-history": "Vidar versionaro",
- "vector-view-view": "Lektar",
- "vector-view-viewsource": "Vidar fonto"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Friðrik Bragi Dýrfjörð",
- "Maxí",
- "Snævar",
- "Ævar Arnfjörð Bjarmason"
- ]
- },
- "vector-action-addsection": "Bæta við umræðu",
- "vector-action-delete": "Eyða",
- "vector-action-move": "Færa",
- "vector-action-protect": "Vernda",
- "vector-action-undelete": "Hætta við eyðingu",
- "vector-action-unprotect": "Breyta verndunarstigi",
- "vector-view-create": "Skapa",
- "vector-view-edit": "Breyta",
- "vector-view-history": "Breytingaskrá",
- "vector-view-view": "Lesa",
- "vector-view-viewsource": "Sýna frumkóða"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Beta16",
- "Darth Kule",
- "Gianfranco",
- "Melos",
- "Pietrodn"
- ]
- },
- "vector-skin-desc": "Versione moderna del MonoBook con un'aspetto nuovo e molti miglioramenti dell'usabilità",
- "vector.css": "/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Vector */",
- "vector.js": "/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */",
- "vector-action-addsection": "Aggiungi discussione",
- "vector-action-delete": "Cancella",
- "vector-action-move": "Sposta",
- "vector-action-protect": "Proteggi",
- "vector-action-undelete": "Ripristina",
- "vector-action-unprotect": "Cambia la protezione",
- "vector-view-create": "Crea",
- "vector-view-edit": "Modifica",
- "vector-view-history": "Cronologia",
- "vector-view-view": "Leggi",
- "vector-view-viewsource": "Visualizza sorgente",
- "vector-more-actions": "Altro"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Aig mest ei varasta"
- ]
- },
- "vector-view-view": "Lukkiia"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Fryed-peach",
- "Marine-Blue",
- "Penn Station",
- "Shirayuki",
- "Whym",
- "青子守歌"
- ]
- },
- "skinname-vector": "ベクター",
- "vector.css": "/* ここに記述したCSSはベクター外装の利用者に影響します */",
- "vector.js": "/* ここにあるすべてのJavaScriptは、ベクター外装を使用している利用者に対して読み込まれます */",
- "vector-action-addsection": "話題追加",
- "vector-action-delete": "削除",
- "vector-action-move": "移動",
- "vector-action-protect": "保護",
- "vector-action-undelete": "復元",
- "vector-action-unprotect": "保護再設定",
- "vector-view-create": "作成",
- "vector-view-edit": "編集",
- "vector-view-history": "履歴表示",
- "vector-view-view": "閲覧",
- "vector-view-viewsource": "ソースを閲覧",
- "vector-more-actions": "その他"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hazard-SJ",
- "Yocahuna"
- ]
- },
- "vector-action-addsection": "Ad tapik",
- "vector-action-delete": "Diliit",
- "vector-action-move": "Muuv",
- "vector-action-protect": "Protek",
- "vector-action-undelete": "Andiliit",
- "vector-action-unprotect": "Neu protektian",
- "vector-view-create": "Kriet",
- "vector-view-edit": "Hedit",
- "vector-view-history": "Vyuu ischri",
- "vector-view-view": "Riid",
- "vector-view-viewsource": "Vyuu Suos"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gleki"
- ]
- },
- "vector-action-addsection": "jmina la'e se casnu",
- "vector-action-delete": "vimcu",
- "vector-action-move": "stika lo cmene",
- "vector-action-protect": "bandu",
- "vector-view-create": "zbasu",
- "vector-view-edit": "stika",
- "vector-view-history": "lo ckupau citri",
- "vector-view-view": "tcidu",
- "vector-view-viewsource": "cpacu lo krasi",
- "vector-more-actions": "ji'a"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Pras"
- ]
- },
- "vector-action-addsection": "Tambah topik",
- "vector-action-delete": "Busak",
- "vector-action-move": "Pindhahna",
- "vector-action-protect": "Reksa",
- "vector-action-undelete": "Batalna pambusakan",
- "vector-action-unprotect": "Owahi pangreksan",
- "vector-view-create": "Gawé",
- "vector-view-edit": "Sunting",
- "vector-view-history": "Sajarah kaca",
- "vector-view-view": "Waca",
- "vector-view-viewsource": "Pirsani sumber"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Alsandro",
- "David1010",
- "გიორგიმელა"
- ]
- },
- "skinname-vector": "ვექტორული",
- "vector.css": "/* აქ ჩასმული CSS გამოყენებული იქნება ვექტორული გაფორმების თემაში */",
- "vector-action-addsection": "თემის ჩამატება",
- "vector-action-delete": "წაშლა",
- "vector-action-move": "გადატანა",
- "vector-action-protect": "დაცვა",
- "vector-action-undelete": "აღდგენა",
- "vector-action-unprotect": "დაცვის შეცვლა",
- "vector-view-create": "შექმნა",
- "vector-view-edit": "რედაქტირება",
- "vector-view-history": "ისტორია",
- "vector-view-view": "შემოწმებული სტატია",
- "vector-view-viewsource": "წყაროს ხილვა",
- "vector-more-actions": "მეტი"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Atabek"
- ]
- },
- "vector-action-addsection": "Tema qosıw",
- "vector-action-delete": "O'shiriw",
- "vector-action-move": "Ko'shiriw",
- "vector-action-protect": "Qorg'aw",
- "vector-action-undelete": "Qayta tiklew",
- "vector-action-unprotect": "Qorg'awdı o'zgertiw",
- "vector-view-create": "Jaratıw",
- "vector-view-edit": "O'zgertiw",
- "vector-view-history": "Tariyxın ko'riw",
- "vector-view-view": "Oqıw",
- "vector-view-viewsource": "Deregin ko'riw"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mmistmurt"
- ]
- },
- "vector-action-addsection": "Rnud ameggay",
- "vector-action-delete": "Mḥu",
- "vector-action-move": "Smimeḍ",
- "vector-action-protect": "Mmesten",
- "vector-action-undelete": "Uɣaled",
- "vector-action-unprotect": "Beddel amesten",
- "vector-view-create": "Snulfu",
- "vector-view-edit": "Ẓẓiẓreg",
- "vector-view-history": "Ẓeṛ amazray",
- "vector-view-view": "Ɣer",
- "vector-view-viewsource": "Ẓer aɣbalu"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bogups",
- "Тамэ Балъкъэрхэ"
- ]
- },
- "vector-action-addsection": "Теухугъуэ щӀэуэ щӀэдзэн",
- "vector-action-delete": "Ихын",
- "vector-action-move": "ЦӀэр хъуэжын",
- "vector-action-protect": "Хъумэн",
- "vector-action-undelete": "ЗыфӀэгъэувэжын",
- "vector-action-unprotect": "Хъумэныр техыжын",
- "vector-view-create": "ЩӀын",
- "vector-view-edit": "Гъэтэрэзын",
- "vector-view-history": "Тхыдэм еплъын",
- "vector-view-view": "Еджэн",
- "vector-view-viewsource": "КъызхэкӀам еплъын"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Rkupsala"
- ]
- },
- "vector-action-delete": "Kufwa",
- "vector-action-move": "Nata",
- "vector-action-protect": "Keba",
- "vector-view-create": "Tunga",
- "vector-view-edit": "Soba",
- "vector-view-history": "Tala bansoba",
- "vector-view-view": "Tânga"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Rachitrali"
- ]
- },
- "vector-action-addsection": "نوغ موضوع",
- "vector-action-delete": "بوغاوے",
- "vector-action-move": "منتقل کورے",
- "vector-action-protect": "محفوظ کورے",
- "vector-action-undelete": "اچی انگیے",
- "vector-action-unprotect": "غیر محفوظ",
- "vector-view-create": "ساوزاوے",
- "vector-view-edit": "ایڈٹ کورے",
- "vector-view-history": "تاریخچہ",
- "vector-view-view": "راوے",
- "vector-view-viewsource": "مسودہ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Stephenwanjau"
- ]
- },
- "vector-action-delete": "Futa"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mirzali"
- ]
- },
- "vector-action-addsection": "Mewzu ilawe ke",
- "vector-action-delete": "Bestere",
- "vector-action-move": "Bere",
- "vector-action-protect": "Bısevekne",
- "vector-action-undelete": "Esterıtene peyser bıcê",
- "vector-action-unprotect": "Rake",
- "vector-view-create": "Vıraze",
- "vector-view-edit": "Bıvurne",
- "vector-view-history": "Tarixi basne",
- "vector-view-view": "Bıwane",
- "vector-view-viewsource": "Çımey bıvêne"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arystanbek",
- "Daniyar",
- "GaiJin",
- "Kaztrans"
- ]
- },
- "vector-action-addsection": "Тақырып қосу",
- "vector-action-delete": "Жою",
- "vector-action-move": "Атауын өзгерту",
- "vector-action-protect": "Қорғау",
- "vector-action-undelete": "Жоймау",
- "vector-action-unprotect": "Қорғанысын өзгерту",
- "vector-view-create": "Бастау",
- "vector-view-edit": "Өңдеу",
- "vector-view-history": "Өңделу тарихы",
- "vector-view-view": "Оқу",
- "vector-view-viewsource": "Қайнарын қарау",
- "vector-more-actions": "Тағы"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Iketsi",
- "Qaqqalik"
- ]
- },
- "vector-action-addsection": "Imm. nutaaq",
- "vector-action-move": "Nuuguk",
- "vector-view-create": "Pilersiguk",
- "vector-view-edit": "Aaqqissoruk",
- "vector-view-history": "Oqalutt.",
- "vector-view-view": "Takuuk",
- "vector-view-viewsource": "Toqqavia takuuk"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "គីមស៊្រុន",
- "វ័ណថារិទ្ធ"
- ]
- },
- "skinname-vector": "វ៉ិចទ័រ",
- "vector.css": "/* CSS បានដាក់ទីនេះនឹងមានអនុភាពលើអ្នកប្រើប្រាស់នៃសំបក Vector */",
- "vector-action-addsection": "បន្ថែមប្រធានបទ",
- "vector-action-delete": "លុបចោល",
- "vector-action-move": "ប្តូរទីតាំង",
- "vector-action-protect": "ការពារ",
- "vector-action-undelete": "ឈប់លុបចោល",
- "vector-action-unprotect": "ប្ដូរការការពារ",
- "vector-view-create": "បង្កើត",
- "vector-view-edit": "កែប្រែ",
- "vector-view-history": "មើលប្រវត្តិ",
- "vector-view-view": "អាន",
- "vector-view-viewsource": "មើលកូដ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ktkaushik",
- "Nayvik",
- "VASANTH S.N."
- ]
- },
- "vector-action-addsection": "ವಿಷಯ ಸೇರಿಸಿ",
- "vector-action-delete": "ಅಳಿಸು",
- "vector-action-move": "ಸ್ಥಳಾಂತರಿಸಿ",
- "vector-action-protect": "ಸಂರಕ್ಷಿಸು",
- "vector-action-undelete": "ಅಳಿಸಬೇಡ",
- "vector-action-unprotect": "ರಕ್ಷಣೆಯನ್ನು ಬದಲಾವಣೆ",
- "vector-view-create": "ಸೃಷ್ಟಿಸು",
- "vector-view-edit": "ಸಂಪಾದಿಸಿ",
- "vector-view-history": "ಇತಿಹಾಸವನ್ನು ನೋಡಿ",
- "vector-view-view": "ಓದು",
- "vector-view-viewsource": "ಆಕರ ವೀಕ್ಷಿಸು"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "ITurtle",
- "Kwj2772",
- "아라"
- ]
- },
- "skinname-vector": "벡터",
- "vector-skin-desc": "모노북 스킨을 사용할 때 사용자 인터페이스를 향상합니다",
- "vector.css": "/* 이 CSS 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */",
- "vector.js": "/* 이 자바스크립트 설정은 벡터 스킨을 사용하는 사용자에게 적용됩니다 */",
- "vector-action-addsection": "새 주제",
- "vector-action-delete": "삭제",
- "vector-action-move": "옮기기",
- "vector-action-protect": "보호",
- "vector-action-undelete": "삭제 취소",
- "vector-action-unprotect": "보호 설정 바꾸기",
- "vector-view-create": "만들기",
- "vector-view-edit": "편집",
- "vector-view-history": "역사 보기",
- "vector-view-view": "읽기",
- "vector-view-viewsource": "원본 보기",
- "vector-more-actions": "더 보기"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Enye Lav"
- ]
- },
- "vector-action-delete": "Чышкыны",
- "vector-view-view": "Лыддьöтны"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Iltever",
- "Къарачайлы"
- ]
- },
- "skinname-vector": "Вектор",
- "vector-action-addsection": "Джангы тема къош",
- "vector-action-delete": "Кетер",
- "vector-action-move": "Атын ауушдур",
- "vector-action-protect": "Джакъла",
- "vector-action-undelete": "Къайтар",
- "vector-action-unprotect": "Джакълауну тюрлендир",
- "vector-view-create": "Къура",
- "vector-view-edit": "Тюрлендир",
- "vector-view-history": "Тарихи",
- "vector-view-view": "Окъу",
- "vector-view-viewsource": "Кодха къара",
- "vector-more-actions": "Энтда"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Protostar"
- ]
- },
- "vector-action-addsection": "Add tòpik",
- "vector-action-delete": "Delet",
- "vector-action-move": "Muf",
- "vector-action-protect": "Protèkt",
- "vector-view-create": "Kreat",
- "vector-view-edit": "Chenj",
- "vector-view-history": "Luk historia",
- "vector-view-view": "Rid",
- "vector-view-viewsource": "Luk dhi sòrs"
-}
+++ /dev/null
-{
- "vector-view-edit": "تَرتیٖب دِیُن",
- "vector-view-view": "پَرُن"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Purodha"
- ]
- },
- "skinname-vector": "Vektor",
- "vector.css": "/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Vector“ */",
- "vector.js": "/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch \"Vector\" jescheck */",
- "vector-action-addsection": "Ne neue Afschnet onge draan!",
- "vector-action-delete": "Fottschmiiße!",
- "vector-action-move": "Ömnänne!",
- "vector-action-protect": "Schöze!",
- "vector-action-undelete": "Zerökholle!",
- "vector-action-unprotect": "Schoz ändere!",
- "vector-view-create": "Neu Schriive!",
- "vector-view-edit": "Ändere!",
- "vector-view-history": "Versione zeije!",
- "vector-view-view": "Lesse!",
- "vector-view-viewsource": "Wikitex aanlooere!"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ferhengvan",
- "Gomada"
- ]
- },
- "vector-action-addsection": "Mijarekê lê zêde bike",
- "vector-action-delete": "Jê bibe",
- "vector-action-move": "Nav biguherîne",
- "vector-action-protect": "Biparêze",
- "vector-action-undelete": "Jê nebe",
- "vector-action-unprotect": "Parastinê rake",
- "vector-view-create": "Çêke",
- "vector-view-edit": "Biguherîne",
- "vector-view-history": "Dîrokê bibîne",
- "vector-view-view": "Bixwîne",
- "vector-view-viewsource": "Çavkaniyan bibîne"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Comp1089"
- ]
- },
- "vector-action-move": "Ним вежны",
- "vector-view-edit": "Вежны",
- "vector-view-view": "Лыддьыны"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kernoweger",
- "Kw-Moon",
- "Nrowe"
- ]
- },
- "vector-action-addsection": "Keworra testen",
- "vector-action-delete": "Dilea",
- "vector-action-move": "Gwaya",
- "vector-action-protect": "Difres",
- "vector-action-undelete": "Disdhilea",
- "vector-action-unprotect": "Chanjya difresans",
- "vector-view-create": "Gwruthyl",
- "vector-view-edit": "Chanjya",
- "vector-view-history": "Gweles an istori",
- "vector-view-view": "Redya",
- "vector-view-viewsource": "Gweles an bennfenten"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Chorobek",
- "Growingup",
- "Ztimur",
- "Викиней"
- ]
- },
- "vector-action-addsection": "Тема кошуу",
- "vector-action-delete": "Өчүрүү",
- "vector-action-move": "Аталышын өзгөртүү",
- "vector-action-protect": "Коргоо",
- "vector-action-undelete": "Калыбына келтирүү",
- "vector-action-unprotect": "Коргоону өзгөртүү",
- "vector-view-create": "Түзүү",
- "vector-view-edit": "Оңдоо",
- "vector-view-history": "Тарыхын кароо",
- "vector-view-view": "Окуу",
- "vector-view-viewsource": "Кайнарын кароо"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "UV"
- ]
- },
- "vector-action-addsection": "Partem novam addere",
- "vector-action-delete": "Delere",
- "vector-action-move": "Movere",
- "vector-action-protect": "Protegere",
- "vector-action-undelete": "Restituere",
- "vector-action-unprotect": "Protectionem mutare",
- "vector-view-create": "Creare",
- "vector-view-edit": "Recensere",
- "vector-view-history": "Historiam inspicere",
- "vector-view-view": "Legere",
- "vector-view-viewsource": "Fontem inspicere",
- "vector-more-actions": "Plus"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Universal Life"
- ]
- },
- "vector-action-addsection": "Ajustar sujeto",
- "vector-action-delete": "Efassar",
- "vector-action-move": "Taşirear",
- "vector-action-protect": "Guadrar",
- "vector-action-undelete": "Traer atrás",
- "vector-action-unprotect": "Trocar proteksyon",
- "vector-view-create": "Criar",
- "vector-view-edit": "Trocar",
- "vector-view-history": "Ver la istoria",
- "vector-view-view": "Meldar",
- "vector-view-viewsource": "Ver su manadero"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Robby"
- ]
- },
- "vector-skin-desc": "Modern Versioun vu Monobook mat frëschem Look a ville Verbesserunge vun der Benotzerfrëndlechkeet",
- "vector-action-addsection": "Sujet derbäisetzen",
- "vector-action-delete": "Läschen",
- "vector-action-move": "Réckelen",
- "vector-action-protect": "Spären",
- "vector-action-undelete": "Restauréieren",
- "vector-action-unprotect": "Spär änneren",
- "vector-view-create": "Uleeën",
- "vector-view-edit": "Änneren",
- "vector-view-history": "Versioune weisen",
- "vector-view-view": "Liesen",
- "vector-view-viewsource": "Quellcode weisen",
- "vector-more-actions": "Méi"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lezgia",
- "Migraghvi",
- "Namik",
- "Soul Train"
- ]
- },
- "vector-action-addsection": "Тема алава авун",
- "vector-action-delete": "Алудун",
- "vector-action-move": "ТӀвар эхцигун",
- "vector-action-protect": "Хуьн",
- "vector-action-undelete": "ТуькӀуьр хъувун",
- "vector-action-unprotect": "Хуьн дегишарун",
- "vector-view-create": "ТуькӀуьрун",
- "vector-view-edit": "Дуьзарин",
- "vector-view-history": "Тарихдиз килигун",
- "vector-view-view": "КӀелун",
- "vector-view-viewsource": "Чешме къалурун"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kizito"
- ]
- },
- "vector-action-addsection": "Tandikawo emboozi endala",
- "vector-action-delete": "Gyawo olupapula luno",
- "vector-action-move": "Simbuliza",
- "vector-action-protect": "Ssiba",
- "vector-action-undelete": "Zawo",
- "vector-action-unprotect": "Kyusa ebikugizo",
- "vector-view-create": "Lukolewo",
- "vector-view-edit": "Kyusa",
- "vector-view-history": "Ennanda ya fayiro eno",
- "vector-view-view": "Soma",
- "vector-view-viewsource": "Kebera obulambike obw'ennono obw'olupapula luno"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ooswesthoesbes"
- ]
- },
- "vector-action-addsection": "Voog köpke toe",
- "vector-action-delete": "Ewegsjaffe",
- "vector-action-move": "Verplaats",
- "vector-action-protect": "Besjirm",
- "vector-action-undelete": "Plaats trök",
- "vector-action-unprotect": "Anger beveiliging",
- "vector-view-create": "Maak aan",
- "vector-view-edit": "Bewirk",
- "vector-view-history": "Bekiek de gesjiedenis",
- "vector-view-view": "Laes",
- "vector-view-viewsource": "Bekiek bróntèks"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gastaz",
- "Giromin Cangiaxo"
- ]
- },
- "vector-action-addsection": "Azónzi discusción",
- "vector-action-delete": "Scancella",
- "vector-action-move": "Mescia",
- "vector-action-protect": "Protezi",
- "vector-action-undelete": "Recuppera",
- "vector-action-unprotect": "Cangia a proteçion",
- "vector-view-create": "Crea",
- "vector-view-edit": "Càngia",
- "vector-view-history": "Fanni védde a Stöia",
- "vector-view-view": "Lêzi",
- "vector-view-viewsource": "Veddi a sorgénte"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Warbola"
- ]
- },
- "vector-action-addsection": "Pangid jūrõ tēma",
- "vector-action-delete": "Kištāntõgid jarā",
- "vector-action-move": "Vīž jarā",
- "vector-action-protect": "Kaitsõmi",
- "vector-view-create": "Lūo",
- "vector-view-edit": "Redigīer",
- "vector-view-history": "Nägţ istōrijõ",
- "vector-view-view": "Vaņ",
- "vector-view-viewsource": "Vaņ ovāt tekstõ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Insübrich",
- "Ninonino"
- ]
- },
- "vector-action-addsection": "Giunta argument",
- "vector-action-delete": "Scancela",
- "vector-action-move": "Sposta",
- "vector-action-protect": "Prutegg",
- "vector-action-undelete": "Recüpera",
- "vector-action-unprotect": "Càmbia la protesiù",
- "vector-view-create": "Crea",
- "vector-view-edit": "Mudifega",
- "vector-view-history": "Varda la storia",
- "vector-view-view": "Legg",
- "vector-view-viewsource": "Varda el codes",
- "vector-more-actions": "Amò"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Eruedin",
- "Moyogo"
- ]
- },
- "vector-action-addsection": "Kobakisa mpɔ̂",
- "vector-action-delete": "Kolímwisa",
- "vector-action-move": "Kobóngola nkómbó",
- "vector-action-protect": "Kobátela",
- "vector-action-undelete": "Kolímwisa tɛ̂",
- "vector-action-unprotect": " Kobátela tɛ̂",
- "vector-view-create": "Kokela",
- "vector-view-edit": "Kobɔngisa",
- "vector-view-history": "Komɔ́nisa mokóló",
- "vector-view-view": "Kotánga",
- "vector-view-viewsource": "Komɔ́nisa mosólo"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mogoeilor"
- ]
- },
- "vector-action-addsection": "موضوع اضاف بكيد",
- "vector-action-delete": "پاکسا کردن",
- "vector-action-move": "جاوه جا بوئيت",
- "vector-action-protect": "حمايت بكيد",
- "vector-action-undelete": "حذف نبيئني",
- "vector-action-unprotect": "حمايت آلشت بكيد",
- "vector-view-create": "راس كردن",
- "vector-view-edit": "ويرايشت",
- "vector-view-history": "ديئن ويرگار",
- "vector-view-view": "حنن",
- "vector-view-viewsource": "سرچشمه نه بوينيت"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Garas",
- "Homo",
- "Matasg",
- "Perkunas"
- ]
- },
- "skinname-vector": "Vektorinė",
- "vector-action-addsection": "Pridėti temą",
- "vector-action-delete": "Ištrinti",
- "vector-action-move": "Pervardyti",
- "vector-action-protect": "Užrakinti",
- "vector-action-undelete": "Atkurti",
- "vector-action-unprotect": "Keisti apsaugą",
- "vector-view-create": "Kurti",
- "vector-view-edit": "Redaguoti",
- "vector-view-history": "Istorija",
- "vector-view-view": "Skaityti",
- "vector-view-viewsource": "Žiūrėti kodą"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dark Eagle"
- ]
- },
- "vector-action-addsection": "Dalikt padaļu",
- "vector-action-delete": "Iztreit",
- "vector-action-move": "Puorceļt",
- "vector-action-protect": "Apsorguot",
- "vector-action-unprotect": "Puormeit apsardzeibu",
- "vector-view-edit": "Pataiseit",
- "vector-view-history": "Viesture",
- "vector-view-view": "Vērtīs"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "RMizo"
- ]
- },
- "vector-action-addsection": "Thupui belhna",
- "vector-action-delete": "Paihna",
- "vector-action-move": "Sawnna",
- "vector-action-protect": "Venhimna",
- "vector-action-undelete": "Lak kir lehna",
- "vector-action-unprotect": "Venhimna dinhmun tidanglam rawh",
- "vector-view-create": "Siamna",
- "vector-view-edit": "Siamţhatna",
- "vector-view-history": "Hunhlui-chanchin",
- "vector-view-view": "Chhiarna",
- "vector-view-viewsource": "A hnar enna"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "علی ساکی لرستانی"
- ]
- },
- "vector-view-history": "دیئن تاریخچه",
- "vector-view-view": "هوندن"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Marozols",
- "Papuass"
- ]
- },
- "vector-action-addsection": "Jauna sadaļa",
- "vector-action-delete": "Dzēst",
- "vector-action-move": "Pārvietot",
- "vector-action-protect": "Aizsargāt",
- "vector-action-undelete": "Atjaunot",
- "vector-action-unprotect": "Mainīt aizsardzību",
- "vector-view-create": "Izveidot",
- "vector-view-edit": "Labot",
- "vector-view-history": "Hronoloģija",
- "vector-view-view": "Skatīt",
- "vector-view-viewsource": "Aplūkot kodu",
- "vector-more-actions": "Vairāk"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Justincheng12345"
- ]
- },
- "skinname-vector": "動力",
- "vector.css": "/* 此之 CSS 用於動力面之簿也 */",
- "vector.js": "/* 此之JavaScript將載於用動力面之簿 */",
- "vector-action-addsection": "入題",
- "vector-action-delete": "刪",
- "vector-action-move": "遷",
- "vector-action-protect": "緘",
- "vector-action-undelete": "覽刪",
- "vector-action-unprotect": "啟",
- "vector-view-create": "立",
- "vector-view-edit": "纂",
- "vector-view-history": "覽史",
- "vector-view-view": "閱",
- "vector-view-viewsource": "覽源"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bombola",
- "Ceas08",
- "Erdemaslancan"
- ]
- },
- "vector-action-delete": "Jili",
- "vector-action-move": "Tori",
- "vector-action-protect": "İçvi",
- "vector-view-create": "dokʼidi",
- "vector-view-edit": "Doktiri",
- "vector-view-view": "İǩitxi"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ggajendra",
- "Umeshberma"
- ]
- },
- "skinname-vector": "सदिश",
- "vector-action-addsection": "विचार-बिन्दु जोड़ू",
- "vector-action-delete": "मेटाउ",
- "vector-action-move": "घसकाउ",
- "vector-action-protect": "रक्षण करू",
- "vector-action-undelete": "आपस लाउ",
- "vector-action-unprotect": "सुरक्षा बदलू",
- "vector-view-create": "बनाउ",
- "vector-view-edit": "सम्पादन करू",
- "vector-view-history": "इतिहास देखू",
- "vector-view-view": "पढ़ू",
- "vector-view-viewsource": "जड़ि देखू"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "StefanusRA"
- ]
- },
- "vector-action-addsection": "Nambah topik",
- "vector-action-delete": "Busek",
- "vector-action-move": "Pindah",
- "vector-action-protect": "Reksa",
- "vector-action-undelete": "Batalna pambusakan",
- "vector-action-unprotect": "Owahi pangreksan",
- "vector-view-create": "Gawe",
- "vector-view-edit": "Sunting",
- "vector-view-history": "Sajarah kaca",
- "vector-view-view": "Waca",
- "vector-view-viewsource": "Deleng sumbere"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Numulunj pilgae"
- ]
- },
- "vector-action-addsection": "Поладомс мезень колга корхтамс",
- "vector-action-delete": "Нардамс",
- "vector-action-move": "Шашфтомс",
- "vector-action-protect": "Араламс",
- "vector-action-undelete": "Мърдафтомс",
- "vector-action-unprotect": "Араламать полафтомс",
- "vector-view-create": "Тиемс",
- "vector-view-edit": "Петнемс",
- "vector-view-history": "История няфтемс",
- "vector-view-view": "Морафтомс",
- "vector-view-viewsource": "Лисьма няфтемс"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Jagwar"
- ]
- },
- "vector-action-addsection": "Hanampy lohahevitra",
- "vector-action-delete": "Fafana",
- "vector-action-move": "Hanolo anarana",
- "vector-action-protect": "Arovy",
- "vector-action-undelete": "Avereno",
- "vector-action-unprotect": "Hanala ny fiarovana",
- "vector-view-create": "Foronona",
- "vector-view-edit": "Hanova",
- "vector-view-history": "Hijery ny tantara",
- "vector-view-view": "Hamaky",
- "vector-view-viewsource": "Hijery fango"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Azim",
- "Sergey Ivanov",
- "Сай",
- "Санюн Вадик"
- ]
- },
- "vector-action-addsection": "У ӱжашым тӱҥалаш",
- "vector-action-delete": "Шӧраш",
- "vector-action-move": "Лӱмым вашталташ",
- "vector-action-protect": "Тӧрлатымаш деч аралаш",
- "vector-action-undelete": "Шӧрымым пӧртылаш",
- "vector-action-unprotect": "Оролым вашталташ",
- "vector-view-create": "Ышташ",
- "vector-view-edit": "Тӧрлаташ",
- "vector-view-history": "Эртымгорным ончалаш",
- "vector-view-view": "Лудаш",
- "vector-view-viewsource": "Тӱҥалтыш текстым ончалаш"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Piwaiwaka"
- ]
- },
- "vector-view-view": "Tirohia"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Amqui"
- ]
- },
- "vector-action-move": "Ejigliwsit",
- "vector-view-create": "Etlitoq",
- "vector-view-view": "Egiljet"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Iwan Novirion",
- "Luthfi94",
- "VoteITP"
- ]
- },
- "skinname-vector": "Vektor",
- "vector-action-addsection": "Bagian baru",
- "vector-action-delete": "Hapuih",
- "vector-action-move": "Pindahkan",
- "vector-action-protect": "Linduangkan",
- "vector-action-undelete": "Pambatalan pangapuihan",
- "vector-action-unprotect": "Tuka palinduangan",
- "vector-view-create": "Buek",
- "vector-view-edit": "Suntiang",
- "vector-view-history": "Riwayaik",
- "vector-view-view": "Baco",
- "vector-view-viewsource": "Caliak sumber"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bjankuloski06",
- "Brest"
- ]
- },
- "skinname-vector": "Векторско",
- "vector-skin-desc": "Современа верзија на рувото МоноБук со свеж изглед и многу подобрувања на употребливоста",
- "vector.css": "/* Тука поставениот CSS се однесува на корисниците на рувото „Векторско“ */",
- "vector.js": "/* Тука поставениот JavaScript ќе им се вчитува на корисниците што го користат рувото „Векторско“ */",
- "vector-action-addsection": "Додај тема",
- "vector-action-delete": "Избриши",
- "vector-action-move": "Премести",
- "vector-action-protect": "Заштити",
- "vector-action-undelete": "Врати",
- "vector-action-unprotect": "Измени заштита",
- "vector-view-create": "Создај",
- "vector-view-edit": "Уреди",
- "vector-view-history": "Историја",
- "vector-view-view": "Читај",
- "vector-view-viewsource": "Извор",
- "vector-more-actions": "Повеќе"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Anoopan",
- "Praveenp"
- ]
- },
- "skinname-vector": "വെക്റ്റർ",
- "vector.css": "/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. വെക്റ്റർ ദൃശ്യരൂപത്തിനു ബാധകമായിരിക്കും*/",
- "vector.js": "/*ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് വെക്റ്റർ ദൃശ്യരൂപം ഉപയോഗിക്കുന്ന ഉപയോക്താക്കൾക്ക് ബാധകമായിരിക്കും*/",
- "vector-action-addsection": "വിഷയം ചേർക്കുക",
- "vector-action-delete": "മായ്ക്കുക",
- "vector-action-move": "തലക്കെട്ട് മാറ്റുക",
- "vector-action-protect": "സംരക്ഷിക്കുക",
- "vector-action-undelete": "മായ്ക്കപ്പെട്ടത് പുനഃസ്ഥാപിക്കുക",
- "vector-action-unprotect": "സംരക്ഷണത്തിൽ മാറ്റംവരുത്തുക",
- "vector-view-create": "സൃഷ്ടിക്കുക",
- "vector-view-edit": "തിരുത്തുക",
- "vector-view-history": "നാൾവഴി കാണുക",
- "vector-view-view": "വായിക്കുക",
- "vector-view-viewsource": "മൂലരൂപം കാണുക",
- "vector-more-actions": "കൂടുതൽ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Chinneeb",
- "MongolWiki",
- "Wisdom"
- ]
- },
- "vector-action-addsection": "Сэдэв нэмэх",
- "vector-action-delete": "Устгах",
- "vector-action-move": "Зөөх",
- "vector-action-protect": "Хамгаалах",
- "vector-action-undelete": "Үл устгах",
- "vector-action-unprotect": "Хамгаалалтаа солих",
- "vector-view-create": "Үүсгэх",
- "vector-view-edit": "Засварлах",
- "vector-view-history": "Түүх",
- "vector-view-view": "Унших",
- "vector-view-viewsource": "Кодыг харах"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Minggantu"
- ]
- },
- "vector-action-delete": "Dabgire",
- "vector-action-move": "Guribure",
- "vector-action-protect": "Karmara",
- "vector-view-create": "Ilibure",
- "vector-view-edit": "banjibume arara",
- "vector-view-history": "ere šu wen i suduri be baicara",
- "vector-view-view": "hūlara",
- "vector-view-viewsource": "da šu wen be baicara"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kaajawa",
- "V.narsikar"
- ]
- },
- "skinname-vector": "सदिश",
- "vector-action-addsection": "विषय जोडा",
- "vector-action-delete": "वगळा",
- "vector-action-move": "स्थानांतरण",
- "vector-action-protect": "सुरक्षित करा",
- "vector-action-undelete": "वगळलेले पुनर्स्थापित करा",
- "vector-action-unprotect": "सुरक्षितता बदला",
- "vector-view-create": "तयार करा",
- "vector-view-edit": "संपादन",
- "vector-view-history": "इतिहास पहा",
- "vector-view-view": "वाचा",
- "vector-view-viewsource": "स्रोत पहा",
- "vector-more-actions": "अधिक"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Amdf"
- ]
- },
- "vector-action-delete": "Карангдаш",
- "vector-action-move": "Лӹмӹм вашталташ",
- "vector-action-protect": "Ӹшӹклӓш",
- "vector-view-create": "Ӹштӓш",
- "vector-view-edit": "Тӧрлӹмӓш",
- "vector-view-history": "Историм анжымаш",
- "vector-view-view": "Лыдмаш",
- "vector-view-viewsource": "Сек пӹтӓриш кодым анжалаш"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Anakmalaysia",
- "Aurora",
- "Pizza1016"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Versi MonoBook yang moden dengan rupa yang segar dan banyak pembaikan kepada kegunaan.",
- "vector.css": "/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Vector */",
- "vector.js": "/ * Sebarang JavaScript di sini akan dimuatkan untuk pengguna-pengguna yang menggunakan kulit Vector * /",
- "vector-action-addsection": "Buka topik",
- "vector-action-delete": "Hapus",
- "vector-action-move": "Pindah",
- "vector-action-protect": "Lindung",
- "vector-action-undelete": "Nyahhapus",
- "vector-action-unprotect": "Ubah perlindungan",
- "vector-view-create": "Cipta",
- "vector-view-edit": "Sunting",
- "vector-view-history": "Lihat sejarah",
- "vector-view-view": "Baca",
- "vector-view-viewsource": "Lihat sumber",
- "vector-more-actions": "Lain"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Chrisportelli",
- "Leli Forte"
- ]
- },
- "vector-action-addsection": "Żid diskussjoni",
- "vector-action-delete": "Ħassar",
- "vector-action-move": "Mexxi",
- "vector-action-protect": "Ipproteġi",
- "vector-action-undelete": "Irkupra",
- "vector-action-unprotect": "Biddel il-protezzjoni",
- "vector-view-create": "Oħloq",
- "vector-view-edit": "Editja",
- "vector-view-history": "Ara l-kronoloġija",
- "vector-view-view": "Aqra",
- "vector-view-viewsource": "Ara s-sors",
- "vector-more-actions": "Aktar"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mahali syarifuddin"
- ]
- },
- "vector-view-view": "Baco",
- "vector-view-viewsource": "Jingok sumber"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lionslayer",
- "Myanmars"
- ]
- },
- "vector-action-addsection": "အကြောင်းအရာအသစ် ထပ်ထည့်ရန်",
- "vector-action-delete": "ဖျက်ပါ",
- "vector-action-move": "ရွှေ့ပါ",
- "vector-action-protect": "ထိမ်းသိမ်းပါ",
- "vector-action-undelete": "မဖျက်တော့ရန်",
- "vector-action-unprotect": "ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
- "vector-view-create": "စတင်ရေးသားရန်",
- "vector-view-edit": "ပြင်ရန်",
- "vector-view-history": "ရာဇဝင်ကြည့်ရန်",
- "vector-view-view": "ဖတ်ရန်",
- "vector-view-viewsource": "ရင်းမြစ်ကို ကြည့်ရန်"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Botuzhaleny-sodamo"
- ]
- },
- "vector-action-addsection": "Поладомс мезде кортамс",
- "vector-action-delete": "Нардамс",
- "vector-action-move": "Печтевтемс",
- "vector-action-protect": "Аравтомс ванстомас",
- "vector-action-undelete": "Вельмевтемс нардазенть",
- "vector-action-unprotect": "Полавтомс ванстоманзо",
- "vector-view-create": "Теемс-Шкамс",
- "vector-view-edit": "Витнемс-петнемс",
- "vector-view-history": "Ваномс юронзо-путовксонзо",
- "vector-view-view": "Ловномс",
- "vector-view-viewsource": "Ваномс косто саезь"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mjbmr",
- "محک"
- ]
- },
- "vector-action-addsection": "ترنه گپ بزوئن",
- "vector-action-delete": "پاک هاکردن",
- "vector-action-move": "دکش هاکردن",
- "vector-action-protect": "زلفن بزوئن",
- "vector-action-undelete": "دباره بنویشته بیّن",
- "vector-action-unprotect": "زلفن عوض هاکردن",
- "vector-view-create": "بساتن",
- "vector-view-edit": "دچیین",
- "vector-view-history": "تاریخچه ره بَدیین",
- "vector-view-view": "بخوندستن",
- "vector-view-viewsource": "ونه منبع ره هارشائن"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ricardo gs"
- ]
- },
- "vector-action-delete": "Ticpolōz",
- "vector-action-move": "Ticzacāz",
- "vector-action-protect": "Ticquīxtīz",
- "vector-view-create": "Ticchīhuāz",
- "vector-view-edit": "Ticpatlāz",
- "vector-view-history": "Tlahcuilōlli tlahcuilōlloh",
- "vector-view-view": "Tāmapōhuaz",
- "vector-view-viewsource": "Tiquittāz in mēyalli"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ianbu"
- ]
- },
- "vector-action-addsection": "Ke chi̍t-ê toān-lo̍h",
- "vector-action-delete": "Thâi",
- "vector-action-move": "Sóa khì",
- "vector-action-protect": "Pó-hō·",
- "vector-action-undelete": "chhú-siau thâi tiàu",
- "vector-action-unprotect": "kái pó-hō·",
- "vector-view-create": "Khai-sí siá",
- "vector-view-edit": "Siu-kái",
- "vector-view-history": "khoàⁿ le̍k-sú",
- "vector-view-view": "Tha̍k",
- "vector-view-viewsource": "Khoàⁿ goân-sú lōe-iông",
- "vector-more-actions": "閣看"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Chelin"
- ]
- },
- "vector-action-addsection": "Aggiunge chiacchierata",
- "vector-action-delete": "Scancèlla",
- "vector-action-move": "Spusta",
- "vector-action-protect": "Prutegge",
- "vector-action-undelete": "Ripristina",
- "vector-action-unprotect": "Càgna prutezzione",
- "vector-view-create": "Cria",
- "vector-view-edit": "Càgna",
- "vector-view-history": "Vere cronologgia",
- "vector-view-view": "Legge",
- "vector-view-viewsource": "Vere sorgente"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Danmichaelo",
- "Event",
- "Nghtwlkr"
- ]
- },
- "vector-skin-desc": "Moderne versjon av MonoBook med et friskt utseende og mange bruksforbedringer",
- "vector-action-addsection": "Nytt emne",
- "vector-action-delete": "Slett",
- "vector-action-move": "Flytt",
- "vector-action-protect": "Beskytt",
- "vector-action-undelete": "Gjenopprett",
- "vector-action-unprotect": "Endre beskyttelse",
- "vector-view-create": "Opprett",
- "vector-view-edit": "Rediger",
- "vector-view-history": "Vis historikk",
- "vector-view-view": "Les",
- "vector-view-viewsource": "Vis kilden",
- "vector-more-actions": "Mer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Servien"
- ]
- },
- "vector-action-addsection": "Niej onderwarp",
- "vector-action-delete": "Vortdoon",
- "vector-action-move": "Herneumen",
- "vector-action-protect": "Beveiligen",
- "vector-action-undelete": "Weerummeplaotsen",
- "vector-action-unprotect": "Beveiliging wiezigen",
- "vector-view-create": "Anmaken",
- "vector-view-edit": "Bewarken",
- "vector-view-history": "Geschiedenisse bekieken",
- "vector-view-view": "Lezen",
- "vector-view-viewsource": "Brontekste bekieken",
- "vector-more-actions": "Meer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Slomox",
- "Zylbath"
- ]
- },
- "vector-action-addsection": "Thema tofögen",
- "vector-action-delete": "Wegdoon",
- "vector-action-move": "Schuven",
- "vector-action-protect": "Schulen",
- "vector-action-undelete": "Wedderhalen",
- "vector-action-unprotect": "Siedenschuul ännern",
- "vector-view-create": "Opstellen",
- "vector-view-edit": "Ännern",
- "vector-view-history": "Historie bekieken",
- "vector-view-view": "Lesen",
- "vector-view-viewsource": "Borntext bekieken"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Bhawani Gautam",
- "RajeshPandey",
- "सरोज कुमार ढकाल"
- ]
- },
- "skinname-vector": "भेक्टर",
- "vector.css": "/* यहाँ राखिएको CSS ले भेक्टर स्किनको प्रयोगकर्ताहरुलाई प्रभावित गर्ने छ */",
- "vector-action-addsection": "विषय थप्नुहोस",
- "vector-action-delete": "हटाउने",
- "vector-action-move": "सार्ने",
- "vector-action-protect": "सुरक्षित गर्ने",
- "vector-action-undelete": "हटाएको रद्द गर्ने",
- "vector-action-unprotect": "सुरक्षा परिवर्तन गर्ने",
- "vector-view-create": "सृजना गर्ने",
- "vector-view-edit": "सम्पादन",
- "vector-view-history": "इतिहास हेर्ने",
- "vector-view-view": "पढ्ने",
- "vector-view-viewsource": "स्रोत हेर्ने"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Eukesh"
- ]
- },
- "vector-action-move": "संकादिसँ",
- "vector-view-create": "दयेकादिसँ",
- "vector-view-edit": "सम्पादन",
- "vector-view-history": "इतिहास स्वयादिसँ",
- "vector-view-view": "ब्वनादिसँ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Calak",
- "Romaine",
- "SPQRobin",
- "Siebrand",
- "Troefkaart",
- "Sjoerddebruin"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Moderne versie van MonoBook met een fris uiterlijk en verbeteringen op het gebied van gebruiksvriendelijkheid",
- "vector.css": "/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */",
- "vector.js": "/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */",
- "vector-action-addsection": "Kopje toevoegen",
- "vector-action-delete": "Verwijderen",
- "vector-action-move": "Hernoemen",
- "vector-action-protect": "Beveiligen",
- "vector-action-undelete": "Terugplaatsen",
- "vector-action-unprotect": "Beveiliging wijzigen",
- "vector-view-create": "Aanmaken",
- "vector-view-edit": "Bewerken",
- "vector-view-history": "Geschiedenis weergeven",
- "vector-view-view": "Lezen",
- "vector-view-viewsource": "Brontekst bekijken",
- "vector-more-actions": "Meer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gunnernett",
- "Njardarlogar"
- ]
- },
- "vector-action-addsection": "Nytt emne",
- "vector-action-delete": "Slett",
- "vector-action-move": "Flytt",
- "vector-action-protect": "Vern",
- "vector-action-undelete": "Gjenopprett",
- "vector-action-unprotect": "Endra vern",
- "vector-view-create": "Opprett",
- "vector-view-edit": "Endre",
- "vector-view-history": "Sjå historikken",
- "vector-view-view": "Les",
- "vector-view-viewsource": "Sjå kjelda",
- "vector-more-actions": "Meir"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Malafaya"
- ]
- },
- "vector-action-delete": "Ekarta",
- "vector-view-edit": "Modifika",
- "vector-view-view": "Lekte"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "WikiEoFrEn"
- ]
- },
- "vector-view-create": "Criyaer",
- "vector-view-edit": "Amendaer",
- "vector-view-view": "Luure"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mohau"
- ]
- },
- "vector-action-addsection": "Lokela sererwa",
- "vector-action-delete": "Phumula",
- "vector-action-move": "Huduša",
- "vector-action-protect": "Lota",
- "vector-view-create": "Hlola",
- "vector-view-edit": "Fetola",
- "vector-view-history": "Laetša histori",
- "vector-view-view": "Bala",
- "vector-view-viewsource": "Lebelela mothopo"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Boulaur",
- "Cedric31"
- ]
- },
- "vector.css": "/* Lo CSS plaçat aicí afectarà los utilizaires de l’abilhatge Vector */",
- "vector.js": "/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Vector unicament. */",
- "vector-action-addsection": "Apondre un subjècte",
- "vector-action-delete": "Suprimir",
- "vector-action-move": "Tornar nomenar",
- "vector-action-protect": "Protegir",
- "vector-action-undelete": "Restablir",
- "vector-action-unprotect": "Suprimir la proteccion",
- "vector-view-create": "Crear",
- "vector-view-edit": "Modificar",
- "vector-view-history": "Veire l'istoric",
- "vector-view-view": "Legir",
- "vector-view-viewsource": "Veire la font"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Jnanaranjan Sahu",
- "Psubhashish"
- ]
- },
- "vector-action-addsection": "ନୂଆ ଯୋଡ଼ନ୍ତୁ",
- "vector-action-delete": "ଲିଭାଇବେ",
- "vector-action-move": "ଘୁଞ୍ଚାଇବେ",
- "vector-action-protect": "କିଳିବେ",
- "vector-action-undelete": "ଲିଭାଇବେ ନାହିଁ",
- "vector-action-unprotect": "କିଳିବେ ନାହିଁ",
- "vector-view-create": "ତିଆରି କରନ୍ତୁ",
- "vector-view-edit": "ସମ୍ପାଦନା (Edit)",
- "vector-view-history": "ଇତିହାସ",
- "vector-view-view": "ପଢ଼ନ୍ତୁ",
- "vector-view-viewsource": "ସୋର୍ସ ଦେଖନ୍ତୁ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Amikeco",
- "Bouron"
- ]
- },
- "vector-action-addsection": "Нæуæг ныхас бакæнын",
- "vector-action-delete": "Схафын",
- "vector-action-move": "Ном ивын",
- "vector-action-protect": "Сæхгæнын",
- "vector-action-undelete": "Рацаразын",
- "vector-action-unprotect": "Ивын хъахъхъæд",
- "vector-view-create": "Скæнын",
- "vector-view-edit": "Ивын",
- "vector-view-history": "Истори",
- "vector-view-view": "Кæсын",
- "vector-view-viewsource": "Код кæсын"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Aalam",
- "Babanwalia",
- "Raj Singh",
- "TariButtar"
- ]
- },
- "vector-action-addsection": "ਵਿਸ਼ਾ ਜੋੜੋ",
- "vector-action-delete": "ਹਟਾਓ",
- "vector-action-move": "ਭੇਜੋ",
- "vector-action-protect": "ਸੁਰੱਖਿਆ",
- "vector-action-undelete": "ਹਟਾਉਣਾ-ਵਾਪਸ",
- "vector-action-unprotect": "ਸੁਰੱਖਿਆ ਬਦਲੋ",
- "vector-view-create": "ਬਣਾਓ",
- "vector-view-edit": "ਸੋਧੋ",
- "vector-view-history": "ਅਤੀਤ ਵੇਖੋ",
- "vector-view-view": "ਪੜ੍ਹੋ",
- "vector-view-viewsource": "ਸਰੋਤ ਵੇਖੋ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Katimawan2005",
- "Val2397"
- ]
- },
- "vector-action-addsection": "Dagdagan ing pisasabian",
- "vector-action-delete": "Buran",
- "vector-action-move": "Iyalis",
- "vector-action-protect": "Protectan/kambilan",
- "vector-action-undelete": "Isubli/iurung ya pangabura",
- "vector-action-unprotect": "Idayu ya panga-protecta",
- "vector-view-create": "Maglalang",
- "vector-view-edit": "Alilan",
- "vector-view-history": "Lawen ya ing amlat",
- "vector-view-view": "Basan",
- "vector-view-viewsource": "Lawen ya ing pikuanan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sahaquiel9102"
- ]
- },
- "vector-action-delete": "Cjũcj",
- "vector-action-move": "Quẽese'j",
- "vector-action-protect": "Pjupj",
- "vector-view-edit": "Yu'ptjej",
- "vector-view-view": "Lẽeĩ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Geoleplubo"
- ]
- },
- "vector-action-addsection": "Rajouter un sujeut",
- "vector-action-delete": "Défacer",
- "vector-action-move": "Canger ch'nom",
- "vector-action-protect": "Garantir",
- "vector-action-undelete": "N'poin défacher",
- "vector-action-unprotect": "Canger l'garantie",
- "vector-view-create": "Créer",
- "vector-view-edit": "Éditer",
- "vector-view-history": "Vir l'histoère",
- "vector-view-view": "Lire",
- "vector-view-viewsource": "Vir l'source"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Xqt"
- ]
- },
- "vector-action-delete": "Verwische",
- "vector-action-move": "Ziehe",
- "vector-action-protect": "Schitze",
- "vector-view-create": "Schtaerte",
- "vector-view-edit": "Ennere",
- "vector-view-history": "Gschicht zeige",
- "vector-view-view": "Lese"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Manuae"
- ]
- },
- "vector-action-addsection": "Abschnidd dzufiesche",
- "vector-action-delete": "Lesche",
- "vector-action-move": "Vaschiewe",
- "vector-action-protect": "Schidze",
- "vector-action-undelete": "Zriggbringe",
- "vector-view-create": "Õleesche",
- "vector-view-edit": "Drõ schaffe",
- "vector-view-history": "Dadaigschischd",
- "vector-view-view": "Lese",
- "vector-view-viewsource": "Gwelltegschd zaische"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hemant wikikosh1"
- ]
- },
- "vector-view-create": "रचेतु"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AmaryllisGardener"
- ]
- },
- "vector-view-history": "View histrei"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Matma Rex",
- "Sp5uhe"
- ]
- },
- "skinname-vector": "Wektor",
- "vector-skin-desc": "Odświeżona wersja skórki Książka, z nowym wyglądem i usprawnieniami",
- "vector.css": "/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */",
- "vector.js": "/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */",
- "vector-action-addsection": "Dodaj temat",
- "vector-action-delete": "Usuń",
- "vector-action-move": "Przenieś",
- "vector-action-protect": "Zabezpiecz",
- "vector-action-undelete": "Odtwórz",
- "vector-action-unprotect": "Zmień zabezpieczenie",
- "vector-view-create": "Utwórz",
- "vector-view-edit": "Edytuj",
- "vector-view-history": "Wyświetl historię",
- "vector-view-view": "Czytaj",
- "vector-view-viewsource": "Tekst źródłowy",
- "vector-more-actions": "Więcej"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Borichèt"
- ]
- },
- "vector-action-addsection": "Gionté n'argoment",
- "vector-action-delete": "Scancelé",
- "vector-action-move": "Tramudé",
- "vector-action-protect": "Protege",
- "vector-action-undelete": "Arcuperé",
- "vector-action-unprotect": "Cangé la protession",
- "vector-view-create": "Creé",
- "vector-view-edit": "Modifiché",
- "vector-view-history": "Smon-e la stòria",
- "vector-view-view": "Lese",
- "vector-view-viewsource": "Vëdde la sorgiss"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arslan",
- "Khalid Mahmood"
- ]
- },
- "vector-action-addsection": "مضمون پاؤ",
- "vector-action-delete": "مکاؤ",
- "vector-action-move": "ٹرو",
- "vector-action-protect": "بچاؤ",
- "vector-action-undelete": "واپس لیاؤ",
- "vector-action-unprotect": "تبدیلی بچاؤ",
- "vector-view-create": "بناؤ",
- "vector-view-edit": "لکھو",
- "vector-view-history": "تریخ وکھاؤ",
- "vector-view-view": "پڑھو",
- "vector-view-viewsource": "ویکھو"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Omnipaedista",
- "Sinopeus",
- "ZaDiak"
- ]
- },
- "vector-action-delete": "Σβήσον",
- "vector-action-move": "Ετεροχλάεμαν",
- "vector-action-protect": "Ασπάλιγμαν",
- "vector-action-undelete": "Κλώσιμον",
- "vector-action-unprotect": "Άνοιγμαν",
- "vector-view-create": "Ποίσον",
- "vector-view-edit": "Άλλαξον",
- "vector-view-history": "Τερέστεν ιστορίαν",
- "vector-view-view": "Δεάβασον",
- "vector-view-viewsource": "Τερέστεν κωδικόν"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "A R King"
- ]
- },
- "vector-action-addsection": "Yankwik temaj",
- "vector-action-delete": "Shikishti",
- "vector-action-move": "Shikijkwani",
- "vector-action-undelete": "Shalkwepa",
- "vector-view-create": "Shikchiwa",
- "vector-view-edit": "Shikpata",
- "vector-view-history": "Ken mupatak",
- "vector-view-view": "Shiamatachia",
- "vector-view-viewsource": "Shikita ne codigoj"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Nertiks",
- "Peteris"
- ]
- },
- "vector-action-delete": "Āupausinais",
- "vector-action-move": "Prapīdais",
- "vector-action-protect": "Kūnsteis",
- "vector-action-unprotect": "Etkūnteis",
- "vector-view-create": "Teīkeis",
- "vector-view-edit": "Redigīs",
- "vector-view-history": "Enwaidinnais istōrijan",
- "vector-view-view": "Skaitāis",
- "vector-view-viewsource": "Enwaidinnais appun"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ahmed-Najib-Biabani-Ibrahimkhel"
- ]
- },
- "skinname-vector": "وېکټور",
- "vector.css": "/* د CSS هره بڼه چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */",
- "vector.js": "/* د جاوا هر يو سکرېپټ چې دلته ځای پر ځای کېږي هغه به د وېکټور د پوښ ټولو کارنانو لپاره کار کوي */",
- "vector-action-addsection": "سرليکونه ورگډول",
- "vector-action-delete": "ړنگول",
- "vector-action-move": "لېږدول",
- "vector-action-protect": "ژغورل",
- "vector-action-undelete": "ناړنگول",
- "vector-action-unprotect": "ژغورنه بدلول",
- "vector-view-create": "جوړول",
- "vector-view-edit": "سمول",
- "vector-view-history": "پېښليک کتل",
- "vector-view-view": "لوستل",
- "vector-view-viewsource": "سرچينه کتل"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Cainamarques",
- "Diego Queiroz",
- "Giro720",
- "Helder.wiki",
- 555
- ]
- },
- "vector.js": "/* Qualquer JavaScript aqui colocado afetará os usuários do skin Vector */",
- "vector-action-addsection": "Adicionar tópico",
- "vector-action-delete": "Eliminar",
- "vector-action-move": "Mover",
- "vector-action-protect": "Proteger",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Alterar a proteção",
- "vector-view-create": "Criar",
- "vector-view-edit": "Editar",
- "vector-view-history": "Ver histórico",
- "vector-view-view": "Ler",
- "vector-view-viewsource": "Ver código-fonte",
- "vector-more-actions": "Mais"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Crazymadlover",
- "Giro720",
- "Hamilton Abreu",
- "Malafaya",
- "Vitorvicentevalente",
- "Waldir"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Versão moderna do MonoBook com um visual fresco e várias melhorias de usabilidade",
- "vector.css": "/* Código CSS colocado aqui afectará os utilizadores do tema Vector */",
- "vector.js": "/* Código Javascript colocado aqui será carregado para utilizadores do tema Vector */",
- "vector-action-addsection": "Adicionar tópico",
- "vector-action-delete": "Eliminar",
- "vector-action-move": "Mover",
- "vector-action-protect": "Proteger",
- "vector-action-undelete": "Restaurar",
- "vector-action-unprotect": "Alterar protecção",
- "vector-view-create": "Criar",
- "vector-view-edit": "Editar",
- "vector-view-history": "Ver histórico",
- "vector-view-view": "Ler",
- "vector-view-viewsource": "Ver fonte",
- "vector-more-actions": "Mais"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Darth Kule",
- "EugeneZelenko",
- "Lloffiwr",
- "Shirayuki",
- "Umherirrender",
- "Matma Rex"
- ]
- },
- "skinname-vector": "{{optional}}",
- "vector-skin-desc": "{{desc|what=skin|name=Vector|url=https://www.mediawiki.org/wiki/Skin:Vector}}",
- "vector.css": "{{optional}}",
- "vector.js": "{{optional}}",
- "vector-action-addsection": "Used in the Vector skin. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}",
- "vector-action-delete": "Used in the Vector skin, as the name of a tab at the top of the page. See for example {{canonicalurl:Main_Page|useskin=vector}}\n\n{{Identical|Delete}}",
- "vector-action-move": "Used in the Vector skin, on the tabs at the top of the page. See for example {{canonicalurl:Talk:Main_Page|useskin=vector}}\n\n{{Identical|Move}}",
- "vector-action-protect": "Tab at top of page, in vector skin\n\n{{Identical|Protect}}",
- "vector-action-undelete": "Tab at top of page, in vector skin.\n{{Identical|Undelete}}",
- "vector-action-unprotect": "Tab at top of page, in vector skin.\n{{Identical|Change protection}}",
- "vector-view-create": "Tab label in the Vector skin. See for example {{canonicalurl:Foo|useskin=vector}}\n{{Identical|Create}}",
- "vector-view-edit": "Tab label in the Vector skin. See for example {{canonicalurl:Main_Page|useskin=vector}}\n{{Identical|Edit}}",
- "vector-view-history": "Tab label in the Vector skin. See for example {{canonicalurl:Main_Page|useskin=vector}}\n{{Identical|View history}}",
- "vector-view-view": "Tab label in the Vector skin (verb). See for example {{canonicalurl:Main_Page|useskin=vector}}.\n{{Identical|Read}}",
- "vector-view-viewsource": "Tab label in the Vector skin.\n{{Identical|View source}}",
- "vector-more-actions": "Label in the Vector skin's menu for the less-important or rarer actions which are not shown as tabs (like moving the page, or for sysops deleting or protecting the page), as well as (for users with a narrow viewing window in their browser) the less-important tab actions which the user's browser is unable to fit in. {{Identical|More}}"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AlimanRuna"
- ]
- },
- "vector-action-addsection": "Allwiyta yapay",
- "vector-action-delete": "Qulluy",
- "vector-action-move": "Astay",
- "vector-action-protect": "Amachay",
- "vector-action-undelete": "Qullusqata paqarichiy",
- "vector-action-unprotect": "Amachayta wakinchay",
- "vector-view-create": "Kamariy",
- "vector-view-edit": "Llamk'apuy",
- "vector-view-history": "Wiñay kawsayta qhaway",
- "vector-view-view": "Ñawiriy",
- "vector-view-viewsource": "Pukyu qillqata qhaway",
- "vector-more-actions": "Aswan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sylvain2803"
- ]
- },
- "vector-action-addsection": "Shuk mushuk rimanakuyta kallarina",
- "vector-action-delete": "Pichana",
- "vector-action-move": "Apakuna",
- "vector-action-protect": "Harkana",
- "vector-action-undelete": "Kutin wacharichina",
- "vector-action-unprotect": "Harkayta shukchina",
- "vector-view-create": "Kamarina",
- "vector-view-edit": "Killkana",
- "vector-view-history": "Wiñay kawsayta rikuna",
- "vector-view-view": "Killkakatina",
- "vector-view-viewsource": "Pukyu killkata rikuna"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Clerc",
- "MJohnsson"
- ]
- },
- "vector-action-delete": "horo'i",
- "vector-view-edit": "Haka titika"
-}
+++ /dev/null
-{
- "vector-action-addsection": "Zonta una cjacarèda",
- "vector-action-delete": "Scanzèla",
- "vector-action-move": "Chèmbia nòm",
- "vector-action-protect": "Metti-j una pruteziò",
- "vector-action-undelete": "Armett a post",
- "vector-action-unprotect": "Sbloca"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "MoubarikBelkasim"
- ]
- },
- "vector-action-move": "Smuṭṭi",
- "vector-view-create": "Seɣnu",
- "vector-view-edit": "Ẓṛeg",
- "vector-view-history": "Ẓeṛ amezruy",
- "vector-view-view": "Ɣeṛ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gion-andri"
- ]
- },
- "vector-action-addsection": "Agiuntar chapitel",
- "vector-action-delete": "Stizzar",
- "vector-action-move": "Spustar",
- "vector-action-protect": "Bloccar",
- "vector-action-undelete": "Restituir",
- "vector-action-unprotect": "Midar la protecziun",
- "vector-view-create": "Crear",
- "vector-view-edit": "Modifitgar",
- "vector-view-history": "Cronologia",
- "vector-view-view": "Leger",
- "vector-view-viewsource": "Mussar il code"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Szonja"
- ]
- },
- "vector-action-addsection": "Tilja topikos",
- "vector-action-delete": "Tšuu nikki",
- "vector-action-undelete": "Tšuu paale",
- "vector-view-create": "Luona",
- "vector-view-edit": "Muoka",
- "vector-view-history": "Sik histores",
- "vector-view-view": "Draba",
- "vector-view-viewsource": "Sik navasiinako koodos"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AdiJapan",
- "Danutz",
- "Firilacroco",
- "Minisarm",
- "Strainu"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* CSS plasate aici vor afecta utilizatorii stilului Vector */",
- "vector-action-addsection": "Mesaj nou",
- "vector-action-delete": "Ștergere",
- "vector-action-move": "Redenumire",
- "vector-action-protect": "Protejare",
- "vector-action-undelete": "Recuperare",
- "vector-action-unprotect": "Modificare protecție",
- "vector-view-create": "Creare",
- "vector-view-edit": "Modificare",
- "vector-view-history": "Istoric",
- "vector-view-view": "Lectură",
- "vector-view-viewsource": "Sursă pagină",
- "vector-more-actions": "Mai mult"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Joetaras"
- ]
- },
- "skinname-vector": "Vettore",
- "vector.css": "/* 'U CSS ca se iacchie aqquà 'u 'ndrucane le utinde d'a masckere Vettore */",
- "vector.js": "/* Ogne JavaScript aqquà avène carecate pe le utinde ca ausane 'a masckere Vettore */",
- "vector-action-addsection": "Aggiunge 'na discussiona",
- "vector-action-delete": "Scangille",
- "vector-action-move": "Spuèste",
- "vector-action-protect": "Protegge",
- "vector-action-undelete": "Repristine",
- "vector-action-unprotect": "Cange 'a protezione",
- "vector-view-create": "Ccreje",
- "vector-view-edit": "Cange",
- "vector-view-history": "Vide 'u cunde",
- "vector-view-view": "Ligge",
- "vector-view-viewsource": "Vide 'u sorgende"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ignatus",
- "JenVan",
- "Kaganer",
- "Nemo bis",
- "Okras",
- "Александр Сигачёв"
- ]
- },
- "skinname-vector": "Векторное",
- "vector-skin-desc": "Современная версия MonoBook с обновлённым оформлением и многими улучшениями в юзабилити",
- "vector.css": "/* Размещённый здесь CSS будет применяться к векторной теме оформления */",
- "vector.js": "/* Размещённый здесь код JavaScript будет загружаться пользователям, использующим тему оформления Vector */",
- "vector-action-addsection": "Добавить тему",
- "vector-action-delete": "Удалить",
- "vector-action-move": "Переименовать",
- "vector-action-protect": "Защитить",
- "vector-action-undelete": "Восстановить",
- "vector-action-unprotect": "Изменить защиту",
- "vector-view-create": "Создание",
- "vector-view-edit": "Править",
- "vector-view-history": "История",
- "vector-view-view": "Читать",
- "vector-view-viewsource": "Просмотр разметки",
- "vector-more-actions": "Ещё"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gazeb"
- ]
- },
- "vector-action-addsection": "Придати тему",
- "vector-action-delete": "Вымазати",
- "vector-action-move": "Переменовати",
- "vector-action-protect": "Всокотити",
- "vector-action-undelete": "Обновити",
- "vector-action-unprotect": "Змінити замок",
- "vector-view-create": "Створити",
- "vector-view-edit": "Едітовати",
- "vector-view-history": "Видїти історію",
- "vector-view-view": "Чітати",
- "vector-view-viewsource": "Видїти код"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "D'AroemenenZullenNiVergaan"
- ]
- },
- "vector-action-addsection": "Dimândari nauâ",
- "vector-view-history": "Veḑ istoricu"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Vogone"
- ]
- },
- "vector-action-move": "Imura",
- "vector-view-edit": "Hindura",
- "vector-view-history": "Reba amateka",
- "vector-view-view": "Soma"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kyoww"
- ]
- },
- "vector-view-edit": "直すん",
- "vector-view-view": "読むん"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "NehalDaveND",
- "Shubha"
- ]
- },
- "vector-action-addsection": "विषयः योज्यताम्",
- "vector-action-delete": "अपाक्रियताम्",
- "vector-action-move": "शीर्षकं परिवर्त्यताम्",
- "vector-action-protect": "संरक्ष्यताम्",
- "vector-action-undelete": "नापाकृतं",
- "vector-action-unprotect": "संरक्षणं परिवर्तयतु",
- "vector-view-create": "सृज्यताम्",
- "vector-view-edit": "सम्पाद्यताम्",
- "vector-view-history": "इतिहासः दृश्यताम्",
- "vector-view-view": "पठ्यताम्",
- "vector-view-viewsource": "स्रोतः दृश्यताम्"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "HalanTul"
- ]
- },
- "vector-action-addsection": "Тиэмэ эбии",
- "vector-action-delete": "Сот",
- "vector-action-move": "Аатын уларыт",
- "vector-action-protect": "Уларыйбат гын",
- "vector-action-undelete": "Төннөр",
- "vector-action-unprotect": "Көмүскэлин уларыт",
- "vector-view-create": "Ай",
- "vector-view-edit": "Уларыт",
- "vector-view-history": "Устуоруйатын көрүү",
- "vector-view-view": "Ааҕыы",
- "vector-view-viewsource": "Бэлиэлэрин көрүү"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Albinus",
- "Samar88",
- "Srabony90"
- ]
- },
- "vector-action-addsection": "Asol katha joṛaome",
- "vector-action-delete": "Giḍi",
- "vector-action-move": "Ocoḱ́me",
- "vector-action-protect": "Bańcao",
- "vector-action-undelete": "Bań getgiḍi",
- "vector-action-unprotect": "Bodol rukhiyạ",
- "vector-view-create": "Tearme",
- "vector-view-edit": "So̠mpado̠n",
- "vector-view-history": "Jạṛ ńelme",
- "vector-view-view": "Paṛhaḱme",
- "vector-view-viewsource": "Ńamoḱaḱ ńelme"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "MooRePrabu"
- ]
- },
- "vector-view-view": "ꢗꢾꢮ꣄ꢣꢶ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Andria",
- "Marzedu",
- "Via maxima",
- "Uharteko"
- ]
- },
- "vector-action-addsection": "Giunghe cuntierra",
- "vector-action-delete": "Cantzella",
- "vector-action-move": "Move",
- "vector-action-protect": "Ampara",
- "vector-action-undelete": "Recùpera",
- "vector-view-create": "Crea",
- "vector-view-edit": "Càmbia",
- "vector-view-history": "Càstia istòria",
- "vector-view-view": "Leghe",
- "vector-view-viewsource": "Càstia testu codificadu",
- "vector-more-actions": "Prus"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gmelfi",
- "Melos"
- ]
- },
- "vector-action-addsection": "Agghiunci argumentu",
- "vector-action-delete": "Elìmina",
- "vector-action-move": "Sposta",
- "vector-action-protect": "Pruteggi",
- "vector-action-undelete": "Riprìstina",
- "vector-action-unprotect": "Cancia la prutizzioni",
- "vector-view-create": "Crea",
- "vector-view-edit": "Cancia",
- "vector-view-history": "Talìa a storia",
- "vector-view-view": "Leggi",
- "vector-view-viewsource": "Talìa la fonti",
- "vector-more-actions": "Àutri cosi"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Avicennasis",
- "John Reid",
- "Omnipaedista"
- ]
- },
- "vector-action-addsection": "Eik topic",
- "vector-action-delete": "Delyte",
- "vector-action-move": "Muiv",
- "vector-action-protect": "Fend",
- "vector-action-undelete": "Ondelyte",
- "vector-action-unprotect": "Chynge protection",
- "vector-view-create": "Ceaut",
- "vector-view-edit": "Eedit",
- "vector-view-history": "See histerie",
- "vector-view-view": "Read",
- "vector-view-viewsource": "See Soorce"
-}
+++ /dev/null
-{
- "vector-action-delete": "ڊاھيو",
- "vector-action-move": "چوريو",
- "vector-action-protect": "تحفظيو",
- "vector-action-unprotect": "اڻتحفظيو",
- "vector-view-create": "سرجيو",
- "vector-view-edit": "سنواريو",
- "vector-view-viewsource": "ڪوڊ ڏسو"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Felis",
- "Jun Misugi"
- ]
- },
- "vector-action-addsection": "Aggiungì oggettu",
- "vector-action-delete": "Canzella",
- "vector-action-move": "Ippustha",
- "vector-action-protect": "Pruteggì",
- "vector-view-create": "Cria",
- "vector-view-edit": "Mudifigga",
- "vector-view-history": "Vèdi isthòria",
- "vector-view-view": "Leggi",
- "vector-view-viewsource": "Vèdi fonti"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Paraw2"
- ]
- },
- "vector-action-addsection": "بابەت تازە بدە سەری",
- "vector-action-delete": "بسڕەوە",
- "vector-action-move": "جیوەجی بکە",
- "vector-action-protect": "بپیەرێزەێ",
- "vector-view-create": "درسکردن",
- "vector-view-edit": "وێراشتەێ بکە",
- "vector-view-history": "دیرۆکەگەی بۊن",
- "vector-view-view": "بخوەنە",
- "vector-view-viewsource": "سەرچاوەگەێ بۊن"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Gálaniitoluodda",
- "Jeblad",
- "Trondtr"
- ]
- },
- "vector-action-addsection": "Lasit fáttá",
- "vector-action-delete": "Sihko",
- "vector-action-move": "Sirdde",
- "vector-action-protect": "Suodjal",
- "vector-action-undelete": "Máhcat",
- "vector-action-unprotect": "Rievdat suodjaleami",
- "vector-view-create": "Álggat",
- "vector-view-edit": "Rievdat",
- "vector-view-history": "Geahča historjjá",
- "vector-view-view": "Loga",
- "vector-view-viewsource": "Geahča gáldokoda"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mdkidiri"
- ]
- },
- "vector-action-addsection": "Zîa mbênî lilö daä",
- "vector-action-delete": "Lungûla",
- "vector-action-move": "Sanzêe ïrï",
- "vector-action-protect": "Funga",
- "vector-action-undelete": "Kîri na nî",
- "vector-action-unprotect": "Sanzêe fungä",
- "vector-view-create": "Seka",
- "vector-view-edit": "Sepe",
- "vector-view-history": "Tanda mbai nî",
- "vector-view-view": "Dîko",
- "vector-view-viewsource": "Fa ligbî nî"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hugo.arg"
- ]
- },
- "vector-action-addsection": "Pridietė tema",
- "vector-action-delete": "Trintė",
- "vector-action-move": "Parvadintė",
- "vector-action-protect": "Ožrakintė",
- "vector-action-undelete": "Atkortė",
- "vector-action-unprotect": "Keistė apsauga",
- "vector-view-create": "Sokortė",
- "vector-view-edit": "Taisītė",
- "vector-view-history": "Veizietė istuorėjė",
- "vector-view-view": "Skaitītė",
- "vector-view-viewsource": "Veizietė kuoda"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "OC Ripper"
- ]
- },
- "vector-action-addsection": "Dodaj temu",
- "vector-action-delete": "Brisanje",
- "vector-action-move": "Preusmjeri",
- "vector-action-protect": "Zaštiti",
- "vector-action-undelete": "Vrati obrisano",
- "vector-action-unprotect": "Promijeni zaštitu",
- "vector-view-create": "Napravi",
- "vector-view-edit": "Uredi",
- "vector-view-history": "Pregled historije",
- "vector-view-view": "Čitaj",
- "vector-view-viewsource": "Vidi izvor (source)"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dalinanir"
- ]
- },
- "vector-action-addsection": "Zayd amli",
- "vector-action-delete": "Ḥiyd",
- "vector-action-move": "Smmatti",
- "vector-action-protect": "Ḥbu",
- "vector-action-undelete": "Rard may mayḥiydn",
- "vector-action-unprotect": "Ḥiyd aḥbu",
- "vector-view-create": "Skert",
- "vector-view-edit": "Ara",
- "vector-view-history": "Mel amzruy",
- "vector-view-view": "ɣr",
- "vector-view-viewsource": "Ẓr asagm"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Saiddzone"
- ]
- },
- "vector-action-protect": "ႁေႉၵင်ႈ",
- "vector-view-create": "သၢင်ႈ",
- "vector-view-edit": "မူၼ်ႉမႄး",
- "vector-view-history": "တူၺ်းပိုၼ်း",
- "vector-view-view": "လူတူၺ်း",
- "vector-view-viewsource": "တူၺ်း ငဝ်ႈငႃႇ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Thushara",
- "දසනැබළයෝ",
- "පසිඳු කාවින්ද",
- "සුරනිමල"
- ]
- },
- "vector-action-addsection": "මාතෘකාව එක්කරන්න",
- "vector-action-delete": "මකන්න",
- "vector-action-move": "ගෙනයන්න",
- "vector-action-protect": "ආරක්ෂණය",
- "vector-action-undelete": "මකාදැමීම අවලංගු කරන්න",
- "vector-action-unprotect": "ආරක්ෂණ තත්වය වෙනස් කරන්න",
- "vector-view-create": "තනන්න",
- "vector-view-edit": "සංස්කරණය",
- "vector-view-history": "ඉතිහාසය නරඹන්න",
- "vector-view-view": "කියවන්න",
- "vector-view-viewsource": "මූලාශ්රය නරඹන්න",
- "vector-more-actions": "තවත්"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Helix84",
- "Rudko",
- "Sudo77(new)"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* Tu umiestnené CSS bude ovplyvňovať používateľov štýlu Vector */",
- "vector.js": "/* Tu sa nachádzajúci JavaScript sa načíta používateľom vzhľadu Vector */",
- "vector-action-addsection": "Pridať tému",
- "vector-action-delete": "Zmazať",
- "vector-action-move": "Presunúť",
- "vector-action-protect": "Zamknúť",
- "vector-action-undelete": "Obnoviť",
- "vector-action-unprotect": "Zmeniť stav ochrany",
- "vector-view-create": "Vytvoriť",
- "vector-view-edit": "Upraviť",
- "vector-view-history": "Zobraziť históriu",
- "vector-view-view": "Čítať",
- "vector-view-viewsource": "Zobraziť zdroj",
- "vector-more-actions": "Viac"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dbc334",
- "Smihael",
- "Yerpo"
- ]
- },
- "vector-skin-desc": "Sodobna različica MonoBook s svežim videzom in mnogimi izboljšavami uporabnosti",
- "vector-action-addsection": "Dodaj temo",
- "vector-action-delete": "Izbriši",
- "vector-action-move": "Prestavi",
- "vector-action-protect": "Zaščiti",
- "vector-action-undelete": "Vrni",
- "vector-action-unprotect": "Spremeni zaščito",
- "vector-view-create": "Ustvari",
- "vector-view-edit": "Uredi",
- "vector-view-history": "Zgodovina",
- "vector-view-view": "Preberi",
- "vector-view-viewsource": "Izvorno besedilo",
- "vector-more-actions": "Več"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Przemub",
- "Schläsinger",
- "Timpul",
- "Äberlausitzer"
- ]
- },
- "vector-action-addsection": "Obschnitt hinzufiega",
- "vector-action-delete": "Läscha",
- "vector-action-move": "Verschieba",
- "vector-action-protect": "Schützen",
- "vector-action-undelete": "Wiederherstella",
- "vector-action-unprotect": "Freigahn",
- "vector-view-create": "Erstella",
- "vector-view-edit": "Bearbeita",
- "vector-view-history": "Versionsgeschichte",
- "vector-view-view": "Lessa",
- "vector-view-viewsource": "Quelltext siehn"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "ZQheert"
- ]
- },
- "vector-action-delete": "Lelei",
- "vector-action-move": "Palettei",
- "vector-view-create": "Bua'",
- "vector-view-edit": "edi'",
- "vector-view-view": "Bacai",
- "vector-view-viewsource": "Tilingi assala'na"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Maax"
- ]
- },
- "vector-action-addsection": "Hadal ku dar",
- "vector-action-delete": "Tirtir",
- "vector-action-move": "Wareeji",
- "vector-action-protect": "Difaac",
- "vector-action-undelete": "Ha tirtirin",
- "vector-action-unprotect": "Bedel difaacida",
- "vector-view-create": "Sameey",
- "vector-view-edit": "Wax ka bedel",
- "vector-view-history": "Itusi taariikhda",
- "vector-view-view": "Akhri",
- "vector-view-viewsource": "Itusi xogta"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Dasius",
- "GretaDoci",
- "MicroBoy",
- "Mikullovci11",
- "Olsi"
- ]
- },
- "vector-action-addsection": "Shto një temë",
- "vector-action-delete": "Grise",
- "vector-action-move": "Zhvendose",
- "vector-action-protect": "Mbroje",
- "vector-action-undelete": "Anullo fshirjen",
- "vector-action-unprotect": "Ndrysho mbrojtjen",
- "vector-view-create": "Krijo",
- "vector-view-edit": "Redakto",
- "vector-view-history": "Shiko historikun",
- "vector-view-view": "Lexo",
- "vector-view-viewsource": "Shiko tekstin",
- "vector-more-actions": "Më tepër..."
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Milicevic01",
- "Rancher",
- "Жељко Тодоровић",
- "Михајло Анђелковић"
- ]
- },
- "skinname-vector": "Векторско",
- "vector.css": "/* CSS постављен овде ће утицати на све кориснике теме „Векторско“ */",
- "vector.js": "/* Јаваскрипт постављен овде ће се учитати за све оне који користе тему „Векторско“ */",
- "vector-action-addsection": "Додај тему",
- "vector-action-delete": "Обриши",
- "vector-action-move": "Премести",
- "vector-action-protect": "Заштити",
- "vector-action-undelete": "Врати",
- "vector-action-unprotect": "Промени заштиту",
- "vector-view-create": "Направи",
- "vector-view-edit": "Уреди",
- "vector-view-history": "Историја",
- "vector-view-view": "Читај",
- "vector-view-viewsource": "Изворни код",
- "vector-more-actions": "Више"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Michaello",
- "Milicevic01",
- "Rancher",
- "Жељко Тодоровић"
- ]
- },
- "skinname-vector": "Vektorsko",
- "vector.css": "/* CSS postavljen ovde će uticati na sve korisnike teme „Vektorsko“ */",
- "vector.js": "/* Javaskript postavljen ovde će se učitati za sve one koji koriste temu „Vektorsko“ */",
- "vector-action-addsection": "Dodaj temu",
- "vector-action-delete": "Obriši",
- "vector-action-move": "Premesti",
- "vector-action-protect": "Zaštiti",
- "vector-action-undelete": "Vrati",
- "vector-action-unprotect": "Promeni zaštitu",
- "vector-view-create": "Napravi",
- "vector-view-edit": "Uredi",
- "vector-view-history": "Istorija",
- "vector-view-view": "Čitaj",
- "vector-view-viewsource": "Izvorni kod",
- "vector-more-actions": "Više"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Sibande"
- ]
- },
- "vector-action-addsection": "Ngeta sihloko",
- "vector-action-move": "Khweshisa",
- "vector-view-create": "Create",
- "vector-view-edit": "Hlela",
- "vector-view-history": "Bona umlandvo",
- "vector-view-view": "Fundza"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Pyt"
- ]
- },
- "vector-action-addsection": "Ousnit bietouföigje",
- "vector-action-delete": "Läskje",
- "vector-action-move": "Ferskuuwe",
- "vector-action-protect": "Skutsje",
- "vector-action-undelete": "Wierhäärstaale",
- "vector-action-unprotect": "Siedenskuts annerje",
- "vector-view-create": "Moakje",
- "vector-view-edit": "Beoarbaidje",
- "vector-view-history": "Versionsgeskichte",
- "vector-view-view": "Leese",
- "vector-view-viewsource": "Wältext bekiekje"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kandar"
- ]
- },
- "vector-action-addsection": "Jieun jejer anyar",
- "vector-action-delete": "Hapus",
- "vector-action-move": "Pindahkeun",
- "vector-action-protect": "Konci",
- "vector-action-undelete": "Bolaykeun ngahapus",
- "vector-action-unprotect": "Robah protéksi",
- "vector-view-create": "Jieun",
- "vector-view-edit": "Édit",
- "vector-view-history": "Témbongkeun jujutan",
- "vector-view-view": "Baca",
- "vector-view-viewsource": "Témbongkeun sumber"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Martinwiss",
- "Najami",
- "Skalman",
- "WikiPhoenix",
- "Lokal Profil"
- ]
- },
- "skinname-vector": "Vector",
- "vector-skin-desc": "Modern version av MonoBook med ett nytt utseende och flera användarvänlighetsförbättringar",
- "vector.css": "/* CSS som skrivs här kommer att påverka alla användare av skalet Vector */",
- "vector.js": "/* JavaScript här kommer att laddas för dem som använder skalet Vector */",
- "vector-action-addsection": "Nytt ämne",
- "vector-action-delete": "Radera",
- "vector-action-move": "Flytta",
- "vector-action-protect": "Skrivskydda",
- "vector-action-undelete": "Återställ",
- "vector-action-unprotect": "Ändra skydd",
- "vector-view-create": "Skapa",
- "vector-view-edit": "Redigera",
- "vector-view-history": "Visa historik",
- "vector-view-view": "Visa",
- "vector-view-viewsource": "Visa källa",
- "vector-more-actions": "Mer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Lloffiwr",
- "Muddyb Blast Producer"
- ]
- },
- "vector-action-addsection": "Weka mada",
- "vector-action-delete": "Futa",
- "vector-action-move": "Hamisha",
- "vector-action-protect": "Linda",
- "vector-action-undelete": "Rudisha",
- "vector-action-unprotect": "Badilisha ulinzi",
- "vector-view-create": "Anzisha",
- "vector-view-edit": "Hariri",
- "vector-view-history": "Fungua historia",
- "vector-view-view": "Soma",
- "vector-view-viewsource": "Tazama msimbo"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Britscher",
- "Gaj777",
- "Przemub"
- ]
- },
- "vector-action-addsection": "Nowo tajla",
- "vector-action-delete": "Wyćepej",
- "vector-action-move": "Przećep",
- "vector-action-protect": "Zawrzij",
- "vector-action-undelete": "Wćep",
- "vector-action-unprotect": "Uodymkńij",
- "vector-view-create": "Stwůrz",
- "vector-view-edit": "Sprowjej",
- "vector-view-history": "Uobocz gyszichta",
- "vector-view-view": "Czytej",
- "vector-view-viewsource": "Zdrzůdłowy tekst"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Mayooranathan",
- "Shanmugamp7",
- "Surya Prakash.S.A.",
- "TRYPPN"
- ]
- },
- "vector-action-addsection": "தலைப்பைச் சேர்",
- "vector-action-delete": "நீக்குக",
- "vector-action-move": "நகர்த்தவும்",
- "vector-action-protect": "காக்கவும்",
- "vector-action-undelete": "நீக்கத்தை நிறுத்து",
- "vector-action-unprotect": "காப்பை மாற்று",
- "vector-view-create": "உருவாக்கவும்",
- "vector-view-edit": "தொகு",
- "vector-view-history": "வரலாற்றைக் காட்டவும்",
- "vector-view-view": "படிக்கவும்",
- "vector-view-viewsource": "மூலத்தைக் காட்டவும்"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "NamwikiTL",
- "VASANTH S.N."
- ]
- },
- "vector-action-addsection": "ವಿಷಯ ಸೇರಾಲೆ",
- "vector-action-delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
- "vector-action-move": "ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
- "vector-action-protect": "ಸ೦ರಕ್ಷಿಸಾಲೆ",
- "vector-action-undelete": "ಮಾಜಾವಡೆ",
- "vector-action-unprotect": "ಬದಲಾವಣೆನ್ ರಕ್ಷಿಸಾಲೆ",
- "vector-view-create": " ಸುರು ಮಲ್ಪುಲೆ",
- "vector-view-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
- "vector-view-history": "ಇತಿಹಾಸೊನು ತೂಲೆ",
- "vector-view-view": "ಓದ್ಲೇ",
- "vector-view-viewsource": "ಮೂಲೊನು ತೂಲೆ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Chaduvari",
- "Kiranmayee",
- "Praveen Illa",
- "Ravichandra",
- "Veeven"
- ]
- },
- "skinname-vector": "వెక్టర్",
- "vector-action-addsection": "విషయాన్ని చేర్చు",
- "vector-action-delete": "తొలగించు",
- "vector-action-move": "తరలించు",
- "vector-action-protect": "సంరక్షించు",
- "vector-action-undelete": "తొలగింపును రద్దుచెయ్యి",
- "vector-action-unprotect": "సంరక్షణను మార్చు",
- "vector-view-create": "సృష్టించు",
- "vector-view-edit": "సవరించు",
- "vector-view-history": "చరిత్రను చూడండి",
- "vector-view-view": "చదువు",
- "vector-view-viewsource": "మూలాన్ని చూపించు",
- "vector-more-actions": "మరిన్ని"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "MF-Warburg"
- ]
- },
- "vector-action-protect": "Proteje",
- "vector-view-create": "Kria",
- "vector-view-edit": "Edita",
- "vector-view-history": "Haree istória",
- "vector-view-view": "Lee"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ibrahim"
- ]
- },
- "vector-action-addsection": "Иловаи унвон",
- "vector-action-delete": "Ҳазф",
- "vector-action-move": "Кӯчонидан",
- "vector-action-protect": "Муҳофизат",
- "vector-action-undelete": "Эҳё",
- "vector-action-unprotect": "Тағйири муҳофизат",
- "vector-view-create": "Эҷод",
- "vector-view-edit": "Вироиш",
- "vector-view-history": "Намоиши таърих",
- "vector-view-view": "Хондан",
- "vector-view-viewsource": "Намоиши манбаъ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Liangent"
- ]
- },
- "vector-action-addsection": "Ilovai unvon",
- "vector-action-delete": "Hazf",
- "vector-action-move": "Kūconidan",
- "vector-action-protect": "Muhofizat",
- "vector-action-undelete": "Ehjo",
- "vector-action-unprotect": "Ba dar ovardan az muhofizat",
- "vector-view-create": "Eçod",
- "vector-view-edit": "Viroiş",
- "vector-view-history": "Namoişi ta'rix",
- "vector-view-view": "Xondan",
- "vector-view-viewsource": "Namoişi manba'"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Horus",
- "Octahedron80",
- "Woraponboonkerd"
- ]
- },
- "skinname-vector": "เวกเตอร์",
- "vector.css": "/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */",
- "vector.js": "/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */",
- "vector-action-addsection": "เพิ่มหัวข้อ",
- "vector-action-delete": "ลบ",
- "vector-action-move": "เปลี่ยนชื่อ",
- "vector-action-protect": "ล็อก",
- "vector-action-undelete": "กู้คืน",
- "vector-action-unprotect": "เปลี่ยนการล็อก",
- "vector-view-create": "สร้าง",
- "vector-view-edit": "แก้ไข",
- "vector-view-history": "ดูประวัติ",
- "vector-view-view": "อ่าน",
- "vector-view-viewsource": "ดูโค้ด",
- "vector-more-actions": "เพิ่มเติม"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hanberke"
- ]
- },
- "vector-action-addsection": "Tema goş",
- "vector-action-delete": "Öçür",
- "vector-action-move": "Adyny üýtget",
- "vector-action-protect": "Goraga al",
- "vector-action-undelete": "Öçürmäni yzyna al",
- "vector-action-unprotect": "Goragy üýtget",
- "vector-view-create": "Döret",
- "vector-view-edit": "Üýtget",
- "vector-view-history": "Taryhy gör",
- "vector-view-view": "Oka",
- "vector-view-viewsource": "Çeşmäni gör"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AnakngAraw",
- "Sky Harbor"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* Ang inilagay na CSS dito ay makakaapekto sa mga tagagamit ng pabalat na Vector */",
- "vector.js": "/* Ang anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng pabalat na Vector */",
- "vector-action-addsection": "Magdagdag ng paksa",
- "vector-action-delete": "Burahin",
- "vector-action-move": "Ilipat",
- "vector-action-protect": "Ipagsanggalang",
- "vector-action-undelete": "Alisin ang pagbubura",
- "vector-action-unprotect": "Baguhin ang pagsasanggalang",
- "vector-view-create": "Likhain",
- "vector-view-edit": "Baguhin",
- "vector-view-history": "Tingnan ang kasaysayan",
- "vector-view-view": "Basahin",
- "vector-view-viewsource": "Tingnan ang pinagmulan"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Гусейн"
- ]
- },
- "vector-action-addsection": "Мывзу зијод кардеј",
- "vector-action-delete": "Рәдд кардеј",
- "vector-action-move": "Номи дәгиш кардеј",
- "vector-action-protect": "Мыдофијә кардеј",
- "vector-action-undelete": "Бәрпо кардеј",
- "vector-action-unprotect": "Мыдофијә дәгиш кардеј",
- "vector-view-create": "Офәјеј",
- "vector-view-edit": "Сәрост кардеј",
- "vector-view-history": "Тарых",
- "vector-view-view": "Һандемон",
- "vector-view-viewsource": "Дијә кардеј"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Iketsi",
- "Wantok"
- ]
- },
- "vector-action-delete": "Rausim",
- "vector-action-move": "Surikim",
- "vector-action-protect": "Tambuim",
- "vector-view-create": "Kirapim",
- "vector-view-edit": "Senisim",
- "vector-view-history": "Ol senis",
- "vector-view-view": "Rit",
- "vector-view-viewsource": "Lukim as tok"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arystanbek",
- "Emperyan",
- "Joseph",
- "Stultiwikia",
- "Vito Genovese"
- ]
- },
- "vector-action-addsection": "Konu ekle",
- "vector-action-delete": "Sil",
- "vector-action-move": "Taşı",
- "vector-action-protect": "Koru",
- "vector-action-undelete": "Silinmeyi geri al",
- "vector-action-unprotect": "Korumayı değiştir",
- "vector-view-create": "Oluştur",
- "vector-view-edit": "Düzenle",
- "vector-view-history": "Geçmişi gör",
- "vector-view-view": "Oku",
- "vector-view-viewsource": "Kaynağı gör",
- "vector-more-actions": "Diğer"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ariyo"
- ]
- },
- "vector-action-addsection": "Maḥat Fusoqo ḥaṭo",
- "vector-action-delete": "Slag",
- "vector-action-move": "Mtaxar",
- "vector-action-protect": "Mastar",
- "vector-view-create": "Xlaq",
- "vector-view-edit": "Mşaḥlaf",
- "vector-view-history": "Maktabzabno",
- "vector-view-view": "Qray",
- "vector-view-viewsource": "Maḥway li aMabu³e."
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Thuvack"
- ]
- },
- "vector-action-addsection": "Veka nholoko ya mhaka",
- "vector-action-delete": "Sula",
- "vector-action-move": "Yi sa kunwana",
- "vector-action-protect": "Sirhelela",
- "vector-action-undelete": "Cinca kusula",
- "vector-action-unprotect": "Cinca kusirhelela",
- "vector-view-create": "Tumbuluxa",
- "vector-view-edit": "Lulamisa",
- "vector-view-history": "Languta matimu",
- "vector-view-view": "Hlaya",
- "vector-view-viewsource": "Languta xihlovo"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Don Alessandro",
- "Rinatus",
- "Ильнар",
- "Рашат Якупов"
- ]
- },
- "skinname-vector": "Сызымлы",
- "vector-action-addsection": "Яңа тема өстәү",
- "vector-action-delete": "Бетерү",
- "vector-action-move": "Күчерү",
- "vector-action-protect": "Яклау",
- "vector-action-undelete": "Кайтару",
- "vector-action-unprotect": "Яклауны үзгәртү",
- "vector-view-create": "Төзү",
- "vector-view-edit": "Үзгәртү",
- "vector-view-history": "Тарихын карау",
- "vector-view-view": "Уку",
- "vector-view-viewsource": "Чыганагын карау"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Don Alessandro"
- ]
- },
- "skinname-vector": "Sızımlı",
- "vector-action-addsection": "Yaña tema östäw",
- "vector-action-delete": "Beterü",
- "vector-action-move": "Küçerü",
- "vector-action-protect": "Yaqlaw",
- "vector-action-undelete": "Qaytaru",
- "vector-action-unprotect": "Yaqlawnı beterü",
- "vector-view-create": "Tözü",
- "vector-view-edit": "Üzgärtü",
- "vector-view-history": "Tarixın qaraw",
- "vector-view-view": "Uqu",
- "vector-view-viewsource": "Çığanağın qaraw"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Agilight",
- "Sborsody"
- ]
- },
- "skinname-vector": "Вектор",
- "vector-action-addsection": "Кол сөстү немелээри",
- "vector-action-delete": "Ырадыры",
- "vector-action-move": "Шимчээри",
- "vector-action-protect": "Камгалаары",
- "vector-action-undelete": "Эгидер",
- "vector-action-unprotect": "Камгалалды өскертири",
- "vector-view-create": "Чаяары",
- "vector-view-edit": "Эдер",
- "vector-view-history": "Төөгүнү көөрү",
- "vector-view-view": "Номчуур",
- "vector-view-viewsource": "Дөзү бижиин көөрү"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Moha",
- "Tifinaghes"
- ]
- },
- "skinname-vector": "Vector",
- "vector-action-addsection": "ⵔⵏⵓ ⴰⵙⵏⵜⵍ",
- "vector-action-delete": "ⵓⴽⵓⵙ",
- "vector-action-move": "ⵙⵎⵓⵜⵜⵉ",
- "vector-action-undelete": "ⵙⵙⵓⵖⴰⵍ ⵓⴽⵓⵙ",
- "vector-action-unprotect": "ⴱⴷⴷⴻⵍ ⵜⴰⵙⵜⴰⵏⵜ",
- "vector-view-create": "ⴰⵔⴰ",
- "vector-view-edit": "ⴱⴷⴷⴻⵍ",
- "vector-view-history": "ⵥⵕ ⴰⵎⵣⵔⵓⵢ",
- "vector-view-view": "ⵖⵔ",
- "vector-view-viewsource": "ⵥⵕ ⴰⵖⴱⴰⵍⵓ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Andrewboltachev"
- ]
- },
- "vector-action-addsection": "Выль темаез ватсано",
- "vector-action-delete": "Быдтоно",
- "vector-action-move": "Мукет интые выжтыны",
- "vector-action-protect": "Утьыны",
- "vector-view-create": "Кылдытоно",
- "vector-view-edit": "Тупатоно",
- "vector-view-history": "История",
- "vector-view-view": "Лыдӟоно",
- "vector-view-viewsource": "Кодзэ учкыны"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Arlin",
- "Sahran",
- "Tel'et"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* CSS placed here will affect users of the Vector skin */",
- "vector.js": "/* Any JavaScript here will be loaded for users using the Vector skin */",
- "vector-action-addsection": "يېڭى تېما قوش",
- "vector-action-delete": "ئۆچۈر",
- "vector-action-move": "يۆتكە",
- "vector-action-protect": "قوغدا",
- "vector-action-undelete": "ئەسلىگە قايتۇر",
- "vector-action-unprotect": "قوغداش ئۆزگەرت",
- "vector-view-create": "قۇر",
- "vector-view-edit": "تەھرىر",
- "vector-view-history": "تارىخ كۆرسەت",
- "vector-view-view": "ئوقۇ",
- "vector-view-viewsource": "مەنبەنى كۆرسەت"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "AS",
- "Ahonc",
- "Base",
- "Calak",
- "Dim Grits",
- "NickK",
- "Prima klasy4na",
- "Тест",
- "Ата"
- ]
- },
- "skinname-vector": "Векторне",
- "vector-skin-desc": "Сучасна версія MonoBook зі свіжим виглядом і багатьма зручними покращеннями",
- "vector.css": "/* Розміщений тут CSS-код буде використаний в темі оформлення Векторне */",
- "vector.js": "/* Розміщений тут код JavaScript буде завантажений для всіх користувачів, що використовують векторну тему оформлення */",
- "vector-action-addsection": "Додати тему",
- "vector-action-delete": "Вилучити",
- "vector-action-move": "Перейменувати",
- "vector-action-protect": "Захистити",
- "vector-action-undelete": "Відновити",
- "vector-action-unprotect": "Зміна захисту",
- "vector-view-create": "Створити",
- "vector-view-edit": "Редагувати",
- "vector-view-history": "Переглянути історію",
- "vector-view-view": "Читати",
- "vector-view-viewsource": "Переглянути код",
- "vector-more-actions": "Ще"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Calak",
- "Istabani",
- "Noor2020",
- "Tahir mq",
- "محبوب عالم"
- ]
- },
- "vector-action-addsection": "نیا موضوع",
- "vector-action-delete": "حذف کرو",
- "vector-action-move": "منتقل کرو",
- "vector-action-protect": "محفوظ کرو",
- "vector-action-undelete": "بحال",
- "vector-action-unprotect": "تحفظ میں تبدیلی",
- "vector-view-create": "تخلیق",
- "vector-view-edit": "ترمیم",
- "vector-view-history": "تاریخ",
- "vector-view-view": "مطالعہ",
- "vector-view-viewsource": "مسودہ",
- "vector-more-actions": "زیادہ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Abdulla",
- "Arystanbek",
- "Casual",
- "CoderSI",
- "Sociologist"
- ]
- },
- "skinname-vector": "Vektor",
- "vector-action-addsection": "Mavzu qoʻshish",
- "vector-action-delete": "O‘chirish",
- "vector-action-move": "Ko‘chirish",
- "vector-action-protect": "Himoyalash",
- "vector-action-undelete": "Tiklash",
- "vector-action-unprotect": "Himoyalashni oʻzgartirish",
- "vector-view-create": "Yaratish",
- "vector-view-edit": "Tahrirlash",
- "vector-view-history": "Tarix",
- "vector-view-view": "Mutolaa",
- "vector-view-viewsource": "Manbasini koʻrish",
- "vector-more-actions": "Yana"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Alunardon90",
- "Candalua",
- "Frigotoni",
- "GatoSelvadego",
- "Vajotwo"
- ]
- },
- "vector-action-addsection": "Zonta discusion",
- "vector-action-delete": "Scanseła",
- "vector-action-move": "Sposta",
- "vector-action-protect": "Protezi",
- "vector-action-undelete": "Recupera",
- "vector-action-unprotect": "Canbia ła protesion",
- "vector-view-create": "Crea",
- "vector-view-edit": "Canbia",
- "vector-view-history": "Varda ła storia",
- "vector-view-view": "Lezi",
- "vector-view-viewsource": "Varda el testo"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Игорь Бродский"
- ]
- },
- "vector-action-addsection": "Ližada tem",
- "vector-action-delete": "Čuta poiš",
- "vector-action-move": "Udesnimitada",
- "vector-action-protect": "Kaita",
- "vector-action-undelete": "Pördutada",
- "vector-action-unprotect": "Toižetada kaičend",
- "vector-view-create": "Säta",
- "vector-view-edit": "Redaktiruida",
- "vector-view-history": "Kacta istorii",
- "vector-view-view": "Lugeda",
- "vector-view-viewsource": "Kacta purtkehe"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Minh Nguyen",
- "Vinhtantran",
- "Withoutaname"
- ]
- },
- "skinname-vector": "Vectơ",
- "vector-skin-desc": "Giao diện làm lại từ MonoBook có màu tươi và khả dụng hơn",
- "vector.css": "/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng giao diện Vectơ */",
- "vector.js": "/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng giao diện Vectơ */",
- "vector-action-addsection": "Thêm chủ đề",
- "vector-action-delete": "Xóa",
- "vector-action-move": "Di chuyển",
- "vector-action-protect": "Khóa",
- "vector-action-undelete": "Phục hồi",
- "vector-action-unprotect": "Đổi mức khóa",
- "vector-view-create": "Tạo",
- "vector-view-edit": "Sửa đổi",
- "vector-view-history": "Xem lịch sử",
- "vector-view-view": "Đọc",
- "vector-view-viewsource": "Xem mã nguồn",
- "vector-more-actions": "Khác"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "DasRakel"
- ]
- },
- "vector-action-delete": "Wegdoen",
- "vector-action-move": "Ernoemn",
- "vector-view-create": "Anmoakn",
- "vector-view-edit": "Bewerkn",
- "vector-view-history": "Geschiedenisse bekykn",
- "vector-view-view": "Leezn",
- "vector-view-viewsource": "Brontekst bekykn"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Silvicola"
- ]
- },
- "vector.css": "/* CSS hiir beâjflusd nôr dii Vector-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
- "vector-action-addsection": "Ân najn abschnid ôôfangn",
- "vector-action-delete": "Leschn",
- "vector-action-move": "Umdaafn",
- "vector-action-protect": "Schidsn",
- "vector-action-undelete": "Leschn riggängich machn",
- "vector-action-unprotect": "Schuds ufgeebn",
- "vector-view-create": "Ôôleechn",
- "vector-view-edit": "Bearbajdn",
- "vector-view-history": "Wärsjoonsfolche",
- "vector-view-view": "Leesn",
- "vector-view-viewsource": "Gwäl-dhägsd ôôgugn"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Malafaya"
- ]
- },
- "vector-action-addsection": "Lüükön yegädi",
- "vector-action-delete": "Moükön",
- "vector-action-move": "Topätükön",
- "vector-action-protect": "Jelön",
- "vector-action-undelete": "Sämoükön",
- "vector-action-unprotect": "Votükön jeli",
- "vector-view-create": "Jafön",
- "vector-view-edit": "Redakön",
- "vector-view-history": "Logön jenotemi",
- "vector-view-view": "Reidön",
- "vector-view-viewsource": "Logön fonäti"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Paivud"
- ]
- },
- "vector-action-addsection": "Vassõn teema",
- "vector-action-delete": "Pühi",
- "vector-action-move": "Liikut",
- "vector-action-protect": "Varjaa",
- "vector-view-create": "Loo cülci",
- "vector-view-edit": "Muuttaa",
- "vector-view-history": "Istori",
- "vector-view-view": "Lukõa",
- "vector-view-viewsource": "Lähtekoodi"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Võrok"
- ]
- },
- "vector-action-addsection": "Vahtsõ teema ülespandminõ",
- "vector-action-delete": "Kistudaq ärq",
- "vector-action-move": "Nõstaq ümbre",
- "vector-action-protect": "Kaidsaq",
- "vector-action-undelete": "Tiiq tagasi",
- "vector-action-unprotect": "Muudaq kaidsõt",
- "vector-view-create": "Luuq",
- "vector-view-edit": "Toimõndaq",
- "vector-view-history": "Näütäq aoluku",
- "vector-view-view": "Loeq",
- "vector-view-viewsource": "Kaeq lätteteksti"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Srtxg"
- ]
- },
- "vector-action-addsection": "Radjouter on sudjet",
- "vector-action-delete": "Disfacer",
- "vector-action-move": "Displaecî",
- "vector-action-protect": "Protedjî",
- "vector-action-undelete": "Rapexhî",
- "vector-action-unprotect": "Candjî l' protedjaedje",
- "vector-view-create": "Ahiver",
- "vector-view-edit": "Candjî",
- "vector-view-history": "Vey l' istwere",
- "vector-view-view": "Lére",
- "vector-view-viewsource": "Vey côde sourdant"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Harvzsf",
- "JinJian"
- ]
- },
- "vector-action-addsection": "Igdugang hin himangrawon",
- "vector-action-delete": "Para-a",
- "vector-action-move": "Balhina",
- "vector-action-protect": "Panalipda",
- "vector-action-undelete": "Igbalik an ginpara",
- "vector-action-unprotect": "Liwani an panalipod",
- "vector-view-create": "Himo-a",
- "vector-view-edit": "Igliwat",
- "vector-view-history": "Kitaa an kaagi",
- "vector-view-view": "Basaha",
- "vector-view-viewsource": "Kitaa an ginkuhaan",
- "vector-more-actions": "Damo pa"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ibou"
- ]
- },
- "vector-action-addsection": "Yokkuw tëriit",
- "vector-action-delete": "Far",
- "vector-action-move": "Tuddewaat",
- "vector-action-protect": "Aar",
- "vector-action-undelete": "Delloowaat",
- "vector-action-unprotect": "Aaradi",
- "vector-view-create": "Sos",
- "vector-view-edit": "Soppi",
- "vector-view-history": "Wone jaar-jaaram",
- "vector-view-view": "Jàng",
- "vector-view-viewsource": "Wone gongikuwaayam"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Benojan"
- ]
- },
- "vector-action-addsection": "加話題",
- "vector-action-delete": "刪",
- "vector-action-move": "移",
- "vector-action-protect": "保",
- "vector-action-undelete": "弗刪",
- "vector-action-unprotect": "换保护状态",
- "vector-view-create": "建",
- "vector-view-edit": "编",
- "vector-view-history": "望页史",
- "vector-view-view": "读",
- "vector-view-viewsource": "望源码"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Huuchin"
- ]
- },
- "vector-action-addsection": "Төриг немх",
- "vector-action-delete": "Һарһх",
- "vector-action-move": "Көндәх",
- "vector-action-protect": "Харсх",
- "vector-action-undelete": "Һарһх биш",
- "vector-action-unprotect": "Харсх биш",
- "vector-view-create": "Бүтәх",
- "vector-view-edit": "Чиклх",
- "vector-view-history": "Тууҗин хәләвр",
- "vector-view-view": "Умшлһн",
- "vector-view-viewsource": "Темдгллһнә хәләвр"
-}
+++ /dev/null
-{
- "vector-view-edit": "Tshintsha"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Kilavagora",
- "Lika2672",
- "Machirkholi"
- ]
- },
- "vector-action-addsection": "თემაშ მიშაძინა",
- "vector-action-delete": "ლასუა",
- "vector-action-move": "გინოღალა",
- "vector-action-protect": "თხილუა",
- "vector-view-create": "დორსხუაფა",
- "vector-view-edit": "რედაქტირაფა",
- "vector-view-history": "ისტორიაშ ძირაფა",
- "vector-view-view": "კითხირი",
- "vector-view-viewsource": "ქიძირე წყუ"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Joystick",
- "פוילישער"
- ]
- },
- "skinname-vector": "וועקטאר",
- "vector-skin-desc": "מאדערנע ווערסיע פון מאנאבוק מיט פרישן אויסזען און א סך באניצער־פריינדלעכקייט פארבעסערונגען",
- "vector.css": "/* CSS געשטעלט דא ווירקט נאר אויפן וועקטאר סקין */",
- "vector-action-addsection": "צושטעלן טעמע",
- "vector-action-delete": "אויסמעקן",
- "vector-action-move": "באַוועגן",
- "vector-action-protect": "שיצן",
- "vector-action-undelete": "מבטל זיין אויסמעקן",
- "vector-action-unprotect": "ענדערונג באַשיצונג",
- "vector-view-create": "שאַפֿן",
- "vector-view-edit": "רעדאַקטירן",
- "vector-view-history": "ווײַזן היסטאָריע",
- "vector-view-view": "לייענען",
- "vector-view-viewsource": "ווײַזן מקור",
- "vector-more-actions": "נאך"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Demmy"
- ]
- },
- "vector-action-addsection": "Àfikún orí-ọ̀rọ̀",
- "vector-action-delete": "Ìparẹ́",
- "vector-action-move": "Ìyípòdà",
- "vector-action-protect": "Àbò",
- "vector-action-undelete": "Ìmúkúrò ìparẹ́",
- "vector-action-unprotect": "Ìyípadà àbò",
- "vector-view-create": "Ṣ'èdá",
- "vector-view-edit": "Àtúnṣe",
- "vector-view-history": "Wo ìtàn",
- "vector-view-view": "Àwòkà",
- "vector-view-viewsource": "Wo àmìọ̀rọ̀"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ktchankt",
- "Waihorace"
- ]
- },
- "skinname-vector": "Vector",
- "vector.css": "/* 響呢度放 CSS 碼去改用戶用嘅域達畫面 */",
- "vector.js": "/* 響每一次個頁面載入時,用域達畫面嘅用戶都會載入呢度任何嘅JavaScript */",
- "vector-action-addsection": "加主題",
- "vector-action-delete": "剷走",
- "vector-action-move": "搬",
- "vector-action-protect": "保護",
- "vector-action-undelete": "取消剷走",
- "vector-action-unprotect": "改保護",
- "vector-view-create": "開",
- "vector-view-edit": "改",
- "vector-view-history": "睇吓歷史",
- "vector-view-view": "閱",
- "vector-view-viewsource": "睇吓原始碼",
- "vector-more-actions": "更多"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Biŋhai"
- ]
- },
- "vector-action-delete": "Ca",
- "vector-action-move": "Daen",
- "vector-action-protect": "Bauj",
- "vector-view-create": "Laeb",
- "vector-view-edit": "gaij",
- "vector-view-history": "Cazyawj lizsij"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Ooswesthoesbes"
- ]
- },
- "vector-action-addsection": "Voeg kopje toe",
- "vector-action-delete": "Wissen",
- "vector-action-move": "Verschuuf",
- "vector-action-protect": "Bescherm",
- "vector-action-undelete": "Plaets truhhe",
- "vector-action-unprotect": "Beveiligienge anpass'n",
- "vector-view-create": "Anmaeken",
- "vector-view-edit": "Bewerk",
- "vector-view-history": "Geschiedenisse bekiek'n",
- "vector-view-view": "Lezen",
- "vector-view-viewsource": "Brontekst bekieken"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Hydra",
- "Liangent",
- "Liuxinyu970226",
- "Xiaomingyan",
- "Cwek"
- ]
- },
- "vector-skin-desc": "提供清新的外观和许多可用性改进的现代版MonoBook",
- "vector.css": "/* 放置于这里的CSS将影响使用Vector皮肤的用户 */",
- "vector.js": "/* 这里的任何JavaScript将为使用Vector皮肤的用户加载 */",
- "vector-action-addsection": "添加话题",
- "vector-action-delete": "删除",
- "vector-action-move": "移动",
- "vector-action-protect": "保护",
- "vector-action-undelete": "还原",
- "vector-action-unprotect": "更改保护",
- "vector-view-create": "创建",
- "vector-view-edit": "编辑",
- "vector-view-history": "查看历史",
- "vector-view-view": "阅读",
- "vector-view-viewsource": "查看源代码",
- "vector-more-actions": "更多"
-}
+++ /dev/null
-{
- "@metadata": {
- "authors": [
- "Cwlin0416",
- "Justincheng12345",
- "Liuxinyu970226",
- "Mark85296341"
- ]
- },
- "vector-skin-desc": "現代版的 MonoBook,有著較新穎的外觀與許多使用性的改進",
- "vector.css": "/* 此 CSS 會影響使用 Vector 介面外觀的使用者 */",
- "vector.js": "/* 此 JavaScript 會用於使用 Vector 介面外觀使用者 */",
- "vector-action-addsection": "加入主題",
- "vector-action-delete": "刪除",
- "vector-action-move": "移動",
- "vector-action-protect": "保護",
- "vector-action-undelete": "取消刪除",
- "vector-action-unprotect": "變更保護",
- "vector-view-create": "建立",
- "vector-view-edit": "編輯",
- "vector-view-history": "檢視歷史",
- "vector-view-view": "閱讀",
- "vector-view-viewsource": "檢視原始碼",
- "vector-more-actions": "更多"
-}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6.001 2.998l5.001 5-5.001 5z" fill="#797979"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.999 13.002l-5.001-5 5.001-5z" fill="#797979"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="22" height="16"><path d="M15.502 6.001l-5 5.001-5-5.001z" fill="#929292"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="22" height="16"><path d="M15.502 6.001l-5 5.001-5-5.001z" fill="#797979"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.002 6.001l-5 5.001-5-5.001z" fill="#797979"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="826.929" y="702.309" fill="#fff" stroke="#06c"/><g><path d="M831.194 698.791h5.234v5.391l-1.571 1.545-1.31-1.31-2.725 2.725-2.689-2.689 2.808-2.808-1.311-1.311z" fill="#06f"/><path d="M835.424 699.795l.022 4.885-1.817-1.817-2.881 2.881-1.228-1.228 2.881-2.881-1.851-1.851z" fill="#fff"/></g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="-835.929" y="702.309" transform="scale(-1 1)" fill="#fff" stroke="#06c"/><g><path d="M831.663 698.791h-5.234v5.391l1.571 1.545 1.31-1.31 2.725 2.725 2.689-2.689-2.808-2.808 1.311-1.311z" fill="#06f"/><path d="M827.433 699.795l-.022 4.885 1.817-1.817 2.881 2.881 1.228-1.228-2.881-2.881 1.851-1.851z" fill="#fff"/></g></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="13"><g stroke-width="2" stroke="#6c6c6c" fill="none"><path d="M11.29 11.71l-4-4"/><circle cx="5" cy="5" r="4"/></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="13"><g stroke-width="2" stroke="#6c6c6c" fill="none"><path d="M.71 11.71l4-4"/><circle cx="7" cy="5" r="4"/></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><linearGradient id="a"><stop offset="0" stop-color="#c2edff"/><stop offset=".5" stop-color="#68bdff"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient x1="13.47" y1="14.363" x2="4.596" y2="3.397" id="b" xlink:href="#a" gradientUnits="userSpaceOnUse"/></defs><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="url(#b)" stroke="#c8b250" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><defs><linearGradient id="a"><stop offset="0" stop-color="#c2edff"/><stop offset=".5" stop-color="#68bdff"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient x1="13.47" y1="14.363" x2="4.596" y2="3.397" id="b" xlink:href="#a" gradientUnits="userSpaceOnUse"/></defs><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="url(#b)" stroke="#7cb5d1" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="13.837"><defs><linearGradient id="e"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#3b74bc"/><stop offset="1" stop-color="#2d5990"/></linearGradient><linearGradient id="c"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#c9c9c9"/></linearGradient><linearGradient id="a"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="d"><stop offset="0" stop-color="#f4d9b1"/><stop offset="1" stop-color="#df9725"/></linearGradient><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" id="f" xlink:href="#a" gradientUnits="userSpaceOnUse"/><radialGradient cx="28.09" cy="27.203" r="13.565" fx="28.09" fy="27.203" id="g" xlink:href="#b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.298 0 0 .885 -8.359 4.94)"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" id="h" xlink:href="#c" gradientUnits="userSpaceOnUse"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" id="i" xlink:href="#a" gradientUnits="userSpaceOnUse"/><radialGradient cx="29.345" cy="17.064" r="9.162" fx="29.345" fy="17.064" id="j" xlink:href="#d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.788 0 0 .788 6.221 3.618)"/><linearGradient x1="20.662" y1="35.818" x2="22.627" y2="36.218" id="k" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.983 .182 -.182 .983 6.232 -2.651)"/><linearGradient x1="22.687" y1="36.39" x2="21.408" y2="35.74" id="l" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.978 .21 .21 .978 55.11 -3.945)"/></defs><g color="#000"><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.693 0 0 .374 -15.548 3.481)" fill="url(#f)" fill-rule="evenodd" overflow="visible"/><path d="M4.046 12.398h4.137c1.172 0 2.332-.43 2.758-1.655.404-1.163.069-3.378-2.551-5.171h-4.895c-2.62 1.655-2.947 3.917-2.344 5.24.614 1.347 1.655 1.586 2.896 1.586z" fill="url(#g)" fill-rule="evenodd" stroke="#204a87" stroke-linecap="round" stroke-linejoin="round" overflow="visible" stroke-width="0.39"/><path d="M4.321 6.193c1.241 1.103 1.793 5.102 1.793 5.102s.552-3.999 1.517-5.171l-3.309.069z" fill="url(#h)" fill-rule="evenodd" overflow="visible"/><path d="M5.21 6.607s-.839.648-.767 1.428c-.796-.702-.819-2.048-.819-2.048l1.586.62z" fill="#729fcf" fill-rule="evenodd" overflow="visible"/><path d="M4.018 11.992l4.092-.009c1.029 0 2.049-.377 2.422-1.453.355-1.022-.037-2.967-2.338-4.542l-4.495-.095c-2.301 1.453-2.747 3.441-2.208 4.697.538 1.256 1.324 1.393 2.526 1.401z" opacity=".215" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" overflow="visible" fill="none" stroke-width="0.39"/><path d="M6.941 6.607s.839.648.767 1.428c.796-.702.819-2.048.819-2.048l-1.586.62z" fill="#729fcf" fill-rule="evenodd" overflow="visible"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.39 0 0 .39 -6.138 -2.475)" fill="url(#i)" fill-rule="evenodd" overflow="visible"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" fill="url(#j)" fill-rule="evenodd" stroke="#c17d11" stroke-linecap="round" stroke-linejoin="round" overflow="visible" transform="matrix(.39 0 0 .39 -6.089 -3.84)"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.342 0 0 .342 -4.598 -2.929)" opacity=".196" stroke="#fff" stroke-width="1.14" stroke-linecap="round" stroke-linejoin="round" overflow="visible" fill="none"/><path d="M2.433 12.062c-.487-.213-.704-.725-.704-.725.328-1.587 1.451-2.748 1.451-2.748s-.889 2.5-.746 3.473z" opacity=".228" fill="url(#k)" fill-rule="evenodd" overflow="visible"/><path d="M9.806 11.728c.48-.227.704-.781.704-.781-.374-1.577-1.551-2.669-1.551-2.669s.961 2.474.847 3.45z" opacity=".228" fill="url(#l)" fill-rule="evenodd" overflow="visible"/></g></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="#fff" stroke="#c8b250" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="#fff" stroke="#d1d1d1" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M8.103 1.146l2.175 4.408 4.864.707-3.52 3.431.831 4.845-4.351-2.287-4.351 2.287.831-4.845-3.52-3.431 4.864-.707z" fill="#fff" stroke="#7cb5d1" stroke-width="0.9999199999999999"/></svg>
\ No newline at end of file
+++ /dev/null
-/* Vector screen styles for high definition displays */
-
-@import "variables.less";
-
-div#content {
- margin-left: 11em;
- padding: 1.25em 1.5em 1.5em 1.5em;
-}
-#p-logo {
- left: @menu-main-logo-left;
-}
-div#footer {
- margin-left: 11em;
- padding: 1.25em;
-}
-#mw-panel {
- padding-left: 0.5em;
-}
-#p-search {
- margin-right: 1em;
-}
-#left-navigation {
- margin-left: 11em;
-}
-#p-personal {
- right: 1em;
-}
-#mw-head-base {
- margin-left: 11em;
-}
+++ /dev/null
-/* Vector screen styles */
-
-@import "variables.less";
-
-@import "components/common.less";
-@import "components/animations.less";
-@import "components/navigation.less";
-@import "components/footer.less";
-@import "components/externalLinks.less";
+++ /dev/null
-/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
-.tipsy {
- font-size: 0.8em;
-}
+++ /dev/null
-/*!
- * jQuery UI Accordion 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
-.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
-.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
+++ /dev/null
-/* Autocomplete
-----------------------------------*/
-.ui-autocomplete { position: absolute; cursor: default; }
-.ui-autocomplete-loading { /* @embed */ background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat; }
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/* Menu
-----------------------------------*/
-.ui-menu {
- list-style:none;
- padding: 2px;
- margin: 0;
- display:block;
- float: left;
-}
-.ui-menu .ui-menu {
- margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
- margin:0;
- padding: 0;
- zoom: 1;
- float: left;
- clear: left;
- width: 100%;
-}
-.ui-menu .ui-menu-item a {
- text-decoration:none;
- display:block;
- padding:.2em .4em;
- line-height:1.5;
- zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
- font-weight: normal;
- margin: -1px;
-}
+++ /dev/null
-/* Button
-----------------------------------*/
-
-.ui-button {
- display: inline-block;
- position: relative;
- padding: 0;
- margin-right: .1em;
- text-decoration: none !important;
- cursor: pointer;
- text-align: center;
- zoom: 1;
- overflow: visible; /* the overflow property removes extra width in IE */
-}
-
-/*button text element */
-.ui-button .ui-button-text {
- display: block;
- line-height: 1.4;
- text-shadow: 0 1px 1px #fff;
-}
-.ui-button-text-only .ui-button-text {
- padding: 0.3em 1em 0.25em 1em;
-}
-.ui-button-icon-only .ui-button-text,
-.ui-button-icons-only .ui-button-text {
- padding: 0.3em;
- text-indent: -9999999px;
-}
-.ui-button-text-icon-primary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
- padding: 0.3em 1em 0.25em 2.1em;
-}
-.ui-button-text-icon-secondary .ui-button-text,
-.ui-button-text-icons .ui-button-text {
- padding: 0.3em 2.1em 0.25em 1em;
-}
-.ui-button-text-icons .ui-button-text {
- padding-left: 2.1em;
- padding-right: 2.1em;
-}
-
-/* no icon support for input elements, provide padding by default */
-input.ui-button {
- padding: 0.3em 1em;
-}
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon,
-.ui-button-text-icon-primary .ui-icon,
-.ui-button-text-icon-secondary .ui-icon,
-.ui-button-text-icons .ui-icon,
-.ui-button-text-icon .ui-icon,
-.ui-button-icons-only .ui-icon {
- position: absolute;
- top: 50%;
- margin-top: -9px;
-}
-.ui-button-icon-only .ui-icon {
- left: 50%;
- margin-left: -8px;
-}
-.ui-button-text-icon-primary .ui-button-icon-primary,
-.ui-button-text-icon .ui-button-icon-primary,
-.ui-button-text-icons .ui-button-icon-primary,
-.ui-button-icons-only .ui-button-icon-primary {
- left: 0.5em;
-}
-.ui-button-text-icon-secondary .ui-button-icon-secondary,
-.ui-button-text-icon .ui-button-icon-secondary,
-.ui-button-text-icons .ui-button-icon-secondary,
-.ui-button-icons-only .ui-button-icon-secondary {
- right: 0.5em;
-}
-
-/*button sets*/
-.ui-buttonset {
- margin-right: 7px;
-}
-.ui-buttonset .ui-button {
- margin-left: 0;
- margin-right: -.4em;
-}
-
-/* workarounds */
-button.ui-button::-moz-focus-inner {
- border: 0;
- padding: 0; /* reset extra padding in Firefox */
-}
-/* Disables the annoying dashed border Firefox puts on active buttons */
-body button.ui-button::-moz-focus-inner {
- border: 0;
-}
-/* Give large buttons some extra padding */
-body .ui-button-large {
- padding: 5px;
-}
-/* Use white icons for colored buttons */
-.ui-button-green .ui-icon,
-.ui-button-blue .ui-icon,
-.ui-button-red .ui-icon,
-.ui-button-orange .ui-icon {
- /* @embed */
- background-image: url(images/ui-icons_ffffff_256x240.png) !important;
-}
-
-/* Corner radius */
-/* This is normally handled in jquery.ui.theme.css, but in our case, the corner
- styling of our buttons doesn't match our default widget corner styling */
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-top,
-.ui-button.ui-corner-left,
-.ui-button.ui-corner-tl {
- border-top-left-radius: 4px;
-}
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-top,
-
-.ui-button.ui-corner-right,
-.ui-button.ui-corner-tr {
- border-top-right-radius: 4px;
-}
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-bottom,
-.ui-button.ui-corner-left,
-.ui-button.ui-corner-bl {
- border-bottom-left-radius: 4px;
-}
-.ui-button.ui-corner-all,
-.ui-button.ui-corner-bottom,
-.ui-button.ui-corner-right,
-.ui-button.ui-corner-br {
- border-bottom-right-radius: 4px;
-}
-
-body .ui-button {
- color: #2779aa;
- margin: 0.5em 0 0.5em 0.4em;
- border: 1px solid #aaa !important;
- background: #f0f0f0 !important;
- background: -moz-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #fff 0%, #ddd 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #fff 0%, #ddd 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dddddd', GradientType=0); /* IE6-8 */
- cursor: pointer;
- font-size: 1em;
- line-height: 1.4em;
- width: auto;
- overflow: visible;
- box-shadow: 0 1px 3px rgba(0,0,0,.2);
-}
-
-body .ui-button-icon-only {
- width: 2.2em;
-}
-
-body .ui-button-icons-only {
- width: 3.4em;
-}
-
-body .ui-button:hover {
- color: #2779aa;
- border-color: #bbb !important;
- background: #fff !important;
- background: -moz-linear-gradient(top, #fff 0%, #eee 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #fff 0%, #eee 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #fff 0%, #eee 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #fff 0%, #eee 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #fff 0%, #eee 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,.1);
-}
-body .ui-button:active,
-body .ui-button:focus {
- border-color: #8ad !important;
- box-shadow: 0 0 1px 1px rgba(167,215,249,.5);
-}
-body .ui-button:active {
- background: #e0e0e0 !important;
- background: -moz-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #f0f0f0 0%, #d0d0d0 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #f0f0f0 0%, #d0d0d0 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f0f0f0', endColorstr='#d0d0d0', GradientType=0); /* IE6-8 */
-}
-
-/* Green buttons */
-body .ui-button-green,
-body .ui-button-green .ui-button-text {
- color: white;
- text-shadow: 0 -1px 1px #072;
-}
-body .ui-button.ui-button-green {
- border-color: #294 !important;
- background: #295 !important;
- background: -moz-linear-gradient(top, #3c8 0%, #295 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #3c8 0%, #295 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #3c8 0%, #295 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #3c8 0%, #295 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #3c8 0%, #295 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33cc88', endColorstr='#229955', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,.3);
-}
-body .ui-button.ui-button-green:hover {
- background: #33a055 !important;
- background: -moz-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #44d388 0%, #33a055 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #44d388 0%, #33a055 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#44d388', endColorstr='#33a055', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,.25);
-}
-body .ui-button.ui-button-green:active,
-body .ui-button.ui-button-green:focus {
- border-color: #172 !important;
- box-shadow: 0 0 2px 2px rgba(167,215,249,.75);
-}
-body .ui-button.ui-button-green:active {
- background: #338855 !important;
- background: -moz-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #30c080 0%, #338855 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #30c080 0%, #338855 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#30c080', endColorstr='#338855', GradientType=0); /* IE6-8 */
-}
-
-/* Blue buttons */
-body .ui-button-blue,
-body .ui-button-blue .ui-button-text {
- color: white;
- text-shadow: 0 -1px 1px #037;
-}
-body .ui-button.ui-button-blue {
- border-color: #468 !important;
- background: #36b !important;
- background: -moz-linear-gradient(top, #48e 0%, #36b 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #48e 0%, #36b 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #48e 0%, #36b 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #48e 0%, #36b 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #48e 0%, #36b 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4488ee', endColorstr='#3366bb', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,.35);
-}
-body .ui-button.ui-button-blue:hover {
- background: #36c !important;
- background: -moz-linear-gradient(top, #59e 0%, #36c 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #59e 0%, #36c 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #59e 0%, #36c 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #59e 0%, #36c 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #59e 0%, #36c 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5599ee', endColorstr='#3366cc', GradientType=0); /* IE6-8 */
-}
-body .ui-button.ui-button-blue:active,
-body .ui-button.ui-button-blue:focus {
- border-color: #357 !important;
- box-shadow: 0 0 2px 2px rgba(167,215,249,.75);
-}
-body .ui-button.ui-button-blue:active {
- background: #3060a0 !important;
- background: -moz-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #4080e0 0%, #3060a0 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #4080e0 0%, #3060a0 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4080e0', endColorstr='#3060a0', GradientType=0); /* IE6-8 */
-}
-
-/* Red buttons */
-body .ui-button-red,
-body .ui-button-red .ui-button-text {
- color: white;
- text-shadow: 0 -1px 1px #700;
-}
-body .ui-button.ui-button-red {
- border-color: #944 !important;
- background: #a22 !important;
- background: -moz-linear-gradient(top, #d44 0%, #a22 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #d44 0%, #a22 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #d44 0%, #a22 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #d44 0%, #a22 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #d44 0%, #a22 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dd4444', endColorstr='#aa2222', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,.35);
-}
-body .ui-button.ui-button-red:hover {
- border-color: #a44 !important;
- background: #b03333 !important;
- background: -moz-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #ee4646 0%, #b03333 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #ee4646 0%, #b03333 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee4646', endColorstr='#b03333', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,.3);
-}
-body .ui-button.ui-button-red:active,
-body .ui-button.ui-button-red:focus {
- border-color: #747 !important;
- box-shadow: 0 0 2px 2px rgba(167,215,249,.7);
-}
-body .ui-button.ui-button-red:active {
- background: #952020 !important;
- background: -moz-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #d04545 0%, #952020 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #d04545 0%, #952020 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d04545', endColorstr='#952020', GradientType=0); /* IE6-8 */
-}
-
-/* Disabled buttons */
-body .ui-button-green.disabled,
-body .ui-button-green.disabled:hover,
-body .ui-button-green.disabled:active,
-body .ui-button-green.disabled:focus,
-body .ui-button-blue.disabled,
-body .ui-button-blue.disabled:hover,
-body .ui-button-blue.disabled:active,
-body .ui-button-blue.disabled:focus,
-body .ui-button-red.disabled,
-body .ui-button-red.disabled:hover,
-body .ui-button-red.disabled:active,
-body .ui-button-red.disabled:focus,
-body .ui-button.disabled,
-body .ui-button.disabled:hover {
- color: #aaa;
- border-color: #ccc !important;
- background: #eee !important;
- background: -moz-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* FF3.6+ */
- background: -webkit-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* Chrome10+, Safari5.1+ */
- background: -o-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* Opera 11.10+ */
- background: -ms-linear-gradient(top, #f6f6f6 0%, #eee 90%) !important; /* IE10+ */
- background: linear-gradient(to bottom, #f6f6f6 0%, #eee 90%) !important;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f6f6f6', endColorstr='#eeeeee', GradientType=0); /* IE6-8 */
- box-shadow: 0 1px 3px rgba(0,0,0,0);
-}
-body .ui-button-green.disabled .ui-button-text,
-body .ui-button-blue.disabled .ui-button-text,
-body .ui-button-red.disabled .ui-button-text {
- color: #aaa;
- text-shadow: 0 1px 1px #fff;
-}
+++ /dev/null
-/*!
- * jQuery UI CSS Framework 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
-.ui-helper-clearfix:after { clear: both; }
-.ui-helper-clearfix { zoom: 1; }
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+++ /dev/null
-/* Datepicker
-----------------------------------*/
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; padding:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .2em 0 0 0; padding: 0 .2em; border-top: 1px solid #DDDDDD; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; }
-
-/* RTL support */
-/* @noflip */ .ui-datepicker-rtl { direction: rtl; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
- display: none; /*sorry for IE5*/
- display/**/: block; /*sorry for IE5*/
- position: absolute; /*must have*/
- z-index: -1; /*must have*/
- filter: mask(); /*must have*/
- top: -4px; /*must have*/
- left: -4px; /*must have*/
- width: 200px; /*must have*/
- height: 200px; /*must have*/
-}
\ No newline at end of file
+++ /dev/null
-/* Dialog
-----------------------------------*/
-.ui-dialog { position: absolute; padding: 0; width: 300px; }
-.ui-dialog .ui-dialog-titlebar { padding: .75em; position: relative; }
-.ui-dialog .ui-dialog-title { float: left; margin: 0; }
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .75em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/* Customizations */
-body .ui-dialog .ui-dialog-titlebar-close:hover {
- text-decoration: none;
-}
-body .ui-dialog .ui-dialog-content .status-invalid input {
- border: 2px solid red;
- padding: 2px 1px;
-}
-body .ui-dialog .ui-dialog-titlebar {
- padding: 0.9em 1.4em 0.6em !important;
-}
-body .ui-dialog .ui-widget-header {
- /* @embed */
- background: #f0f0f0 url(images/titlebar-fade.png) repeat-x scroll 50% 100% !important;
-}
-/* FIXME: Should just update the icon sprite if we're keeping this X */
-body .ui-dialog .ui-icon-closethick {
- /* @embed */
- background: url(images/close.png) no-repeat 50% 50% !important;
-}
-body .ui-dialog .ui-dialog-buttonpane {
- margin-top: 0 !important;
- padding:0.3em 1.4em 0.5em 1.4em !important;
-}
+++ /dev/null
-/*!
- * jQuery UI Progressbar 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
+++ /dev/null
-/* Resizable
-----------------------------------*/
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-/* @noflip */
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-/* @noflip */
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-/* @noflip */
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-/* @noflip */
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-/* @noflip */
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-/* @noflip */
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
\ No newline at end of file
+++ /dev/null
-/*!
- * jQuery UI Selectable 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+++ /dev/null
-/*!
- * jQuery UI Slider 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }
\ No newline at end of file
+++ /dev/null
-/*!
- * jQuery UI Tabs 1.9.2
- * http://jqueryui.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+++ /dev/null
-
-
-/*
-* jQuery UI CSS Framework
-* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
-* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=sans-serif&fwDefault=normal&fsDefault=1.0em&cornerRadius=3px&bgColorHeader=ffffff&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=f0f0f0&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=cccccc&fcActive=000000&iconColorActive=666666&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=000000&bgTextureOverlay=21_glow_ball.png&bgImgOpacityOverlay=100&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=70&opacityShadow=20&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
-*/
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: sans-serif; font-size: 0.8em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #cccccc; /* @embed */ background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; }
-.ui-widget-header { border-bottom: 1px solid #bbbbbb; line-height: 1em; /* @embed */ background: #ffffff url(images/ui-bg_highlight-soft_100_ffffff_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; /* @embed */ background: #d7ebf9 url(images/ui-bg_highlight-hard_80_d7ebf9_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #2779aa; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; /* @embed */ background: #e4f1fb url(images/ui-bg_highlight-soft_100_e4f1fb_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #0070a3; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #cccccc; background: #f0f0f0 /* @embed */ url(images/ui-bg_inset-hard_100_f0f0f0_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000000; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #f9dd34; background: #ffef8f /* @embed */ url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a /* @embed */ url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; }
-.ui-icon, .ui-widget-content .ui-icon, .ui-widget-header .ui-icon { /* @embed */ background-image: url(images/ui-icons_72a7cf_256x240.png); }
-.ui-state-default .ui-icon { /* @embed */ background-image: url(images/ui-icons_3d80b3_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon { /* @embed */ background-image: url(images/ui-icons_2694e8_256x240.png); }
-.ui-state-active .ui-icon { /* @embed */ background-image: url(images/ui-icons_666666_256x240.png); }
-.ui-state-highlight .ui-icon { /* @embed */ background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon { /* @embed */ background-image: url(images/ui-icons_ffffff_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-tl { border-top-left-radius: 0; }
-.ui-corner-tr { border-top-right-radius: 0; }
-.ui-corner-bl { border-bottom-left-radius: 0; }
-.ui-corner-br { border-bottom-right-radius: 0; }
-.ui-corner-top { border-top-left-radius: 0; border-top-right-radius: 0; }
-.ui-corner-bottom { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
-.ui-corner-right { border-top-right-radius: 0; border-bottom-right-radius: 0; }
-.ui-corner-left { border-top-left-radius: 0; border-bottom-left-radius: 0; }
-.ui-corner-all { border-radius: 0; }
-
-/* Overlays */
-.ui-widget-overlay { background: #000000; opacity: .75;filter:Alpha(Opacity=75); }
-.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; /* @embed */ background: #000000 url(images/ui-bg_flat_70_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); border-radius: 8px; }
+++ /dev/null
-@import "../variables";
-
-/* mediawiki.notification */
-
-// This wrapper class is needed to ensure these rules have larger CSS
-// selector specificity than default styles
-.mediawiki {
- .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;
- box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
- }
-}
+++ /dev/null
-/**
- * Adjusts for decreased margin-bottom for h2 elements inside #content div
- * introduced in March / April 2014 typography update.
- */
-table.mw-specialpages-table {
- margin-top: 0;
-}
+++ /dev/null
-@import "mediawiki.mixins";
-@import "../variables";
-
-/**
- * The following code is highly modified from monobook. It would be nice if the
- * preftoc id was more human readable like preferences-toc for instance,
- * howerver this would require backporting the other skins.
- */
-
-#preftoc {
- /* Tabs */
- width: 100%;
- float: left;
- clear: both;
- margin: 0 !important;
- padding: 0 !important;
- .background-image('../images/preferences/break.png');
- background-position: bottom left;
- background-repeat: no-repeat;
-
- li {
- /* Tab */
- float: left;
- margin: 0;
- padding: 0;
- padding-right: 1px;
- height: 2.25em;
- white-space: nowrap;
- list-style-type: none;
- list-style-image: none;
- .background-image('../images/preferences/break.png');
- background-position: bottom right;
- background-repeat: no-repeat;
-
- /* Sadly, IE6 won't understand this */
- &:first-child {
- margin-left: 1px;
- }
-
- &.selected {
- a {
- .background-image('../images/preferences/fade.png');
- background-position: bottom;
- background-repeat: repeat-x;
- color: #333;
- text-decoration: none;
- }
- }
- }
-
- a,
- a:active {
- display: inline-block;
- position: relative;
- color: @menu-link-color;
- padding: 0.5em;
- text-decoration: none;
- background-image: none;
- font-size: 0.9em;
- }
-
- a:hover,
- a:focus {
- text-decoration: underline;
- }
-}
-
-#preferences {
- float: left;
- width: 100%;
- margin: 0;
- margin-top: -2px;
- clear: both;
- border: solid 1px #ccc;
- background-color: #fafafa;
-
- fieldset {
- border: none;
- border-top: solid 1px #ccc;
-
- &.prefsection {
- border: none;
- padding: 0;
- margin: 1em;
-
- legend.mainLegend {
- display: none;
- }
- }
- }
-
- legend {
- color: #666;
- }
-
- td {
- padding-left: 0.5em;
- padding-right: 0.5em;
- }
-
- div.mw-prefs-buttons {
- padding: 1em;
-
- input {
- margin-right: 0.25em;
- }
- }
-}
-
-.htmlform-tip {
- font-size: x-small;
- padding: .2em 2em;
- color: #666;
-}
+++ /dev/null
-@html-font-size: 100%;
-
-// Page content
-// FIXME: Use global variable since Echo and CentralNotice use this variable
-@content-border-color: #a7d7f9;
-// FIXME: Find an open font that works with this stack and is readable by Windows users
-@content-font-family: sans-serif;
-@content-font-color: #252525;
-@content-font-size: 0.875em;
-@content-line-height: 1.6;
-@content-padding: 1em;
-@content-heading-font-size: 1.8em;
-@content-heading-font-family: "Linux Libertine", Georgia, Times, serif;
-@body-background-color: #fff;
-@heading-line-height: 1.3;
-
-// Navigation
-@menu-background-color: #f6f6f6;
-
-// Common menu
-@menu-link-color: #0645ad;
-
-// Main menu
-@menu-main-font-size: inherit;
-
-@menu-main-heading-font-size: 0.75em;
-@menu-main-heading-padding: 0.25em 0 0.25em 0.25em;
-@menu-main-heading-color: #4d4d4d;
-
-@menu-main-body-font-size: 0.75em;
-@menu-main-body-link-color: #0645ad;
-@menu-main-body-link-visited-color: #0b0080;
-@menu-main-body-margin: 0 0 0 1.25em;
-@menu-main-body-padding: 0;
-
-@menu-main-logo-left: 0.5em;
-
-// Personal menu
-@menu-personal-font-size: 0.75em;
+++ /dev/null
-/**
- * Vector-specific scripts
- */
-jQuery( function ( $ ) {
- /**
- * Focus search input at the very end
- */
- $( '#searchInput' ).attr( 'tabindex', $( document ).lastTabIndex() + 1 );
-
- /**
- * Dropdown menu accessibility
- */
- $( 'div.vectorMenu' ).each( function () {
- var $el = $( this );
- $el.find( '> h3 > a' ).parent()
- .attr( 'tabindex', '0' )
- // For accessibility, show the menu when the h3 is clicked (bug 24298/46486)
- .on( 'click keypress', function ( e ) {
- if ( e.type === 'click' || e.which === 13 ) {
- $el.toggleClass( 'menuForceShow' );
- e.preventDefault();
- }
- } )
- // When the heading has focus, also set a class that will change the arrow icon
- .focus( function () {
- $el.find( '> a' ).addClass( 'vectorMenuFocus' );
- } )
- .blur( function () {
- $el.find( '> a' ).removeClass( 'vectorMenuFocus' );
- } )
- .find( '> a:first' )
- // As the h3 can already be focused there's no need for the link to be focusable
- .attr( 'tabindex', '-1' );
- } );
-
- /**
- * Sidebar
- */
- $( '#mw-panel > .portal:first' ).addClass( 'first' );
-
- /**
- * Collapsible tabs
- */
- var $cactions = $( '#p-cactions' ),
- $tabContainer = $( '#p-views ul' ),
- originalDropdownWidth = $cactions.width();
-
- // Bind callback functions to animate our drop down menu in and out
- // and then call the collapsibleTabs function on the menu
- $tabContainer
- .bind( 'beforeTabCollapse', function () {
- // If the dropdown was hidden, show it
- if ( $cactions.hasClass( 'emptyPortlet' ) ) {
- $cactions
- .removeClass( 'emptyPortlet' )
- .find( 'h3' )
- .css( 'width', '1px' ).animate( { 'width': originalDropdownWidth }, 'normal' );
- }
- } )
- .bind( 'beforeTabExpand', function () {
- // If we're removing the last child node right now, hide the dropdown
- if ( $cactions.find( 'li' ).length === 1 ) {
- $cactions.find( 'h3' ).animate( { 'width': '1px' }, 'normal', function () {
- $( this ).attr( 'style', '' )
- .parent().addClass( 'emptyPortlet' );
- });
- }
- } )
- .collapsibleTabs( {
- expandCondition: function ( eleWidth ) {
- // (This looks a bit awkward because we're doing expensive queries as late as possible.)
-
- var distance = $.collapsibleTabs.calculateTabDistance();
- // If there are at least eleWidth + 1 pixels of free space, expand.
- // We add 1 because .width() will truncate fractional values but .offset() will not.
- if ( distance >= eleWidth + 1 ) {
- return true;
- } else {
- // Maybe we can still expand? Account for the width of the "Actions" dropdown if the
- // expansion would hide it.
- if ( $cactions.find( 'li' ).length === 1 ) {
- return distance >= eleWidth + 1 - originalDropdownWidth;
- } else {
- return false;
- }
- }
- },
- collapseCondition: function () {
- // (This looks a bit awkward because we're doing expensive queries as late as possible.)
- // TODO The dropdown itself should probably "fold" to just the down-arrow (hiding the text)
- // if it can't fit on the line?
-
- // If there's an overlap, collapse.
- if ( $.collapsibleTabs.calculateTabDistance() < 0 ) {
- // But only if the width of the tab to collapse is smaller than the width of the dropdown
- // we would have to insert. An example language where this happens is Lithuanian (lt).
- if ( $cactions.hasClass( 'emptyPortlet' ) ) {
- return $tabContainer.children( 'li.collapsible:last' ).width() > originalDropdownWidth;
- } else {
- return true;
- }
- } else {
- return false;
- }
- }
- } );
-} );
+++ /dev/null
-/**
- * IE fixes javascript loaded by wikibits.js for IE <= 6.0
- */
-/*global isMSIE55:true, doneIETransform:true, doneIEAlphaFix:true */
-/*global hookit:true, fixalpha:true */
-( function ( mw, $ ) {
-
-var expandedURLs, hasClass;
-
-// Also returns true for IE6, 7, 8, 9 and 10. createPopup is removed in IE11.
-// Good thing this is only loaded for IE <= 6 by wikibits.
-// Might as well set it to true.
-isMSIE55 = ( window.showModalDialog && window.clipboardData && window.createPopup );
-doneIETransform = false;
-doneIEAlphaFix = false;
-
-hookit = function () {
- if ( !doneIETransform && document.getElementById && document.getElementById( 'bodyContent' ) ) {
- doneIETransform = true;
- fixalpha();
- }
-};
-
-if ( document.attachEvent ) {
- document.attachEvent( 'onreadystatechange', hookit );
-}
-
-// png alpha transparency fixes
-fixalpha = function ( logoId ) {
- // bg
- if ( isMSIE55 && !doneIEAlphaFix ) {
- var bg, imageUrl, linkFix, logoa, logospan, plogo;
- plogo = document.getElementById( logoId || 'p-logo' );
- if ( !plogo ) {
- return;
- }
-
- logoa = plogo.getElementsByTagName('a')[0];
- if ( !logoa ) {
- return;
- }
-
- bg = logoa.currentStyle.backgroundImage;
- imageUrl = bg.substring( 5, bg.length - 2 );
-
- doneIEAlphaFix = true;
-
- if ( imageUrl.substr( imageUrl.length - 4 ).toLowerCase() === '.png' ) {
- logospan = logoa.appendChild( document.createElement( 'span' ) );
-
- logoa.style.backgroundImage = 'none';
- logospan.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + imageUrl + ')';
- logospan.style.height = '100%';
- logospan.style.position = 'absolute';
- logospan.style.width = logoa.currentStyle.width;
- logospan.style.cursor = 'hand';
- // Center image with hack for IE5.5
- if ( document.documentElement.dir === 'rtl' ) {
- logospan.style.right = '50%';
- logospan.style.setExpression( 'marginRight', '"-" + (this.offsetWidth / 2) + "px"' );
- } else {
- logospan.style.left = '50%';
- logospan.style.setExpression( 'marginLeft', '"-" + (this.offsetWidth / 2) + "px"' );
- }
- logospan.style.top = '50%';
- logospan.style.setExpression( 'marginTop', '"-" + (this.offsetHeight / 2) + "px"' );
-
- linkFix = logoa.appendChild( logoa.cloneNode() );
- linkFix.style.position = 'absolute';
- linkFix.style.height = '100%';
- linkFix.style.width = '100%';
- }
- }
-};
-
-if ( isMSIE55 ) {
- // ondomready
- $( fixalpha );
-}
-
-// Expand links for printing
-hasClass = function ( classText, classWanted ) {
- var i = 0, classArr = classText.split(/\s/);
- for ( i = 0; i < classArr.length; i++ ) {
- if ( classArr[i].toLowerCase() === classWanted.toLowerCase() ) {
- return true;
- }
- }
- return false;
-};
-
-window.onbeforeprint = function () {
- var allLinks, contentEl, expandedLink, expandedText, i;
-
- expandedURLs = [];
- contentEl = document.getElementById( 'content' );
-
- if ( contentEl ) {
- allLinks = contentEl.getElementsByTagName( 'a' );
-
- for ( i = 0; i < allLinks.length; i++ ) {
- if ( hasClass( allLinks[i].className, 'external' ) && !hasClass( allLinks[i].className, 'free' ) ) {
- expandedLink = document.createElement( 'span' );
- expandedText = document.createTextNode( ' (' + allLinks[i].href + ')' );
- expandedLink.appendChild( expandedText );
- allLinks[i].parentNode.insertBefore( expandedLink, allLinks[i].nextSibling );
- expandedURLs[i] = expandedLink;
- }
- }
- }
-};
-
-window.onafterprint = function () {
- for ( var i = 0; i < expandedURLs.length; i++ ) {
- if ( expandedURLs[i] ) {
- expandedURLs[i].removeNode( true );
- }
- }
-};
-
-}( mediaWiki, jQuery ) );
border: none;
line-height: 1.4em;
padding: 3px !important;
+ text-align: left;
font-size: 94%;
}
div.magnify {
border: none !important;
background: none !important;
+ float: right;
margin-left: 3px;
}
/* @noflip */
.mw-content-ltr .magnify {
float: right;
+ margin-left: 3px;
}
/* @noflip */
.mw-content-rtl .magnify {
float: left;
+ margin-right: 3px;
}
/**
var msg,
win = window,
ua = navigator.userAgent.toLowerCase(),
- isIE6 = ( /msie ([0-9]{1,}[\.0-9]{0,})/.exec( ua ) && parseFloat( RegExp.$1 ) <= 6.0 ),
onloadFuncts = [];
/**
return l;
};
-if ( isIE6 ) {
- win.importScriptURI( mw.config.get( 'stylepath' ) + '/common/IEFixes.js' );
-}
-
}( mediaWiki, jQuery ) );
'TestRecorder' => "$testDir/testHelpers.inc",
'ITestRecorder' => "$testDir/testHelpers.inc",
'DjVuSupport' => "$testDir/testHelpers.inc",
+ 'TidySupport' => "$testDir/testHelpers.inc",
# tests/phpunit
'MediaWikiTestCase' => "$testDir/phpunit/MediaWikiTestCase.php",
'MediaWikiPHPUnitTestListener' => "$testDir/phpunit/MediaWikiPHPUnitTestListener.php",
'MediaWikiLangTestCase' => "$testDir/phpunit/MediaWikiLangTestCase.php",
- 'MediaWikiPasswordTestCase' => "$testDir/phpunit/MediaWikiPasswordTestCase.php",
'ResourceLoaderTestCase' => "$testDir/phpunit/ResourceLoaderTestCase.php",
'ResourceLoaderTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
'ResourceLoaderFileModuleTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
'PageORMTableForTesting' => "$testDir/phpunit/includes/db/ORMTableTest.php",
'DatabaseTestHelper' => "$testDir/phpunit/includes/db/DatabaseTestHelper.php",
+ # tests/phpunit/includes/passwords
+ 'PasswordTestCase' => "$testDir/phpunit/includes/password/PasswordTestCase.php",
+
# tests/phpunit/languages
'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
*/
private $djVuSupport;
+ /**
+ * @var TidySupport
+ */
+ private $tidySupport;
+
private $maxFuzzTestLength = 300;
private $fuzzSeed = 0;
private $memoryLimit = 50;
$this->runParsoid = isset( $options['run-parsoid'] );
$this->djVuSupport = new DjVuSupport();
+ $this->tidySupport = new TidySupport();
+ if ( !$this->tidySupport->isEnabled() ) {
+ echo "Warning: tidy is not installed, skipping some tests\n";
+ }
$this->hooks = array();
$this->functionHooks = array();
$output = $parser->parse( $input, $title, $options, true, true, 1337 );
$output->setTOCEnabled( !isset( $opts['notoc'] ) );
$out = $output->getText();
+ if ( isset( $opts['tidy'] ) ) {
+ if ( !$this->tidySupport->isEnabled() ) {
+ return $this->showSkipped();
+ }
+ $out = MWTidy::tidy( $out );
+ $out = preg_replace( '/\s+$/', '', $out);
+ }
if ( isset( $opts['showtitle'] ) ) {
if ( $output->getTitleText() ) {
}
if ( isset( $opts['ill'] ) ) {
- $out = $this->tidy( implode( ' ', $output->getLanguageLinks() ) );
+ $out = implode( ' ', $output->getLanguageLinks() );
} elseif ( isset( $opts['cat'] ) ) {
$outputPage = $context->getOutput();
$outputPage->addCategoryLinks( $output->getCategories() );
$cats = $outputPage->getCategoryLinks();
if ( isset( $cats['normal'] ) ) {
- $out = $this->tidy( implode( ' ', $cats['normal'] ) );
+ $out = implode( ' ', $cats['normal'] );
} else {
$out = '';
}
}
-
- $result = $this->tidy( $result );
}
$this->teardownGlobals();
* @param string $config
*/
private function setupGlobals( $opts = '', $config = '' ) {
+ global $IP;
+
# Find out values for some special options.
$lang =
self::getOptionValue( 'language', $opts, 'en' );
) )
),
'wgEnableUploads' => self::getOptionValue( 'wgEnableUploads', $opts, true ),
+ 'wgUploadNavigationUrl' => false,
'wgStylePath' => '/skins',
'wgSitename' => 'MediaWiki',
'wgLanguageCode' => $lang,
'wgLocaltimezone' => 'UTC',
'wgAllowExternalImages' => self::getOptionValue( 'wgAllowExternalImages', $opts, true ),
'wgThumbLimits' => array( self::getOptionValue( 'thumbsize', $opts, 180 ) ),
- 'wgUseTidy' => false,
'wgDefaultLanguageVariant' => $variant,
'wgVariantArticlePath' => false,
'wgGroupPermissions' => array( '*' => array(
'wgLinkHolderBatchSize' => $linkHolderBatchSize,
'wgExperimentalHtmlIds' => false,
'wgExternalLinkTarget' => false,
- 'wgAlwaysUseTidy' => false,
'wgHtml5' => true,
'wgWellFormedXml' => true,
'wgAllowMicrodataAttributes' => true,
'wgAdaptiveMessageCache' => true,
'wgDisableLangConversion' => false,
'wgDisableTitleConversion' => false,
+ // Tidy options.
+ // We always set 'wgUseTidy' to false when parsing, but certain
+ // test-running modes still use tidy if available, so ensure
+ // that the tidy-related options are all set to their defaults.
+ 'wgUseTidy' => false,
+ 'wgAlwaysUseTidy' => false,
+ 'wgDebugTidy' => false,
+ 'wgTidyConf' => $IP . '/includes/tidy.conf',
+ 'wgTidyOpts' => '',
+ 'wgTidyInternal' => $this->tidySupport->isInternal(),
);
if ( $config ) {
return true;
}
- /**
- * Run the "tidy" command on text if the $wgUseTidy
- * global is true
- *
- * @param string $text The text to tidy
- * @return string
- */
- private function tidy( $text ) {
- global $wgUseTidy;
-
- if ( $wgUseTidy ) {
- $text = MWTidy::tidy( $text );
- }
-
- return $text;
- }
-
private function wellFormed( $text ) {
$html =
Sanitizer::hackDocType() .
blah blah
!! endarticle
+!!article
+Foo
+!!text
+FOO
+!!endarticle
+
!!article
Template:Foo
!!text
</p>
!! end
+# Note that the html+tidy output removes the spaces after the <li>,
+# which is a bug (http://sourceforge.net/p/tidy/bugs/945/, etc).
+# This is an issue for all tests with lists. We intentionally do
+# *not* add html+tidy clauses for these, as we don't want to
+# document/test the broken behavior. (Parsoid matches the non-tidy
+# output in these cases.)
+
!! test
Simple list
!! wikitext
parsoid=wt2wt,html2wt
!! wikitext
'''''foo'''''
-!! html/*
+!! html
<p><b><i>foo</i></b>
</p>
!! end
!''a!!''b
|''a||''b
|}
-!! html
+!! html/php+tidy
+<table>
+<tr>
+<th><i>a</i></th>
+<th><i>b</i></th>
+<td><i>a</i></td>
+<td><i>b</i></td>
+</tr>
+</table>
+!! html/parsoid
<table>
<tbody><tr><th><i>a</i></th><th><i>b</i></th>
<td><i>a</i></td><td><i>b</i></td></tr>
</p>
!! end
+# There is a tidy bug here: http://sourceforge.net/p/tidy/bugs/946/
!! test
Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
!! wikitext
a <div>foo</div>
<p>b
</p>
+!! html+tidy
+<p>a</p>
+<div>foo</div>
+<p>b</p>
!! end
!! test
a <blockquote>foo</blockquote>
<p>b
</p>
+!! html+tidy
+<p>a</p>
+<blockquote>
+<p>foo</p>
+</blockquote>
+<p>b</p>
!! end
!! test
a <div>foo</div>
b <div>foo</div>
+!! html+tidy
+<p>a</p>
+<div>foo</div>
+<p>b</p>
+<div>foo</div>
!! end
!! test
a <blockquote>foo</blockquote>
b <blockquote>foo</blockquote>
+!! html+tidy
+<p>a</p>
+<blockquote>
+<p>foo</p>
+</blockquote>
+<p>b</p>
+<blockquote>
+<p>foo</p>
+</blockquote>
!! end
!! test
</p>
x <div>foo</div> z
+!! html+tidy
+<div>foo</div>
+<p>a</p>
+<p>b c d e</p>
+<p>x</p>
+<div>foo</div>
+<p>z</p>
!! end
!! test
</p>
<div>e</div>
+!! html+tidy
+<p><br /></p>
+<p>a</p>
+<p>b</p>
+<div>a</div>
+<p>b</p>
+<div>b</div>
+<p>d</p>
+<p><br /></p>
+<div>e</div>
!! end
## PHP parser emits output which is broken
+## XXX The parsoid output doesn't match the tidy output.
!! test
Unclosed HTML p-tags should be handled properly
!! wikitext
a
b
+!! html/php+tidy
+<div>
+<p>foo</div></p>
+<p>a</p>
+b</div>
!! html/parsoid
<div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
<p>a</p>
<blockquote>Foo <del>bar</del> <ins>baz</ins> quux
</blockquote>
+!! html+tidy
+<blockquote>
+<p>Foo</p>
+<del>bar</del> <ins>baz</ins> quux</blockquote>
!! end
!! test
</pre></div>
<pre></pre>
+!! html+tidy
+<p>a</p>
+<div>
+<pre>
+foo
+</pre></div>
!! end
!! test
a
| b
| c
-!! html/parsoid
+!! html/php
<pre>a
| b
-| c</pre>
+| c
+</pre>
!!end
!!test
a
| b
| c
+!! html/php
+<p>a
+</p>
+<pre>| b
+| c
+</pre>
!! html/parsoid
<p>a</p>
<pre>
c <blockquote> foo </blockquote>
<pre><span> foo </span>
</pre>
-!!end
+!! html+tidy
+<p>a</p>
+<p>foo</p>
+<p>b</p>
+<div>foo</div>
+<p>c</p>
+<blockquote>
+<p>foo</p>
+</blockquote>
+<pre>
+<span> foo </span>
+</pre>
+!! end
!!test
3b. Indent-Pre and block tags (multi-line html)
</pre>
b <div> foo </div>
+!! html+tidy
+<pre>
+a <span>foo</span>
+</pre>
+<p>b</p>
+<div>foo</div>
!!end
!!test
</div></li>
</ul>
+!! html+tidy
+<p>a</p>
+<ul class="gallery mw-gallery-traditional">
+<li class="gallerybox" style="width: 155px">
+<div style="width: 155px">
+<div class="thumb" style="width: 150px;">
+<div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div>
+</div>
+<div class="gallerytext"></div>
+</div>
+</li>
+</ul>
!!end
!! test
## The Parsoid team believes the following three test exposes a
## bug in the PHP parser. (Parsoid team thinks the PHP parser is
## wrong to close the <dl> after the <dt> containing the <ul>.)
+## It also exposes a "misfeature" in tidy, which doesn't like
+## <dl> tags with a single <dt> child; it converts the <dt> into
+## a <dd> in that case. (Parsoid leaves the <dt> alone!)
!! test
Definition Lists: Mixed Lists: Test 1
!! wikitext
<li> bar</li></ul></dt></dl>
<dl><dt> baz</dt></dl></dd></dl>
+!! html/php+tidy
+<dl>
+<dd>
+<dl>
+<dd>
+<ul>
+<li>foo</li>
+<li>bar</li>
+</ul>
+</dd>
+</dl>
+<dl>
+<dt>baz</dt>
+</dl>
+</dd>
+</dl>
!! html/parsoid
<dl>
<dd><dl>
# rules regarding dd/dt on the next two tests. Parsoid is more
# consistent, and recognizes the shared nesting and keeps the
# still-open tags around until the nesting is complete.
+# (And tidy again converts <dt> to <dd> before 'bar'.)
!! test
Definition Lists: Mixed Lists: Test 11
<dl><dt>boo </dt>
<dd>baz</dd></dl></li></ol></li></ul></li></ol></li></ul>
+!! html/php+tidy
+<ul>
+<li>
+<ol>
+<li>
+<ul>
+<li>
+<ol>
+<li>
+<dl>
+<dt>foo </dt>
+<dd>
+<ul>
+<li>
+<dl>
+<dd>
+<dl>
+<dt>bar</dt>
+</dl>
+</dd>
+</dl>
+</li>
+</ul>
+</dd>
+</dl>
+<dl>
+<dt>boo </dt>
+<dd>baz</dd>
+</dl>
+</li>
+</ol>
+</li>
+</ul>
+</li>
+</ol>
+</li>
+</ul>
!! html/parsoid
<ul>
<li>
!! end
+# Another case where tidy converts a <dt> to a <dd> (but Parsoid doesn't).
!! test
Definition Lists: Weird Ones: Test 1
!! wikitext
<ul><li><ol><li><dl><dt> foo </dt>
<dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> bar (who uses this?)</dt></dl></dd></dl></dd></dl></dd></dl></li></ul></dd></dl></li></ol></li></ul>
+!! html/php+tidy
+<ul>
+<li>
+<ol>
+<li>
+<dl>
+<dt>foo </dt>
+<dd>
+<ul>
+<li>
+<dl>
+<dd>
+<dl>
+<dd>
+<dl>
+<dd>
+<dl>
+<dt>bar (who uses this?)</dt>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</li>
+</ul>
+</dd>
+</dl>
+</li>
+</ol>
+</li>
+</ul>
!! html/parsoid
<ul>
<li>
[[wikipedia:Foo|Bar]]
[[wikipedia:Foo|<span>Bar</span>]]
+!! html/php
+<p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/wiki/Foo">[1]</a>
+</p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo">Bar</a>
+</p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo"><span>Bar</span></a>
+</p>
!! html/parsoid
<p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo"></a></p>
<p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo">Bar</a></p>
!! html/php
<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&action=edit&redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</a>
</p>
+!! html/php+tidy
+<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de</a> <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&action=edit&redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</p>
!! html/parsoid
<p><a rel="mw:ExtLink" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)">Museo Picasso</a><span>.</span></p>
!! end
{|
| Foo!! ||
|}
+!! html
+<table>
+<tr>
+<td> Foo!! </td>
+<td>
+</td></tr></table>
+
!! html/parsoid
<table data-parsoid='{}'>
<tbody data-parsoid='{}'><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'> Foo!! </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'></td></tr>
<!--c1-->
<!--c2-->| b
|}
+!! html
+<table>
+<tr>
+<td>a
+</td>
+<td> b
+</td></tr></table>
+
!! html/parsoid
<table>
<tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'>a</td>
<td>foo</td></tr></tbody></table>
!! end
+## Note that Parsoid output differs from PHP and PHP+tidy here.
+## The lack of <tr> tags in the PHP output is arguably a bug in the
+## PHP parser, which tidy then compounds by fostering the content
+## entirely out of the table. Parsoid recognizes the table context
+## and generates <tr> and <td> wrappers as needed. Hopefully nobody
+## depends on PHP's treatment of broken table markup!
!! test
Implicit <td> after a |-
-(PHP parser relies on Tidy to add the missing <td> tags)
!! options
parsoid=wt2html,wt2wt
!! wikitext
|-
a
|}
-!! html
+!! html/php
+<table>
+
+a
+</table>
+
+!! html/php+tidy
+<p>a</p>
+!! html/parsoid
<table>
<tr><td>a</td></tr>
</table>
!! end
+# Again, Parsoid adds implicit <td>s here, PHP and Tidy strip the b out.
!! test
-Pres should be recognized in an explicit <td> context, but not in an implicit <td> context
-(PHP parser relies on Tidy to add the missing <td> tags)
+<pre> tags should be recognized in an explicit <td> context, but not in an implicit <td> context
!! options
parsoid=wt2html,wt2wt
!! wikitext
|-
b
|}
-!! html
+!! html/php
+<table>
+
+<tr>
+<td>
+<pre>a
+</pre>
+</td></tr>
+ b
+</table>
+
+!! html/php+tidy
+<p>b</p>
+<table>
+<tr>
+<td>
+<pre>
+a
+</pre></td>
+</tr>
+</table>
+!! html/parsoid
<table>
<tbody>
<tr><td><pre>a</pre></td></tr>
</table>
!! end
+# PHP + Tidy strips the list out of the table; Parsoid wraps it.
!! test
Lists should be recognized in an implicit <td> context
-(PHP parser relies on Tidy to add the missing <td> tags)
!! options
parsoid=wt2html,wt2wt
!! wikitext
|-
*a
|}
-!! html
+!! html/php
+<table>
+
+<ul><li>a</li></ul>
+</table>
+
+!! html/php+tidy
+<ul>
+<li>a</li>
+</ul>
+!! html/parsoid
<table>
<tr>
<td><ul>
! foo || bar
<!-- foo --> || baz || quux
|}
+!! html/php
+<table>
+<tr>
+<th> foo </th>
+<th> bar
+</th>
+<td> baz </td>
+<td> quux
+</td></tr></table>
+
!! html/parsoid
<table>
-<tbody>
-<tr><th>foo </th><th>bar </th>
-<td>baz </td>
-<td>quux</td></tr></tbody></table>
+<tbody><tr><th> foo </th><th> bar
+<!-- foo --> </th><td> baz </td><td> quux</td></tr>
+</tbody></table>
!! end
+# PHP throws away the (semi-broken) "foo" class here; Parsoid
+# preserves it.
!!test
Parsoid: Recover better from broken table attributes
!!options
| class="bar" |
foo
|}
+!!html/php+tidy
+<table>
+<tr>
+<td class="bar">
+<p>foo</p>
+</td>
+</tr>
+</table>
!!html/parsoid
<table class="foo">
<tr>
!! html/php
<p><strong class="selflink">Bug462</strong> <strong class="selflink">Bug462</strong>
</p>
+!! html/php+tidy
+<p><strong class="selflink">Bug462</strong> <strong class="selflink">Bug462</strong></p>
!! html/parsoid
<p><a rel="mw:WikiLink" href="./Bug462">Bug462</a> <a rel="mw:WikiLink" href="./Bug462">Bug462</a></p>
!! end
title=[[User:test/123]]
!! wikitext
[[#a|b]]
+!! html/php
+<p><a href="#a">b</a>
+</p>
!! html/parsoid
<p data-parsoid='{}'><a rel="mw:WikiLink" href="../User:Test/123#a" data-parsoid='{"stx":"piped","a":{"href":"../User:Test/123#a"},"sa":{"href":"#a"}}'>b</a></p>
!! end
[http://wp.org ''foo'']
!! html
-<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)"> bar</a>
-</p><p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)"> <i>bar</i></a>
+<p><a href="/wiki/Foo" title="Foo"> bar</a>
+</p><p><a href="/wiki/Foo" title="Foo"> <i>bar</i></a>
</p><p><a rel="nofollow" class="external text" href="http://wp.org">foo</a>
</p><p><a rel="nofollow" class="external text" href="http://wp.org"><i>foo</i></a>
</p>
Link with angle bracket after anchor
!! wikitext
[[Foo#<bar>]]
+!! html/php
+<p><a href="/wiki/Foo#.3Cbar.3E" title="Foo">Foo#<bar></a>
+</p>
!! html/parsoid
<p><a rel="mw:WikiLink" href="./Foo#%3Cbar%3E" data-parsoid='{"stx":"simple","a":{"href":"./Foo#%3Cbar%3E"},"sa":{"href":"Foo#<bar>"}}'>Foo#<bar></a></p>
!! end
<ul><li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
<li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li></ul>
+!! html+tidy
+<ul>
+<li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
+<li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
+</ul>
!! end
!! test
!! end
# TODO: Fix html2html mode (bug 51055)!
+# This </br> handling was added as part of bug 50831; but it
+# differs from how PHP+tidy handles this. We should investigate
+# this.
!! test
Parsoid: Broken br tag recognition
!! options
</br>
<br/ >
+!! html/php+tidy
+<p></br></p>
+<p><br /></p>
!! html/parsoid
<p><br></p>
<p><br/></p>
!! html
<hr /> Foo
+!! html+tidy
+<hr />
+<p>Foo</p>
!! end
###
</li>
</li>
+!! html+tidy
+<ul>
+<li>a</li>
+<li>b</li>
+<li>c</li>
+</ul>
!!end
!!test
!!test
Test the li-hack
-(Cannot test this with PHP parser since it relies on Tidy for the hack)
+(The PHP parser relies on Tidy for the hack)
!!options
parsoid=wt2html,wt2wt
!! wikitext
<li><li>not a li-hack
</li>
</ul>
-!! html
+!! html+tidy
<ul>
-<li> foo</li>
+<li>foo</li>
<li>li-hack</li>
-<li about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>templated li-hack"}}}}]}'>templated li-hack</li>
-<li> <!--foo--> </li>
-<li> li-hack with preceding comments</li>
+<li>templated li-hack</li>
+<li>unsupported li-hack with preceding comments</li>
</ul>
-
<ul>
-<li></li>
-<li>not a li-hack
-</li>
+<li>not a li-hack</li>
</ul>
!!end
!! test
Unbalanced closing block tags break a list
-(Parsoid-only since php parser generates broken html -- relies on Tidy to fix up)
+(php parser relies on Tidy to fix up)
!! wikitext
<div>
*a</div><div>
*b</div>
-!! html/parsoid
+!! html+tidy
<div>
<ul>
-<li>a
-</li>
-</ul></div><div>
+<li>a</li>
+</ul>
+</div>
+<div>
<ul>
-<li>b
-</li>
-</ul></div>
+<li>b</li>
+</ul>
+</div>
!! end
+# Parsoid fails this test, but it might be tricky to support properly.
+# See bug 68395.
!! test
Unbalanced closing non-block tags don't break a list
-(Parsoid-only since php parser generates broken html -- relies on Tidy to fix up)
+(php parser relies on Tidy to fix up)
!! wikitext
<span>
*a</span><span>
*b</span>
+!! html/php+tidy
+<ul>
+<li><span>a</span></li>
+<li><span>b</span></li>
+</ul>
!! html/parsoid
-<p><span></span>
-</p>
+<span>
<ul>
<li>a<span></span>
</li>
<li>b
</li>
</ul>
+</span>
!! end
!! test
Unclosed formatting tags that straddle lists are closed and reopened
-(Parsoid-only since php parser generates broken html -- relies on Tidy to fix up)
+(php parser relies on Tidy to fix up)
!! wikitext
# <s> a
# b </s>
+!! html/php+tidy
+<ol>
+<li><s>a</s></li>
+<li><s>b</s></li>
+</ol>
!! html/parsoid
<ol>
<li> <s> a </s>
</ol>
!! end
+# Parsoid fails this test, but it might be tricky to support properly.
+# See bug 68395.
!!test
List embedded in a non-block tag
-(Ugly Parsoid output -- worth fixing; Disabled for PHP parser since it relies on Tidy)
+(Ugly Parsoid output -- worth fixing; PHP parser relies on Tidy)
!! wikitext
<small>
* foo
</small>
+!! html/php+tidy
+<ul>
+<li><small>foo</small></li>
+</ul>
!! html/parsoid
-<p><small></small></p>
<small>
<ul>
<li> foo</li>
</ul>
</small>
-<p><small></small></p>
!!end
+# This is a bug in the PHP parser + tidy combination.
+# (The </tr> tag gets parsed as text and html-escaped by PHP,
+# and then fostered out of the table by tidy.)
+# We believe the Parsoid output to be correct.
!! test
Table with missing opening <tr> tag
!! options
<td>foo</td>
</tr>
</table>
+!! html/php+tidy
+<p></tr></p>
+<table>
+<tr>
+<td>foo</td>
+</tr>
+</table>
!! html/parsoid
<table>
<tr>
title=[['foo & bar = baz']]
!! wikitext
''{{PAGENAME}}''
-!! html
+!! html/php
<p><i>'foo & bar = baz'</i>
</p>
+!! html+tidy
+<p><i>'foo & bar = baz'</i></p>
!! end
!! test
title=[[*RFC 1234 http://example.com/]]
!! wikitext
{{PAGENAME}}
-!! html
+!! html/php
<p>*RFC 1234 http://example.com/
</p>
+!! html+tidy
+<p>*RFC 1234 http://example.com/</p>
!! end
!! test
title=[[*RFC 1234 http://example.com/]]
!! wikitext
{{PAGENAMEE}}
-!! html
+!! html/php
<p>*RFC_1234_http://example.com/
</p>
+!! html+tidy
+<p>*RFC_1234_http://example.com/</p>
!! end
!! test
!! wikitext
{{paramtest|
param =[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]}}
-!! html
+!! html/php
This is a test template with parameter <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a> <div class="thumbcaption"><a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
+!! html+tidy
+<p>This is a test template with parameter</p>
+<div class="thumb tright">
+<div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a>
+<div class="thumbcaption"><a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&action=edit&redlink=1" class="new" title="No link (page does not exist)">caption</a></div>
+</div>
+</div>
!! end
!! article
{{{{echo|[[foo}}]]}}
!! html
-<p>{{<a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">foo</a>}}
-</p><p>{{<a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">foo</a>}}
+<p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
+</p><p>{{<a href="/wiki/Foo" title="Foo">foo</a>}}
</p><p>{{[[foo}}]]
</p>
!! end
<div>Foo</div>
<blockquote>Foo</blockquote>
+!! html+tidy
+<div>Foo</div>
+<blockquote>
+<p>Foo</p>
+</blockquote>
!!end
!!test
</p>
bar <div>baz</div>
-!!end
+!! html+tidy
+<p>Foo</p>
+<p>bar</p>
+<div>baz</div>
+!! end
!!test
Templates: P-wrapping: 1d. Template preceded by comment-only line
!! wikitext
{{echo|[[Foo|bar]]}}
!! html
-<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+<p><a href="/wiki/Foo" title="Foo">bar</a>
</p>
!!end
!! wikitext
[[{{echo|Foo}}|bar]]
!! html
-<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+<p><a href="/wiki/Foo" title="Foo">bar</a>
</p>
!!end
[[:Foo{{echo|bar}}|bar]]
!! html
-<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+<p><a href="/wiki/Foo" title="Foo">bar</a>
</p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">Foobar</a>
</p><p><a href="/index.php?title=Foobarbaz&action=edit&redlink=1" class="new" title="Foobarbaz (page does not exist)">Foobarbaz</a>
</p><p><a href="/index.php?title=Foobar&action=edit&redlink=1" class="new" title="Foobar (page does not exist)">bar</a>
!! wikitext
[[Foo|{{echo|bar}}]]
!! html
-<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+<p><a href="/wiki/Foo" title="Foo">bar</a>
</p>
!!end
!! wikitext
{{echo|[[{{echo|Foo}}|bar]]}}
!! html
-<p><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">bar</a>
+<p><a href="/wiki/Foo" title="Foo">bar</a>
</p>
!!end
a
<tr><td></td></tr></table>
-!!end
+!! html+tidy
+<p>a</p>
+<table>
+<tr>
+<td></td>
+</tr>
+</table>
+!! end
!!test
Templates: Wiki Tables: 1b. Fostering of entire template content
</div>
<tr><td></td></tr></table>
-!!end
+!! html+tidy
+<div>
+<p>foo</p>
+</div>
+<table>
+<tr>
+<td></td>
+</tr>
+</table>
+!! end
!!test
Templates: Wiki Tables: 2. Fostering of partial template content
<div>b</div>
<tr><td></td></tr></table>
-!!end
+!! html+tidy
+<p>a</p>
+<div>b</div>
+<table>
+<tr>
+<td></td>
+</tr>
+</table>
+!! end
!!test
Templates: Wiki Tables: 3. td-content via multiple templates
!! html
a<div>bc</div>de
-!!end
+!! html+tidy
+<p>a</p>
+<div>bc</div>
+<p>de</p>
+!! end
!!test
Templates: Ugly templates: 1. Navbox template parses badly leading to table misnesting
<figure class="mw-default-size mw-halign-right" typeof="mw:Image mw:Placeholder"><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
+# Parsoid's output here is broken (incorrect p-wrapping); see bug 64901.
!! test
Image with link tails
!! options
123<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>456
123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div></div></div></div>456
+!! html/php+tidy
+<p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456</p>
+<p>123</p>
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+<p>456 123</p>
+<div class="thumb tright">
+<div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>
+</div>
+</div>
+</div>
+<p>456</p>
!! html/parsoid
<p>123<span class="mw-default-size" 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></span>456</p>
123<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></figure>456
!! html
<p>I always thought é was a cute letter.
</p>
+!! html+tidy
+<p>I always thought é was a cute letter.</p>
!! end
!! test
!! end
# This was bug 41545 in the PHP parser.
+# Note that tidy doesn't handle this correctly.
!! test
Nesting of <kbd>
!! wikitext
# The following cases were bug 51081 in the PHP parser.
# Note that there are some other nestable tags (b, i, etc) which are
# not covered; see bug 51081 for discussion.
+
+# Note that tidy doesn't handle this correctly.
!! test
Nesting of <em>
!! wikitext
</p>
!! end
+# Note that tidy doesn't handle this correctly.
!! test
Nesting of <strong>
!! wikitext
Nesting of <q>
!! wikitext
<q>X<q>Y</q>Z</q>
-!! html
-<p><q>X<q>Y</q>Z</q>
-</p>
+!! html+tidy
+<p><q>X<q>Y</q>Z</q></p>
!! end
+# Note that tidy doesn't handle this correctly.
!! test
Nesting of <ruby>
!! wikitext
</p>
!! end
+# Note that tidy doesn't handle this correctly.
!! test
Nesting of <bdo>
!! wikitext
!! html
<a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link<div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div></a>
+!! html+tidy
+<p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Safe Link<div style="display:none">" onmouseover="alert(document.cookie)" onfoo="</div></a></p>
!! end
!! test
</div>
+!! html+tidy
+<h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>http://</p>
+<div id="toc" class="toc">
+<div id="toctitle">
+<h2>Contents</h2>
+</div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
+</ul>
+</div>
!! end
!! test
<tr><td></td></tr>
</table>
+!! html+tidy
+<h2><span class="mw-headline" id="a">a</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<table style="__TOC__">
+<tr>
+<td></td>
+</tr>
+</table>
!! end
# Known to produce bogus xml (extra </td>)
</tr>
</table>
+!! html+tidy
+<table>
+<tr>
+<th>https://</th>
+<th></th>
+<th></th>
+<th></th>
+</tr>
+</table>
!! end
!! test
!!test
Fuzz testing: URL adjacent extension (with space, clean)
-!! options
!! wikitext
http://example.com <nowiki>junk</nowiki>
!! html
!!test
Fuzz testing: URL adjacent extension (no space, dirty; nowiki)
-!! options
!! wikitext
http://example.com<nowiki>junk</nowiki>
!! html
!!test
Fuzz testing: URL adjacent extension (no space, dirty; pre)
-!! options
!! wikitext
http://example.com<pre>junk</pre>
!! html
<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><pre>junk</pre>
+!! html+tidy
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></p>
+<pre>
+junk
+</pre>
!!end
!!test
!! html/php
<p>JavaScript
</p>
+!! html/php+tidy
+<p>JavaScript</p>
!! html/parsoid
<p><span typeof="mw:Entity">J</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">v</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">S</span><span typeof="mw:Entity">c</span><span typeof="mw:Entity">r</span><span typeof="mw:Entity">i</span><span typeof="mw:Entity">p</span><span typeof="mw:Entity">t</span></p>
!! end
!! html/php
<p>îî
</p>
+!! html/php+tidy
+<p>îî</p>
!! html/parsoid
<p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
!! end
!! html
<p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789
</p>
+!! html+tidy
+<p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789</p>
!! end
!! test
!! html
<p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc983">RFC 983</a> 987
</p>
+!! html+tidy
+<p><a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc983">RFC 983</a> 987</p>
!! end
!! test
<blockquote>Line one
Line two</blockquote>
+!! html+tidy
+<blockquote>
+<p>Line one Line two</p>
+</blockquote>
!! end
!! test
</p>
Line two</blockquote>
+!! html+tidy
+<blockquote>
+<p>Line one</p>
+Line two</blockquote>
!! end
!! test
</p>
</blockquote>
+!! html+tidy
+<blockquote>
+<p>Line one</p>
+<p>Line two</p>
+</blockquote>
!! end
!! test
</p>
</blockquote>
+!! html+tidy
+<blockquote>
+<p>Line one</p>
+<p>Line two</p>
+</blockquote>
!! end
!! test
<h2><span class="mw-headline" id="Quote"><blockquote>Quote</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+!! html+tidy
+<div id="toc" class="toc">
+<div id="toctitle">
+<h2>Contents</h2>
+</div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
+</ul>
+</div>
+<h2><span class="mw-headline" id="Quote"></span></h2>
+<blockquote>
+<p><span class="mw-headline" id="Quote">Quote</span></p>
+</blockquote>
+<p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&action=edit&section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></p>
!! end
!! test
<h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote>Bar</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+!! html+tidy
+<div id="toc" class="toc">
+<div id="toctitle">
+<h2>Contents</h2>
+</div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
+<li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
+</ul>
+</div>
+<h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i></span></h2>
+<blockquote>
+<p><span class="mw-headline" id="Foo_Bar_2">Bar</span></p>
+</blockquote>
+<p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></p>
!! end
!! test
!! wikitext
==[[foo|x<nowiki>y</nowiki>z]]==
!! html
-<h2><span class="mw-headline" id="xyz"><a href="/index.php?title=Foo&action=edit&redlink=1" class="new" title="Foo (page does not exist)">xyz</a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: xyz">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<h2><span class="mw-headline" id="xyz"><a href="/wiki/Foo" title="Foo">xyz</a></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&action=edit&section=1" title="Edit section: xyz">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
!! end
{|
|foo
|}
+!! html/php
+ <div>foo</div>
+<table>
+<tr>
+<td>foo
+</td></tr></table>
+
!! html/parsoid
<div data-parsoid='{"stx":"html"}'>foo</div>
<table><tbody>
<!--hi-->|-
| there
|}
+!! html/php
+<table>
+
+<tr>
+<td> there
+</td></tr></table>
+
!! html/parsoid
<table data-parsoid='{}'>
<!--hi--><tbody data-parsoid='{}'><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
"$thisString must refer to a readable file"
);
- $compiler = ResourceLoader::getLessCompiler();
+ $compiler = ResourceLoader::getLessCompiler( RequestContext::getMain()->getConfig() );
$this->assertNotNull( $compiler->compileFile( $this->file ) );
}
+++ /dev/null
-<?php
-/**
- * Testing framework for the password hashes
- *
- * 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.24
- */
-abstract class MediaWikiPasswordTestCase extends MediaWikiTestCase {
- /**
- * @var PasswordFactory
- */
- protected $passwordFactory;
-
- protected function setUp() {
- parent::setUp();
-
- $this->passwordFactory = new PasswordFactory();
- foreach ( $this->getTypeConfigs() as $type => $config ) {
- $this->passwordFactory->register( $type, $config );
- }
- }
-
- /**
- * Return an array of configs to be used for this class's password type.
- *
- * @return array[]
- */
- abstract protected function getTypeConfigs();
-
- /**
- * An array of tests in the form of (bool, string, string), where the first
- * element is whether the second parameter (a password hash) and the third
- * parameter (a password) should match.
- *
- * @return array
- */
- abstract public function providePasswordTests();
-
- /**
- * @dataProvider providePasswordTests
- */
- public function testHashing( $shouldMatch, $hash, $password ) {
- $hash = $this->passwordFactory->newFromCiphertext( $hash );
- $password = $this->passwordFactory->newFromPlaintext( $password, $hash );
- $this->assertSame( $shouldMatch, $hash->equals( $password ) );
- }
-
- /**
- * @dataProvider providePasswordTests
- */
- public function testStringSerialization( $shouldMatch, $hash, $password ) {
- $hashObj = $this->passwordFactory->newFromCiphertext( $hash );
- $serialized = $hashObj->toString();
- $unserialized = $this->passwordFactory->newFromCiphertext( $serialized );
- $this->assertTrue( $hashObj->equals( $unserialized ) );
- }
-
- /**
- * @dataProvider providePasswordTests
- * @covers InvalidPassword::equals
- * @covers InvalidPassword::toString
- */
- public function testInvalidUnequalNormal( $shouldMatch, $hash, $password ) {
- $invalid = $this->passwordFactory->newFromCiphertext( null );
- $normal = $this->passwordFactory->newFromCiphertext( $hash );
-
- $this->assertFalse( $invalid->equals( $normal ) );
- $this->assertFalse( $normal->equals( $invalid ) );
- }
-}
*
* @param array|string $globalKeys Key to the global variable, or an array of keys.
*
- * @throws Exception when trying to stash an unset global
+ * @throws Exception When trying to stash an unset global
* @since 1.23
*/
protected function stashMwGlobals( $globalKeys ) {
* @param string $name The name of the global, as in wgFooBar
* @param array $values The array containing the entries to set in that global
*
- * @throws MWException if the designated global is not an array.
+ * @throws MWException If the designated global is not an array.
*
* @since 1.21
*/
* @param DatabaseBase $db The database connection
* @param string $prefix The prefix to use for the new table set (aka schema).
*
- * @throws MWException if the database table prefix is already $prefix
+ * @throws MWException If the database table prefix is already $prefix
*/
public static function setupTestDB( DatabaseBase $db, $prefix ) {
global $wgDBprefix;
$this->assertEmpty( $errors, implode( "\n", $errors ) );
}
+
+ /**
+ * Note: we are overriding this method to remove the deprecated error
+ * @see https://bugzilla.wikimedia.org/show_bug.cgi?id=69505
+ * @see https://github.com/sebastianbergmann/phpunit/issues/1292
+ *
+ * @param array $matcher
+ * @param string $actual
+ * @param string $message
+ * @param bool $isHtml
+ */
+ public static function assertTag($matcher, $actual, $message = '', $isHtml = true) {
+ //trigger_error(__METHOD__ . ' is deprecated', E_USER_DEPRECATED);
+
+ $dom = PHPUnit_Util_XML::load($actual, $isHtml);
+ $tags = PHPUnit_Util_XML::findNodes($dom, $matcher, $isHtml);
+ $matched = count($tags) > 0 && $tags[0] instanceof DOMNode;
+
+ self::assertTrue($matched, $message);
+ }
}
/**
* @group GlobalFunctions
- *@covers ::wfRemoveDotSegments
+ * @covers ::wfRemoveDotSegments
*/
class WfRemoveDotSegmentsTest extends MediaWikiTestCase {
/**
* @dataProvider getHtmlData
*
* @param string $input
- * @param $expectedText
+ * @param string $expectedText
* @param array $expectedRemoved
* @param callable|bool $callback
*/
'Input wrapper with type and value.'
);
$this->assertEquals(
- '<input name=testname>',
+ '<input name=testname class=mw-ui-input>',
Html::input( 'testname' ),
'Input wrapper with all default values.'
);
/**
* @dataProvider providerGetThumbSizes
- * @param $filename String
- * @param $expectedNumberThumbs integer How many thumbnails to show
+ * @param string $filename
+ * @param int $expectedNumberThumbs How many thumbnails to show
*/
function testGetThumbSizes( $filename, $expectedNumberThumbs ) {
$iPage = $this->getImagePage( $filename );
/**
* @dataProvider providerGetDisplayWidthHeight
- * @param $dimensions Array [maxWidth, maxHeight, width, height]
- * @param $expected Array [width, height] The width and height we expect to display at
+ * @param array $dim Array [maxWidth, maxHeight, width, height]
+ * @param array $expected Array [width, height] The width and height we expect to display at
*/
function testGetDisplayWidthHeight( $dim, $expected ) {
$iPage = $this->getImagePage( 'animated.gif' );
/**
* @dataProvider providerGetThumbSizes
- * @param $filename String
- * @param $expectedNumberThumbs integer How many thumbnails to show
+ * @param string $filename
+ * @param int $expectedNumberThumbs How many thumbnails to show
*/
function testGetThumbSizes( $filename, $expectedNumberThumbs ) {
$iPage = $this->getImagePage( $filename );
public function testInLanguageThrows() {
wfMessage( 'foo' )->inLanguage( 123 );
}
+
+ public function keyProvider() {
+ return array(
+ 'string' => array(
+ 'key' => 'mainpage',
+ 'expected' => array( 'mainpage' ),
+ ),
+ 'single' => array(
+ 'key' => array( 'mainpage' ),
+ 'expected' => array( 'mainpage' ),
+ ),
+ 'multi' => array(
+ 'key' => array( 'mainpage-foo', 'mainpage-bar', 'mainpage' ),
+ 'expected' => array( 'mainpage-foo', 'mainpage-bar', 'mainpage' ),
+ ),
+ 'empty' => array(
+ 'key' => array(),
+ 'expected' => null,
+ 'exception' => 'InvalidArgumentException',
+ ),
+ 'null' => array(
+ 'key' => null,
+ 'expected' => null,
+ 'exception' => 'InvalidArgumentException',
+ ),
+ 'bad type' => array(
+ 'key' => 17,
+ 'expected' => null,
+ 'exception' => 'InvalidArgumentException',
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider keyProvider()
+ *
+ * @covers Message::getKey
+ */
+ public function testGetKey( $key, $expected, $exception = null ) {
+ if ( $exception ) {
+ $this->setExpectedException( $exception );
+ }
+
+ $msg = new Message( $key );
+ $this->assertEquals( $expected, $msg->getKeysToTry() );
+ $this->assertEquals( count( $expected ) > 1, $msg->isMultiKey() );
+ $this->assertContains( $msg->getKey(), $expected );
+ }
}
/**
* @dataProvider providerImproveTypeFromExtension
- * @param $ext String File extension (no leading dot)
- * @param $oldMime String Initially detected mime
- * @param $expectedMime String Mime type after taking extension into account
+ * @param string $ext File extension (no leading dot)
+ * @param string $oldMime Initially detected MIME
+ * @param string $expectedMime MIME type after taking extension into account
*/
function testImproveTypeFromExtension( $ext, $oldMime, $expectedMime ) {
$actualMime = $this->mimeMagic->improveTypeFromExtension( $oldMime, $ext );
* options['expectedReturn'] - expected return value
* options['message'] - PHPUnit message for assertion
*
- * @param array $args key-value array of arguments as shown above
+ * @param array $args Key-value array of arguments as shown above
*/
protected function assertTransformCssMediaCase( $args ) {
$queryData = array();
// Load module script only
array(
array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
- '<script src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=scripts&skin=vector&*"></script>
+ '<script src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=scripts&skin=fallback&*"></script>
'
),
// Load module styles only
// This also tests the order the modules are put into the url
array(
array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
- '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.bar%2Cbaz%2Cfoo&only=styles&skin=vector&*">
+ '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.bar%2Cbaz%2Cfoo&only=styles&skin=fallback&*">
'
),
// Load private module (combined)
array(
array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
- '<script>if(window.mw){
-mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n/* cache key: wiki:resourceloader:filter:minify-css:7:fd8ea20b3336b2bfb230c789d430067a */"]},{});
-/* cache key: wiki:resourceloader:filter:minify-js:7:274ccee17be73cd5f4dda5dc2a819188 */
-}</script>
+ '<script>if(window.mw){mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n"]},{});}
+</script>
'
),
// Load module script with with ESI
array(
array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS, true ),
- '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=scripts&skin=vector&*" /></script>
+ '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=scripts&skin=fallback&*" /></script>
'
),
// Load module styles with with ESI
array(
array( 'test.foo', ResourceLoaderModule::TYPE_STYLES, true ),
- '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=styles&skin=vector&*" /></style>
+ '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&lang=en&modules=test.foo&only=styles&skin=fallback&*" /></style>
',
),
);
'wgLoadScript' => 'http://127.0.0.1:8080/w/load.php',
// Affects whether CDATA is inserted
'wgWellFormedXml' => false,
- // Cache key is based on database name, and affects output;
- // this test should not touch the database anyways.
- 'wgDBname' => 'wiki',
- 'wgDBprefix' => '',
) );
$class = new ReflectionClass( 'OutputPage' );
$method = $class->getMethod( 'makeResourceLoaderLink' );
$method->setAccessible( true );
$ctx = new RequestContext();
- $ctx->setSkin( Skin::newFromKey( 'vector' ) );
+ $ctx->setSkin( SkinFactory::getDefaultInstance()->makeSkin( 'fallback' ) );
$ctx->setLanguage( 'en' );
$out = new OutputPage( $ctx );
$rl = $out->getResourceLoader();
)),
) );
$links = $method->invokeArgs( $out, $args );
- $this->assertEquals( $expectedHtml, $links['html'] );
+ // Strip comments to avoid variation due to wgDBname in WikiID and cache key
+ $actualHtml = preg_replace( '#/\*[^*]+\*/#', '', $links['html'] );
+ $this->assertEquals( $expectedHtml, $actualHtml );
}
}
+++ /dev/null
-<?php
-
-/**
- * @covers SkinTemplate
- *
- * @group Output
- *
- * @licence GNU GPL v2+
- * @author Bene* < benestar.wikimedia@gmail.com >
- */
-
-class SkinTemplateTest extends MediaWikiTestCase {
- /**
- * @dataProvider makeListItemProvider
- */
- public function testMakeListItem( $expected, $key, $item, $options, $message ) {
- $template = $this->getMockForAbstractClass( 'BaseTemplate' );
-
- $this->assertEquals(
- $expected,
- $template->makeListItem( $key, $item, $options ),
- $message
- );
- }
-
- public function makeListItemProvider() {
- return array(
- array(
- '<li class="class" title="itemtitle"><a href="url" title="title">text</a></li>',
- '',
- array(
- 'class' => 'class',
- 'itemtitle' => 'itemtitle',
- 'href' => 'url',
- 'title' => 'title',
- 'text' => 'text'
- ),
- array(),
- 'Test makteListItem with normal values'
- )
- );
- }
-}
$this->setExpectedException( 'UserNotLoggedIn', $expected );
- if ( $reason === 'blank' && $title === 'blank' ) {
- $specialPage->requireLogin();
- } else {
- $specialPage->requireLogin( $reason, $title );
- }
+ // $specialPage->requireLogin( [ $reason [, $title ] ] )
+ call_user_func_array(
+ array( $specialPage, 'requireLogin' ),
+ array_filter( array( $reason, $title ) )
+ );
}
public function requireLoginAnonProvider() {
$lang = 'en';
- $msg = wfMessage( 'loginreqlink' )->inLanguage( $lang )->escaped();
- $loginLink = '<a href="/index.php?title=Special:UserLogin&returnto=Special%3AWatchlist"'
- . ' title="Special:UserLogin">' . $msg . '</a>';
-
- $expected1 = wfMessage( 'exception-nologin-text-manual' )
- ->params( $loginLink )->inLanguage( $lang )->text();
-
+ $expected1 = wfMessage( 'exception-nologin-text' )->inLanguage( $lang )->text();
$expected2 = wfMessage( 'about' )->inLanguage( $lang )->text();
return array(
array( $expected1, null, null ),
array( $expected2, 'about', null ),
- array( $expected2, wfMessage( 'about' ), null ),
array( $expected2, 'about', 'about' ),
- array( $expected2, 'about', wfMessage( 'about' ) ),
- array( $expected1, 'blank', 'blank' )
);
}
}
/**
- * @param array $messageDetails eg. array( 'KEY' => array(/PARAMS/) )
+ * @param array $messageDetails E.g. array( 'KEY' => array(/PARAMS/) )
* @return Message[]
*/
protected function getMockMessages( $messageDetails ) {
$this->setTitle( NS_USER );
$this->setUserPerm( '' );
- $this->assertEquals( array( array( 'badaccess-group0' ), array( 'namespaceprotected', 'User' ) ),
+ $this->assertEquals( array( array( 'badaccess-group0' ), array( 'namespaceprotected', 'User', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
$this->setTitle( NS_MEDIAWIKI );
$this->setUserPerm( 'bogus' );
- $this->assertEquals( array( array( 'protectedinterface' ) ),
+ $this->assertEquals( array( array( 'protectedinterface', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
$this->setTitle( NS_MEDIAWIKI );
$this->setUserPerm( 'bogus' );
- $this->assertEquals( array( array( 'protectedinterface' ) ),
+ $this->assertEquals( array( array( 'protectedinterface', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
$wgNamespaceProtection = null;
$this->setTitle( NS_USER, $this->userName . '/test.js' );
$this->runCSSandJSPermissions(
- array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
- array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'mycustomjsprotected', 'bogus' ) ),
+ array( array( 'badaccess-group0' ), array( 'mycustomjsprotected', 'bogus' ) ),
array( array( 'badaccess-group0' ) ),
- array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'mycustomjsprotected', 'bogus' ) ),
array( array( 'badaccess-group0' ) )
);
$this->setTitle( NS_USER, $this->userName . '/test.css' );
$this->runCSSandJSPermissions(
- array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'mycustomcssprotected', 'bogus' ) ),
array( array( 'badaccess-group0' ) ),
- array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'mycustomcssprotected', 'bogus' ) ),
array( array( 'badaccess-group0' ) ),
- array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) )
+ array( array( 'badaccess-group0' ), array( 'mycustomcssprotected', 'bogus' ) )
);
$this->setTitle( NS_USER, $this->altUserName . '/test.js' );
$this->runCSSandJSPermissions(
- array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
- array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
- array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
- array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
+ array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
+ array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
+ array( array( 'badaccess-group0' ), array( 'customjsprotected', 'bogus' ) ),
array( array( 'badaccess-group0' ) )
);
$this->setTitle( NS_USER, $this->altUserName . '/test.css' );
$this->runCSSandJSPermissions(
- array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
- array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
- array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) ),
+ array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) ),
+ array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) ),
array( array( 'badaccess-group0' ) ),
- array( array( 'badaccess-group0' ), array( 'customcssprotected' ) )
+ array( array( 'badaccess-group0' ), array( 'customcssprotected', 'bogus' ) )
);
$this->setTitle( NS_USER, $this->altUserName . '/tempo' );
"bogus" => array( 'bogus', "sysop", "protect", "" ) );
$this->assertEquals( array( array( 'badaccess-group0' ),
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'editprotected' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'bogus' ),
+ array( 'protectedpagetext', 'editprotected', 'bogus' ),
+ array( 'protectedpagetext', 'protect', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus',
$this->user ) );
- $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'editprotected' ),
- array( 'protectedpagetext', 'protect' ) ),
+ $this->assertEquals( array( array( 'protectedpagetext', 'bogus', 'edit' ),
+ array( 'protectedpagetext', 'editprotected', 'edit' ),
+ array( 'protectedpagetext', 'protect', 'edit' ) ),
$this->title->getUserPermissionsErrors( 'edit',
$this->user ) );
$this->setUserPerm( "" );
$this->assertEquals( array( array( 'badaccess-group0' ),
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'editprotected' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'bogus' ),
+ array( 'protectedpagetext', 'editprotected', 'bogus' ),
+ array( 'protectedpagetext', 'protect', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus',
$this->user ) );
$this->assertEquals( array( array( 'badaccess-groups', "*, [[$prefix:Users|Users]]", 2 ),
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'editprotected' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'edit' ),
+ array( 'protectedpagetext', 'editprotected', 'edit' ),
+ array( 'protectedpagetext', 'protect', 'edit' ) ),
$this->title->getUserPermissionsErrors( 'edit',
$this->user ) );
$this->setUserPerm( array( "edit", "editprotected" ) );
$this->assertEquals( array( array( 'badaccess-group0' ),
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'bogus' ),
+ array( 'protectedpagetext', 'protect', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus',
$this->user ) );
$this->assertEquals( array(
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'edit' ),
+ array( 'protectedpagetext', 'protect', 'edit' ) ),
$this->title->getUserPermissionsErrors( 'edit',
$this->user ) );
$this->assertEquals( false,
$this->title->quickUserCan( 'edit', $this->user ) );
$this->assertEquals( array( array( 'badaccess-group0' ),
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'editprotected' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'bogus' ),
+ array( 'protectedpagetext', 'editprotected', 'bogus' ),
+ array( 'protectedpagetext', 'protect', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus',
$this->user ) );
- $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'editprotected' ),
- array( 'protectedpagetext', 'protect' ) ),
+ $this->assertEquals( array( array( 'protectedpagetext', 'bogus', 'edit' ),
+ array( 'protectedpagetext', 'editprotected', 'edit' ),
+ array( 'protectedpagetext', 'protect', 'edit' ) ),
$this->title->getUserPermissionsErrors( 'edit',
$this->user ) );
$this->assertEquals( false,
$this->title->quickUserCan( 'edit', $this->user ) );
$this->assertEquals( array( array( 'badaccess-group0' ),
- array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'protect' ),
- array( 'protectedpagetext', 'protect' ) ),
+ array( 'protectedpagetext', 'bogus', 'bogus' ),
+ array( 'protectedpagetext', 'protect', 'bogus' ),
+ array( 'protectedpagetext', 'protect', 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus',
$this->user ) );
- $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
- array( 'protectedpagetext', 'protect' ),
- array( 'protectedpagetext', 'protect' ) ),
+ $this->assertEquals( array( array( 'protectedpagetext', 'bogus', 'edit' ),
+ array( 'protectedpagetext', 'protect', 'edit' ),
+ array( 'protectedpagetext', 'protect', 'edit' ) ),
$this->title->getUserPermissionsErrors( 'edit',
$this->user ) );
}
$this->assertEquals( false,
$this->title->userCan( 'bogus', $this->user ) );
- $this->assertEquals( array( array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ),
- array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ),
- array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ) ),
+ $this->assertEquals( array( array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
+ array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ),
+ array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n", 'bogus' ) ),
$this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
$this->assertEquals( true,
*/
public function testElementInputCanHaveAValueOfZero() {
$this->assertEquals(
- '<input name="name" value="0" />',
+ '<input name="name" value="0" class="mw-ui-input" />',
Xml::input( 'name', false, 0 ),
'Input with a value of 0 (bug 23797)'
);
$this->assertEquals(
'<label for="year">From year (and earlier):</label> ' .
- '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year" /> ' .
+ '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year" class="mw-ui-input" /> ' .
'<label for="month">From month (and earlier):</label> ' .
'<select id="month" name="month" class="mw-month-selector">' .
'<option value="-1">all</option>' . "\n" .
);
$this->assertEquals(
'<label for="year">From year (and earlier):</label> ' .
- '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year" /> ' .
+ '<input id="year" maxlength="4" size="7" type="number" value="2011" name="year" class="mw-ui-input" /> ' .
'<label for="month">From month (and earlier):</label> ' .
'<select id="month" name="month" class="mw-month-selector">' .
'<option value="-1">all</option>' . "\n" .
$this->assertEquals(
'<label for="year">From year (and earlier):</label> ' .
- '<input id="year" maxlength="4" size="7" type="number" name="year" /> ' .
+ '<input id="year" maxlength="4" size="7" type="number" name="year" class="mw-ui-input" /> ' .
'<label for="month">From month (and earlier):</label> ' .
'<select id="month" name="month" class="mw-month-selector">' .
'<option value="-1">all</option>' . "\n" .
*/
public function testTextareaNoContent() {
$this->assertEquals(
- '<textarea name="name" id="name" cols="40" rows="5"></textarea>',
+ '<textarea name="name" id="name" cols="40" rows="5" class="mw-ui-input"></textarea>',
Xml::textarea( 'name', '' ),
'textarea() with not content'
);
*/
public function testTextareaAttribs() {
$this->assertEquals(
- '<textarea name="name" id="name" cols="20" rows="10"><txt></textarea>',
+ '<textarea name="name" id="name" cols="20" rows="10" class="mw-ui-input"><txt></textarea>',
Xml::textarea( 'name', '<txt>', 20, 10 ),
'textarea() with custom attribs'
);
* @dataProvider provideAssert
* @param User $user
* @param string $assert
- * @param string|bool $error false if no error expected
+ * @param string|bool $error False if no error expected
*/
public function testAssert( $user, $assert, $error ) {
try {
--- /dev/null
+<?php
+
+/**
+ * @covers ApiModuleManager
+ *
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiModuleManagerTest extends MediaWikiTestCase {
+
+ private function getModuleManager() {
+ $request = new FauxRequest();
+ $main = new ApiMain( $request );
+ return new ApiModuleManager( $main );
+ }
+
+ public function newApiLogin( $main, $action ) {
+ return new ApiLogin( $main, $action );
+ }
+
+ public function addModuleProvider() {
+ return array(
+ 'plain class' => array(
+ 'login',
+ 'action',
+ 'ApiLogin',
+ null,
+ ),
+
+ 'with factory' => array(
+ 'login',
+ 'action',
+ 'ApiLogin',
+ array( $this, 'newApiLogin' ),
+ ),
+
+ 'with closure' => array(
+ 'logout',
+ 'action',
+ 'ApiLogout',
+ function ( ApiMain $main, $action ) {
+ return new ApiLogout( $main, $action );
+ },
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider addModuleProvider
+ */
+ public function testAddModule( $name, $group, $class, $factory = null ) {
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModule( $name, $group, $class, $factory );
+
+ $this->assertTrue( $moduleManager->isDefined( $name, $group ), 'isDefined' );
+ $this->assertNotNull( $moduleManager->getModule( $name, $group, true ), 'getModule' );
+ }
+
+ public function addModulesProvider() {
+ return array(
+ 'empty' => array(
+ array(),
+ 'action',
+ ),
+
+ 'simple' => array(
+ array(
+ 'login' => 'ApiLogin',
+ 'logout' => 'ApiLogout',
+ ),
+ 'action',
+ ),
+
+ 'with factories' => array(
+ array(
+ 'login' => array(
+ 'class' => 'ApiLogin',
+ 'factory' => array( $this, 'newApiLogin' ),
+ ),
+ 'logout' => array(
+ 'class' => 'ApiLogout',
+ 'factory' => function ( ApiMain $main, $action ) {
+ return new ApiLogout( $main, $action );
+ },
+ ),
+ ),
+ 'action',
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider addModulesProvider
+ */
+ public function testAddModules( array $modules, $group ) {
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $modules, $group );
+
+ foreach ( array_keys( $modules ) as $name ) {
+ $this->assertTrue( $moduleManager->isDefined( $name, $group ), 'isDefined' );
+ $this->assertNotNull( $moduleManager->getModule( $name, $group, true ), 'getModule' );
+ }
+ }
+
+ public function getModuleProvider() {
+ $modules = array(
+ 'feedrecentchanges' => 'ApiFeedRecentChanges',
+ 'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+ 'login' => array(
+ 'class' => 'ApiLogin',
+ 'factory' => array( $this, 'newApiLogin' ),
+ ),
+ 'logout' => array(
+ 'class' => 'ApiLogout',
+ 'factory' => function ( ApiMain $main, $action ) {
+ return new ApiLogout( $main, $action );
+ },
+ ),
+ );
+
+ return array(
+ 'legacy entry' => array(
+ $modules,
+ 'feedrecentchanges',
+ 'ApiFeedRecentChanges',
+ ),
+
+ 'just a class' => array(
+ $modules,
+ 'feedcontributions',
+ 'ApiFeedContributions',
+ ),
+
+ 'with factory' => array(
+ $modules,
+ 'login',
+ 'ApiLogin',
+ ),
+
+ 'with closure' => array(
+ $modules,
+ 'logout',
+ 'ApiLogout',
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider getModuleProvider
+ */
+ public function testGetModule( $modules, $name, $expectedClass ) {
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $modules, 'test' );
+
+ // should return the right module
+ $module1 = $moduleManager->getModule( $name, null, false );
+ $this->assertInstanceOf( $expectedClass, $module1 );
+
+ // should pass group check (with caching disabled)
+ $module2 = $moduleManager->getModule( $name, 'test', true );
+ $this->assertNotNull( $module2 );
+
+ // should use cached instance
+ $module3 = $moduleManager->getModule( $name, null, false );
+ $this->assertSame( $module1, $module3 );
+
+ // should not use cached instance if caching is disabled
+ $module4 = $moduleManager->getModule( $name, null, true );
+ $this->assertNotSame( $module1, $module4 );
+ }
+
+ public function testGetModule_null() {
+ $modules = array(
+ 'login' => 'ApiLogin',
+ 'logout' => 'ApiLogout',
+ );
+
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $modules, 'test' );
+
+ $this->assertNull( $moduleManager->getModule( 'quux' ), 'unknown name' );
+ $this->assertNull( $moduleManager->getModule( 'login', 'bla' ), 'wrong group' );
+ }
+
+ public function testGetNames() {
+ $fooModules = array(
+ 'login' => 'ApiLogin',
+ 'logout' => 'ApiLogout',
+ );
+
+ $barModules = array(
+ 'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+ 'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+ );
+
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $fooModules, 'foo' );
+ $moduleManager->addModules( $barModules, 'bar' );
+
+ $fooNames = $moduleManager->getNames( 'foo' );
+ $this->assertArrayEquals( array_keys( $fooModules ), $fooNames );
+
+ $allNames = $moduleManager->getNames();
+ $allModules = array_merge( $fooModules, $barModules );
+ $this->assertArrayEquals( array_keys( $allModules ), $allNames );
+ }
+
+ public function testGetNamesWithClasses() {
+ $fooModules = array(
+ 'login' => 'ApiLogin',
+ 'logout' => 'ApiLogout',
+ );
+
+ $barModules = array(
+ 'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+ 'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+ );
+
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $fooModules, 'foo' );
+ $moduleManager->addModules( $barModules, 'bar' );
+
+ $fooNamesWithClasses = $moduleManager->getNamesWithClasses( 'foo' );
+ $this->assertArrayEquals( $fooModules, $fooNamesWithClasses );
+
+ $allNamesWithClasses = $moduleManager->getNamesWithClasses();
+ $allModules = array_merge( $fooModules, array(
+ 'feedcontributions' => 'ApiFeedContributions',
+ 'feedrecentchanges' => 'ApiFeedRecentChanges',
+ ) );
+ $this->assertArrayEquals( $allModules, $allNamesWithClasses );
+ }
+
+ public function testGetModuleGroup() {
+ $fooModules = array(
+ 'login' => 'ApiLogin',
+ 'logout' => 'ApiLogout',
+ );
+
+ $barModules = array(
+ 'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+ 'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+ );
+
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $fooModules, 'foo' );
+ $moduleManager->addModules( $barModules, 'bar' );
+
+ $this->assertEquals( 'foo', $moduleManager->getModuleGroup( 'login' ) );
+ $this->assertEquals( 'bar', $moduleManager->getModuleGroup( 'feedrecentchanges' ) );
+ $this->assertNull( $moduleManager->getModuleGroup( 'quux' ) );
+ }
+
+ public function testGetGroups() {
+ $fooModules = array(
+ 'login' => 'ApiLogin',
+ 'logout' => 'ApiLogout',
+ );
+
+ $barModules = array(
+ 'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
+ 'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
+ );
+
+ $moduleManager = $this->getModuleManager();
+ $moduleManager->addModules( $fooModules, 'foo' );
+ $moduleManager->addModules( $barModules, 'bar' );
+
+ $groups = $moduleManager->getGroups();
+ $this->assertArrayEquals( array( 'foo', 'bar' ), $groups );
+ }
+
+}
*/
class ApiRevisionDeleteTest extends ApiTestCase {
- static $page = 'Help:ApiRevDel_test';
- var $revs = array();
+ public static $page = 'Help:ApiRevDel_test';
+ public $revs = array();
protected function setUp() {
// Needs to be before setup since this gets cached
/**
* Edits or creates a page/revision
- * @param string $pageName page title
- * @param string $text content of the page
- * @param string $summary optional summary string for the revision
- * @param int $defaultNs optional namespace id
- * @return array Array as returned by WikiPage::doEditContent()
+ * @param string $pageName Page title
+ * @param string $text Content of the page
+ * @param string $summary Optional summary string for the revision
+ * @param int $defaultNs Optional namespace id
+ * @return Array as returned by WikiPage::doEditContent()
*/
protected function editPage( $pageName, $text, $summary = '', $defaultNs = NS_MAIN ) {
$title = Title::newFromText( $pageName, $defaultNs );
* requesting a "real" edit token.
*
* @param array $params Key-value API params
- * @param array|null $session session array
+ * @param array|null $session Session array
* @param User|null $user A User object for the context
- * @return mixed Result of the API call
- * @throws Exception in case wsToken is not set in the session
+ * @return Result of the API call
+ * @throws Exception In case wsToken is not set in the session
*/
protected function doApiRequestWithToken( array $params, array $session = null,
User $user = null
$session = $wgRequest->getSessionArray();
}
- if ( $session['wsToken'] ) {
+ if ( isset( $session['wsToken'] ) && $session['wsToken'] ) {
// add edit token to fake session
$session['wsEditToken'] = $session['wsToken'];
// add token to request parameters
return $this->doApiRequest( $params, $session, false, $user );
} else {
- throw new Exception( "request data not in right format" );
+ throw new Exception( "Session token not available" );
}
}
/**
* Helper function -- remove files and associated articles by Title
*
- * @param Title $title title to be removed
+ * @param Title $title Title to be removed
*
* @return bool
*/
/**
* Helper function -- remove files and associated articles with a particular filename
*
- * @param string $fileName filename to be removed
+ * @param string $fileName Filename to be removed
*
* @return bool
*/
* Helper function -- given a file on the filesystem, find matching
* content in the db (and associated articles) and remove them.
*
- * @param string $filePath path to file on the filesystem
+ * @param string $filePath Path to file on the filesystem
*
* @return bool
*/
* Fake an upload by dumping the file into temp space, and adding info to $_FILES.
* (This is what PHP would normally do).
*
- * @param string $fieldName name this would have in the upload form
- * @param string $fileName name to title this
- * @param string $type mime type
- * @param string $filePath path where to find file contents
+ * @param string $fieldName Name this would have in the upload form
+ * @param string $fileName Name to title this
+ * @param string $type MIME type
+ * @param string $filePath Path where to find file contents
*
* @throws Exception
* @return bool
public function testPrefixes() {
$main = new ApiMain( new FauxRequest() );
$query = new ApiQuery( $main, 'foo', 'bar' );
- $modules = $query->getModuleManager()->getNamesWithClasses();
+ $moduleManager = $query->getModuleManager();
+
+ $modules = $moduleManager->getNames();
$prefixes = array();
- foreach ( $modules as $name => $class ) {
- /** @var ApiQueryBase $module */
- $module = new $class( $query, $name );
+ foreach ( $modules as $name ) {
+ $module = $moduleManager->getModule( $name );
+ $class = get_class( $module );
+
$prefix = $module->getModulePrefix();
if ( isset( $prefixes[$prefix] ) ) {
$this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );
/**
* Given a matrix and a pair of images, return new position
* @param array $matrix 2x2 rotation matrix
- * @param int $x x-coordinate number
- * @param int $y y-coordinate number
- * @return array Transformed with properties x, y
+ * @param int $x The x-coordinate number
+ * @param int $y The y-coordinate number
+ * @return Transformed with properties x, y
*/
private static function matrixMultiply2x2( $matrix, $x, $y ) {
return array(
*
* Will throw exception if the file could not be read or if it had fewer lines than requested.
*
- * @param int $number_desired number of lines desired
+ * @param int $number_desired Number of lines desired
*
* @throws Exception
- * @return array Array of exactly n elements, drawn randomly from lines the file
+ * @return Array of exactly n elements, drawn randomly from lines the file
*/
private function getRandomLines( $number_desired ) {
$filepath = $this->dictionaryFile;
* @param array $params Api parameters
* @param int $expectedCount Max number of iterations
* @param string $id Unit test id
- * @param bool $useContinue true to use smart continue
- * @return mixed Merged results data array
+ * @param bool $continue True to use smart continue
+ * @return Merged results data array
*/
protected function checkC( $expected, $params, $expectedCount, $id, $continue = true ) {
$result = $this->query( $params, $expectedCount, $id, $continue );
* @param array $params Api parameters
* @param int $expectedCount Max number of iterations
* @param string $id Unit test id
- * @param bool $useContinue true to use smart continue
- * @return mixed Merged results data array
+ * @param bool $useContinue True to use smart continue
+ * @return Merged results data array
* @throws Exception
*/
protected function query( $params, $expectedCount, $id, $useContinue = true ) {
* @param string $titlePart
* @param int $namespace
* @param string $expected
- * @param string $description
+ * @param string $expectException
* @dataProvider provideTestTitlePartToKey
*/
function testTitlePartToKey( $titlePart, $namespace, $expected, $expectException ) {
/**
* Merges all requests parameter + expected values into one
- * @param ... list of arrays, each of which contains exactly two
+ * @param array $v,... List of arrays, each of which contains exactly two
* @return array
*/
protected function merge( /*...*/ ) {
* Helper function for addDBData -- adds a simple page to the database
*
* @param string $title Title of page to be created
- * @param string $lang Language and content of the created page
+ * @param string $lang Language and content of the created page
* @param string|null $content Content of the created page, or null for a generic string
* @param bool $createSubPage Set to false if a root page should be created
*/
* Returns true if this content is countable as a "real" wiki page, provided
* that it's also in a countable location (e.g. a current revision in the main namespace).
*
- * @param bool $hasLinks if it is known whether this content contains links,
+ * @param bool $hasLinks If it is known whether this content contains links,
* provide this information here, to avoid redundant parsing to find out.
* @return bool
*/
* @param Title $title
* @param int $revId Unused.
* @param null|ParserOptions $options
- * @param bool $generateHtml whether to generate Html (default: true). If false, the result
+ * @param bool $generateHtml Whether to generate Html (default: true). If false, the result
* of calling getText() on the ParserOutput object returned by this method is undefined.
*
* @return ParserOutput
--- /dev/null
+<?php
+
+/**
+ * @author Adam Shorland
+ * @covers JSONContent
+ */
+class JSONContentTest extends MediaWikiLangTestCase {
+
+ /**
+ * @dataProvider provideValidConstruction
+ */
+ public function testValidConstruct( $text, $modelId, $isValid, $expected ) {
+ $obj = new JSONContent( $text, $modelId );
+ $this->assertEquals( $isValid, $obj->isValid() );
+ $this->assertEquals( $expected, $obj->getJsonData() );
+ }
+
+ public function provideValidConstruction() {
+ return array(
+ array( 'foo', CONTENT_MODEL_JSON, false, null ),
+ array( FormatJson::encode( array() ), CONTENT_MODEL_JSON, true, array() ),
+ array( FormatJson::encode( array( 'foo' ) ), CONTENT_MODEL_JSON, true, array( 'foo' ) ),
+ );
+ }
+
+ /**
+ * @dataProvider provideDataToEncode
+ */
+ public function testBeautifyUsesFormatJson( $data ) {
+ $obj = new JSONContent( FormatJson::encode( $data ) );
+ $this->assertEquals( FormatJson::encode( $data, true ), $obj->beautifyJSON() );
+ }
+
+ public function provideDataToEncode() {
+ return array(
+ array( array() ),
+ array( array( 'foo' ) ),
+ array( array( 'foo', 'bar' ) ),
+ array( array( 'baz' => 'foo', 'bar' ) ),
+ array( array( 'baz' => 1000, 'bar' ) ),
+ );
+ }
+
+ /**
+ * @dataProvider provideDataToEncode
+ */
+ public function testPreSaveTransform( $data ) {
+ $obj = new JSONContent( FormatJson::encode( $data ) );
+ $newObj = $obj->preSaveTransform( $this->getMockTitle(), $this->getMockUser(), $this->getMockParserOptions() );
+ $this->assertTrue( $newObj->equals( new JSONContent( FormatJson::encode( $data, true ) ) ) );
+ }
+
+ private function getMockTitle() {
+ return $this->getMockBuilder( 'Title' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+
+ private function getMockUser() {
+ return $this->getMockBuilder( 'User' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+ private function getMockParserOptions() {
+ return $this->getMockBuilder( 'ParserOptions' )
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+
+ /**
+ * @dataProvider provideDataAndParserText
+ */
+ public function testFillParserOutput( $data, $expected ) {
+ $obj = new JSONContent( FormatJson::encode( $data ) );
+ $parserOutput = $obj->getParserOutput( $this->getMockTitle(), null, null, true );
+ $this->assertInstanceOf( 'ParserOutput', $parserOutput );
+// var_dump( $parserOutput->getText(), "\n" );
+ $this->assertEquals( $expected, $parserOutput->getText() );
+ }
+
+ public function provideDataAndParserText() {
+ return array(
+ array(
+ array(),
+ '<table class="mw-json"><tbody></tbody></table>'
+ ),
+ array(
+ array( 'foo' ),
+ '<table class="mw-json"><tbody><tr><th>0</th><td class="value">"foo"</td></tr></tbody></table>'
+ ),
+ array(
+ array( 'foo', 'bar' ),
+ '<table class="mw-json"><tbody><tr><th>0</th><td class="value">"foo"</td></tr>' .
+ "\n" .
+ '<tr><th>1</th><td class="value">"bar"</td></tr></tbody></table>'
+ ),
+ array(
+ array( 'baz' => 'foo', 'bar' ),
+ '<table class="mw-json"><tbody><tr><th>baz</th><td class="value">"foo"</td></tr>' .
+ "\n" .
+ '<tr><th>0</th><td class="value">"bar"</td></tr></tbody></table>'
+ ),
+ array(
+ array( 'baz' => 1000, 'bar' ),
+ '<table class="mw-json"><tbody><tr><th>baz</th><td class="value">1000</td></tr>' .
+ "\n" .
+ '<tr><th>0</th><td class="value">"bar"</td></tr></tbody></table>'
+ ),
+ array(
+ array( '<script>alert("evil!")</script>'),
+ '<table class="mw-json"><tbody><tr><th>0</th><td class="value">"<script>alert("evil!")</script>"</td></tr></tbody></table>',
+ ),
+ );
+ }
+}
return false;
}
- function indexInfo( $table, $index, $fname = 'Database::indexInfo' ) {
+ function indexInfo( $table, $index, $fname = 'DatabaseBase::indexInfo' ) {
return false;
}
class FileTest extends MediaWikiMediaTestCase {
/**
- * @param $filename String
- * @param $expected boolean
+ * @param string $filename
+ * @param bool $expected
* @dataProvider providerCanAnimate
*/
function testCanAnimateThumbIfAppropriate( $filename, $expected ) {
* We also use this test to test padding bytes don't
* screw stuff up
*
- * @param string $file filename
+ * @param string $file Filename
*
* @dataProvider provideUtf8Comment
*/
* Utility function: Get a new file object for a file on disk but not actually in db.
*
* File must be in the path returned by getFilePath()
- * @param $name String File name
- * @param $type String MIME type [optional]
+ * @param string $name File name
+ * @param string $type MIME type [optional]
* @return UnregisteredLocalFile
*/
protected function dataFile( $name, $type = null ) {
}
/**
- * @param string $filename basename of the file to check
+ * @param string $filename Basename of the file to check
* @param bool $expected Expected result.
* @dataProvider provideIsAnimated
* @covers PNGHandler::isAnimatedImage
/**
* @param string $filename
- * @param int $expectedWidth width
- * @param int $expectedHeigh height
+ * @param int $expectedWidth Width
+ * @param int $expectedHeight Height
* @dataProvider provideGetImageSize
* @covers XCFHandler::getImageSize
*/
* Main assertion helper for magic variables padding
* @param string $magic Magic variable name
* @param mixed $value Month or day
- * @param string $format sprintf format for $value
+ * @param string $format Sprintf format for $value
*/
private function assertMagicPadding( $magic, $value, $format ) {
# Initialize parser timestamp as year 2010 at 12h34 56s.
* MediaWikiParserTest::suite( MediaWikiParserTest::WITH_ALL );
* @endcode
*
- * @param int $flags bitwise flag to filter out the $wgParserTestFiles that
+ * @param int $flags Bitwise flag to filter out the $wgParserTestFiles that
* will be included. Default: MediaWikiParserTest::CORE_ONLY
*
* @return PHPUnit_Framework_TestSuite
* @var DjVuSupport
*/
private $djVuSupport;
+ /**
+ * @var TidySupport
+ */
+ private $tidySupport;
protected $file = false;
$tmpGlobals['wgExtensionAssetsPath'] = '/extensions';
$tmpGlobals['wgStylePath'] = '/skins';
$tmpGlobals['wgEnableUploads'] = true;
+ $tmpGlobals['wgUploadNavigationUrl'] = false;
$tmpGlobals['wgThumbnailScriptPath'] = false;
$tmpGlobals['wgLocalFileRepo'] = array(
'class' => 'LocalRepo',
$tmpGlobals['wgUseImageResize'] = true;
$tmpGlobals['wgAllowExternalImages'] = true;
$tmpGlobals['wgRawHtml'] = false;
- $tmpGlobals['wgUseTidy'] = false;
- $tmpGlobals['wgAlwaysUseTidy'] = false;
$tmpGlobals['wgWellFormedXml'] = true;
$tmpGlobals['wgAllowMicrodataAttributes'] = true;
$tmpGlobals['wgExperimentalHtmlIds'] = false;
# see https://gerrit.wikimedia.org/r/111390
$tmpGlobals['wgExtraInterlanguageLinkPrefixes'] = array( 'mul' );
- //DjVu support
+ // DjVu support
$this->djVuSupport = new DjVuSupport();
+ // Tidy support
+ $this->tidySupport = new TidySupport();
+ // We always set 'wgUseTidy' to false when parsing, but certain
+ // test-running modes still use tidy if available, so ensure
+ // that the tidy-related options are all set to their defaults.
+ $tmpGlobals['wgUseTidy'] = false;
+ $tmpGlobals['wgAlwaysUseTidy'] = false;
+ $tmpGlobals['wgDebugTidy'] = false;
+ $tmpGlobals['wgTidyConf'] = $IP . '/includes/tidy.conf';
+ $tmpGlobals['wgTidyOpts'] = '';
+ $tmpGlobals['wgTidyInternal'] = $this->tidySupport->isInternal();
$this->setMwGlobals( $tmpGlobals );
$output = $parser->parse( $input, $title, $options, true, true, 1337 );
$output->setTOCEnabled( !isset( $opts['notoc'] ) );
$out = $output->getText();
+ if ( isset( $opts['tidy'] ) ) {
+ if ( !$this->tidySupport->isEnabled() ) {
+ $this->markTestSkipped( "SKIPPED: tidy extension is not installed.\n" );
+ } else {
+ $out = MWTidy::tidy( $out );
+ $out = preg_replace( '/\s+$/', '', $out);
+ }
+ }
if ( isset( $opts['showtitle'] ) ) {
if ( $output->getTitleText() ) {
}
if ( isset( $opts['ill'] ) ) {
- $out = $this->tidy( implode( ' ', $output->getLanguageLinks() ) );
+ $out = implode( ' ', $output->getLanguageLinks() );
} elseif ( isset( $opts['cat'] ) ) {
$outputPage = $context->getOutput();
$outputPage->addCategoryLinks( $output->getCategories() );
$cats = $outputPage->getCategoryLinks();
if ( isset( $cats['normal'] ) ) {
- $out = $this->tidy( implode( ' ', $cats['normal'] ) );
+ $out = implode( ' ', $cats['normal'] );
} else {
$out = '';
}
}
$parser->mPreprocessor = null;
-
- $result = $this->tidy( $result );
}
$this->teardownGlobals();
//Various "cleanup" functions
- /**
- * Run the "tidy" command on text if the $wgUseTidy
- * global is true
- *
- * @param string $text The text to tidy
- * @return string
- */
- protected function tidy( $text ) {
- global $wgUseTidy;
-
- if ( $wgUseTidy ) {
- $text = MWTidy::tidy( $text );
- }
-
- return $text;
- }
-
/**
* Remove last character if it is a newline
* @param string $s
/**
* @group large
*/
-class BcryptPasswordTestCase extends MediaWikiPasswordTestCase {
+class BcryptPasswordTestCase extends PasswordTestCase {
protected function getTypeConfigs() {
return array( 'bcrypt' => array(
'class' => 'BcryptPassword',
<?php
-class LayeredParameterizedPasswordTest extends MediaWikiPasswordTestCase {
+class LayeredParameterizedPasswordTest extends PasswordTestCase {
protected function getTypeConfigs() {
return array(
'testLargeLayeredTop' => array(
--- /dev/null
+<?php
+/**
+ * Testing framework for the password hashes
+ *
+ * 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.24
+ */
+abstract class PasswordTestCase extends MediaWikiTestCase {
+ /**
+ * @var PasswordFactory
+ */
+ protected $passwordFactory;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->passwordFactory = new PasswordFactory();
+ foreach ( $this->getTypeConfigs() as $type => $config ) {
+ $this->passwordFactory->register( $type, $config );
+ }
+ }
+
+ /**
+ * Return an array of configs to be used for this class's password type.
+ *
+ * @return array[]
+ */
+ abstract protected function getTypeConfigs();
+
+ /**
+ * An array of tests in the form of (bool, string, string), where the first
+ * element is whether the second parameter (a password hash) and the third
+ * parameter (a password) should match.
+ *
+ * @return array
+ */
+ abstract public function providePasswordTests();
+
+ /**
+ * @dataProvider providePasswordTests
+ */
+ public function testHashing( $shouldMatch, $hash, $password ) {
+ $hash = $this->passwordFactory->newFromCiphertext( $hash );
+ $password = $this->passwordFactory->newFromPlaintext( $password, $hash );
+ $this->assertSame( $shouldMatch, $hash->equals( $password ) );
+ }
+
+ /**
+ * @dataProvider providePasswordTests
+ */
+ public function testStringSerialization( $shouldMatch, $hash, $password ) {
+ $hashObj = $this->passwordFactory->newFromCiphertext( $hash );
+ $serialized = $hashObj->toString();
+ $unserialized = $this->passwordFactory->newFromCiphertext( $serialized );
+ $this->assertTrue( $hashObj->equals( $unserialized ) );
+ }
+
+ /**
+ * @dataProvider providePasswordTests
+ * @covers InvalidPassword::equals
+ * @covers InvalidPassword::toString
+ */
+ public function testInvalidUnequalNormal( $shouldMatch, $hash, $password ) {
+ $invalid = $this->passwordFactory->newFromCiphertext( null );
+ $normal = $this->passwordFactory->newFromCiphertext( $hash );
+
+ $this->assertFalse( $invalid->equals( $normal ) );
+ $this->assertFalse( $normal->equals( $invalid ) );
+ }
+}
/**
* @group large
*/
-class Pbkdf2PasswordTest extends MediaWikiPasswordTestCase {
+class Pbkdf2PasswordTest extends PasswordTestCase {
protected function getTypeConfigs() {
return array( 'pbkdf2' => array(
'class' => 'Pbkdf2Password',
$expect = file_get_contents( $cssFile );
$content = file_get_contents( $lessFile );
- $result = ResourceLoader::getLessCompiler()->compile( $content, $lessFile );
+ $result = ResourceLoader::getLessCompiler( RequestContext::getMain()->getConfig() )
+ ->compile( $content, $lessFile );
$this->assertEquals( $expect, $result );
}
}
protected function setUp() {
parent::setUp();
- $this->setMwGlobals( array(
- 'wgValidSkinNames' => array( 'vector' => 'Vector' ),
- ) );
+ // The return value of the closure shouldn't matter since this test should
+ // never call it
+ SkinFactory::getDefaultInstance()->register(
+ 'fakeskin',
+ 'FakeSkin',
+ function(){
+ }
+ );
}
/**
),
'skinStyles' => array(
'default' => 'quux-fallback.less',
- 'vector' => array(
+ 'fakeskin' => array(
'baz-vector.css',
'quux-vector.less',
),
$rl->register( $case['modules'] );
+ $module = new ResourceLoaderStartUpModule();
$this->assertEquals(
ltrim( $case['out'], "\n" ),
- ResourceLoaderStartUpModule::getModuleRegistrations( $context ),
+ $module->getModuleRegistrations( $context ),
$case['msg']
);
}
$context = self::getResourceLoaderContext();
$rl = $context->getResourceLoader();
$rl->register( $modules );
+ $module = new ResourceLoaderStartUpModule();
$this->assertEquals(
'mw.loader.addSource({"local":{"loadScript":"/w/load.php","apiScript":"/w/api.php"}});'
. 'mw.loader.register(['
. '["test.min","1388534400",["test.blank"],null,"local",'
. '"return!!(window.JSON\u0026\u0026JSON.parse\u0026\u0026JSON.stringify);"'
. ']]);',
- ResourceLoaderStartUpModule::getModuleRegistrations( $context ),
+ $module->getModuleRegistrations( $context ),
'Minified output'
);
}
$context = self::getResourceLoaderContext();
$rl = $context->getResourceLoader();
$rl->register( $modules );
+ $module = new ResourceLoaderStartUpModule();
$this->assertEquals(
'mw.loader.addSource( {
"local": {
"return !!( window.JSON \u0026\u0026 JSON.parse \u0026\u0026 JSON.stringify);"
]
] );',
- ResourceLoaderStartUpModule::getModuleRegistrations( $context ),
+ $module->getModuleRegistrations( $context ),
'Unminified output'
);
}
--- /dev/null
+<?php
+
+class SkinFactoryTest extends MediaWikiTestCase {
+
+ /**
+ * @covers SkinFactory::register
+ */
+ public function testRegister() {
+ $factory = new SkinFactory();
+ $factory->register( 'fallback', 'Fallback', function () {
+ return new SkinFallback();
+ } );
+ $this->assertTrue( true ); // No exception thrown
+ $this->setExpectedException( 'InvalidArgumentException' );
+ $factory->register( 'invalid', 'Invalid', 'Invalid callback' );
+ }
+
+ /**
+ * @covers SkinFactory::makeSkin
+ */
+ public function testMakeSkinWithNoBuilders() {
+ $factory = new SkinFactory();
+ $this->setExpectedException( 'SkinException' );
+ $factory->makeSkin( 'nobuilderregistered' );
+ }
+
+ /**
+ * @covers SkinFactory::makeSkin
+ */
+ public function testMakeSkinWithInvalidCallback() {
+ $factory = new SkinFactory();
+ $factory->register( 'unittest', 'Unittest', function () {
+ return true; // Not a Skin object
+ } );
+ $this->setExpectedException( 'UnexpectedValueException' );
+ $factory->makeSkin( 'unittest' );
+ }
+}
--- /dev/null
+<?php
+
+/**
+ * @covers SkinTemplate
+ *
+ * @group Output
+ *
+ * @licence GNU GPL v2+
+ * @author Bene* < benestar.wikimedia@gmail.com >
+ */
+
+class SkinTemplateTest extends MediaWikiTestCase {
+ /**
+ * @dataProvider makeListItemProvider
+ */
+ public function testMakeListItem( $expected, $key, $item, $options, $message ) {
+ $template = $this->getMockForAbstractClass( 'BaseTemplate' );
+
+ $this->assertEquals(
+ $expected,
+ $template->makeListItem( $key, $item, $options ),
+ $message
+ );
+ }
+
+ public function makeListItemProvider() {
+ return array(
+ array(
+ '<li class="class" title="itemtitle"><a href="url" title="title">text</a></li>',
+ '',
+ array(
+ 'class' => 'class',
+ 'itemtitle' => 'itemtitle',
+ 'href' => 'url',
+ 'title' => 'title',
+ 'text' => 'text'
+ ),
+ array(),
+ 'Test makteListItem with normal values'
+ )
+ );
+ }
+}
/**
* @dataProvider providerMimeFiltering
- * @param $par String subpage for special page
- * @param $major String Major mime type we expect to look for
- * @param $minor String Minor mime type we expect to look for
+ * @param string $par Subpage for special page
+ * @param string $major Major MIME type we expect to look for
+ * @param string $minor Minor MIME type we expect to look for
*/
function testMimeFiltering( $par, $major, $minor ) {
$this->page->run( $par );
/**
* @covers SpecialMyLanguage::findTitle
* @dataProvider provideFindTitle
- * @param $expected
- * @param $subpage
- * @param $langCode
- * @param $userLang
+ * @param string $expected
+ * @param string $subpage
+ * @param string $langCode
+ * @param string $userLang
*/
public function testFindTitle( $expected, $subpage, $langCode, $userLang ) {
$this->setMwGlobals( 'wgLanguageCode', $langCode );
--- /dev/null
+<?php
+/**
+ * Based on LanguageMlTest
+ * @author Joel Sahleen
+ * @copyright Copyright © 2014, Joel Sahleen
+ * @file
+ */
+
+/** Tests for MediaWiki languages/LanguageArq.php */
+class LanguageArqTest extends LanguageClassesTestCase {
+ /**
+ * @dataProvider provideNumber
+ * @covers Language::formatNum
+ */
+ public function testFormatNum( $result, $value ) {
+ $this->assertEquals( $result, $this->getLang()->formatNum( $value ) );
+ }
+
+ public static function provideNumber() {
+ return array(
+ array( '1.234.567', '1234567'),
+ array( '-12,89', -12.89 ),
+ );
+ }
+
+}
*
* @param Page $page Page to add the revision to
* @param string $text Revisions text
- * @param string $text Revisions summare
+ * @param string $summary Revisions summare
*
* @throws MWException
*/
* Asserts that the xml reader is at the final closing tag of an xml file and
* closes the reader.
*
- * @param string $tag (optional) the name of the final tag
+ * @param string $name (optional) the name of the final tag
* (e.g.: "mediawiki" for </mediawiki>)
*/
protected function assertDumpEnd( $name = "mediawiki" ) {
* @param string $text_sha1 The base36 SHA-1 of the revision's text
* @param string|bool $text (optional) The revision's string, or false to check for a
* revision stub
+ * @param int|bool $parentid (optional) id of the parent revision
* @param string $model The expected content model id (default: CONTENT_MODEL_WIKITEXT)
* @param string $format The expected format model id (default: CONTENT_FORMAT_WIKITEXT)
- * @param int|bool $parentid (optional) id of the parent revision
*/
protected function assertRevision( $id, $summary, $text_id, $text_bytes,
$text_sha1, $text = false, $parentid = false,
class BaseDumpTest extends MediaWikiTestCase {
/**
- * @var BaseDump the BaseDump instance used within a test.
+ * @var BaseDump The BaseDump instance used within a test.
*
* If set, this BaseDump gets automatically closed in tearDown.
*/
private $exceptionFromAddDBData;
/**
- * @var FetchText the (mocked) FetchText that is to test
+ * @var FetchText The (mocked) FetchText that is to test
*/
private $fetchText;
*
* @param WikiPage $page The page to add the revision to
* @param string $text The revisions text
- * @param string $text The revisions summare
+ * @param string $summary The revisions summare
*
* @throws MWException
*/
class GenerateJqueryMsgData extends Maintenance {
- static $keyToTestArgs = array(
+ public static $keyToTestArgs = array(
'undelete_short' => array(
array( 0 ),
array( 1 ),
// Put this text in the span and verify it doesn't fit
$span.text( spanTextNew );
- // In IE6 width works like min-width, allow IE6's width to be "equal to"
- if ( $.client.test( { 'msie': 6 }, $.client.profile(), true ) ) {
- assert.gtOrEq( $span.width(), $span.parent().width(), 'Fit is maximal (adding two characters makes it not fit any more) - IE6: Maybe equal to as well due to width behaving like min-width in IE6' );
- } else {
- assert.gt( $span.width(), $span.parent().width(), 'Fit is maximal (adding two characters makes it not fit any more)' );
- }
+ assert.gt( $span.width(), $span.parent().width(), 'Fit is maximal (adding two characters makes it not fit any more)' );
} );
}( jQuery ) );
'</table>'
);
$table.tablesorter();
- assert.equal( 0,
- $table.find( '#A2' ).prop( 'headerIndex' ),
- 'A2 should be a sort header'
+ assert.equal( $table.find( '#A2' ).prop( 'headerIndex' ),
+ undefined,
+ 'A2 should not be a sort header'
);
- assert.equal( 1, // should be 2
- $table.find( '#C1' ).prop( 'headerIndex' ),
- 'C1 should be a sort header, but will sort the wrong column'
+ assert.equal( $table.find( '#C1' ).prop( 'headerIndex' ),
+ 2,
+ 'C1 should be a sort header'
+ );
+ } );
+
+ // bug 53527
+ QUnit.test( 'td cells in thead should not be taken into account for longest row calculation', 2, function ( assert ) {
+ var $table = $(
+ '<table class="sortable">' +
+ '<thead>' +
+ '<tr><th id="A1">A1</th><th>B1</th><td id="C1">C1</td></tr>' +
+ '<tr><th id="A2">A2</th><th>B2</th><th id="C2">C2</th></tr>' +
+ '</thead>' +
+ '</table>'
+ );
+ $table.tablesorter();
+ assert.equal( $table.find( '#C2' ).prop( 'headerIndex' ),
+ 2,
+ 'C2 should be a sort header'
+ );
+ assert.equal( $table.find( '#C1' ).prop( 'headerIndex' ),
+ undefined,
+ 'C1 should not be a sort header'
);
} );
'</tbody></table>' );
$table.tablesorter();
- assert.equal( 2, $table.find( 'tr:eq(1) th:eq(1)').prop('headerIndex'), 'Incorrect index of sort header' );
+ assert.equal( $table.find( 'tr:eq(1) th:eq(1)').prop('headerIndex'),
+ 2,
+ 'Incorrect index of sort header' );
}
);
} );
// Tests that {{-transformation vs. general parsing are done as requested
- QUnit.test( 'Curly brace transformation', 14, function ( assert ) {
+ QUnit.test( 'Curly brace transformation', 16, function ( assert ) {
var oldUserLang = mw.config.get( 'wgUserLanguage' );
assertBothModes( assert, ['gender-msg', 'Bob', 'male'], 'Bob: blue', 'gender is resolved' );
'Foo <a href="http://example.com">bar</a>',
'External link message processed when format is \'parse\''
);
+ assert.htmlEqual(
+ formatParse( 'external-link-replace', $( '<i>' ) ),
+ 'Foo <i>bar</i>',
+ 'External link message processed as jQuery object when format is \'parse\''
+ );
+ assert.htmlEqual(
+ formatParse( 'external-link-replace', function () {} ),
+ 'Foo <a href="#">bar</a>',
+ 'External link message processed as function when format is \'parse\''
+ );
mw.config.set( 'wgUserLanguage', oldUserLang );
} );
'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; ru-ru) AppleWebKit/534.31+ (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1',
// Opera 11+
'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10',
- // Internet Explorer 6+
- 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
+ // Internet Explorer 7+
'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)',
'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)',
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)',
'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17'
],
// Supported: Uncompatible, serve basic content
- gradeB: [
- // Internet Explorer < 6
+ gradeC: [
+ // Internet Explorer < 7
'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)',
'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
+ 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
// Firefox < 3.6
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2',
'Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1',
);
} );
- QUnit.test( 'isCompatible( Grade B )', testcases.gradeB.length, function ( assert ) {
- $.each( testcases.gradeB, function ( i, ua ) {
+ QUnit.test( 'isCompatible( Grade C )', testcases.gradeC.length, function ( assert ) {
+ $.each( testcases.gradeC, function ( i, ua ) {
assert.strictEqual( isCompatible( ua ), false, ua );
}
);
}
class TestRecorder implements ITestRecorder {
- var $parent;
- var $term;
+ public $parent;
+ public $term;
function __construct( $parent ) {
$this->parent = $parent;
}
class DbTestRecorder extends DbTestPreviewer {
- var $version;
+ public $version;
/**
* Set up result recording; insert a record for the run with the date
private $sectionData = array();
private $lineNum;
private $eof;
+ # Create a fake parser tests which never run anything unless
+ # asked to do so. This will avoid running hooks for a disabled test
+ private $delayedParserTest;
+ private $nextSubTest = 0;
function __construct( $file, $parserTest ) {
$this->file = $file;
}
$this->parserTest = $parserTest;
+ $this->delayedParserTest = new DelayedParserTest();
$this->lineNum = $this->index = 0;
}
return $this->eof != true;
}
+ function setupCurrentTest() {
+ // "input" and "result" are old section names allowed
+ // for backwards-compatibility.
+ $input = $this->checkSection( array( 'wikitext', 'input' ), false );
+ $result = $this->checkSection( array( 'html/php', 'html/*', 'html', 'result' ), false );
+ // some tests have "with tidy" and "without tidy" variants
+ $tidy = $this->checkSection( array( 'html/php+tidy', 'html+tidy'), false );
+ if ( $tidy != false ) {
+ if ( $this->nextSubTest == 0 ) {
+ if ( $result != false ) {
+ $this->nextSubTest = 1; // rerun non-tidy variant later
+ }
+ $result = $tidy;
+ } else {
+ $this->nextSubTest = 0; // go on to next test after this
+ $tidy = false;
+ }
+ }
+
+ if ( !isset( $this->sectionData['options'] ) ) {
+ $this->sectionData['options'] = '';
+ }
+
+ if ( !isset( $this->sectionData['config'] ) ) {
+ $this->sectionData['config'] = '';
+ }
+
+ $isDisabled = preg_match( '/\\bdisabled\\b/i', $this->sectionData['options'] ) && !$this->parserTest->runDisabled;
+ $isParsoidOnly = preg_match( '/\\bparsoid\\b/i', $this->sectionData['options'] ) && $result == 'html' && !$this->parserTest->runParsoid;
+ $isFiltered = !preg_match( "/" . $this->parserTest->regex . "/i", $this->sectionData['test'] );
+ if ( $input == false || $result == false || $isDisabled || $isParsoidOnly || $isFiltered ) {
+ # disabled test
+ return false;
+ }
+
+ # We are really going to run the test, run pending hooks and hooks function
+ wfDebug( __METHOD__ . " unleashing delayed test for: {$this->sectionData['test']}" );
+ $hooksResult = $this->delayedParserTest->unleash( $this->parserTest );
+ if ( !$hooksResult ) {
+ # Some hook reported an issue. Abort.
+ throw new MWException( "Problem running hook" );
+ }
+
+ $this->test = array(
+ 'test' => ParserTest::chomp( $this->sectionData['test'] ),
+ 'input' => ParserTest::chomp( $this->sectionData[$input] ),
+ 'result' => ParserTest::chomp( $this->sectionData[$result] ),
+ 'options' => ParserTest::chomp( $this->sectionData['options'] ),
+ 'config' => ParserTest::chomp( $this->sectionData['config'] ),
+ );
+ if ( $tidy != false ) {
+ $this->test['options'] .= " tidy";
+ }
+ return true;
+ }
+
function readNextTest() {
- $this->clearSection();
+ # Run additional subtests of previous test
+ while ( $this->nextSubTest > 0 )
+ if ( $this->setupCurrentTest() )
+ return true;
- # Create a fake parser tests which never run anything unless
- # asked to do so. This will avoid running hooks for a disabled test
- $delayedParserTest = new DelayedParserTest();
+ $this->clearSection();
+ # Reset hooks for the delayed test object
+ $this->delayedParserTest->reset();
while ( false !== ( $line = fgets( $this->fh ) ) ) {
$this->lineNum++;
$line = trim( $line );
if ( $line ) {
- $delayedParserTest->requireHook( $line );
+ $this->delayedParserTest->requireHook( $line );
}
}
$line = trim( $line );
if ( $line ) {
- $delayedParserTest->requireFunctionHook( $line );
+ $this->delayedParserTest->requireFunctionHook( $line );
}
}
if ( $this->section == 'end' ) {
$this->checkSection( 'test' );
- // "input" and "result" are old section names allowed
- // for backwards-compatibility.
- $input = $this->checkSection( array( 'wikitext', 'input' ), false );
- $result = $this->checkSection( array( 'html/php', 'html/*', 'html', 'result' ), false );
-
- if ( !isset( $this->sectionData['options'] ) ) {
- $this->sectionData['options'] = '';
- }
-
- if ( !isset( $this->sectionData['config'] ) ) {
- $this->sectionData['config'] = '';
- }
-
- if ( $input == false || $result == false ||
- ( ( preg_match( '/\\bdisabled\\b/i', $this->sectionData['options'] )
- && !$this->parserTest->runDisabled )
- || ( preg_match( '/\\bparsoid\\b/i', $this->sectionData['options'] )
- && $result != 'html/php' && !$this->parserTest->runParsoid )
- || !preg_match( "/" . $this->parserTest->regex . "/i", $this->sectionData['test'] ) )
- ) {
- # disabled test
- $this->clearSection();
-
- # Forget any pending hooks call since test is disabled
- $delayedParserTest->reset();
-
- continue;
- }
-
- # We are really going to run the test, run pending hooks and hooks function
- wfDebug( __METHOD__ . " unleashing delayed test for: {$this->sectionData['test']}" );
- $hooksResult = $delayedParserTest->unleash( $this->parserTest );
- if ( !$hooksResult ) {
- # Some hook reported an issue. Abort.
- return false;
- }
-
- $this->test = array(
- 'test' => ParserTest::chomp( $this->sectionData['test'] ),
- 'input' => ParserTest::chomp( $this->sectionData[$input] ),
- 'result' => ParserTest::chomp( $this->sectionData[$result] ),
- 'options' => ParserTest::chomp( $this->sectionData['options'] ),
- 'config' => ParserTest::chomp( $this->sectionData['config'] ),
- );
-
- return true;
+ do {
+ if ( $this->setupCurrentTest() )
+ return true;
+ } while ( $this->nextSubTest > 0 );
+ # go on to next test (since this was disabled)
+ $this->clearSection();
+ $this->delayedParserTest->reset();
+ continue;
}
if ( isset( $this->sectionData[$this->section] ) ) {
* Throw an exception if it is not set, referencing current section
* and adding the current file name and line number
*
- * @param string|array $token Expected token(s) that should have been
+ * @param string|array $tokens Expected token(s) that should have been
* mentioned before closing this section
* @param bool $fatal True iff an exception should be thrown if
* the section is not found.
/**
* Similar to ParserTest object but does not run anything
* Use unleash() to really execute the hook function
- * @param string $fnHook
+ * @param string $hook
*/
public function requireTransparentHook( $hook ) {
$this->transparentHooks[] = $hook;
}
/**
- * Returns if the DjVu tools are usable
+ * Returns true if the DjVu tools are usable
*
* @return bool
*/
&& is_executable( $wgDjvuTxt );
}
}
+
+/**
+ * Initialize and detect the tidy support
+ */
+class TidySupport {
+ private $internalTidy;
+ private $externalTidy;
+
+ /**
+ * Determine if there is a usable tidy.
+ */
+ public function __construct() {
+ global $wgTidyBin;
+
+ $this->internalTidy = extension_loaded( 'tidy' ) &&
+ class_exists( 'tidy' );
+
+ $this->externalTidy = is_executable( $wgTidyBin ) ||
+ Installer::locateExecutableInDefaultPaths( array( $wgTidyBin ) )
+ !== false;
+ }
+
+ /**
+ * Returns true if we should use internal tidy.
+ *
+ * @return bool
+ */
+ public function isInternal() {
+ return $this->internalTidy;
+ }
+
+ /**
+ * Returns true if tidy is usable
+ *
+ * @return bool
+ */
+ public function isEnabled() {
+ return $this->internalTidy || $this->externalTidy;
+ }
+}
define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
require __DIR__ . '/includes/WebStart.php';
-// Don't use fancy mime detection, just check the file extension for jpg/gif/png
+// Don't use fancy MIME detection, just check the file extension for jpg/gif/png
$wgTrivialMimeDetection = true;
if ( defined( 'THUMB_HANDLER' ) ) {
* file handler.
*
* @param File $file File object for file in question
- * @param array $param Array of parameters so far
+ * @param array $params Array of parameters so far
* @return array Parameters array with more parameters
*/
function wfExtractThumbParams( $file, $params ) {
return $params; // valid thumbnail URL (via extension or config)
}
- // FIXME: Files in the temp zone don't set a mime type, which means
+ // FIXME: Files in the temp zone don't set a MIME type, which means
// they don't have a handler. Which means we can't parse the param
// string. However, not a big issue as what good is a param string
// if you have no handler to make use of the param string and