Merge "Make the code for grammar data processing common"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sun, 18 Dec 2016 11:06:38 +0000 (11:06 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 18 Dec 2016 11:06:38 +0000 (11:06 +0000)
95 files changed:
RELEASE-NOTES-1.29
docs/extension.schema.json [deleted file]
docs/extension.schema.v2.json [new file with mode: 0644]
includes/Block.php
includes/EditPage.php
includes/Message.php
includes/PrefixSearch.php
includes/Title.php
includes/WatchedItemStore.php
includes/actions/InfoAction.php
includes/api/ApiBase.php
includes/api/ApiHelp.php
includes/api/ApiMessage.php
includes/api/ApiQueryUserInfo.php
includes/api/i18n/bn.json
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/fr.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ko.json
includes/api/i18n/lt.json
includes/api/i18n/qqq.json
includes/api/i18n/zh-hans.json
includes/debug/MWDebug.php
includes/installer/i18n/fa.json
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/pager/TablePager.php
includes/parser/ParserOutput.php
includes/password/ParameterizedPassword.php
includes/password/Password.php
includes/registration/ExtensionJsonValidator.php
includes/search/SearchEngine.php
includes/specialpage/AuthManagerSpecialPage.php
includes/user/User.php
languages/i18n/ar.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bn.json
languages/i18n/bqi.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/en.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frr.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/it.json
languages/i18n/ka.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/my.json
languages/i18n/nah.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/qqq.json
languages/i18n/sah.json
languages/i18n/sl.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesBn.php
maintenance/orphans.php
resources/Resources.php
resources/src/jquery.tipsy/jquery.tipsy.js
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.skinning/elements.css
resources/src/mediawiki.special/mediawiki.special.changeslist.css
resources/src/mediawiki.special/mediawiki.special.watchlist.js
resources/src/mediawiki.widgets/mw.widgets.SearchInputWidget.js
resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
resources/src/mediawiki/api.js
resources/src/mediawiki/api/watch.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/mediawiki/page/watch.js
tests/parser/parserTests.txt
tests/phan/bin/phan
tests/phan/config.php
tests/phpunit/includes/BlockTest.php
tests/phpunit/includes/TestLogger.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/registration/ExtensionProcessorTest.php
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js

index 4271d0d..ef9d734 100644 (file)
@@ -31,6 +31,8 @@ production.
   they move to a new IP address. This is disabled by default.
 * Added ILocalizedException interface to standardize the use of localized
   exceptions, largely so the API can handle them more sensibly.
+* Blocks created automatically by MediaWiki, such as for configured proxies or
+  dnsbls, are now indicated as such and use a new i18n message when displayed.
 
 === External library changes in 1.29 ===
 
@@ -125,6 +127,9 @@ changes to languages because of Phabricator reports.
 * WikiPage::prepareTextForEdit() (deprecated in 1.21) was removed.
 * WikiPage::getText() (deprecated in 1.21) was removed.
 * Article::fetchContent() (deprecated in 1.21) was removed.
+* User::getPassword() (deprecated in 1.27) was removed.
+* User::getTemporaryPassword() (deprecated in 1.27) was removed.
+* User::isPasswordReminderThrottled() (deprecated in 1.27) was removed.
 
 == Compatibility ==
 
diff --git a/docs/extension.schema.json b/docs/extension.schema.json
deleted file mode 100644 (file)
index a5543d1..0000000
+++ /dev/null
@@ -1,727 +0,0 @@
-{
-       "$schema": "http://json-schema.org/schema#",
-       "description": "MediaWiki extension.json schema",
-       "type": "object",
-       "properties": {
-               "manifest_version": {
-                       "type": "integer",
-                       "description": "Version of the extension.json schema the extension.json file is in.",
-                       "required": true
-               },
-               "name": {
-                       "type": "string",
-                       "description": "The extension's canonical name.",
-                       "required": true
-               },
-               "namemsg": {
-                       "type": "string",
-                       "description": "i18n message key of the extension's name."
-               },
-               "type": {
-                       "type": "string",
-                       "description": "The extension's type, as an index to $wgExtensionCredits.",
-                       "default": "other"
-               },
-               "author": {
-                       "type": [
-                               "string",
-                               "array"
-                       ],
-                       "description": "Extension's authors.",
-                       "items": {
-                               "type": "string"
-                       }
-               },
-               "version": {
-                       "type": "string",
-                       "description": "The version of this release of the extension."
-               },
-               "url": {
-                       "type": "string",
-                       "description": "URL to the homepage for the extension.",
-                       "format": "uri"
-               },
-               "description": {
-                       "type": "string",
-                       "description": "Raw description of the extension."
-               },
-               "descriptionmsg": {
-                       "type": "string",
-                       "description": "Message key for a i18n message describing the extension."
-               },
-               "license-name": {
-                       "type": "string",
-                       "description": "SPDX identifier for the license under which the extension is released."
-               },
-               "requires": {
-                       "type": "object",
-                       "description": "Indicates what versions of MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
-                       "properties": {
-                               "MediaWiki": {
-                                       "type": "string",
-                                       "description": "Version constraint string against MediaWiki core."
-                               },
-                               "extensions": {
-                                       "type": "object",
-                                       "description": "Set of version constraint strings against specific extensions."
-                               },
-                               "skins": {
-                                       "type": "object",
-                                       "description": "Set of version constraint strings against specific skins."
-                               }
-                       }
-               },
-               "ResourceFileModulePaths": {
-                       "type": "object",
-                       "description": "Default paths to use for all ResourceLoader file modules",
-                       "additionalProperties": false,
-                       "properties": {
-                               "localBasePath": {
-                                       "type": "string",
-                                       "description": "Base path to prepend to all local paths, relative to current directory"
-                               },
-                               "remoteExtPath": {
-                                       "type": "string",
-                                       "description": "Base path to prepend to all remote paths, relative to $wgExtensionAssetsPath"
-                               },
-                               "remoteSkinPath": {
-                                       "type": "string",
-                                       "description": "Base path to prepend to all remote paths, relative to $wgStylePath"
-                               }
-                       }
-               },
-               "ResourceModules": {
-                       "type": "object",
-                       "description": "ResourceLoader modules to register",
-                       "patternProperties": {
-                               "^[a-zA-Z0-9-\\.]+$": {
-                                       "type": "object",
-                                       "anyOf": [
-                                               {
-                                                       "description": "A ResourceLoaderFileModule definition",
-                                                       "additionalProperties": false,
-                                                       "properties": {
-                                                               "localBasePath": {
-                                                                       "type": "string",
-                                                                       "description": "Base path to prepend to all local paths in $options. Defaults to $IP"
-                                                               },
-                                                               "remoteBasePath": {
-                                                                       "type": "string",
-                                                                       "description": "Base path to prepend to all remote paths in $options. Defaults to $wgScriptPath"
-                                                               },
-                                                               "remoteExtPath": {
-                                                                       "type": "string",
-                                                                       "description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
-                                                               },
-                                                               "skipFunction": {
-                                                                       "type": "string",
-                                                                       "description": "Path to a file containing a JavaScript \"skip function\", if desired."
-                                                               },
-                                                               "scripts": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "Scripts to always include (array of file paths)",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "languageScripts": {
-                                                                       "type": "object",
-                                                                       "description": "Scripts to include in specific language contexts (mapping of language code to file path(s))",
-                                                                       "patternProperties": {
-                                                                               "^[a-zA-Z0-9-]{2,}$": {
-                                                                                       "type": [
-                                                                                               "string",
-                                                                                               "array"
-                                                                                       ],
-                                                                                       "items": {
-                                                                                               "type": "string"
-                                                                                       }
-                                                                               }
-                                                                       }
-                                                               },
-                                                               "skinScripts": {
-                                                                       "type": "object",
-                                                                       "description": "Scripts to include in specific skin contexts (mapping of skin name to script(s)",
-                                                                       "patternProperties": {
-                                                                               ".+": {
-                                                                                       "type": [
-                                                                                               "string",
-                                                                                               "array"
-                                                                                       ],
-                                                                                       "items": {
-                                                                                               "type": "string"
-                                                                                       }
-                                                                               }
-                                                                       }
-                                                               },
-                                                               "debugScripts": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "Scripts to include in debug contexts",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "loaderScripts": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "Scripts to include in the startup module",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "dependencies": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "Modules which must be loaded before this module",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "styles": {
-                                                                       "type": ["string", "array", "object"],
-                                                                       "description": "Styles to always load",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "skinStyles": {
-                                                                       "type": "object",
-                                                                       "description": "Styles to include in specific skin contexts (mapping of skin name to style(s))",
-                                                                       "patternProperties": {
-                                                                               ".+": {
-                                                                                       "type": [
-                                                                                               "string",
-                                                                                               "array"
-                                                                                       ],
-                                                                                       "items": {
-                                                                                               "type": "string"
-                                                                                       }
-                                                                               }
-                                                                       }
-                                                               },
-                                                               "messages": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "Messages to always load",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "group": {
-                                                                       "type": "string",
-                                                                       "description": "Group with which this module should be loaded"
-                                                               },
-                                                               "deprecated": {
-                                                                       "type": ["object", "boolean"],
-                                                                       "description": "Whether the module is deprecated and usage is discouraged. Either a boolean or an object with key message can be used to customise deprecation message."
-                                                               },
-                                                               "position": {
-                                                                       "type": "string",
-                                                                       "description": "Position on the page to load this module at",
-                                                                       "enum": [
-                                                                               "bottom",
-                                                                               "top"
-                                                                       ]
-                                                               },
-                                                               "templates": {
-                                                                       "type": ["object", "array"],
-                                                                       "description": "Templates to be loaded for client-side usage"
-                                                               },
-                                                               "targets": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "ResourceLoader target the module can run on",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "noflip": {
-                                                                       "type": "boolean",
-                                                                       "description": "Whether to skip CSSJanus LTR-to-RTL flipping for this module. Recommended for styles imported from libraries that already properly handle their RTL styles. Default is false, meaning CSSJanus will be applied on RTL-mode output."
-                                                               }
-                                                       }
-                                               },
-                                               {
-                                                       "description": "A ResourceLoaderWikiModule definition",
-                                                       "additionalProperties": false,
-                                                       "properties": {
-                                                               "class": {
-                                                                       "enum": ["ResourceLoaderWikiModule"]
-                                                               },
-                                                               "group": {
-                                                                       "type": "string",
-                                                                       "description": "Group with which this module should be loaded"
-                                                               },
-                                                               "position": {
-                                                                       "type": "string",
-                                                                       "description": "Position on the page to load this module at",
-                                                                       "enum": [
-                                                                               "bottom",
-                                                                               "top"
-                                                                       ]
-                                                               },
-                                                               "targets": {
-                                                                       "type": ["string", "array"],
-                                                                       "description": "ResourceLoader target the module can run on",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "scripts": {
-                                                                       "type": "array",
-                                                                       "description": "A list of on-wiki pages containing JavaScript that should be loaded",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               },
-                                                               "styles": {
-                                                                       "type": "array",
-                                                                       "description": "A list of on-wiki pages containing CSS that should be loaded",
-                                                                       "items": {
-                                                                               "type": "string"
-                                                                       }
-                                                               }
-                                                       }
-                                               },
-                                               {
-                                                       "description": "A ResourceLoaderImageModule definition",
-                                                       "additionalProperties": false,
-                                                       "properties": {
-                                                               "class": {
-                                                                       "enum": ["ResourceLoaderImageModule"]
-                                                               },
-                                                               "data": {
-                                                                       "type": "string"
-                                                               },
-                                                               "prefix": {
-                                                                       "type": "string"
-                                                               },
-                                                               "selector": {
-                                                                       "type": "string"
-                                                               },
-                                                               "selectorWithoutVariant": {
-                                                                       "type": "string"
-                                                               },
-                                                               "selectorWithVariant": {
-                                                                       "type": "string"
-                                                               },
-                                                               "variants": {
-                                                                       "type": "object"
-                                                               },
-                                                               "images": {
-                                                                       "type": "object"
-                                                               },
-                                                               "position": {
-                                                                       "enum": [
-                                                                               "top",
-                                                                               "bottom"
-                                                                       ]
-                                                               }
-                                                       }
-                                               },
-                                               {
-                                                       "description": "An arbitrary ResourceLoaderModule definition",
-                                                       "properties": {
-                                                               "class": {
-                                                                       "type": "string",
-                                                                       "pattern": "^((?!ResourceLoader(File|Image)Module).)*$"
-                                                               }
-                                                       },
-                                                       "required": ["class"]
-                                               }
-                                       ]
-                               }
-                       }
-               },
-               "ResourceModuleSkinStyles": {
-                       "type": "object",
-                       "description": "ResourceLoader modules for custom skin styles"
-               },
-               "ResourceLoaderSources": {
-                       "type": "object",
-                       "description": "ResourceLoader sources to register"
-               },
-               "ResourceLoaderLESSVars": {
-                       "type": "object",
-                       "description": "ResourceLoader LESS variables"
-               },
-               "ConfigRegistry": {
-                       "type": "object",
-                       "description": "Registry of factory functions to create Config objects"
-               },
-               "SessionProviders": {
-                       "type": "object",
-                       "description": "Session providers"
-               },
-               "AuthManagerAutoConfig": {
-                       "type": "object",
-                       "description": "AuthManager auto-configuration",
-                       "additionalProperties": false,
-                       "properties": {
-                               "preauth": {
-                                       "type": "object",
-                                       "description": "Pre-authentication providers"
-                               },
-                               "primaryauth": {
-                                       "type": "object",
-                                       "description": "Primary authentication providers"
-                               },
-                               "secondaryauth": {
-                                       "type": "object",
-                                       "description": "Secondary authentication providers"
-                               }
-                       }
-               },
-               "CentralIdLookupProviders": {
-                       "type": "object",
-                       "description": "Central ID lookup providers"
-               },
-               "ChangeCredentialsBlacklist": {
-                       "type": "object",
-                       "description": "AuthenticationRequest classes which can only be used internally for credentials change"
-               },
-               "RemoveCredentialsBlacklist": {
-                       "type": "object",
-                       "description": "AuthenticationRequest classes which can only be used internally for credentials removal"
-               },
-               "namespaces": {
-                       "type": "array",
-                       "description": "Method to add extra namespaces",
-                       "items": {
-                               "type": "object",
-                               "properties": {
-                                       "id": {
-                                               "type": "integer"
-                                       },
-                                       "constant": {
-                                               "type": "string"
-                                       },
-                                       "name": {
-                                               "type": "string"
-                                       },
-                                       "gender": {
-                                               "type": "object",
-                                               "properties": {
-                                                       "male": {
-                                                               "type": "string"
-                                                       },
-                                                       "female": {
-                                                               "type": "string"
-                                                       }
-                                               }
-                                       },
-                                       "subpages": {
-                                               "type": "boolean",
-                                               "default": false
-                                       },
-                                       "content": {
-                                               "type": "boolean",
-                                               "default": false
-                                       },
-                                       "defaultcontentmodel": {
-                                               "type": "string"
-                                       },
-                                       "protection": {
-                                               "type": ["string", "array"],
-                                               "description": "Userright(s) required to edit in this namespace"
-                                       },
-                                       "capitallinkoverride": {
-                                               "type": "boolean",
-                                               "description": "Set $wgCapitalLinks on a per-namespace basis"
-                                       },
-                                       "conditional": {
-                                               "type": "boolean",
-                                               "description": "Whether the namespace is conditional upon configuration and should not be registered (requires separate registration via a hook)",
-                                               "default": false
-                                       }
-                               },
-                               "required": ["id", "constant", "name"]
-                       }
-               },
-               "TrackingCategories": {
-                       "type": "array",
-                       "description": "Tracking category message keys",
-                       "items": {
-                               "type": "string"
-                       }
-               },
-               "DefaultUserOptions": {
-                       "type": "object",
-                       "description": "Default values of user options"
-               },
-               "HiddenPrefs": {
-                       "type": "array",
-                       "description": "Preferences users cannot set",
-                       "items": {
-                               "type": "string"
-                       }
-               },
-               "GroupPermissions": {
-                       "type": "object",
-                       "description": "Default permissions to give to user groups",
-                       "patternProperties": {
-                               "^[a-z]+$": {
-                                       "type": "object",
-                                       "patternProperties": {
-                                               "^[a-z]+$": {
-                                                       "type": "boolean"
-                                               }
-                                       }
-                               }
-                       }
-               },
-               "RevokePermissions": {
-                       "type": "object",
-                       "description": "Default permissions to revoke from user groups",
-                       "patternProperties": {
-                               "^[a-z]+$": {
-                                       "type": "object",
-                                       "patternProperties": {
-                                               "^[a-z]+$": {
-                                                       "type": "boolean"
-                                               }
-                                       }
-                               }
-                       }
-               },
-               "GrantPermissions": {
-                       "type": "object",
-                       "description": "Map of permissions granted to authorized consumers to their bundles, called 'grants'",
-                       "patternProperties": {
-                               "^[a-z]+$": {
-                                       "type": "object",
-                                       "patternProperties": {
-                                               "^[a-z]+$": {
-                                                       "type": "boolean"
-                                               }
-                                       }
-                               }
-                       }
-               },
-               "GrantPermissionGroups": {
-                       "type": "object",
-                       "description": "Map of grants to their UI grouping",
-                       "patternProperties": {
-                               "^[a-z]+$": {
-                                       "type": "string"
-                               }
-                       }
-               },
-               "ImplicitGroups": {
-                       "type": "array",
-                       "description": "Implicit groups"
-               },
-               "GroupsAddToSelf": {
-                       "type": "object",
-                       "description": "Groups a user can add to themselves"
-               },
-               "GroupsRemoveFromSelf": {
-                       "type": "object",
-                       "description": "Groups a user can remove from themselves"
-               },
-               "AddGroups": {
-                       "type": "object",
-                       "description": "Groups a user can add to users"
-               },
-               "RemoveGroups": {
-                       "type": "object",
-                       "description": "Groups a user can remove from users"
-               },
-               "AvailableRights": {
-                       "type": "array",
-                       "description": "User rights added by the extension",
-                       "items": {
-                               "type": "string"
-                       }
-               },
-               "ContentHandlers": {
-                       "type": "object",
-                       "description": "Mapping of model ID to class name",
-                       "patternProperties": {
-                               "^[A-Za-z]+$": {
-                                       "type": "string"
-                               }
-                       }
-               },
-               "RateLimits": {
-                       "type": "object",
-                       "description": "Rate limits"
-               },
-               "RecentChangesFlags": {
-                       "type": "object",
-                       "description": "Flags (letter symbols) shown on RecentChanges pages"
-               },
-               "MediaHandlers": {
-                       "type": "object",
-                       "description": "Plugins for media file type handling. Each entry in the array maps a MIME type to a PHP class name."
-               },
-               "ExtensionFunctions": {
-                       "type": [
-                               "array",
-                               "string"
-                       ],
-                       "description": "Function to call after setup has finished",
-                       "items": {
-                               "type": "string"
-                       }
-               },
-               "ExtensionMessagesFiles": {
-                       "type": "object",
-                       "description": "File paths containing PHP internationalization data"
-               },
-               "MessagesDirs": {
-                       "type": "object",
-                       "description": "Directory paths containing JSON internationalization data"
-               },
-               "ExtensionEntryPointListFiles": {
-                       "type": "object"
-               },
-               "SpecialPages": {
-                       "type": "object",
-                       "description": "SpecialPages implemented in this extension (mapping of page name to class name)"
-               },
-               "AutoloadClasses": {
-                       "type": "object"
-               },
-               "Hooks": {
-                       "type": [ "string", "object" ],
-                       "description": "Hooks this extension uses (mapping of hook name to callback)"
-               },
-               "JobClasses": {
-                       "type": "object",
-                       "description": "Job types this extension implements (mapping of job type to class name)"
-               },
-               "LogTypes": {
-                       "type": "array",
-                       "description": "List of new log types this extension uses"
-               },
-               "LogRestrictions": {
-                       "type": "object"
-               },
-               "FilterLogTypes": {
-                       "type": "object"
-               },
-               "ActionFilteredLogs": {
-                       "type": "object",
-                       "description": "List of log types which can be filtered by log actions",
-                       "patternProperties": {
-                               "^[a-z-]+$": {
-                                       "type": "object",
-                                       "patternProperties": {
-                                               "^[a-z-]+$": {
-                                                       "type": "array",
-                                                       "items": {
-                                                               "type": "string"
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               },
-               "LogNames": {
-                       "type": "object"
-               },
-               "LogHeaders": {
-                       "type": "object"
-               },
-               "LogActions": {
-                       "type": "object"
-               },
-               "LogActionsHandlers": {
-                       "type": "object"
-               },
-               "Actions": {
-                       "type": "object"
-               },
-               "APIModules": {
-                       "type": "object"
-               },
-               "APIFormatModules": {
-                       "type": "object"
-               },
-               "APIMetaModules": {
-                       "type": "object"
-               },
-               "APIPropModules": {
-                       "type": "object"
-               },
-               "APIListModules": {
-                       "type": "object"
-               },
-               "ValidSkinNames": {
-                       "type": "object"
-               },
-               "FeedClasses": {
-                       "type": "object",
-                       "description": "Available feeds objects"
-               },
-               "SkinOOUIThemes": {
-                       "type": "object"
-               },
-               "PasswordPolicy": {
-                       "type": "object",
-                       "description": "Password policies"
-               },
-               "FileExtensions": {
-                       "type": "array",
-                       "description": "Preferred file extensions for uploading",
-                       "items": {
-                               "type": "string"
-                       }
-               },
-               "callback": {
-                       "type": [
-                               "array",
-                               "string"
-                       ],
-                       "description": "A function to be called right after MediaWiki processes this file"
-               },
-               "config_prefix": {
-                       "type": "string",
-                       "default": "wg",
-                       "description": "Prefix to put in front of configuration settings when exporting them to $GLOBALS"
-               },
-               "config": {
-                       "type": "object",
-                       "description": "Configuration options for this extension",
-                       "patternProperties": {
-                               "^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
-                                       "type": "object",
-                                       "properties": {
-                                               "value": {
-                                                       "required": true
-                                               },
-                                               "merge_strategy": {
-                                                       "type": "string",
-                                                       "enum": [
-                                                               "array_merge_recursive",
-                                                               "array_replace_recursive",
-                                                               "array_plus_2d",
-                                                               "array_plus",
-                                                               "array_merge"
-                                                       ],
-                                                       "default": "array_merge"
-                                               },
-                                               "path": {
-                                                       "description": "Whether this should be interpreted as a filesystem path, relative to extension directory root",
-                                                       "type": "boolean",
-                                                       "default": false
-                                               },
-                                               "description": {
-                                                       "type": ["string", "array"],
-                                                       "description": "A description of the config setting, mostly for documentation/developers"
-                                               }
-                                       }
-                               }
-                       }
-               },
-               "ParserTestFiles": {
-                       "type": "array",
-                       "description": "Parser test suite files to be run by parserTests.php when no specific filename is passed to it"
-               },
-               "ServiceWiringFiles": {
-                       "type": "array",
-                       "description": "List of service wiring files to be loaded by the default instance of MediaWikiServices"
-               },
-               "load_composer_autoloader": {
-                       "type": "boolean",
-                       "description": "Load the composer autoloader for this extension, if one is present"
-               }
-       }
-}
diff --git a/docs/extension.schema.v2.json b/docs/extension.schema.v2.json
new file mode 100644 (file)
index 0000000..a5543d1
--- /dev/null
@@ -0,0 +1,727 @@
+{
+       "$schema": "http://json-schema.org/schema#",
+       "description": "MediaWiki extension.json schema",
+       "type": "object",
+       "properties": {
+               "manifest_version": {
+                       "type": "integer",
+                       "description": "Version of the extension.json schema the extension.json file is in.",
+                       "required": true
+               },
+               "name": {
+                       "type": "string",
+                       "description": "The extension's canonical name.",
+                       "required": true
+               },
+               "namemsg": {
+                       "type": "string",
+                       "description": "i18n message key of the extension's name."
+               },
+               "type": {
+                       "type": "string",
+                       "description": "The extension's type, as an index to $wgExtensionCredits.",
+                       "default": "other"
+               },
+               "author": {
+                       "type": [
+                               "string",
+                               "array"
+                       ],
+                       "description": "Extension's authors.",
+                       "items": {
+                               "type": "string"
+                       }
+               },
+               "version": {
+                       "type": "string",
+                       "description": "The version of this release of the extension."
+               },
+               "url": {
+                       "type": "string",
+                       "description": "URL to the homepage for the extension.",
+                       "format": "uri"
+               },
+               "description": {
+                       "type": "string",
+                       "description": "Raw description of the extension."
+               },
+               "descriptionmsg": {
+                       "type": "string",
+                       "description": "Message key for a i18n message describing the extension."
+               },
+               "license-name": {
+                       "type": "string",
+                       "description": "SPDX identifier for the license under which the extension is released."
+               },
+               "requires": {
+                       "type": "object",
+                       "description": "Indicates what versions of MediaWiki core or extensions are required. This syntax may be extended in the future, for example to check dependencies between other services.",
+                       "properties": {
+                               "MediaWiki": {
+                                       "type": "string",
+                                       "description": "Version constraint string against MediaWiki core."
+                               },
+                               "extensions": {
+                                       "type": "object",
+                                       "description": "Set of version constraint strings against specific extensions."
+                               },
+                               "skins": {
+                                       "type": "object",
+                                       "description": "Set of version constraint strings against specific skins."
+                               }
+                       }
+               },
+               "ResourceFileModulePaths": {
+                       "type": "object",
+                       "description": "Default paths to use for all ResourceLoader file modules",
+                       "additionalProperties": false,
+                       "properties": {
+                               "localBasePath": {
+                                       "type": "string",
+                                       "description": "Base path to prepend to all local paths, relative to current directory"
+                               },
+                               "remoteExtPath": {
+                                       "type": "string",
+                                       "description": "Base path to prepend to all remote paths, relative to $wgExtensionAssetsPath"
+                               },
+                               "remoteSkinPath": {
+                                       "type": "string",
+                                       "description": "Base path to prepend to all remote paths, relative to $wgStylePath"
+                               }
+                       }
+               },
+               "ResourceModules": {
+                       "type": "object",
+                       "description": "ResourceLoader modules to register",
+                       "patternProperties": {
+                               "^[a-zA-Z0-9-\\.]+$": {
+                                       "type": "object",
+                                       "anyOf": [
+                                               {
+                                                       "description": "A ResourceLoaderFileModule definition",
+                                                       "additionalProperties": false,
+                                                       "properties": {
+                                                               "localBasePath": {
+                                                                       "type": "string",
+                                                                       "description": "Base path to prepend to all local paths in $options. Defaults to $IP"
+                                                               },
+                                                               "remoteBasePath": {
+                                                                       "type": "string",
+                                                                       "description": "Base path to prepend to all remote paths in $options. Defaults to $wgScriptPath"
+                                                               },
+                                                               "remoteExtPath": {
+                                                                       "type": "string",
+                                                                       "description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
+                                                               },
+                                                               "skipFunction": {
+                                                                       "type": "string",
+                                                                       "description": "Path to a file containing a JavaScript \"skip function\", if desired."
+                                                               },
+                                                               "scripts": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "Scripts to always include (array of file paths)",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "languageScripts": {
+                                                                       "type": "object",
+                                                                       "description": "Scripts to include in specific language contexts (mapping of language code to file path(s))",
+                                                                       "patternProperties": {
+                                                                               "^[a-zA-Z0-9-]{2,}$": {
+                                                                                       "type": [
+                                                                                               "string",
+                                                                                               "array"
+                                                                                       ],
+                                                                                       "items": {
+                                                                                               "type": "string"
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               },
+                                                               "skinScripts": {
+                                                                       "type": "object",
+                                                                       "description": "Scripts to include in specific skin contexts (mapping of skin name to script(s)",
+                                                                       "patternProperties": {
+                                                                               ".+": {
+                                                                                       "type": [
+                                                                                               "string",
+                                                                                               "array"
+                                                                                       ],
+                                                                                       "items": {
+                                                                                               "type": "string"
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               },
+                                                               "debugScripts": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "Scripts to include in debug contexts",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "loaderScripts": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "Scripts to include in the startup module",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "dependencies": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "Modules which must be loaded before this module",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "styles": {
+                                                                       "type": ["string", "array", "object"],
+                                                                       "description": "Styles to always load",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "skinStyles": {
+                                                                       "type": "object",
+                                                                       "description": "Styles to include in specific skin contexts (mapping of skin name to style(s))",
+                                                                       "patternProperties": {
+                                                                               ".+": {
+                                                                                       "type": [
+                                                                                               "string",
+                                                                                               "array"
+                                                                                       ],
+                                                                                       "items": {
+                                                                                               "type": "string"
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               },
+                                                               "messages": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "Messages to always load",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "group": {
+                                                                       "type": "string",
+                                                                       "description": "Group with which this module should be loaded"
+                                                               },
+                                                               "deprecated": {
+                                                                       "type": ["object", "boolean"],
+                                                                       "description": "Whether the module is deprecated and usage is discouraged. Either a boolean or an object with key message can be used to customise deprecation message."
+                                                               },
+                                                               "position": {
+                                                                       "type": "string",
+                                                                       "description": "Position on the page to load this module at",
+                                                                       "enum": [
+                                                                               "bottom",
+                                                                               "top"
+                                                                       ]
+                                                               },
+                                                               "templates": {
+                                                                       "type": ["object", "array"],
+                                                                       "description": "Templates to be loaded for client-side usage"
+                                                               },
+                                                               "targets": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "ResourceLoader target the module can run on",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "noflip": {
+                                                                       "type": "boolean",
+                                                                       "description": "Whether to skip CSSJanus LTR-to-RTL flipping for this module. Recommended for styles imported from libraries that already properly handle their RTL styles. Default is false, meaning CSSJanus will be applied on RTL-mode output."
+                                                               }
+                                                       }
+                                               },
+                                               {
+                                                       "description": "A ResourceLoaderWikiModule definition",
+                                                       "additionalProperties": false,
+                                                       "properties": {
+                                                               "class": {
+                                                                       "enum": ["ResourceLoaderWikiModule"]
+                                                               },
+                                                               "group": {
+                                                                       "type": "string",
+                                                                       "description": "Group with which this module should be loaded"
+                                                               },
+                                                               "position": {
+                                                                       "type": "string",
+                                                                       "description": "Position on the page to load this module at",
+                                                                       "enum": [
+                                                                               "bottom",
+                                                                               "top"
+                                                                       ]
+                                                               },
+                                                               "targets": {
+                                                                       "type": ["string", "array"],
+                                                                       "description": "ResourceLoader target the module can run on",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "scripts": {
+                                                                       "type": "array",
+                                                                       "description": "A list of on-wiki pages containing JavaScript that should be loaded",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "styles": {
+                                                                       "type": "array",
+                                                                       "description": "A list of on-wiki pages containing CSS that should be loaded",
+                                                                       "items": {
+                                                                               "type": "string"
+                                                                       }
+                                                               }
+                                                       }
+                                               },
+                                               {
+                                                       "description": "A ResourceLoaderImageModule definition",
+                                                       "additionalProperties": false,
+                                                       "properties": {
+                                                               "class": {
+                                                                       "enum": ["ResourceLoaderImageModule"]
+                                                               },
+                                                               "data": {
+                                                                       "type": "string"
+                                                               },
+                                                               "prefix": {
+                                                                       "type": "string"
+                                                               },
+                                                               "selector": {
+                                                                       "type": "string"
+                                                               },
+                                                               "selectorWithoutVariant": {
+                                                                       "type": "string"
+                                                               },
+                                                               "selectorWithVariant": {
+                                                                       "type": "string"
+                                                               },
+                                                               "variants": {
+                                                                       "type": "object"
+                                                               },
+                                                               "images": {
+                                                                       "type": "object"
+                                                               },
+                                                               "position": {
+                                                                       "enum": [
+                                                                               "top",
+                                                                               "bottom"
+                                                                       ]
+                                                               }
+                                                       }
+                                               },
+                                               {
+                                                       "description": "An arbitrary ResourceLoaderModule definition",
+                                                       "properties": {
+                                                               "class": {
+                                                                       "type": "string",
+                                                                       "pattern": "^((?!ResourceLoader(File|Image)Module).)*$"
+                                                               }
+                                                       },
+                                                       "required": ["class"]
+                                               }
+                                       ]
+                               }
+                       }
+               },
+               "ResourceModuleSkinStyles": {
+                       "type": "object",
+                       "description": "ResourceLoader modules for custom skin styles"
+               },
+               "ResourceLoaderSources": {
+                       "type": "object",
+                       "description": "ResourceLoader sources to register"
+               },
+               "ResourceLoaderLESSVars": {
+                       "type": "object",
+                       "description": "ResourceLoader LESS variables"
+               },
+               "ConfigRegistry": {
+                       "type": "object",
+                       "description": "Registry of factory functions to create Config objects"
+               },
+               "SessionProviders": {
+                       "type": "object",
+                       "description": "Session providers"
+               },
+               "AuthManagerAutoConfig": {
+                       "type": "object",
+                       "description": "AuthManager auto-configuration",
+                       "additionalProperties": false,
+                       "properties": {
+                               "preauth": {
+                                       "type": "object",
+                                       "description": "Pre-authentication providers"
+                               },
+                               "primaryauth": {
+                                       "type": "object",
+                                       "description": "Primary authentication providers"
+                               },
+                               "secondaryauth": {
+                                       "type": "object",
+                                       "description": "Secondary authentication providers"
+                               }
+                       }
+               },
+               "CentralIdLookupProviders": {
+                       "type": "object",
+                       "description": "Central ID lookup providers"
+               },
+               "ChangeCredentialsBlacklist": {
+                       "type": "object",
+                       "description": "AuthenticationRequest classes which can only be used internally for credentials change"
+               },
+               "RemoveCredentialsBlacklist": {
+                       "type": "object",
+                       "description": "AuthenticationRequest classes which can only be used internally for credentials removal"
+               },
+               "namespaces": {
+                       "type": "array",
+                       "description": "Method to add extra namespaces",
+                       "items": {
+                               "type": "object",
+                               "properties": {
+                                       "id": {
+                                               "type": "integer"
+                                       },
+                                       "constant": {
+                                               "type": "string"
+                                       },
+                                       "name": {
+                                               "type": "string"
+                                       },
+                                       "gender": {
+                                               "type": "object",
+                                               "properties": {
+                                                       "male": {
+                                                               "type": "string"
+                                                       },
+                                                       "female": {
+                                                               "type": "string"
+                                                       }
+                                               }
+                                       },
+                                       "subpages": {
+                                               "type": "boolean",
+                                               "default": false
+                                       },
+                                       "content": {
+                                               "type": "boolean",
+                                               "default": false
+                                       },
+                                       "defaultcontentmodel": {
+                                               "type": "string"
+                                       },
+                                       "protection": {
+                                               "type": ["string", "array"],
+                                               "description": "Userright(s) required to edit in this namespace"
+                                       },
+                                       "capitallinkoverride": {
+                                               "type": "boolean",
+                                               "description": "Set $wgCapitalLinks on a per-namespace basis"
+                                       },
+                                       "conditional": {
+                                               "type": "boolean",
+                                               "description": "Whether the namespace is conditional upon configuration and should not be registered (requires separate registration via a hook)",
+                                               "default": false
+                                       }
+                               },
+                               "required": ["id", "constant", "name"]
+                       }
+               },
+               "TrackingCategories": {
+                       "type": "array",
+                       "description": "Tracking category message keys",
+                       "items": {
+                               "type": "string"
+                       }
+               },
+               "DefaultUserOptions": {
+                       "type": "object",
+                       "description": "Default values of user options"
+               },
+               "HiddenPrefs": {
+                       "type": "array",
+                       "description": "Preferences users cannot set",
+                       "items": {
+                               "type": "string"
+                       }
+               },
+               "GroupPermissions": {
+                       "type": "object",
+                       "description": "Default permissions to give to user groups",
+                       "patternProperties": {
+                               "^[a-z]+$": {
+                                       "type": "object",
+                                       "patternProperties": {
+                                               "^[a-z]+$": {
+                                                       "type": "boolean"
+                                               }
+                                       }
+                               }
+                       }
+               },
+               "RevokePermissions": {
+                       "type": "object",
+                       "description": "Default permissions to revoke from user groups",
+                       "patternProperties": {
+                               "^[a-z]+$": {
+                                       "type": "object",
+                                       "patternProperties": {
+                                               "^[a-z]+$": {
+                                                       "type": "boolean"
+                                               }
+                                       }
+                               }
+                       }
+               },
+               "GrantPermissions": {
+                       "type": "object",
+                       "description": "Map of permissions granted to authorized consumers to their bundles, called 'grants'",
+                       "patternProperties": {
+                               "^[a-z]+$": {
+                                       "type": "object",
+                                       "patternProperties": {
+                                               "^[a-z]+$": {
+                                                       "type": "boolean"
+                                               }
+                                       }
+                               }
+                       }
+               },
+               "GrantPermissionGroups": {
+                       "type": "object",
+                       "description": "Map of grants to their UI grouping",
+                       "patternProperties": {
+                               "^[a-z]+$": {
+                                       "type": "string"
+                               }
+                       }
+               },
+               "ImplicitGroups": {
+                       "type": "array",
+                       "description": "Implicit groups"
+               },
+               "GroupsAddToSelf": {
+                       "type": "object",
+                       "description": "Groups a user can add to themselves"
+               },
+               "GroupsRemoveFromSelf": {
+                       "type": "object",
+                       "description": "Groups a user can remove from themselves"
+               },
+               "AddGroups": {
+                       "type": "object",
+                       "description": "Groups a user can add to users"
+               },
+               "RemoveGroups": {
+                       "type": "object",
+                       "description": "Groups a user can remove from users"
+               },
+               "AvailableRights": {
+                       "type": "array",
+                       "description": "User rights added by the extension",
+                       "items": {
+                               "type": "string"
+                       }
+               },
+               "ContentHandlers": {
+                       "type": "object",
+                       "description": "Mapping of model ID to class name",
+                       "patternProperties": {
+                               "^[A-Za-z]+$": {
+                                       "type": "string"
+                               }
+                       }
+               },
+               "RateLimits": {
+                       "type": "object",
+                       "description": "Rate limits"
+               },
+               "RecentChangesFlags": {
+                       "type": "object",
+                       "description": "Flags (letter symbols) shown on RecentChanges pages"
+               },
+               "MediaHandlers": {
+                       "type": "object",
+                       "description": "Plugins for media file type handling. Each entry in the array maps a MIME type to a PHP class name."
+               },
+               "ExtensionFunctions": {
+                       "type": [
+                               "array",
+                               "string"
+                       ],
+                       "description": "Function to call after setup has finished",
+                       "items": {
+                               "type": "string"
+                       }
+               },
+               "ExtensionMessagesFiles": {
+                       "type": "object",
+                       "description": "File paths containing PHP internationalization data"
+               },
+               "MessagesDirs": {
+                       "type": "object",
+                       "description": "Directory paths containing JSON internationalization data"
+               },
+               "ExtensionEntryPointListFiles": {
+                       "type": "object"
+               },
+               "SpecialPages": {
+                       "type": "object",
+                       "description": "SpecialPages implemented in this extension (mapping of page name to class name)"
+               },
+               "AutoloadClasses": {
+                       "type": "object"
+               },
+               "Hooks": {
+                       "type": [ "string", "object" ],
+                       "description": "Hooks this extension uses (mapping of hook name to callback)"
+               },
+               "JobClasses": {
+                       "type": "object",
+                       "description": "Job types this extension implements (mapping of job type to class name)"
+               },
+               "LogTypes": {
+                       "type": "array",
+                       "description": "List of new log types this extension uses"
+               },
+               "LogRestrictions": {
+                       "type": "object"
+               },
+               "FilterLogTypes": {
+                       "type": "object"
+               },
+               "ActionFilteredLogs": {
+                       "type": "object",
+                       "description": "List of log types which can be filtered by log actions",
+                       "patternProperties": {
+                               "^[a-z-]+$": {
+                                       "type": "object",
+                                       "patternProperties": {
+                                               "^[a-z-]+$": {
+                                                       "type": "array",
+                                                       "items": {
+                                                               "type": "string"
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               },
+               "LogNames": {
+                       "type": "object"
+               },
+               "LogHeaders": {
+                       "type": "object"
+               },
+               "LogActions": {
+                       "type": "object"
+               },
+               "LogActionsHandlers": {
+                       "type": "object"
+               },
+               "Actions": {
+                       "type": "object"
+               },
+               "APIModules": {
+                       "type": "object"
+               },
+               "APIFormatModules": {
+                       "type": "object"
+               },
+               "APIMetaModules": {
+                       "type": "object"
+               },
+               "APIPropModules": {
+                       "type": "object"
+               },
+               "APIListModules": {
+                       "type": "object"
+               },
+               "ValidSkinNames": {
+                       "type": "object"
+               },
+               "FeedClasses": {
+                       "type": "object",
+                       "description": "Available feeds objects"
+               },
+               "SkinOOUIThemes": {
+                       "type": "object"
+               },
+               "PasswordPolicy": {
+                       "type": "object",
+                       "description": "Password policies"
+               },
+               "FileExtensions": {
+                       "type": "array",
+                       "description": "Preferred file extensions for uploading",
+                       "items": {
+                               "type": "string"
+                       }
+               },
+               "callback": {
+                       "type": [
+                               "array",
+                               "string"
+                       ],
+                       "description": "A function to be called right after MediaWiki processes this file"
+               },
+               "config_prefix": {
+                       "type": "string",
+                       "default": "wg",
+                       "description": "Prefix to put in front of configuration settings when exporting them to $GLOBALS"
+               },
+               "config": {
+                       "type": "object",
+                       "description": "Configuration options for this extension",
+                       "patternProperties": {
+                               "^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
+                                       "type": "object",
+                                       "properties": {
+                                               "value": {
+                                                       "required": true
+                                               },
+                                               "merge_strategy": {
+                                                       "type": "string",
+                                                       "enum": [
+                                                               "array_merge_recursive",
+                                                               "array_replace_recursive",
+                                                               "array_plus_2d",
+                                                               "array_plus",
+                                                               "array_merge"
+                                                       ],
+                                                       "default": "array_merge"
+                                               },
+                                               "path": {
+                                                       "description": "Whether this should be interpreted as a filesystem path, relative to extension directory root",
+                                                       "type": "boolean",
+                                                       "default": false
+                                               },
+                                               "description": {
+                                                       "type": ["string", "array"],
+                                                       "description": "A description of the config setting, mostly for documentation/developers"
+                                               }
+                                       }
+                               }
+                       }
+               },
+               "ParserTestFiles": {
+                       "type": "array",
+                       "description": "Parser test suite files to be run by parserTests.php when no specific filename is passed to it"
+               },
+               "ServiceWiringFiles": {
+                       "type": "array",
+                       "description": "List of service wiring files to be loaded by the default instance of MediaWikiServices"
+               },
+               "load_composer_autoloader": {
+                       "type": "boolean",
+                       "description": "Load the composer autoloader for this extension, if one is present"
+               }
+       }
+}
index 8663d03..792bcd9 100644 (file)
@@ -74,6 +74,9 @@ class Block {
        /** @var bool */
        protected $isAutoblocking;
 
+       /** @var string|null */
+       protected $systemBlockType;
+
        # TYPE constants
        const TYPE_USER = 1;
        const TYPE_IP = 2;
@@ -99,6 +102,10 @@ class Block {
         *     blockEmail bool      Disallow sending emails
         *     allowUsertalk bool   Allow the target to edit its own talk page
         *     byText string        Username of the blocker (for foreign users)
+        *     systemBlock string   Indicate that this block is automatically
+        *                          created by MediaWiki rather than being stored
+        *                          in the database. Value is a string to return
+        *                          from self::getSystemBlockType().
         *
         * @since 1.26 accepts $options array instead of individual parameters; order
         * of parameters above reflects the original order
@@ -119,6 +126,7 @@ class Block {
                        'blockEmail'      => false,
                        'allowUsertalk'   => false,
                        'byText'          => '',
+                       'systemBlock'     => null,
                ];
 
                if ( func_num_args() > 1 || !is_array( $options ) ) {
@@ -162,6 +170,7 @@ class Block {
                $this->prevents( 'createaccount', (bool)$options['createAccount'] );
 
                $this->mFromMaster = false;
+               $this->systemBlockType = $options['systemBlock'];
        }
 
        /**
@@ -461,6 +470,11 @@ class Block {
         */
        public function insert( $dbw = null ) {
                global $wgBlockDisablesLogin;
+
+               if ( $this->getSystemBlockType() !== null ) {
+                       throw new MWException( 'Cannot insert a system block into the database' );
+               }
+
                wfDebug( "Block::insert; timestamp {$this->mTimestamp}\n" );
 
                if ( $dbw === null ) {
@@ -741,6 +755,11 @@ class Block {
                        return false;
                }
 
+               # Don't autoblock for system blocks
+               if ( $this->getSystemBlockType() !== null ) {
+                       throw new MWException( 'Cannot autoblock from a system block' );
+               }
+
                # Check for presence on the autoblock whitelist.
                if ( self::isWhitelistedFromAutoblocks( $autoblockIP ) ) {
                        return false;
@@ -934,6 +953,14 @@ class Block {
                return $this->mId;
        }
 
+       /**
+        * Get the system block type, if any
+        * @return string|null
+        */
+       public function getSystemBlockType() {
+               return $this->systemBlockType;
+       }
+
        /**
         * Get/set a flag determining whether the master is used for reads
         *
@@ -1469,14 +1496,18 @@ class Block {
                 * This could be a username, an IP range, or a single IP. */
                $intended = $this->getTarget();
 
+               $systemBlockType = $this->getSystemBlockType();
+
                $lang = $context->getLanguage();
                return [
-                       $this->mAuto ? 'autoblockedtext' : 'blockedtext',
+                       $systemBlockType !== null
+                               ? 'systemblockedtext'
+                               : ( $this->mAuto ? 'autoblockedtext' : 'blockedtext' ),
                        $link,
                        $reason,
                        $context->getRequest()->getIP(),
                        $this->getByName(),
-                       $this->getId(),
+                       $systemBlockType !== null ? $systemBlockType : $this->getId(),
                        $lang->formatExpiry( $this->mExpiry ),
                        (string)$intended,
                        $lang->userTimeAndDate( $this->mTimestamp, $context->getUser() ),
index 7a0a11f..4f1e47d 100644 (file)
@@ -661,7 +661,11 @@ class EditPage {
                $remove = [];
                foreach ( $permErrors as $error ) {
                        if ( ( $this->preview || $this->diff )
-                               && ( $error[0] == 'blockedtext' || $error[0] == 'autoblockedtext' )
+                               && (
+                                       $error[0] == 'blockedtext' ||
+                                       $error[0] == 'autoblockedtext' ||
+                                       $error[0] == 'systemblockedtext'
+                               )
                        ) {
                                $remove[] = $error;
                        }
index 3893c9d..fd67613 100644 (file)
@@ -1305,9 +1305,9 @@ class Message implements MessageSpecifier, Serializable {
         */
        protected function formatListParam( array $params, $listType, $format ) {
                if ( !isset( self::$listTypeMap[$listType] ) ) {
-                       $warning = 'Invalid list type for message "' . $this->getKey() . '": ' .
-                               htmlspecialchars( serialize( $params )
-                       );
+                       $warning = 'Invalid list type for message "' . $this->getKey() . '": '
+                               . htmlspecialchars( $listType )
+                               . ' (params are ' . htmlspecialchars( serialize( $params ) ) . ')';
                        trigger_error( $warning, E_USER_WARNING );
                        $e = new Exception;
                        wfDebugLog( 'Bug58676', $warning . "\n" . $e->getTraceAsString() );
index 04c17e4..48b1d72 100644 (file)
@@ -23,7 +23,7 @@
 /**
  * Handles searching prefixes of titles and finding any page
  * names that match. Used largely by the OpenSearch implementation.
- * @deprecated Since 1.27, Use SearchEngine::prefixSearchSubpages or SearchEngine::completionSearch
+ * @deprecated Since 1.27, Use SearchEngine::defaultPrefixSearch or SearchEngine::completionSearch
  *
  * @ingroup Search
  */
@@ -369,7 +369,7 @@ abstract class PrefixSearch {
 
 /**
  * Performs prefix search, returning Title objects
- * @deprecated Since 1.27, Use SearchEngine::prefixSearchSubpages or SearchEngine::completionSearch
+ * @deprecated Since 1.27, Use SearchEngine::defaultPrefixSearch or SearchEngine::completionSearch
  * @ingroup Search
  */
 class TitlePrefixSearch extends PrefixSearch {
index 1507a0d..64ff5b4 100644 (file)
@@ -1627,7 +1627,7 @@ class Title implements LinkTarget {
         *
         * @since 1.19 (r105919)
         * @param array|string $query
-        * @param bool $query2
+        * @param string|string[]|bool $query2
         * @return string
         */
        private static function fixUrlQueryArgs( $query, $query2 = false ) {
@@ -1663,8 +1663,8 @@ class Title implements LinkTarget {
         *
         * @see self::getLocalURL for the arguments.
         * @see wfExpandUrl
-        * @param array|string $query
-        * @param bool $query2
+        * @param string|string[] $query
+        * @param string|string[]|bool $query2
         * @param string $proto Protocol type to use in URL
         * @return string The URL
         */
@@ -1696,11 +1696,11 @@ class Title implements LinkTarget {
         *  valid to link, locally, to the current Title.
         * @see self::newFromText to produce a Title object.
         *
-        * @param string|array $query An optional query string,
+        * @param string|string[] $query An optional query string,
         *   not used for interwiki links. Can be specified as an associative array as well,
         *   e.g., array( 'action' => 'edit' ) (keys and values will be URL-escaped).
         *   Some query patterns will trigger various shorturl path replacements.
-        * @param array $query2 An optional secondary query array. This one MUST
+        * @param string|string[]|bool $query2 An optional secondary query array. This one MUST
         *   be an array. If a string is passed it will be interpreted as a deprecated
         *   variant argument and urlencoded into a variant= argument.
         *   This second query argument will be added to the $query
@@ -1795,7 +1795,7 @@ class Title implements LinkTarget {
         * The result obviously should not be URL-escaped, but does need to be
         * HTML-escaped if it's being output in HTML.
         *
-        * @param array $query
+        * @param string|string[] $query
         * @param bool $query2
         * @param string|int|bool $proto A PROTO_* constant on how the URL should be expanded,
         *                               or false (default) for no expansion
index cc4779e..3cdc59c 100644 (file)
@@ -668,7 +668,7 @@ class WatchedItemStore implements StatsdAwareInterface {
 
        /**
         * @param User $user The user to set the timestamp for
-        * @param string $timestamp Set the update timestamp to this value
+        * @param string|null $timestamp Set the update timestamp to this value
         * @param LinkTarget[] $targets List of targets to update. Default to all targets
         *
         * @return bool success
@@ -687,9 +687,13 @@ class WatchedItemStore implements StatsdAwareInterface {
                        $conds[] = $batch->constructSet( 'wl', $dbw );
                }
 
+               if ( $timestamp !== null ) {
+                       $timestamp = $dbw->timestamp( $timestamp );
+               }
+
                $success = $dbw->update(
                        'watchlist',
-                       [ 'wl_notificationtimestamp' => $dbw->timestamp( $timestamp ) ],
+                       [ 'wl_notificationtimestamp' => $timestamp ],
                        $conds,
                        __METHOD__
                );
index 6cafaa5..5fb83b3 100644 (file)
@@ -261,23 +261,22 @@ class InfoAction extends FormlessAction {
                // Language in which the page content is (supposed to be) written
                $pageLang = $title->getPageLanguage()->getCode();
 
+               $pageLangHtml = $pageLang . ' - ' .
+                       Language::fetchLanguageName( $pageLang, $lang->getCode() );
+               // Link to Special:PageLanguage with pre-filled page title if user has permissions
                if ( $config->get( 'PageLanguageUseDB' )
                        && $title->userCan( 'pagelang', $user )
                ) {
-                       // Link to Special:PageLanguage with pre-filled page title if user has permissions
-                       $titleObj = SpecialPage::getTitleFor( 'PageLanguage', $title->getPrefixedText() );
-                       $langDisp = $linkRenderer->makeLink(
-                               $titleObj,
-                               $this->msg( 'pageinfo-language' )->text()
-                       );
-               } else {
-                       // Display just the message
-                       $langDisp = $this->msg( 'pageinfo-language' )->escaped();
+                       $pageLangHtml .= ' ' . $this->msg( 'parentheses' )->rawParams( $linkRenderer->makeLink(
+                               SpecialPage::getTitleValueFor( 'PageLanguage', $title->getPrefixedText() ),
+                               $this->msg( 'pageinfo-language-change' )->text()
+                       ) )->escaped();
                }
 
-               $pageInfo['header-basic'][] = [ $langDisp,
-                       Language::fetchLanguageName( $pageLang, $lang->getCode() )
-                       . ' ' . $this->msg( 'parentheses', $pageLang )->escaped() ];
+               $pageInfo['header-basic'][] = [
+                       $this->msg( 'pageinfo-language' )->escaped(),
+                       $pageLangHtml
+               ];
 
                // Content model of the page
                $modelHtml = htmlspecialchars( ContentHandler::getLocalizedName( $title->getContentModel() ) );
index 6fad630..c1ad947 100644 (file)
@@ -1627,6 +1627,12 @@ abstract class ApiBase extends ContextSource {
                                        'autoblocked',
                                        [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
                                ) );
+                       } elseif ( is_array( $error ) && $error[0] === 'systemblockedtext' && $user->getBlock() ) {
+                               $status->fatal( ApiMessage::create(
+                                       'apierror-systemblocked',
+                                       'blocked',
+                                       [ 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $user->getBlock() ) ]
+                               ) );
                        } else {
                                call_user_func_array( [ $status, 'fatal' ], (array)$error );
                        }
@@ -2464,6 +2470,7 @@ abstract class ApiBase extends ContextSource {
                'confirmedittext' => 'confirmedittext',
                'blockedtext' => 'apierror-blocked',
                'autoblockedtext' => 'apierror-autoblocked',
+               'systemblockedtext' => 'apierror-systemblocked',
                'actionthrottledtext' => 'apierror-ratelimited',
                'alreadyrolled' => 'alreadyrolled',
                'cantrollback' => 'cantrollback',
index 2a6c938..9a0d3ff 100644 (file)
@@ -90,7 +90,6 @@ class ApiHelp extends ApiBase {
         * @param IContextSource $context
         * @param ApiBase[]|ApiBase $modules
         * @param array $options Formatting options (described above)
-        * @return string
         */
        public static function getHelp( IContextSource $context, $modules, array $options ) {
                global $wgContLang;
index 9d69a77..9e42d5f 100644 (file)
@@ -126,6 +126,7 @@ trait ApiMessageTrait {
                'rcpatroldisabled' => 'patroldisabled',
                'readonlytext' => 'readonly',
                'sessionfailure' => 'badtoken',
+               'systemblockedtext' => 'blocked',
                'titleprotected' => 'protectedtitle',
                'undo-failure' => 'undofailure',
                'userrights-nodatabase' => 'nosuchdatabase',
index 3b60478..60e122c 100644 (file)
@@ -64,6 +64,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
         *  - blockreason - reason provided for the block
         *  - blockedtimestamp - timestamp for when the block was placed/modified
         *  - blockexpiry - expiry time of the block
+        *  - systemblocktype - system block type, if any
         */
        public static function getBlockInfo( Block $block ) {
                global $wgContLang;
@@ -76,6 +77,9 @@ class ApiQueryUserInfo extends ApiQueryBase {
                $vals['blockexpiry'] = $wgContLang->formatExpiry(
                        $block->getExpiry(), TS_ISO_8601, 'infinite'
                );
+               if ( $block->getSystemBlockType() !== null ) {
+                       $vals['systemblocktype'] = $block->getSystemBlockType();
+               }
                return $vals;
        }
 
index fde631c..d26d1d4 100644 (file)
@@ -21,5 +21,6 @@
        "apihelp-edit-param-contentmodel": "নতুন বিষয়বস্তুর, বিষয়বস্তু-মডেল।",
        "apihelp-edit-example-edit": "একটি পাতা সম্পাদনা করুন",
        "apihelp-edit-example-prepend": "একটি পৃষ্ঠার পূর্বে <kbd>_&#95;NOTOC_&#95;</kbd> লিখুন।",
-       "apihelp-login-example-login": "প্রবেশ"
+       "apihelp-login-example-login": "প্রবেশ",
+       "apierror-nosuchuserid": "$1 আইডি যুক্ত কোন ব্যবহারকারী নেই।"
 }
index 7e54617..23c5a0f 100644 (file)
        "api-help-open-in-apisandbox": "<small>[in Spielwiese öffnen]</small>",
        "api-help-authmanagerhelper-messageformat": "Zu verwendendes Format zur Rückgabe von Nachrichten.",
        "apierror-nosuchuserid": "Es gibt keinen Benutzer mit der Kennung $1.",
+       "apierror-stashinvalidfile": "Ungültige gespeicherte Datei.",
+       "apierror-systemblocked": "Du wurdest von MediaWiki automatisch gesperrt.",
        "api-credits-header": "Danksagungen",
        "api-credits": "API-Entwickler:\n* Roan Kattouw (Hauptentwickler von September 2007 bis 2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (Autor, Hauptentwickler von September 2006 bis September 2007)\n* Brad Jorsch (Hauptentwickler seit 2013)\n\nBitte sende deine Kommentare, Vorschläge und Fragen an mediawiki-api@lists.wikimedia.org\noder reiche einen Fehlerbericht auf https://phabricator.wikimedia.org/ ein."
 }
index c0b5dbe..d748894 100644 (file)
        "apierror-stashpathinvalid": "File key of improper format or otherwise invalid: $1.",
        "apierror-stashwrongowner": "Wrong owner: $1",
        "apierror-stashzerolength": "File is of zero length, and could not be stored in the stash: $1.",
+       "apierror-systemblocked": "You have been blocked automatically by MediaWiki.",
        "apierror-templateexpansion-notwikitext": "Template expansion is only supported for wikitext content. $1 uses content model $2.",
        "apierror-toofewexpiries": "$1 expiry {{PLURAL:$1|timestamp was|timestamps were}} provided where $2 {{PLURAL:$2|was|were}} needed.",
        "apierror-unknownaction": "The action specified, <kbd>$1</kbd>, is not recognized.",
index 09241fb..a19a2d5 100644 (file)
        "apierror-stashfailed-complete": "Un téléchargement par morceaux est déjà achevé, vérifiez l’état pour plus de détails.",
        "apierror-stashfailed-nosession": "Aucune session de téléchargement par morceaux avec cette clé.",
        "apierror-stashfilestorage": "Impossible de mettre le téléchargement en réserve: $1",
+       "apierror-stashinvalidfile": "Fichier de réserve invalide.",
        "apierror-stashnosuchfilekey": "Filekey inconnue: $1.",
        "apierror-stashpathinvalid": "La clé du fichier n'a pas le bon format ou est invalide: $1 .",
        "apierror-stashwrongowner": "Erreur de propriétaire: $1",
index 6f6a84f..7f5b9d9 100644 (file)
@@ -29,7 +29,7 @@
        "apihelp-main-param-origin": "בעת גישה ל־API עם בקשת AJAX חוצה מתחמים (CORS), יש להציב כאן את המתחם שהבקשה יוצאת ממנו. זה היה להיות כלול בכל בקשה מקדימה, ולכן הוא חייב להיות חלק מה־URI של הבקשה (לא גוף ה־POST).\n\nעבור בקשות מאומתות, זה חייב להיות תואם במדויק לאחד המקורות בכותרת <code>Origin</code>, כך שזה צריך להיות מוגדר למשהו כמו <kbd>https://en.wikipedia.org</kbd> או <kbd>https://meta.wikimedia.org</kbd>. אם הפרמטר הזה אינו תואם לכותרת <code>Origin</code>, תוחזר תשובת 403. אם הפרמטר הזה תורם לכותרת <code>Origin</code> והמקור נמצא ברשימה הלבנה, תוגדרנה הכותרות <code>Access-Control-Allow-Origin</code> ו־<code>Access-Control-Allow-Credentials</code>.\n\nעבור בקשות בלתי־מאומתות, יש לציין את הערך <kbd>*</kbd>. זה יגרום לכותרת להיות <code>Access-Control-Allow-Origin</code>, אבל <code>Access-Control-Allow-Credentials</code> תהיה <code>false</code> וכל הנתונים הייחודיים למשתמש יהיו מוגבלים.",
        "apihelp-main-param-uselang": "באיזו שפה להשתמש לתרגומי הודעות. הקריאה <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> עם <kbd>siprop=languages</kbd> מחזירה רשימת קודים. ציון <kbd>user</kbd> כדי להשתמש בהעדפת השפה של המשתמש הנוכחי, וציון <kbd>content</kbd> להשתמש בקוד השפה של הוויקי הזה.",
        "apihelp-block-description": "חסימת משתמש.",
-       "apihelp-block-param-user": "שם משתמש, כתובת IP, או טווח IP שהנך רוצה לחסום.",
+       "apihelp-block-param-user": "שם משתמש, כתובת IP, או טווח כתובות IP שברצונך לחסום. אי־אפשר להשתמש בזה יחד עם <var>$1userid</var>",
        "apihelp-block-param-expiry": "זמן תפוגה. יכול להיות יחסי (למשל <kbd>5 months</kbd> או <kbd>2 weeks</kbd>) או מוחלט (למשל <kbd>2014-09-18T12:34:56Z</kbd>). אם זה מוגדר ל־<kbd>infinite</kbd>‏, <kbd>indefinite</kbd>, או <kbd>never</kbd>, החסימה לא תפוג לעולם.",
        "apihelp-block-param-reason": "סיבה לחסימה.",
        "apihelp-block-param-anononly": "לחסום משתמשים אלמוניים בלבד (דהיינו, השבתת עריכות אלמוניות מכתובת ה־IP הזאת)",
        "apihelp-tokens-example-edit": "אחזור אסימון עריכה (בררת המחדל).",
        "apihelp-tokens-example-emailmove": "אחזור אסימון דוא\"ל ואסימון העברה.",
        "apihelp-unblock-description": "שחרור משתמש מחסימה.",
-       "apihelp-unblock-param-id": "מזהה החסימה לשחרור (מתקבל דרך <kbd>list=blocks</kbd>). לא יכול לשמש יחד עם <var>$1user</var>.",
-       "apihelp-unblock-param-user": "שם משתמש, כתובת IP או טווח IP לחסימה. לא יכול לשמש יחד עם <var>$1id</var>",
+       "apihelp-unblock-param-id": "מזהה החסימה לשחרור (מתקבל דרך <kbd>list=blocks</kbd>). לא יכול לשמש יחד עם <var>$1user</var> או <var>$luserid</var>.",
+       "apihelp-unblock-param-user": "שם משתמש, כתובת IP או טווח כתובות IP לחסימה. לא יכול לשמש יחד עם <var>$1id</var> או <var>$luserid</var>.",
        "apihelp-unblock-param-reason": "סיבה להסרת חסימה.",
        "apihelp-unblock-param-tags": "תגי שינוי שיחולו על העיול ביומן החסימה.",
        "apihelp-unblock-example-id": "לשחרר את החסימה עם מזהה #<kbd>105</kbd>.",
index ab0233a..92284ac 100644 (file)
        "apihelp-tokens-param-type": "Tipi di token da richiedere.",
        "apihelp-tokens-example-edit": "Recupera un token di modifica (il predefinito).",
        "apihelp-unblock-description": "Sblocca un utente",
+       "apihelp-unblock-param-user": "Nome utente, indirizzo IP o range di IP da sbloccare. Non può essere usato insieme a <var>$1id</var> o <var>$luserid</var>.",
+       "apihelp-unblock-param-userid": "ID utente da sbloccare. Non può essere usato insieme a <var>$1id</var> o <var>$luserid</var>.",
        "apihelp-unblock-param-reason": "Motivo dello sblocco.",
        "apihelp-unblock-param-tags": "Modifica etichette da applicare all'elemento del registro dei blocchi.",
        "apihelp-undelete-param-title": "Titolo della pagina da ripristinare.",
        "api-help-authmanagerhelper-returnurl": "URL di ritorno per i flussi di autenticazione di terze parti, deve essere assoluto. E' necessario fornirlo, oppure va fornito <var>$1continue</var>.\n\nAlla ricezione di una risposta <samp>REDIRECT</samp>, in genere si apre un browser o una vista web all'URL specificato <samp>redirecttarget</samp> per un flusso di autenticazione di terze parti. Quando questo è completato, la terza parte invierà il browser o la vista web a questo URL. Dovresti estrarre qualsiasi parametro POST o della richiesta dall'URL e passarli come un request <var>$1continue</var> a questo modulo API.",
        "api-help-authmanagerhelper-continue": "Questa richiesta è una continuazione dopo una precedente risposta <samp>UI</samp> o <samp>REDIRECT</samp>. È necessario fornirlo, oppure fornire <var>$1returnurl</var>.",
        "api-help-authmanagerhelper-additional-params": "Questo modulo accetta parametri aggiuntivi a seconda delle richieste di autenticazione disponibili. Utilizza <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> con <kbd>amirequestsfor=$1</kbd> (o una precedente risposta da questo modulo, se applicabile) per determinare le richieste disponibili e i campi usati da queste.",
+       "apierror-nosuchuserid": "Non c'è alcun utente con ID $1.",
        "api-credits-header": "Crediti"
 }
index a1b8b31..d1a50e3 100644 (file)
        "apihelp-query+alldeletedrevisions-param-user": "이 사용자에 대한 판만 나열합니다.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "이 사용자에 대한 판을 나열하지 않습니다.",
        "apihelp-query+alldeletedrevisions-param-namespace": "이 이름공간의 문서만 나열합니다.",
+       "apihelp-query+alldeletedrevisions-example-user": "<kbd>예시</kbd>님의 기여중 최근 50개의 삭제된 특정판을 표시하기",
        "apihelp-query+allfileusages-paramvalue-prop-title": "파일의 제목을 추가합니다.",
        "apihelp-query+allfileusages-param-limit": "반환할 총 항목 수입니다.",
        "apihelp-query+allfileusages-example-unique": "고유한 파일 제목을 나열합니다.",
        "apihelp-query+imageinfo-example-simple": "[[:File:Albert Einstein Head.jpg]]의 현재 판에 대한 정보를 가져옵니다.",
        "apihelp-query+imageinfo-example-dated": "2008년 및 그 이후의 [[:File:Test.jpg]]의 판에 대한 정보를 가져옵니다.",
        "apihelp-query+images-param-limit": "반환할 파일 수.",
+       "apihelp-query+images-example-simple": "[[Main Page|대문]]에서 사용된 모든 파일 목록에서 보기.",
+       "apihelp-query+images-example-generator": "[[Main Page|대문]]에서 사용된 모든 파일 설명을 목록에서 보기.",
        "apihelp-query+imageusage-param-namespace": "열거할 이름공간.",
        "apihelp-query+imageusage-example-generator": "[[:File:Albert Einstein Head.jpg]]를 이용하여 페이지의 정보를 가져옵니다.",
        "apihelp-query+info-description": "기본 페이지 정보를 가져옵니다.",
        "apihelp-query+prefixsearch-param-limit": "반환할 결과의 최대 수",
        "apihelp-query+prefixsearch-param-profile": "검색 프로파일 사용",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "보호 수준을 추가합니다.",
+       "apihelp-query+querypage-example-ancientpages": "[[Special:Ancientpages|특수기능:오래된문서]]에서 결과를 제출하기",
        "apihelp-query+recentchanges-param-prop": "추가 정보를 포함합니다:",
        "apihelp-query+recentchanges-paramvalue-prop-user": "편집에 임할 사용자를 추가하고 IP인 경우 태그합니다.",
        "apihelp-query+recentchanges-paramvalue-prop-userid": "편집에 임할 사용자를 추가합니다.",
        "apihelp-unblock-param-user": "차단을 해제할 사용자 이름, IP 주소, IP 주소 대역입니다. <var>$1id</var> 또는 <var>$luserid</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-userid": "차단을 해제할 사용자 ID입니다. <var>$1id</var> 또는 <var>$1user</var>와(과) 함께 사용할 수 없습니다.",
        "apihelp-unblock-param-reason": "차단 해제 이유.",
+       "apihelp-upload-param-ignorewarnings": "모든 경고 무시하기.",
        "apihelp-userrights-param-user": "사용자 이름.",
        "apihelp-userrights-param-userid": "사용자 ID.",
        "apihelp-rawfm-description": "출력 데이터, 디버깅 요소를 포함, (HTML에 포함된)JSON형식.",
        "api-help-param-type-integer": "유형: {{PLURAL:$1|1=정수|2=정수 목록}}",
        "api-help-param-type-boolean": "유형: 부울 ([[Special:ApiHelp/main#main/datatypes|자세한 정보]])",
        "api-help-param-type-user": "유형: {{PLURAL:$1|1=사용자 이름|2=사용자 이름 목록}}",
-       "api-help-param-list": "{{PLURAL:$1|1=다음 값 중 하나|2=값 (<kbd>{{!}}</kbd>로 구분)}}: $2",
+       "api-help-param-list": "{{PLURAL:$1|1=다음 값 중 하나|2=값 (<kbd>{{!}}</kbd>로 구분)}}: $2 또는 [[Special:ApiHelp/main#main/datatypes|alternative]]: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=비어 있어야 함|비어 있을 수 있거나 $2}}",
        "api-help-param-limit": "$1 초과는 허용되지 않습니다.",
        "api-help-param-limit2": "$1 초과는 허용되지 않습니다. (봇의 경우 $2)",
        "apierror-mustbeloggedin-generic": "로그인해야 합니다.",
        "apierror-mustbeloggedin-linkaccounts": "계정을 연결하려면 로그인해야 합니다.",
        "apierror-mustbeloggedin": "$1에 로그인해야 합니다.",
+       "apierror-mustbeposted": "<kbd>$1</kbd> 모듈은 POST 요청 필요.",
        "apierror-noedit-anon": "익명 사용자는 문서를 편집할 수 없습니다.",
        "apierror-noedit": "문서를 편집할 권한이 없습니다.",
        "apierror-noimageredirect": "그림 넘겨주기를 만들 권한이 없습니다.",
        "apierror-revwrongpage": "r$1은(는) $2의 판이 아닙니다.",
        "apierror-specialpage-cantexecute": "특수 문서의 결과를 볼 권한이 없습니다.",
        "apierror-stashwrongowner": "잘못된 소유자: $1",
+       "apierror-systemblocked": "당신은 미디어위키의 의해서 자동으로 차단되었습니다.",
        "apierror-unknownerror-editpage": "알 수 없는 EditPage 오류: $1.",
        "apierror-unknownerror-nocode": "알 수 없는 오류.",
        "apierror-unknownerror": "알 수 없는 오류: \"$1\"",
index b38e6a5..a5414c4 100644 (file)
        "apihelp-query+logevents-param-prop": "Kurias savybes gauti:",
        "apihelp-query+logevents-paramvalue-prop-ids": "Prideda žurnalo įvykio ID.",
        "apihelp-query+logevents-paramvalue-prop-type": "Prideda žurnalo įvykio tipą.",
+       "apihelp-query+users-param-userids": "Vartotojų ID sąrašas, kurių informaciją gauti:",
        "apihelp-query+watchlist-paramvalue-type-external": "Išoriniai keitimai.",
        "apihelp-query+watchlist-paramvalue-type-new": "Puslapio sukūrimai.",
        "apihelp-stashedit-param-title": "Puslapio pavadinimas buvo redaguotas.",
        "apierror-nochanges": "Neprašyta jokių keitimų.",
        "apierror-noedit": "Neturite teisės redaguoti puslapius.",
        "apierror-nosuchsection-what": "$2 nėra sekcijos $1.",
+       "apierror-nosuchuserid": "Nėra vartotojo su ID $1.",
        "apierror-paramempty": "Parametras <var>$1</var> negali būti tusčiau.",
        "apierror-permissiondenied": "Neturite leidimo $1.",
        "apierror-permissiondenied-generic": "Teisė nesuteikta.",
index 3f1b7a7..2bdc64a 100644 (file)
        "apierror-specialpage-cantexecute": "{{doc-apierror}}",
        "apierror-stashedfilenotfound": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text. Currently this is probably English, hopefully we'll fix that in the future.",
        "apierror-stashedit-missingtext": "{{doc-apierror}}",
-       "apierror-stashfailed-complete": "{{doc-apierror}}",
        "apierror-stashexception": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text. May be English or localized, may or may not end in punctuation.",
+       "apierror-stashfailed-complete": "{{doc-apierror}}",
        "apierror-stashfailed-nosession": "{{doc-apierror}}",
        "apierror-stashfilestorage": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text, which may already end with punctuation. Currently this is probably English, hopefully we'll fix that in the future.",
        "apierror-stashinvalidfile": "{{doc-apierror}}",
        "apierror-stashpathinvalid": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text. Currently this is probably English, hopefully we'll fix that in the future.",
        "apierror-stashwrongowner": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text, which should already end with punctuation. Currently this is probably English, hopefully we'll fix that in the future.",
        "apierror-stashzerolength": "{{doc-apierror}}\n\nParameters:\n* $1 - Exception text. Currently this is probably English, hopefully we'll fix that in the future.",
+       "apierror-systemblocked": "{{doc-apierror}}",
        "apierror-templateexpansion-notwikitext": "{{doc-apierror}}\n\nParameters:\n* $1 - Page title.\n* $2 - Content model.",
        "apierror-toofewexpiries": "{{doc-apierror}}\n\nParameters:\n* $1 - Number provided.\n* $2 - Number needed.",
        "apierror-unknownaction": "{{doc-apierror}}\n\nParameters:\n* $1 - Action provided.",
index 90a0fec..5cfb6b8 100644 (file)
        "apihelp-query+imageinfo-param-extmetadatamultilang": "如果用于extmetadata属性的翻译可用,则全部取得。",
        "apihelp-query+imageinfo-param-extmetadatafilter": "如果指定且非空,则只为$1prop=extmetadata返回这些键。",
        "apihelp-query+imageinfo-param-urlparam": "处理器特定的参数字符串。例如PDF可能使用<kbd>page15-100px</kbd>。<var>$1urlwidth</var>必须被使用,并与<var>$1urlparam</var>一致。",
+       "apihelp-query+imageinfo-param-badfilecontexttitle": "如果<kbd>$2prop=badfile</kbd>被设置,这会是在评估[[MediaWiki:Bad image list]]时使用的页面标题",
        "apihelp-query+imageinfo-param-localonly": "只看本地存储库的文件。",
        "apihelp-query+imageinfo-example-simple": "取得有关[[:File:Albert Einstein Head.jpg]]的当前版本的信息。",
        "apihelp-query+imageinfo-example-dated": "取得有关[[:File:Test.jpg]]自2008年以来版本的信息。",
        "apierror-specialpage-cantexecute": "您没有权限查看此特殊页面的结果。",
        "apierror-stashedfilenotfound": "无法在暂存处找到文件:$1。",
        "apierror-stashfilestorage": "不能在暂存处存储上传:$1",
+       "apierror-stashinvalidfile": "无效暂存文件。",
        "apierror-stashnosuchfilekey": "没有这个filekey:$1。",
        "apierror-stashwrongowner": "错误所有者:$1",
        "apierror-stashzerolength": "文件长度为0,并且不能在暂存库中储存:$1。",
+       "apierror-systemblocked": "您已被MediaWiki自动封禁。",
        "apierror-templateexpansion-notwikitext": "模板展开只支持wiki文本内容。$1使用内容模型$2。",
        "apierror-unknownaction": "指定的操作<kbd>$1</kbd>不被承认。",
        "apierror-unknownerror-editpage": "未知的编辑页面错误:$1。",
        "apiwarn-invalidxmlstylesheetns": "样式表应位于{{ns:MediaWiki}}名字空间。",
        "apiwarn-moduleswithoutvars": "属性<kbd>modules</kbd>被设置,但不是<kbd>jsconfigvars</kbd>或<kbd>encodedjsconfigvars</kbd>。需要配置变量以获得适当的模块使用。",
        "apiwarn-notfile": "“$1”不是文件。",
+       "apiwarn-nothumb-noimagehandler": "不能创建缩略图,因为$1没有关联的图片处理器。",
        "apiwarn-parse-nocontentmodel": "<var>title</var>或<var>contentmodel</var>未提供,假设$1。",
        "apiwarn-parse-titlewithouttext": "<var>title</var>在没有<var>text</var>的情况下被使用,并且请求了已解析页面的属性。您是想用<var>page</var>而不是<var>title</var>么?",
        "apiwarn-tokennotallowed": "操作“$1”不允许当前用户使用。",
index dde678f..87656f2 100644 (file)
@@ -147,8 +147,6 @@ class MWDebug {
         * @param string $log 'production' will always trigger a php error, 'auto'
         *    will trigger an error if $wgDevelopmentWarnings is true, and 'debug'
         *    will only write to the debug log(s).
-        *
-        * @return mixed
         */
        public static function warning( $msg, $callerOffset = 1, $level = E_USER_NOTICE, $log = 'auto' ) {
                global $wgDevelopmentWarnings;
index d1ba15a..50f1e80 100644 (file)
        "config-imagemagick": "ایمیج‌مجیک پیدا شد: <code>$1</code>.\nاگر ارسال‌ها را فعال کنید،تصویر کوچک فعال خواهد‌شد.",
        "config-gd": "گرافیک‌های جی‌دی ساخته‌‌ شده در کتابخانه پیدا شد.\nاگر ارسال‌ها را فعال کنید تصویر کوچک فعال خواهد‌شد.",
        "config-no-scaling": "کتابخانهٔ جی‌دی یا ایمیج‌مجیک نتوانست پیدا شود.\nتصویر کوچک غیر‌فعال خواهد‌شد.",
-       "config-no-uri": "'''خطا:''' یوآرآی فعلی را نتوانست مشخص کند.\nنصب نافرجام ماند.",
+       "config-no-uri": "'''خطا:''' یوآرآی فعلی را نتوانست مشخص کند.\nنصب شکست خورد.",
        "config-no-cli-uri": "<strong>هشدار:</strong> هیچ اسکریپت‌پتی تعیین نشده، از پیش‌فرض استفاده کنید:\n<code>$1</code>.",
        "config-using-server": "از اسم سرور \"<nowiki>$1</nowiki>\" استفاده کنید.",
        "config-using-uri": "از اسم سرور \"<nowiki>$1$2</nowiki>\" استفاده کنید.",
        "config-uploads-not-safe": "'''هشدار:''' فهرست پیش‌فرض ارسال‌های <code>$1</code> شما برای اجرای متون دلخواه آسیب‌پذیر است.\nاگرچه مدیاویکی همهٔ پوشه‌های ارسال‌ شده را برای خطرات امنیتی بررسی می‌کند، پیش از فعال‌سازی ارسال‌ها، بسیار به [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security close this security vulnerability] توصیه شده‌است.",
        "config-no-cli-uploads-check": "'''هشدار:''' فهرست پیش‌فرض ارسال‌های شما (<code>$1</code>) برای آسیب‌پذیری اجرای متن دلخواه در طول نصب سی‌ال آی بررسی نشده‌است.",
-       "config-brokenlibxml": "دستگاه شما دارای تلفیقی از نسخه‌های پی‌اچ‌پی و لیبکسمل۲ است که ناقص است و می‌تواند دلیل از بین رفتن اطلاعات مخفی در مدیاویکی و دیگر برنامه‌های کاربردی شبکه باشد.\nارتقاء به لیبکسمل۲  ۲.۷.۳ یا بالاتر ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]) ارتفاء دهید.\nنصب نافرجام ماند.",
+       "config-brokenlibxml": "دستگاه شما دارای تلفیقی از نسخه‌های پی‌اچ‌پی و لیبکسمل۲ است که ناقص است و می‌تواند دلیل از بین رفتن اطلاعات مخفی در مدیاویکی و دیگر برنامه‌های کاربردی شبکه باشد.\nارتقاء به لیبکسمل۲  ۲.۷.۳ یا بالاتر ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]) ارتفاء دهید.\nنصب شکست خورد ماند.",
        "config-suhosin-max-value-length": "سوهُسین نصب شده‌است و پارامتر جت <code>length</code> را به $1 بایت محدود می‌کند.\n قسمت بارکنندهٔ منبع مدیاویکی پیرامون این محدوده کار خواهد‌کرد، اما عملکرد آن را پایین می‌آورد. اگر به هیچ وجه ممکن نیست، باید <code>suhosin.get.max_value_length</code> را به ۱۰۲۴ یا بالاتر در <code>php.ini</code> تنظیم کنید، و \n<code>$wgResourceLoaderMaxQueryLength</code> را به مقدار مشابه در <code>LocalSettings.php</code> تنظیم کنید.",
        "config-db-type": "نوع پایگاه اطلاعات:",
        "config-db-host": "میزبان پایگاه اطلاعات:",
index 8601785..14d049c 100644 (file)
@@ -31,7 +31,7 @@ use Wikimedia\ScopedCallback;
 class LoadBalancer implements ILoadBalancer {
        /** @var array[] Map of (server index => server config array) */
        private $mServers;
-       /** @var IDatabase[][] Map of (local/foreignUsed/foreignFree => server index => IDatabase array) */
+       /** @var IDatabase[][][] Map of local/foreignUsed/foreignFree => server index => IDatabase array */
        private $mConns;
        /** @var float[] Map of (server index => weight) */
        private $mLoads;
@@ -441,12 +441,15 @@ class LoadBalancer implements ILoadBalancer {
 
        /**
         * @param int $i
-        * @return IDatabase
+        * @return IDatabase|bool
         */
        public function getAnyOpenConnection( $i ) {
                foreach ( $this->mConns as $connsByServer ) {
                        if ( !empty( $connsByServer[$i] ) ) {
-                               return reset( $connsByServer[$i] );
+                               /** @var $serverConns IDatabase[] */
+                               $serverConns = $connsByServer[$i];
+
+                               return reset( $serverConns );
                        }
                }
 
index f2fca68..770c1c6 100644 (file)
@@ -336,7 +336,7 @@ abstract class TablePager extends IndexPager {
        /**
         * Get a "<select>" element which has options for each of the allowed limits
         *
-        * @param string $attribs Extra attributes to set
+        * @param string[] $attribs Extra attributes to set
         * @return string HTML fragment
         */
        public function getLimitSelect( $attribs = [] ) {
index b0768b6..bfaa4f7 100644 (file)
@@ -215,7 +215,7 @@ class ParserOutput extends CacheTime {
        private $mMaxAdaptiveExpiry = INF;
 
        const EDITSECTION_REGEX =
-               '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
+               '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#s';
 
        // finalizeAdaptiveCacheExpiry() uses TTL = MAX( m * PARSE_TIME + b, MIN_AR_TTL)
        // Current values imply that m=3933.333333 and b=-333.333333
index c929797..78d624c 100644 (file)
@@ -79,7 +79,7 @@ abstract class ParameterizedPassword extends Password {
        }
 
        public function needsUpdate() {
-               return parent::needsUpdate() || $this->params !== $this->getDefaultParams();
+               return $this->params !== $this->getDefaultParams();
        }
 
        public function toString() {
index 13d1e6d..c8a0267 100644 (file)
@@ -138,8 +138,7 @@ abstract class Password {
         *
         * @return bool True if needs update, false otherwise
         */
-       public function needsUpdate() {
-       }
+       abstract public function needsUpdate();
 
        /**
         * Compare one Password object to this object
index f6e76af..8142111 100644 (file)
@@ -75,11 +75,7 @@ class ExtensionJsonValidator {
                }
 
                $version = $data->manifest_version;
-               if ( $version !== ExtensionRegistry::MANIFEST_VERSION ) {
-                       $schemaPath = __DIR__ . "/../../docs/extension.schema.v$version.json";
-               } else {
-                       $schemaPath = __DIR__ . '/../../docs/extension.schema.json';
-               }
+               $schemaPath = __DIR__ . "/../../docs/extension.schema.v$version.json";
 
                // Not too old
                if ( $version < ExtensionRegistry::OLDEST_MANIFEST_VERSION ) {
index 90bfebd..0bcb07a 100644 (file)
@@ -104,7 +104,6 @@ abstract class SearchEngine {
         * @since 1.18
         * @param string $feature
         * @param mixed $data
-        * @return bool
         */
        public function setFeatureData( $feature, $data ) {
                $this->features[$feature] = $data;
index bdf7638..fbc3022 100644 (file)
@@ -198,9 +198,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage {
         * @param string $subPage Subpage of the special page.
         * @return string an AuthManager::ACTION_* constant.
         */
-       protected function getDefaultAction( $subPage ) {
-               throw new BadMethodCallException( 'Subclass did not implement getDefaultAction' );
-       }
+       abstract protected function getDefaultAction( $subPage );
 
        /**
         * Return custom message key.
index f1742b3..663c5da 100644 (file)
@@ -1643,16 +1643,20 @@ class User implements IDBAccessObject {
                if ( !$block instanceof Block && $ip !== null && !in_array( $ip, $wgProxyWhitelist ) ) {
                        // Local list
                        if ( self::isLocallyBlockedProxy( $ip ) ) {
-                               $block = new Block;
-                               $block->setBlocker( wfMessage( 'proxyblocker' )->text() );
-                               $block->mReason = wfMessage( 'proxyblockreason' )->text();
-                               $block->setTarget( $ip );
+                               $block = new Block( [
+                                       'byText' => wfMessage( 'proxyblocker' )->text(),
+                                       'reason' => wfMessage( 'proxyblockreason' )->text(),
+                                       'address' => $ip,
+                                       'systemBlock' => 'proxy',
+                               ] );
                                $this->blockTrigger = 'proxy-block';
                        } elseif ( $this->isAnon() && $this->isDnsBlacklisted( $ip ) ) {
-                               $block = new Block;
-                               $block->setBlocker( wfMessage( 'sorbs' )->text() );
-                               $block->mReason = wfMessage( 'sorbsreason' )->text();
-                               $block->setTarget( $ip );
+                               $block = new Block( [
+                                       'byText' => wfMessage( 'sorbs' )->text(),
+                                       'reason' => wfMessage( 'sorbsreason' )->text(),
+                                       'address' => $ip,
+                                       'systemBlock' => 'dnsbl',
+                               ] );
                                $this->blockTrigger = 'openproxy-block';
                        }
                }
@@ -1776,21 +1780,22 @@ class User implements IDBAccessObject {
                }
 
                if ( !is_array( $wgProxyList ) ) {
-                       // Load from the specified file
+                       // Load values from the specified file
                        $wgProxyList = array_map( 'trim', file( $wgProxyList ) );
                }
 
-               if ( !is_array( $wgProxyList ) ) {
-                       $ret = false;
-               } elseif ( array_search( $ip, $wgProxyList ) !== false ) {
-                       $ret = true;
-               } elseif ( array_key_exists( $ip, $wgProxyList ) ) {
-                       // Old-style flipped proxy list
-                       $ret = true;
-               } else {
-                       $ret = false;
+               if ( is_array( $wgProxyList ) ) {
+                       if (
+                               // Look for IP as value
+                               array_search( $ip, $wgProxyList ) !== false ||
+                               // Look for IP as key (for backwards-compatility)
+                               array_key_exists( $ip, $wgProxyList )
+                       ) {
+                               return true;
+                       }
                }
-               return $ret;
+
+               return false;
        }
 
        /**
@@ -2067,8 +2072,10 @@ class User implements IDBAccessObject {
 
                if ( $blocked && $block === null ) {
                        // back-compat: UserIsBlockedGlobally didn't have $block param first
-                       $block = new Block;
-                       $block->setTarget( $ip );
+                       $block = new Block( [
+                               'address' => $ip,
+                               'systemBlock' => 'global-block'
+                       ] );
                }
 
                $this->mGlobalBlock = $blocked ? $block : false;
@@ -2477,24 +2484,6 @@ class User implements IDBAccessObject {
                return $this->mTouched;
        }
 
-       /**
-        * @deprecated Removed in 1.27.
-        * @return Password
-        * @since 1.24
-        */
-       public function getPassword() {
-               throw new BadMethodCallException( __METHOD__ . ' has been removed in 1.27' );
-       }
-
-       /**
-        * @deprecated Removed in 1.27.
-        * @return Password
-        * @since 1.24
-        */
-       public function getTemporaryPassword() {
-               throw new BadMethodCallException( __METHOD__ . ' has been removed in 1.27' );
-       }
-
        /**
         * Set the password and reset the random token.
         * Calls through to authentication plugin if necessary;
@@ -2662,16 +2651,6 @@ class User implements IDBAccessObject {
                throw new BadMethodCallException( __METHOD__ . ' has been removed in 1.27' );
        }
 
-       /**
-        * Has password reminder email been sent within the last
-        * $wgPasswordReminderResendTime hours?
-        * @deprecated Removed in 1.27. See above.
-        * @return bool
-        */
-       public function isPasswordReminderThrottled() {
-               throw new BadMethodCallException( __METHOD__ . ' has been removed in 1.27' );
-       }
-
        /**
         * Get the user's e-mail address
         * @return string User's email address
index 7ca93e8..b4595a6 100644 (file)
        "wlshowhidemine": "تعديلاتي",
        "wlshowhidecategorization": "تصنيف الصفحات",
        "watchlist-options": "خيارات قائمة المراقبة",
-       "watchlist-mark-all-visited": "هل أنت متأكد أنك تريد إعادة ضبط تغييرات قائمة المراقبة غير المرئية عن طريق التعليم على كل الصفحات كمزارة؟",
        "watching": "يراقب...",
        "unwatching": "إزالة المراقبة...",
        "watcherrortext": "حدث خطأ أثناء تغيير إعدادات الرصد الخاصة بك \"$1\".",
        "restrictionsfield-badip": "عنوان أيبي أو نطاق غير صحيح: $1",
        "restrictionsfield-label": "نطاقات الأيبي المسموح بها:",
        "restrictionsfield-help": "عنوان أيبي أو نطاق CIDR واحد لكل سطر. لتفعيل كل شيء، استخدم<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "revid": "المراجعة $1",
        "pageid": "معرف الصفحة $1"
 }
index 3aa27c9..102cdac 100644 (file)
        "wlshowhidemine": "мае праўкі",
        "wlshowhidecategorization": "катэгарызацыю старонак",
        "watchlist-options": "Налады сьпісу назіраньня",
-       "watchlist-mark-all-visited": "Вы ўпэўненыя, што хочаце скінуць непрагледжаныя зьмены ў сьпісе назіраньня і пазначыць усе старонкі як прагледжаныя?",
        "watching": "Дадаецца ў сьпіс назіраньня…",
        "unwatching": "Выдаляецца са сьпісу назіраньня…",
        "watcherrortext": "Узьнікла памылка падчас зьмены Вашага сьпісу назіраньня для «$1».",
        "log-action-filter-rights-rights": "Ручная зьмена",
        "log-action-filter-rights-autopromote": "Аўтаматычнае зьмяненьне",
        "log-action-filter-suppress-event": "Утойваньне журнала",
+       "log-action-filter-suppress-revision": "Утойваньне вэрсіі",
+       "log-action-filter-suppress-delete": "Утойваньне старонкі",
        "log-action-filter-upload-upload": "Новая загрузка",
        "authmanager-realname-label": "Сапраўднае імя",
        "authmanager-provider-temporarypassword": "Часовы пароль",
index 571c340..f94406c 100644 (file)
        "sp-contributions-newbies-sub": "З новых рахункаў",
        "sp-contributions-newbies-title": "Уклады ўдзельнікаў з новых рахункаў",
        "sp-contributions-blocklog": "блакіроўкі",
-       "sp-contributions-suppresslog": "заглушаны ўклад удзельніка",
-       "sp-contributions-deleted": "сцёрты ўклад удзельніка",
+       "sp-contributions-suppresslog": "схаваны ўклад {{GENDER:$1|удзельніка|удзельніцы}}",
+       "sp-contributions-deleted": "сцёрты ўклад {{GENDER:$1|удзельніка|удзельніцы}}",
        "sp-contributions-uploads": "укладанні",
        "sp-contributions-logs": "журналы",
        "sp-contributions-talk": "размовы",
        "log-action-filter-protect-move_prot": "Ахова старонкі",
        "log-action-filter-rights-rights": "Ручное змяненне",
        "log-action-filter-rights-autopromote": "Аўтаматычнае змяненне",
+       "log-action-filter-suppress-event": "Cкрыванне журнала",
+       "log-action-filter-suppress-revision": "Скрыванне версіі",
+       "log-action-filter-suppress-delete": "Cкрыванне старонкі",
        "log-action-filter-upload-upload": "Новая перадача",
        "log-action-filter-upload-overwrite": "Выкладванне",
        "authmanager-authn-not-in-progress": "Праверка сапраўднасці не выконваецца або сесія перадачы дадзеных была страчана. Калі ласка, пачніце зноў з самага пачатку.",
index b4f0ad4..35ddc8b 100644 (file)
        "previewerrortext": "আপনার পরিবর্তনগুলি প্রাকদর্শন করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।",
        "blockedtitle": "ব্যবহারকারীকে বাধা দেয়া হয়েছে",
        "blockedtext": "আপনার ব্যবহারকারী নাম বা আইপি ঠিকানার ঊপর নিষেধাজ্ঞা আরোপিত হয়েছে।\n\n$1 নিষেধাজ্ঞা আরোপ করেছেন। নিষেধের কারণ হিসেবে বলা হয়েছে:''$2''।\n\n* নিষেধাজ্ঞা শুরুর সময়:$8\n* নিষেধাজ্ঞা উঠিয়ে নেয়ার সময়: $6\n* যার উপর নিষেধাজ্ঞা আরোপ করা হয়েছে: $7\n\nআপনি $1 অথবা [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকদের]] কারও সাথে এই নিষেধাজ্ঞা সংক্রান্ত বিষয়ে আলোচনা করতে পারেন।\n\nআপনি '(ব্যবহারকারীকে) ইমেইল করুন' ফিচারটি ব্যবহার করতে পারবেন না। তবে [[Special:Preferences|আপনার পছন্দ তালিকাতে]] যদি একটি বৈধ ই-মেইল ঠিকানা নির্দিষ্ট করা হয়ে থাকে এবং ফিচারটি ব্যবহারে যদি আপনাকে বাধা না দেওয়া হয়ে থাকে, তবে আপনি ফিচারটি ব্যবহার করতে পারবেন।\n\nআপনার বর্তমান আইপি ঠিকানা $3, এবং আপনার নিষেধাজ্ঞা নং হল #$5।\n\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।",
-       "autoblockedtext": "à¦\86পনার à¦\86à¦\87পি à¦ à¦¿à¦\95ানাà¦\95à§\87 à¦¸à§\8dবয়à¦\82à¦\95à§\8dরিয়ভাবà§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à§\87য়া à¦¹à¦¯à¦¼à§\87à¦\9bà§\87 à¦\95ারণ à¦\8fà¦\95à¦\87 à¦\86à¦\87পি à¦ à¦¿à¦\95ানার à¦\86রà§\87à¦\95à¦\9cন à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¬à§\8dযবহার à¦\95রà¦\9bà§\87ন à¦¯à¦¾à¦\95à§\87 $1  à¦¦à§\8dবারা à¦¬à¦¾à¦§à¦¾ à¦¦à§\87à¦\93য়া à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।\nবাধাদানà§\87র à¦¯à§\87 à¦\95ারণ à¦¦à§\87য়া à¦¹à¦¯à¦¼à§\87à¦\9bà§\87:\n\n:''$2''\n\n* à¦¬à¦¾à¦§à¦¾ à¦¶à§\81রà§\81র à¦¸à¦®à¦¯à¦¼: $8\n* à¦¬à¦¾à¦§à¦¾ à¦¶à§\87ষà§\87র à¦¸à¦®à¦¯à¦¼: $6\n* à¦¯à¦¾à¦\95à§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à§\87à¦\93য়ার à¦\9aà§\87ষà§\8dà¦\9fা à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87: $7\n\nà¦\86পনি $1-à¦\8fর à¦¸à¦¾à¦¥à§\87 à¦\95িà¦\82বা à¦\85নà§\8dয à¦¯à§\87à¦\95à§\8bন [[{{MediaWiki:Grouppage-sysop}}|পà§\8dরশাসà¦\95à§\87র]] à¦¸à¦¾à¦¥à§\87 à¦¯à§\8bà¦\97াযà§\8bà¦\97 à¦\95রà§\87 à¦¬à¦¾à¦§à¦¾à¦° à¦¬à§\8dযাপারà¦\9fি à¦\86লà§\8bà¦\9aনা à¦\95রতà§\87 à¦ªà¦¾à¦°à§\87ন।\n\nলà¦\95à§\8dষà§\8dয à¦\95রà§\81ন, à¦¯à¦¦à¦¿ à¦\86পনি \"à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80à¦\95à§\87 à¦\87-মà§\87à¦\87ল à¦\95রà§\81ন\" à¦«à¦¿à¦\9aারà¦\9fি à¦¬à§\8dযবহার à¦\95রতà§\87 à¦\9aান, à¦¤à¦¬à§\87 à¦\86পনার [[Special:Preferences|পà¦\9bনà§\8dদ]] à¦\85পশনà§\87 à¦\8fà¦\95à¦\9fি à¦¬à§\88ধ à¦\87মà§\87à¦\87ল à¦ à¦¿à¦\95ানা à¦¦à¦¿à¦¤à§\87 à¦¹à¦¬à§\87 à¦\8fবà¦\82 à¦\86পনার à¦¸à§\87à¦\9fি à¦¬à§\8dযবহারà§\87 à¦\95à§\8bন à¦¬à¦¾à¦§à¦¾ à¦¥à¦¾à¦\95তà§\87 à¦ªà¦¾à¦°à¦¬à§\87 à¦¨à¦¾à¥¤\n\nà¦\86পনার à¦¬à¦°à§\8dতমান IP à¦ à¦¿à¦\95ানা à¦¹à¦\9aà§\8dà¦\9bà§\87 $3, à¦\8fবà¦\82 à¦¯à¦¾ à¦¬à¦¾à¦§à¦¾ à¦¦à¦¾à¦¨à§\87র à¦\86à¦\87ডি à¦¹à¦² $5।\nযেকোন প্রশ্ন করার সময় উপরের সকল তথ্য উল্লেখ করুন।",
+       "autoblockedtext": "à¦\86পনার à¦\86à¦\87পি à¦ à¦¿à¦\95ানাà¦\95à§\87 à¦¸à§\8dবয়à¦\82à¦\95à§\8dরিয়ভাবà§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à§\87য়া à¦¹à¦¯à¦¼à§\87à¦\9bà§\87 à¦\95ারণ à¦\8fà¦\9fি à¦\86রà§\87à¦\95à¦\9cন à¦¬à§\8dযবহারà¦\95ারà§\80 à¦¦à§\8dবারা à¦¬à§\8dযবহà§\83ত à¦¹à¦¯à¦¼à§\87à¦\9bà§\87, à¦¯à¦¾à¦\95à§\87 $1 à¦¬à¦¾à¦§à¦¾ à¦¦à¦¿à¦¯à¦¼à§\87à¦\9bà§\87ন।\nযà§\87 à¦\95ারণà§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à§\87য়া à¦¹à¦¯à¦¼à§\87à¦\9bà§\87:\n\n:''$2''\n\n* à¦¬à¦¾à¦§à¦¾ à¦¶à§\81রà§\81র à¦¸à¦®à¦¯à¦¼: $8\n* à¦¬à¦¾à¦§à¦¾ à¦¶à§\87ষà§\87র à¦¸à¦®à¦¯à¦¼: $6\n* à¦¯à¦¾à¦\95à§\87 à¦¬à¦¾à¦§à¦¾ à¦¦à§\87à¦\93য়ার à¦\9aà§\87ষà§\8dà¦\9fা à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87: $7\n\nà¦\86পনি $1-à¦\8fর à¦¸à¦¾à¦¥à§\87 à¦\95িà¦\82বা à¦\85নà§\8dয à¦¯à§\87à¦\95à§\8bন [[{{MediaWiki:Grouppage-sysop}}|পà§\8dরশাসà¦\95à§\87র]] à¦¸à¦¾à¦¥à§\87 à¦¯à§\8bà¦\97াযà§\8bà¦\97 à¦\95রà§\87 à¦¬à¦¾à¦§à¦¾à¦° à¦¬à§\8dযাপারà¦\9fি à¦\86লà§\8bà¦\9aনা à¦\95রতà§\87 à¦ªà¦¾à¦°à§\87ন।\n\nলà¦\95à§\8dষà§\8dয à¦\95রà§\81ন, à¦¯à¦¦à¦¿ à¦\86পনি \"à¦\8fà¦\87 à¦¬à§\8dযবহারà¦\95ারà§\80à¦\95à§\87 à¦\87-মà§\87à¦\87ল à¦\95রà§\81ন\" à¦¬à§\88শিষà§\8dà¦\9fà§\8dযà¦\9fি à¦¬à§\8dযবহার à¦\95রতà§\87 à¦\9aান, à¦¤à¦¬à§\87 à¦\86পনার [[Special:Preferences|পà¦\9bনà§\8dদ]] à¦\85পশনà§\87 à¦\8fà¦\95à¦\9fি à¦¬à§\88ধ à¦\87মà§\87à¦\87ল à¦ à¦¿à¦\95ানা à¦¨à¦¿à¦¬à¦¨à§\8dধিত à¦¥à¦¾à¦\95তà§\87 à¦¹à¦¬à§\87 à¦\8fবà¦\82 à¦\86পনার à¦¸à§\87à¦\9fি à¦¬à§\8dযবহারà§\87 à¦\95à§\8bন à¦¬à¦¾à¦§à¦¾ à¦¥à¦¾à¦\95তà§\87 à¦ªà¦¾à¦°à¦¬à§\87 à¦¨à¦¾à¥¤\n\nà¦\86পনার à¦¬à¦°à§\8dতমান à¦\86à¦\87পি à¦ à¦¿à¦\95ানা à¦¹à¦\9aà§\8dà¦\9bà§\87 $3, à¦\8fবà¦\82 à¦¬à¦¾à¦§à¦¾ à¦¦à¦¾à¦¨à§\87র à¦\86à¦\87ডি à¦¹à¦² #$5।\nযেকোন প্রশ্ন করার সময় উপরের সকল তথ্য উল্লেখ করুন।",
        "blockednoreason": "কোন কারণ দেওয়া হয়নি",
        "whitelistedittext": "পাতায় সম্পাদনা করতে আবশ্যই $1 করতে হবে।",
        "confirmedittext": "কোন সম্পাদনা করার আগে আপনার ই-মেইল ঠিকানাটি অবশ্যই নিশ্চিত করতে হবে। দয়া করে আপনার ই-মেইল ঠিকানাটি [[Special:Preferences|ব্যবহারকারীর পছন্দতালিকায়]] ঠিকমত দিন।",
        "yourdiff": "পার্থক্য",
        "copyrightwarning": "অনুগ্রহ করে লক্ষ্য করুন {{SITENAME}}-তে সমস্ত অবদান $2-এর আওতায় প্রাপ্য (বিস্তারিত $1-তে দেখুন)। আপনার জমা দেয়া লেখা যে কেউ হৃদয়হীনভাবে সম্পাদনা করতে এবং যথেচ্ছভাবে পুনর্বিতরণ করতে পারেন। আপনি যদি এ ব্যাপারে একমত না হন, তাহলে এখানে আপনার লেখা জমা দেবেন না।<br />\nআপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন, বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন।\n'''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না!'''",
        "copyrightwarning2": "অনুগ্রহ করে লক্ষ করুন: {{SITENAME}}-এর এই ভুক্তিতে আপনার লেখা বা অবদান অন্যান্য ব্যবহারকারীরা পরিবর্তন বা পরিবর্ধন করতে, এমনকি মুছে ফেলতে পারবেন। {{SITENAME}} এ আপনার সকল লেখালেখি/অবদান গনু ফ্রি ডকুমেন্টেশনের ($1) আওতায় বিনামূল্যে প্রাপ্য ও হস্তান্তরযোগ্য। আপনার জমা দেয়া লেখা যে কেউ হৃদয়হীনভাবে সম্পাদনা করতে এবং যথেচ্ছভাবে ব্যবহার করতে পারেন। আপনি যদি এ ব্যাপারে একমত না হন, তাহলে এখানে আপনার লেখা জমা দেবেন না। আপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন (তবে কোন মৌলিক গবেষণা নয়) বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন। '''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না।'''",
-       "editpage-cannot-use-custom-model": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦° à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦®à¦¡à§\87ল পরিবর্তন করা যাবে না।",
+       "editpage-cannot-use-custom-model": "à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦° à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦°à§\82প পরিবর্তন করা যাবে না।",
        "longpageerror": "'''ত্রুটি:  আপনার জমা দেয়া টেক্সটের পরিমাণ {{PLURAL:$1|এক কিলোবাইট|$1 কিলোবাইট}}, যা সর্বোচ্চ সীমা {{PLURAL:$2|এক কিলোবাইটের|$2 কিলোবাইটের}} চেয়ে বেশি।'''\nএটি সংরক্ষণ করা সম্ভব নয়।",
        "readonlywarning": "<strong>সতর্কীকরণ: রক্ষণাবেক্ষণের জন্য ডাটাবেজ অবরুদ্ধ রাখা হয়েছে, তাই এই মুহূর্তে আপনি আপনার সম্পাদনা সংরক্ষণ করতে পারবেন না।</strong>\nআপনি চাইলে লেখাটি অনুলিপি করে ও কোন টেক্সট ফাইলে প্রতিলেপন করার দ্বারা ভবিষ্যতের জন্য সংরক্ষণ করতে পারেন।\n\nসিস্টেম প্রশাসক যিনি এটি বন্ধ করেছেন তিনি এই ব্যাখ্যা দিয়েছেন: $1",
        "protectedpagewarning": "'''সতর্কীকরণ: এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি সম্পাদনা করতে পারবেন।'''\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
        "userrights-lookup-user": "একজন ব্যবহারকারী নির্বাচন করুন",
        "userrights-user-editname": "ব্যবহারকারীর নাম লিখুন:",
        "editusergroup": "ব্যবহারকারী দল লোড করুন",
-       "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|ব্যবহারকারীর}} জন্য ব্যবহারকারী অধিকার পরিবর্তন করছেন",
+       "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|ব্যবহারকারীর}} ব্যবহারকারী অধিকার পরিবর্তন করছেন",
+       "viewinguserrights": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|ব্যবহারকারীর}} ব্যবহারকারী অধিকার দেখছেন",
        "userrights-editusergroup": "ব্যবহারকারীর দল সম্পাদনা করো",
+       "userrights-viewusergroup": "ব্যবহারকারী দল দেখা",
        "saveusergroups": "{{GENDER:$1|ব্যবহারকারীর}} দল সংরক্ষণ করো",
        "userrights-groupsmember": "সদস্য:",
        "userrights-groupsmember-auto": "শর্তহীন সদস্য",
        "right-changetags": "নির্দিষ্ট সংস্করণ এবং দীর্ঘ সম্পাদনাগুলোতে [[Special:Tags|ট্যাগ]] সংযোজন ও অপসারণ করুন",
        "right-deletechangetags": "ডাটাবেজ থেকে [[Special:Tags|ট্যাগ]] অপসারণ করা",
        "grant-generic": "\"$1\" অধিকার স্তর",
+       "grant-group-page-interaction": "পাতার সাথে মিথস্ক্রিয়া",
+       "grant-group-file-interaction": "মিডিয়ার সাথে মিথস্ক্রিয়া",
+       "grant-group-watchlist-interaction": "আপনার নজরতালিকার সাথে মিথস্ক্রিয়া",
        "grant-group-email": "ইমেইল পাঠান",
+       "grant-group-high-volume": "উচ্চ পরিমানের কার্যকলাপ সম্পাদন",
        "grant-group-customization": "অনুকূলকরণ ও পছন্দ",
        "grant-group-administration": "প্রশাসনিক কাজ সঞ্চালন করুন",
        "grant-group-private-information": "আপনার সম্পর্কিত ব্যক্তিগত তথ্যে প্রবেশাধিকার পায়",
        "grant-editprotected": "সংরক্ষিত পাতা সম্পাদনা করুন",
        "grant-highvolume": "উচ্চ-মাত্রার সম্পাদনা",
        "grant-oversight": "ব্যবহারকারী লুকান ও ইতিহাস অপসারণ",
+       "grant-patrol": "পাতার পরিবর্তনে টহল দেয়া",
        "grant-privateinfo": "ব্যক্তিগত তথ্যে প্রবেশাধিকার",
        "grant-protect": "পাতাসমূহ সুরক্ষা ও অরক্ষিত করুন",
+       "grant-rollback": "পাতার পরিবর্তন ফেরত নেয়া",
        "grant-sendemail": "অন্য ব্যবহারকারীকে ইমেইল পাঠান",
        "grant-uploadeditmovefile": "ফাইল আপলোড, প্রতিস্থাপন এবং স্থানান্তর",
        "grant-uploadfile": "নতুন ফাইল আপলোড করুন",
        "action-writeapi": "রাইট এপিআই ব্যবহার করুন",
        "action-delete": "পাতাটি মুছে ফেলো",
        "action-deleterevision": "সংশোধনটি মুছে ফেলার",
+       "action-deletelogentry": "লগের ভুক্তি অপসারণ করার",
        "action-deletedhistory": "পাতার অপসারিত ইতিহাস দেখার",
+       "action-deletedtext": "অপসারিত সংশোধনের লেখা দেখার",
        "action-browsearchive": "অপসারিত পাতায় অনুসন্ধান করুন",
        "action-undelete": "পাতাটি পুনরুদ্ধার করার",
        "action-suppressrevision": "লুকানো সংস্করণগুলো পর্যালোচনা এবং পুনঃস্থাপন করার",
        "action-userrights-interwiki": "অন্যান্য উইকির ব্যবহারকারীদের অধিকারসমূহ সম্পাদনা করুন",
        "action-siteadmin": "ডাটাবেজ বন্ধ অথবা খুলুন",
        "action-sendemail": "ই-মেইল পাঠাও",
+       "action-editmyoptions": "নিজের পছন্দসমূহ সম্পাদনা করার",
        "action-editmywatchlist": "আপনার নজরতালিকা পরিবর্তন করুন",
        "action-viewmywatchlist": "আপনার নজরতালিকা দেখুন",
        "action-viewmyprivateinfo": "আপনার ব্যক্তিগত তথ্য দেখুন",
        "logempty": "মিলে যায় এমন কিছু লগে পাওয়া যায়নি।",
        "log-title-wildcard": "এই টেক্সট দিয়ে শুরু হওয়া শিরোনামগুলি অনুসন্ধান করা হোক",
        "showhideselectedlogentries": "নির্বাচিত লগগুলো দেখাও/লুকাও",
+       "log-edit-tags": "নির্বাচিত লগের ভুক্তির ট্যাগ সম্পাদনা করুন",
        "checkbox-select": "নির্বাচন: $1",
        "checkbox-all": "সব",
        "checkbox-none": "কোনটিই নয়",
        "activeusers-count": "গত {{PLURAL:$3|কালে|$3 দিনে}} সর্বমোট {{PLURAL:$1|কর্মের}} সংখ্যা $1টি",
        "activeusers-from": "ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:",
        "activeusers-groups": "এই দলভুক্ত ব্যবহারকারী দেখান:",
+       "activeusers-excludegroups": "এই দলভুক্ত ব্যবহারকারী বাদ দিন:",
        "activeusers-noresult": "কোনো ব্যবহারকারী পাওয়া যায়নি।",
        "activeusers-submit": "সক্রিয় ব্যবহারকারী প্রদর্শন করুন",
        "listgrouprights": "দলগত ব্যবহারকারী অধিকার",
        "listgrouprights-removegroup-self-all": "নিজের অ্যাকাউন্ট থেকে সকল দল অপসারণ",
        "listgrouprights-namespaceprotection-header": "নামস্থান নিষেধাজ্ঞাসমূহ",
        "listgrouprights-namespaceprotection-namespace": "নামস্থান",
+       "listgrouprights-namespaceprotection-restrictedto": "অধিকার যা ব্যবহারকারীকে সম্পাদনা করার অনুমতি দেয়",
        "listgrants": "কার্যভার",
        "listgrants-summary": "নিম্নে ব্যবহারকারী অধিকারের সাথে যুক্ত প্রবেশাধিকারসহ তাদের কার্যভারের একটি তালিকা দেয়া হয়েছে। ব্যবহারকারীরা তাদের অ্যাকাউন্ট ব্যবহার করতে অ্যাপ্লিকেশনকে অনুমোদন দিতে পারে, কিন্তু কার্যভারের উপর ভিত্তি করে সীমিত অনুমতি ব্যবহারকারীরা অ্যাপ্লিকেশনকে দিতে পারবেন। মূলত, একটি অ্যাপ্লিকেশন একজন ব্যবহারকারীর দেয়া অধিকারের অতিরিক্ত অধিকার ব্যবহার করতে পারবে না। পৃথক অধিকার সম্পর্কে [[{{MediaWiki:Listgrouprights-helppage}}|অতিরিক্ত তথ্য]] দেখুন।",
        "listgrants-grant": "কার্যভার",
        "rollback-success-notify": "$1-এর সম্পাদনাগুলি বাতিল করা হয়েছে; \n$2-এর করা শেষ সংস্করণে ফেরত নেওয়া হয়েছে। [$3 পরিবর্তন দেখুন]",
        "sessionfailure-title": "সেশন পরিত্যক্ত",
        "sessionfailure": "আপনার প্রবেশ সেশনে একটি সমস্যা হয়েছে বলে মনে হচ্ছে;\nসেশন হাইজ্যাক প্রতিরোধের উপায় হিসেবে এই কাজটি বাতিল করা হয়েছে।\nঅনুগ্রহ ব্রাউজারের \"পিছনে\" বোতাম চাপুন এবং যে পাতা থেকে এসেছিলেন, তা পুনঃলোড করুন এবং আবার চেষ্টা করুন।",
-       "changecontentmodel": "à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¤à¦¾à¦° à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦®à¦¡à§\87ল পরিবর্তন",
-       "changecontentmodel-legend": "বিষয়বসà§\8dতà§\81র à¦®à¦¡à§\87ল পরিবর্তন করুন",
+       "changecontentmodel": "à¦\8fà¦\95à¦\9fি à¦ªà¦¾à¦¤à¦¾à¦° à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦°à§\82প পরিবর্তন",
+       "changecontentmodel-legend": "বিষয়বসà§\8dতà§\81র à¦°à§\82প পরিবর্তন করুন",
        "changecontentmodel-title-label": "পাতার শিরোনাম",
        "changecontentmodel-model-label": "পাতার বিষয়বস্তুর প্রতিরূপ",
        "changecontentmodel-reason-label": "কারণ:",
        "changecontentmodel-submit": "পরিবর্তন করুন",
        "changecontentmodel-success-title": "বিষয়বস্তুর প্রতিরূপ পরিবর্তিত হয়েছিলো",
        "changecontentmodel-success-text": "[[:$1]]-এর বিষয়বস্তুর ধরণ পরিবর্তন হয়েছে।",
-       "changecontentmodel-emptymodels-title": "কোন বিষয়বস্তুর মডেল উপলব্ধ নয়",
-       "log-name-contentmodel": "বিষয়বস্তুর মডেল পরিবর্তন লগ",
-       "logentry-contentmodel-change": "$1 $3 পাতার বিষয়বস্তুর মডেল \"$4\" থেকে \"$5\"-এ {{GENDER:$2|পরিবর্তন করেছেন}}",
+       "changecontentmodel-nodirectediting": "$1 বিষয়বস্তুর রূপ সরাসরি সম্পাদনা করা সমর্থন করে না",
+       "changecontentmodel-emptymodels-title": "কোন বিষয়বস্তুর রূপ উপলব্ধ নয়",
+       "log-name-contentmodel": "বিষয়বস্তুর রূপ পরিবর্তন লগ",
+       "logentry-contentmodel-change": "$1 $3 পাতার বিষয়বস্তুর রূপ \"$4\" থেকে \"$5\"-এ {{GENDER:$2|পরিবর্তন করেছেন}}",
        "logentry-contentmodel-change-revertlink": "প্রত্যাবর্তন",
        "logentry-contentmodel-change-revert": "প্রত্যাবর্তন",
        "protectlogpage": "সুরক্ষা লগ",
        "pageinfo-length": "পাতার দৈর্ঘ্য (বাইটে)",
        "pageinfo-article-id": "পাতার আইডি",
        "pageinfo-language": "পাতার তথ্যের ভাষা",
-       "pageinfo-content-model": "পাতার à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦®à¦¡à§\87ল",
+       "pageinfo-content-model": "পাতার à¦¬à¦¿à¦·à¦¯à¦¼à¦¬à¦¸à§\8dতà§\81র à¦°à§\82প",
        "pageinfo-content-model-change": "পরিবর্তন",
        "pageinfo-robot-policy": "রোবটের মাধ্যমে ইন্ডেক্স করা হচ্ছে",
        "pageinfo-robot-index": "অনুমোদিত",
        "tag-filter": "[[Special:Tags|ট্যাগ]] ছাকনী:",
        "tag-filter-submit": "ছাকনী",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ট্যাগ}}]]: $2)",
+       "tag-mw-contentmodelchange": "বিষয়বস্তুর রূপ পরিবর্তন",
+       "tag-mw-contentmodelchange-description": "সম্পাদনা যা একটি পাতার [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel বিষয়বস্তুর রূপ পরিবর্তন] করে",
        "tags-title": "ট্যাগসমূহ",
        "tags-intro": "এই পাতায় সফটওয়্যারটি একটি সম্পাদনা চিহ্নিত করার জন্য যে সকল ট্যাগ ব্যবহার করে তার তালিকা ও বর্ণনা রয়েছে।",
        "tags-tag": "ট্যাগ নাম",
        "feedback-useragent": "ব্যবহারকারী এজেন্ট:",
        "searchsuggest-search": "{{SITENAME}} অনুসন্ধান",
        "searchsuggest-containing": "যা আছে...",
+       "api-error-autoblocked": "আপনার আইপি ঠিকানাকে স্বয়ংক্রিয়ভাবে বাধা দেয়া হয়েছে কারণ এটি একজন অবরুদ্ধ ব্যবহারকারী দ্বারা ব্যবহৃত হয়েছিল।",
        "api-error-badaccess-groups": "আপনার এই উইকিতে ফাইল আপলোডের অনুমতি নেই।",
        "api-error-badtoken": "অভ্যন্তরীণ ত্রুটি: খারাপ টোকেন।",
        "api-error-blocked": "আপনাকে সম্পাদনা করা থেকে বাধা দেয়া হয়েছে।",
        "sessionprovider-nocookies": "কুকি নিষ্ক্রিয় করা। নিশ্চিত করুন যে আপনার কুকি সক্রিয় আছে এবং আবার শুরু করুন।",
        "randomrootpage": "অজানা মূল পাতা",
        "log-action-filter-block": "বাধাদানের ধরন:",
+       "log-action-filter-contentmodel": "বিষয়বস্তুর রূপ পরিবর্তনের ধরন:",
        "log-action-filter-delete": "অপসারণের ধরন:",
        "log-action-filter-import": "আমদানির ধরন:",
        "log-action-filter-managetags": "ট্যাগ ব্যবস্থাপনা কার্যের ধরন:",
        "log-action-filter-block-reblock": "বাধাদান পরিবর্তন",
        "log-action-filter-block-unblock": "বাধা অপসারণ",
        "log-action-filter-contentmodel-change": "বিষয়বস্তুর মডেল পরিবর্তন",
+       "log-action-filter-contentmodel-new": "অ-মানক বিষয়বস্তুর রূপসহ পাতা তৈরি",
        "log-action-filter-delete-delete": "পাতা অপসারণ",
        "log-action-filter-delete-restore": "পাতা পুনঃরুদ্ধার",
        "log-action-filter-delete-event": "লগ অপসারণ",
        "authmanager-create-disabled": "অ্যাকাউন্ট সৃষ্টিকরণ নিষ্ক্রিয় করা হয়েছে।",
        "authmanager-create-from-login": "আপনার একাউন্ট তৈরি করতে, ক্ষেত্রগুলি পূরণ করুন।",
        "authmanager-authplugin-setpass-failed-title": "পাসওয়ার্ড পরিবর্তন ব্যর্থ হয়েছে",
+       "authmanager-authplugin-setpass-failed-message": "প্রমাণীকরণ প্লাগইন পাসওয়ার্ড পরিবর্তন করতে অস্বীকৃতি জানিয়েছে।",
+       "authmanager-authplugin-create-fail": "প্রমাণীকরণ প্লাগইন অ্যাকাউন্ট তৈরি করতে অস্বীকৃতি জানিয়েছে।",
        "authmanager-authplugin-setpass-bad-domain": "অবৈধ ডোমেইন।",
        "authmanager-autocreate-noperm": "স্বয়ংক্রিয় অ্যাকাউন্ট সৃষ্টি মঞ্জুরিপ্রাপ্ত নয়।",
        "authmanager-userdoesnotexist": "ব্যবহারকারী অ্যাকাউন্ট \"$1\" অনিবন্ধিত।",
        "authmanager-provider-password": "পাসওয়ার্ড-ভিত্তিক প্রমাণীকরণ।",
        "authmanager-provider-password-domain": "পাসওয়ার্ড ও ডোমেইন-ভিত্তিক প্রমাণীকরণ।",
        "authmanager-provider-temporarypassword": "অস্থায়ী পাসওয়ার্ড",
+       "authprovider-confirmlink-request-label": "অ্যাকাউন্ট যা সংযুক্ত হওয়া উচিত",
        "authprovider-confirmlink-success-line": "$1: সংযোগ করা সফল হয়েছে।",
+       "authprovider-confirmlink-failed": "অ্যাকাউন্ট সংযোগ করা সম্পূর্ণরূপে সফল হয়নি: $1",
+       "authprovider-confirmlink-ok-help": "সংযোগ করা ব্যর্থতাসূচক বার্তাগুলি প্রদর্শন করার পরেও চালিয়ে যান।",
        "authprovider-resetpass-skip-label": "উপেক্ষা করো",
        "authprovider-resetpass-skip-help": "পাসওয়ার্ড পুনঃস্থাপন করা উপেক্ষা করুন।",
+       "authform-nosession-login": "প্রমাণীকরণ সফল ছিল, কিন্তু আপনার ব্রাউজার \"স্মরণ\" রাখতে পারবে না যে আপনি প্রবেশ করেছেন।\n\n$1",
+       "authform-nosession-signup": "অ্যাকাউন্ট তৈরি করা হয়েছে, কিন্তু আপনার ব্রাউজার \"স্মরণ\" রাখতে পারবে না যে আপনি প্রবেশ করেছেন।\n\n$1",
        "authform-newtoken": "টোকেন অনুপস্থিত। $1",
        "authform-notoken": "টোকেন অনুপস্থিত",
        "authform-wrongtoken": "ভুল টোকেন",
        "specialpage-securitylevel-not-allowed-title": "অনুমতি নেই",
        "specialpage-securitylevel-not-allowed": "দুঃখিত, আপনি এই পাতা ব্যবহার করতে অনুমতিপ্রাপ্ত নন কারণ আপনার পরিচয় যাচাই করা যায়নি।",
        "authpage-cannot-login": "প্রবেশ শুরু করা সম্ভন নয়।",
+       "authpage-cannot-login-continue": "প্রবেশ অব্যাহত রাখা সম্ভব নয়। সম্ভবত আপনার সেশনের সময় শেষ হয়েছে।",
+       "authpage-cannot-create": "অ্যাকাউন্ট সৃষ্টি আরম্ভ করা সম্ভব নয়।",
+       "authpage-cannot-create-continue": "অ্যাকাউন্ট সৃষ্টি অব্যাহত রাখা সম্ভব নয়। সম্ভবত আপনার সেশনের সময় শেষ হয়েছে।",
+       "authpage-cannot-link": "অ্যাকাউন্ট সংযোগ করা আরম্ভ করা সম্ভব নয়।",
+       "authpage-cannot-link-continue": "অ্যাকাউন্ট সংযোগ করা অব্যাহত রাখা সম্ভব নয়। সম্ভবত আপনার সেশনের সময় শেষ হয়েছে।",
        "cannotauth-not-allowed-title": "অনুমতি অস্বীকৃত",
        "cannotauth-not-allowed": "আপনি এই পাতাটি ব্যবহার করতে অনুমতিপ্রাপ্ত নন।",
        "changecredentials": "পরিচয়পত্র পরিবর্তন করুন",
        "removecredentials-success": "আপনার পরিচয়পত্র সরানো হয়েছে।",
        "credentialsform-provider": "পরিচয়পত্রের ধরন:",
        "credentialsform-account": "অ্যাকাউন্টের নাম:",
+       "cannotlink-no-provider-title": "আর কোন সংযোগযোগ্য অ্যাকাউন্ট নেই",
+       "cannotlink-no-provider": "আর কোন সংযোগযোগ্য অ্যাকাউন্ট নেই।",
        "linkaccounts": "অ্যাকাউন্ট সংযোগ করুন",
        "linkaccounts-success-text": "অ্যাকাউন্টটি সংযোগ করা হয়েছে।",
        "linkaccounts-submit": "অ্যাকাউন্ট সংযুক্ত করুন",
        "usercssispublic": "অনুগ্রহ করে লক্ষ্য করুন: সিএসএসের উপপাতাগুলিতে গোপনীয় তথ্য থাকা উচিত নয় যেহেতু অন্যান্য ব্যবহারকারীও এগুলি দেখতে পান।",
        "restrictionsfield-badip": "আইপি ঠিকানা অথবা পরিসীমা অবৈধ: $1",
        "restrictionsfield-label": "অনুমোদিত আইপি পরিসীমা:",
-       "restrictionsfield-help": "লাইন প্রতি একটি আইপি ঠিকানা বা CIDR পরিসীমা। সবকিছু সক্রিয় করতে<br><code>0.0.0.0/0</code><br><code>::/0</code><br>ব্যবহার করুন"
+       "restrictionsfield-help": "লাইন প্রতি একটি আইপি ঠিকানা বা CIDR পরিসীমা। সবকিছু সক্রিয় করতে<br><code>0.0.0.0/0</code><br><code>::/0</code><br>ব্যবহার করুন",
+       "revid": "সংশোধন $1",
+       "pageid": "পাতার আইডি $1"
 }
index 08a7965..ffd8ba0 100644 (file)
@@ -45,6 +45,7 @@
        "underline-always": "همیشه",
        "underline-never": "هرگز",
        "underline-default": "پیش نمایش مرورگر",
+       "editfont-serif": "فونت سريف",
        "sunday": "یکشنبه",
        "monday": "دوشنبه",
        "tuesday": "سه‌شنبه",
        "oct": "ئوکتوبر",
        "nov": "نوڤامر",
        "dec": "دئسامر",
+       "january-date": "جانڤيأ $1",
+       "february-date": "فإڤريأ $1",
+       "march-date": "مارس  $1",
+       "april-date": "آڤريل $1",
        "period-am": "دم سوڤ",
        "period-pm": "پسين",
        "pagecategories": "{{PLURAL:$1|دسته|دسته ها}}",
        "editthispage": "اصلاح ای صفحه",
        "delete": "حذف",
        "protect": "حفاظت وحمایت",
+       "protect_change": "آلإشت کونين",
        "newpage": "صفحه تازه",
        "talkpage": "بحث ای صفحه",
        "talkpagelinktext": "چأک چئنە",
        "userlogin-yourname-ph": "نوم کاریاريتونأ بزنين",
        "yourpassword": "رمز:",
        "userlogin-yourpassword": "رازينإ گوڤأرتن",
+       "userlogin-yourpassword-ph": "رازينإ گوڤأرتن نأ بزأ",
+       "createacct-yourpasswordagain": "پشت راسدکاري رازينإ گوڤأرتن",
        "userlogin-remembermypassword": "مۈنإ مإن سامۈنإ ڤاڌار",
        "login": "اویدن به سیستم",
        "nav-login-createaccount": "اویدن به سیستم",
        "createaccount": "درست کردن حساب کاربری",
        "gotaccount": "آیا تقریبا یه حساب کاربری دارین? '''$1'''.",
        "gotaccountlink": "اویدن به",
+       "userlogin-resetpassword-link": "رازینإ گوڤأرتن تۈ ز ڤيرتۈن رأهڌإ",
        "userlogin-helplink2": "هومياري کردن سي ڤامإن أڤوڌن",
+       "createacct-submit": "هساڤ خوتۈنإ راسد کونين",
+       "createacct-benefit-body1": "{{PLURAL:$1|ڤيرایشد|ڤيرایشدا}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|بألگأ|بألگإ آ}}",
        "loginsuccesstitle": "اویدن با بخت وتوفیق به سیستم",
        "loginsuccess": "''' ایسا اویدن به داخل سایت {{SITENAME}} بعنوان \"$1\".'''",
        "nosuchuser": "کاربری به ای نام وجود نداره \"$1\".\nحروف نام را چک کنین, یا [[Special:CreateAccount|درست کنین یه حساب کاربری تازه]].",
        "recreate-moveddeleted-warn": "'''هشدار: ایسا در حال درست کردن دوباره صفحه‌ای هدین که قبلاً حذف وابیده '''در نظر داشته بوین که ادامه اصلاح ای صفحه کار درستی هده یا نه. نمایه حذف مربوط به ای صفحه سی راحتی کار در ادامه اویده",
        "viewpagelogs": "نشودادن نمایه ها سی ای صفحه",
        "currentrev": "نسخه جاری",
+       "currentrev-asof": "آخرين ڤانيأري جۈر $1",
        "revisionasof": "اصلاح $1",
        "revision-info": "نوسقإ ڤانيأري ڤابيڌإ جۈر $1 ڤا $2",
        "previousrevision": "← اصلاح قبلی",
        "history-feed-item-nocomment": "$1 در $2",
        "rev-delundel": "آلشد هال و بال ديإن",
        "history-title": "دڤارتإ دیئن ڤيرگار $1",
+       "difference-title": "فرخ مإنجقا ڤانإیريا \"$1\"",
        "lineno": "سطر $1:",
        "compareselectedversions": "مقایسه نسخه‌های انتخاب‌ وابیده",
        "editundo": "لغو اصلاح آخر",
        "search-result-size": "$1 ({{PLURAL:$2|1 ڤاجه یل|$2 ڤاجه یل}})",
        "search-redirect": "(ڤاگردۈني ز $1)",
        "search-section": "(بهرجا $1)",
+       "search-suggest": "منزۈرت یو بي:$1",
        "searchall": "همه",
        "search-nonefound": "هیژ نتیجه یی وا پی جست تو یکی نئ.",
        "preferences": "اولویتها",
        "tooltip-pt-mycontris": "یأ نومگأ ز هومياري {{GENDER:|ايسا}}",
        "tooltip-pt-login": "توصیه ابوه که به سیستم داخل بوین اما اجباری نه.",
        "tooltip-pt-logout": "رهدن زه سیستم",
+       "tooltip-pt-createaccount": "ايسا پشت گرم ڤابيڌينإ کإ یأ هساڤ راسد کونين و بياین ڤامإن. ب هرهال اي کار إژباري نارإ.",
        "tooltip-ca-talk": "صحبت درباره صفحه محتوا",
        "tooltip-ca-edit": "ڤيرایشت اي بلگه",
        "tooltip-ca-addsection": "شورۈ کردن یه بهرجا دیه",
        "tooltip-ca-watch": "اضاف کردن ای صفحه به لیست پیگیریهاتو",
        "tooltip-ca-unwatch": "حذف ای صفحه زه لیست پی‌گیری‌های ایسا",
        "tooltip-search": "جستن {{SITENAME}}",
+       "tooltip-search-go": "رۉ مإن بألگإیي کإ یأ نوم راستکي داشدإ بۈ.",
        "tooltip-search-fulltext": "بألگأ آنأ سي چونو نإڤشدإیي پإی جۈري کو",
        "tooltip-p-logo": "بإنیرين بإ سرآسۈنأ",
        "tooltip-n-mainpage": "دیدن صفحه اصلی",
index c61e871..71daeed 100644 (file)
        "removecredentials": "ДӀадаха декъашхойн дӀаяздарш",
        "removecredentials-submit": "ДӀадаха декъашхойн дӀаяздарш",
        "credentialsform-provider": "ДӀаяздарийн тайпа:",
-       "credentialsform-account": "Декъашхочун цӀе:"
+       "credentialsform-account": "Декъашхочун цӀе:",
+       "userjsispublic": "Тергам бе: JavaScript бухара агӀонаш чохь къайлаха хаамаш хийла ца беза, уьш массо декъашхойн тӀекхочуш йолу дера.",
+       "usercssispublic": "Тергам бе: CSS бухара агӀонаш чохь къайлаха хаамаш хийла ца беза, уьш массо декъашхойн тӀекхочуш йолу дера."
 }
index d94cfbe..9e1c688 100644 (file)
        "wlshowhidemine": "moje editace",
        "wlshowhidecategorization": "kategorizaci stránek",
        "watchlist-options": "Možnosti sledovaných stránek",
-       "watchlist-mark-all-visited": "Jste si {{GENDER:|jist|jista|jisti}}, že chcete odznačit neprohlédnuté změny sledovaných stránek tím, že všechny stránky označíte jako navštívené?",
        "watching": "Přidávám na seznam sledovaných stránek…",
        "unwatching": "Odebírám ze seznamu sledovaných stránek…",
        "watcherrortext": "Při změně sledování stránky „$1“ došlo k chybě.",
        "pageinfo-length": "Velikost stránky (v bajtech)",
        "pageinfo-article-id": "ID stránky",
        "pageinfo-language": "Jazyk obsahu stránky",
+       "pageinfo-language-change": "změnit",
        "pageinfo-content-model": "Model obsahu stránky",
        "pageinfo-content-model-change": "změnit",
        "pageinfo-robot-policy": "Indexování roboty",
        "restrictionsfield-badip": "Neplatná IP adresa nebo rozsah: $1",
        "restrictionsfield-label": "Povolené rozsahy IP adres:",
        "restrictionsfield-help": "Jedna IP adresa nebo CIDR rozsah na řádek. Všechno povolíte pomocí<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "revid": "revize $1",
        "pageid": "Stránka s ID $1"
 }
index 0530685..464c4b1 100644 (file)
        "blockedtitle": "Benutzer ist gesperrt",
        "blockedtext": "'''Dein Benutzername oder deine IP-Adresse wurde gesperrt.'''\n\nDie Sperrung wurde vom Administrator $1 durchgeführt.\nAls Grund wurde ''$2'' angegeben.\n\n* Beginn der Sperre: $8\n* Ende der Sperre: $6\n* Sperre betrifft: $7\n\nDu kannst $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.\nDu kannst die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in deinen [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für dich gesperrt wurde.\nDeine aktuelle IP-Adresse ist $3 und die Sperrkennung lautet $5.\nBitte füge alle Informationen jeder Anfrage hinzu, die du stellst.",
        "autoblockedtext": "Deine IP-Adresse wurde automatisch gesperrt, da sie von einem anderen Benutzer genutzt wurde, der von $1 gesperrt wurde.\nAls Grund wurde angegeben:\n\n:''$2''\n\n* Beginn der Sperre: $8\n* Ende der Sperre: $6\n* Sperre betrifft: $7\n\nDu kannst $1 oder einen der anderen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktieren, um über die Sperre zu diskutieren.\n\nDu kannst die „E-Mail an diesen Benutzer“-Funktion nicht nutzen, solange keine gültige E-Mail-Adresse in deinen [[Special:Preferences|Benutzerkonto-Einstellungen]] eingetragen ist oder diese Funktion für dich gesperrt wurde.\n\nDeine aktuelle IP-Adresse ist $3, und die Sperr-ID ist $5.\nBitte füge alle Informationen jeder Anfrage hinzu, die du stellst.",
+       "systemblockedtext": "Dein Benutzername oder deine IP-Adresse wurde von MediaWiki automatisch gesperrt.\nDer angegebene Grund ist:\n\n:<em>$2</em>\n\n* Beginn der Sperre: $8\n* Ablauf der Sperre: $6\n* Sperre betrifft: $7\n\nDeine aktuelle IP-Adresse ist $3.\nBitte gib alle oben stehenden Details in jeder Anfrage an.",
        "blockednoreason": "keine Begründung angegeben",
        "whitelistedittext": "Du musst dich $1, um Seiten bearbeiten zu können.",
        "confirmedittext": "Du musst deine E-Mail-Adresse erst bestätigen, bevor du Bearbeitungen durchführen kannst. Bitte ergänze und bestätige deine E-Mail in den [[Special:Preferences|Einstellungen]].",
        "wlshowhidemine": "Meine Bearbeitungen",
        "wlshowhidecategorization": "Seitenkategorisierung",
        "watchlist-options": "Anzeigeoptionen",
-       "watchlist-mark-all-visited": "Bist du sicher, dass du ungesehene Änderungen auf deiner Beobachtungsliste durch das Markieren aller Seiten als besucht zurücksetzen möchtest?",
        "watching": "Beobachten …",
        "unwatching": "Nicht mehr beobachten …",
        "watcherrortext": "Beim Ändern der Beobachtungslisteneinstellungen für „$1“ ist ein Fehler aufgetreten.",
        "pageinfo-length": "Seitenlänge (in Bytes)",
        "pageinfo-article-id": "Seitenkennnummer",
        "pageinfo-language": "Seiteninhaltssprache",
+       "pageinfo-language-change": "ändern",
        "pageinfo-content-model": "Seiteninhaltsmodell",
        "pageinfo-content-model-change": "ändern",
        "pageinfo-robot-policy": "Indizierung durch Suchmaschinen",
index 1d7c9ae..20d8652 100644 (file)
        "history": "Tarixê pele",
        "history_short": "Tarix",
        "updatedmarker": "cıkewtena mına peyêne ra dıme biyo rocane",
-       "printableversion": "Asayışê çapkerdışi",
+       "printableversion": "Çap bıyaye versiyon",
        "permalink": "Gıreyo bêpeyni",
        "print": "Çap ke",
        "view": "Bıvêne",
        "mainpage": "Pela Seri",
        "mainpage-description": "Pela seri",
        "policy-url": "Project:Terzê hereketi",
-       "portal": "Portalê cemaeti",
-       "portal-url": "Project:Portalê cemaeti",
+       "portal": "Portalê cemati",
+       "portal-url": "Project:Portalê cemati",
        "privacy": "Politikay nımıtışi",
        "privacypage": "Project:Xısusiyetê nımıtışi",
        "badaccess": "Xeta mısadey",
        "databaseerror-error": "Xeta: $1",
        "laggedslavemode": "Diqet: Pel de newe vıraşteyi belka çini .",
        "readonly": "database kılit biyo",
-       "enterlockreason": "Kılitkerdışi rê tarixê abiyayışê kılit ra piya yew sebeb bınusê.",
+       "enterlockreason": "Kılit kerdışi rê tarixê abiyayışê kılit ra piya yew sebeb bınusê.",
        "readonlytext": "Qey pawıtış ri yew sebeb vace. Texmini yew tarix vace şıma key pawıtış wedarneni:  $1",
        "missing-article": "Banqa, pela be nameyê \"$1\" $2 ke gani bıbo, nêdiye.\n\nEna belki seba yew vurnayışo kıhan ya zi tarixê gıreyê yew pele esteriya.\n\nEke wına niyo, belki ''software'' de yew xeta esta.\nKerem kerên, naye be nameyê ''URL''yi yew [[Special:ListUsers/sysop|karber]]i ra vacên.",
        "missingarticle-rev": "(rewizyon#: $1)",
        "mypreferencesprotected": "Terciha timar kerdışire icazeta şıam çıniya.",
        "ns-specialprotected": "Pelê xısusiyi nênê vurnayış.",
        "titleprotected": "No sername terefê [[User:$1|$1]] ra, afernayene ra şevekiyayo.\nSebebê xo <em>$2</em> dero.",
-       "filereadonlyerror": "Dosyay vurnayışê \"$1\" nê abê no lakin depoy dosya da \"$2\" mod dê  salt wendi deyo.\n\nXızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: \"$3\".",
+       "filereadonlyerror": "Dosyay vurnayışê \"$1\" nê abêno lakin depoy dosya da \"$2\" mod dê  salt wendi de yo.\n\nXızmetkarê  kılit kerdışi wa bewniro enay wa çım ra ravyarn o: \"$3\".",
        "invalidtitle-knownnamespace": "Canemey \"$2\" u metnê \"$3\" xırabo",
        "invalidtitle-unknownnamespace": "Sernameye nêşınasiya yana amraiya canameyo  $1 u metno \"$2\" xırab",
        "exception-nologin": "Şıma cıkewtış nêvıraşto",
        "templatesused": "{{PLURAL:$1|Şablon|Şabloni}} ke ena perrer de karneyayê:",
        "templatesusedpreview": "{{PLURAL:$1|Sablon|Sabloni}}  ke na verqayt de xebetnayê:",
        "templatesusedsection": "{{PLURAL:$1|Template|Templateyan}}  ke na qısım de xebetniyenê:",
-       "template-protected": "(kılit biyo)",
-       "template-semiprotected": "(nêmê ena pele kılit biyo)",
+       "template-protected": "(staryaye)",
+       "template-semiprotected": "(nime staryayış)",
        "hiddencategories": "Ena per de {{PLURAL:$1|1 kategoriyo nımıte|$1 kategoriyê nımıtey}} muhtewa benê:",
        "edittools": "<div id=\"specialcharss\" class=\"toccolours specialchars\" style=\"margin-top:.5em; padding: .3em .5em; font-size: 100%; color:#aaa; text-align:left;\" title=\"{{int:bw-edittools-tooltip}}\">\n<p class=\"specialbasic\" id=\"Standard\">\n'''{{int:bw-edittools-lead-in}}''' \n<charinsert>Á á É é Í í Ó ó Ú ú Ý ý</charinsert> –\n<charinsert>À à È è Ì ì Ò ò Ù ù </charinsert> –\n<charinsert> â Ê ê Î î Ô ô Û û </charinsert> –\n<charinsert>Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ</charinsert> –\n<charinsert>Æ æ Ø ø Œ œ ẞ ß </charinsert> –\n<charinsert>Å å Ů ů </charinsert> –\n<charinsert>àã Ẽ ẽ ɛ̃ Ĩ ĩ Ñ ñ Õ õ ɔ̃ Ũ ũ </charinsert> –\n<charinsert>Рð Þ þ </charinsert> –\n<charinsert>Ç ç Ģ ģ Ķ ķ Ļ ļ Ņ ņ Ŗ ŗ Ş ş Ţ ţ </charinsert> –\n<charinsert>Ć ć Ĺ ĺ Ń ń Ŕ ŕ Ś ś Ý ý Ź ź </charinsert> –\n<charinsert>Č č Ď ď Ľ ľ Ň ň Ř ř Š š Ť ť Ž ž </charinsert> –\n<charinsert>Ǎ ǎ Ě ě Ǐ ǐ Ǒ ǒ Ǔ ǔ </charinsert> –\n<charinsert>Ā ā Ē ē Ī ī Ō ō Ū ū </charinsert> –\n<charinsert>ǖ ǘ ǚ ǜ </charinsert> –\n<charinsert>Ĉ ĉ Ĝ ĝ Ĥ ĥ Ĵ ĵ Ŝ ŝ Ŵ ŵ Ŷ ŷ </charinsert> –\n<charinsert>Ă ă Ğ ğ Ŭ ŭ </charinsert> –\n<charinsert>Ċ ċ Ė ė Ġ ġ Għ għ İ ı Ż ż </charinsert> –\n<charinsert>Ą ą Ę ę Į į Ų ų </charinsert> –\n<charinsert>Ő ő Ű ű </charinsert> –\n<charinsert>Đ đ Ħ ħ Ł ł Ŀ ŀ </charinsert> –\n<charinsert>Ɖ ɖ Ɛ ɛ Ƒ ƒ Ɣ ɣ Ŋ ŋ Ɔ ɔ Ʋ ʋ </charinsert> -\n<charinsert>Ə ə </charinsert> –\n<charinsert>– — ’</charinsert> –\n<charinsert>~ | ° ¹ ² ³ ⅛ ¼ ⅓ ⅜ ½ ⅝ ¾ ⅔ ⅞ € $ ¥ £ † × ← → ↔ ↑ ± ≠ © ® ™ ‰ «+» ‹+› „+“ „+” ‚+‘ ¡ ¿ …</charinsert> –\n<charinsert>&amp;nbsp; &nbsp; [[Category:+]] #REDIRECT[[+]] {{msg-mw|+|notext=1}} &#33;!FUZZY!! ~~~~  &lt;nowiki>+</nowiki></charinsert>\n<charinsert>ڈ ڑ ٹ </charinsert>\n<charinsert>ټ څ ځ ډ ړ ږ ښ ڼ ؤ ي ې ۍ ئ </charinsert>\n<charinsert>{{{+}}} {{+}} {{subst:+}} <noinclude>+</noinclude></charinsert>\n<charinsert>&lt;!--&nbsp;+&nbsp;--> &lt;br&nbsp;/></charinsert>\n</p></div>",
        "edittools-upload": "-",
        "protect-locked-blocked": "seviyeya qedexe biyayeyan nevuriyeno.\n'''$1''' eyarê peli:",
        "protect-locked-dblock": "semedê kılidê database ya aktifi şıma neeşkeni seviyeya pawıtışi buvurni.\n'''$1''' eyarê no peli:",
        "protect-locked-access": "Karber hesabê şıma nêşeno  staryaye sewiyey ena peler bıvurno.\nHesıbyayê sazê pela da '''$1''' enêyê:",
-       "protect-cascadeon": "Ena pele nıka kılit biya, çıke na pele zerreyê lista {{PLURAL:$1|pela ke bınê şevekiyayışê qedemeyıni dera|pelê ke bınê şevekiyayışê qedemeyıni derê}}.\nTı şenê sewiyaya kılitkerdışi bıvurnê, feqat tı nêşenê şevekiyayışê qedemeyıni bıvurnê.",
+       "protect-cascadeon": "Ena pele nıka kılit biya, çıke na pele zerreyê lista {{PLURAL:$1|pela ke bınê staryayışi qedemeyıni dera|pelê ke bınê şevekiyayışê qedemeyıni derê}}.\nTı şenê sewiya ya kılit kerdışi bıvurnê, feqat tı nêşenê staryayışi qedemeyıni bıvurnê.",
        "protect-default": "Destur bıde karberan pêrune",
        "protect-fallback": "Tenya karberanê be izna \"$1\" rê destur bıde",
        "protect-level-autoconfirmed": "Karberanê neweyan u qeyd-nêbiyaoğan kılit ke",
        "whatlinkshere": "Linkê tedeestey",
        "whatlinkshere-title": "Wesiqe da \"$1\" rê gıre dayen perri",
        "whatlinkshere-page": "Pele:",
-       "linkshere": "Ena peleyan grey biya '''[[:$1]]''':",
+       "linkshere": "Pera <strong>[[:$1]]</strong> rê gıre dayen perri",
        "nolinkshere": "Per da '''[[:$1]]''' rê pera ke gıre dana çıniya.",
        "nolinkshere-ns": "Ena cayê nameyî de yew pel zi '''[[:$1]]''' rê link nibeno.",
        "isredirect": "pera hetenayışi",
        "whatlinkshere-next": "{{PLURAL:$1|verni|verni $1}}",
        "whatlinkshere-links": "← gırey",
        "whatlinkshere-hideredirs": "Hetenayışê $1",
-       "whatlinkshere-hidetrans": "Açarnayışê $1",
+       "whatlinkshere-hidetrans": "Çarnayışan $1",
        "whatlinkshere-hidelinks": "Gıreyê $1",
        "whatlinkshere-hideimages": "Gıreyê dosya $1",
        "whatlinkshere-filters": "Parzûn",
        "ipb-blocklist-duration-left": "$1 vet",
        "unblockip": "Hesabê karberî a bike",
        "unblockiptext": "Cıreştışê nuştışê IP ya zi karberio ke ver ra gêriyayo, seba peyser barkerdışi dey rê formê cêrêni bıgurenên.",
-       "ipusubmit": "Enê kılitkerdışi wedare",
+       "ipusubmit": "Enê kılit kerdışi wedarnê",
        "unblocked": "[[User:$1|$1]] blok biyo",
        "unblocked-range": "Blokey $1'i wederya",
        "unblocked-id": "Blokê $1î wedariyayo",
        "createaccountblock": "Hesab viraştîş blok biyo",
        "emailblock": "e-mail blok biyo",
        "blocklist-nousertalk": "ti nieşken pele minaqaşe xo bivurne",
-       "ipblocklist-empty": "Lista kılitkerdışi venga.",
+       "ipblocklist-empty": "Listay kılit kerdışi venga.",
        "ipblocklist-no-results": "Adresa IPya waştiye ya zi nameyê karberi kılit nêbiyo.",
        "blocklink": "kılit ke",
        "unblocklink": "bloki wedare",
-       "change-blocklink": "kılitkerdışi bıvurne",
+       "change-blocklink": "kılit kerdışi bıvurne",
        "contribslink": "iştıraki",
        "emaillink": "e-poste bırışe",
        "autoblocker": "Şıma otomatikmen kılit biy, çıke adresa şımaya ''IP''y terefê \"[[User:$1|$1]]\" gureniyena.\nSebebê kılitbiyayışê $1'i \"$2\"o",
index 865aaee..166140a 100644 (file)
        "blockedtitle": "User is blocked",
        "blockedtext": "<strong>Your username or IP address has been blocked.</strong>\n\nThe block was made by $1.\nThe reason given is <em>$2</em>.\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nYou can contact $1 or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the block.\nYou cannot use the \"email this user\" feature unless a valid email address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.",
        "autoblockedtext": "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.\nThe reason given is:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nYou may contact $1 or one of the other [[{{MediaWiki:Grouppage-sysop}}|administrators]] to discuss the block.\n\nNote that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it.\n\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.",
+       "systemblockedtext": "Your username or IP address has been automatically blocked by MediaWiki.\nThe reason given is:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nYour current IP address is $3.\nPlease include all above details in any queries you make.",
        "blockednoreason": "no reason given",
        "whitelistedittext": "Please $1 to edit pages.",
        "confirmedittext": "You must confirm your email address before editing pages.\nPlease set and validate your email address through your [[Special:Preferences|user preferences]].",
        "wlshowhidemine": "my edits",
        "wlshowhidecategorization": "page categorization",
        "watchlist-options": "Watchlist options",
-       "watchlist-mark-all-visited": "Are you sure you want to reset unseen watchlist changes by marking all pages as visited?",
        "watching": "Watching...",
        "unwatching": "Unwatching...",
        "watcherrortext": "An error occurred while changing your watchlist settings for \"$1\".",
        "pageinfo-length": "Page length (in bytes)",
        "pageinfo-article-id": "Page ID",
        "pageinfo-language": "Page content language",
+       "pageinfo-language-change": "change",
        "pageinfo-content-model": "Page content model",
        "pageinfo-content-model-change": "change",
        "pageinfo-robot-policy": "Indexing by robots",
index 3a773d1..c269be1 100644 (file)
        "nstab-special": "صفحهٔ ویژه",
        "nstab-project": "صفحهٔ پروژه",
        "nstab-image": "پرونده",
-       "nstab-mediawiki": "پیام",
+       "nstab-mediawiki": "Ù¾Û\8cغاÙ\85",
        "nstab-template": "الگو",
        "nstab-help": "صفحهٔ راهنما",
        "nstab-category": "رده",
index 0ef9760..2eabba6 100644 (file)
        "wlshowhidemine": "omat muokkaukseni",
        "wlshowhidecategorization": "sivujen luokkien muutokset",
        "watchlist-options": "Tarkkailulistan asetukset",
-       "watchlist-mark-all-visited": "Oletko varma, että haluat merkata nähdyiksi kaikki tarkkailulistan sivut, joita et ole avannut?",
        "watching": "Lisätään tarkkailulistalle...",
        "unwatching": "Poistetaan tarkkailulistalta...",
        "watcherrortext": "Sivun ”$1” tarkkailulista-asetusten muutoksissa tapahtui virhe.",
        "tags-deactivate": "ota pois käytöstä",
        "tags-hitcount": "$1 {{PLURAL:$1|muutos|muutosta}}",
        "tags-manage-no-permission": "Sinulla ei ole oikeutta käsitellä merkkauksia.",
-       "tags-manage-blocked": "Et voi hallita muokkausmerkkauksia kun {{GENDER:$1|olet}} estettynä.",
+       "tags-manage-blocked": "Et voi hallita muokkausmerkkauksia, kun {{GENDER:$1|olet}} estettynä.",
        "tags-create-heading": "Luo uusi merkkaus",
        "tags-create-explanation": "Oletuksena on, että uutena luodut merkkaukset tulevat käyttäjien ja bottien käyttöön.",
        "tags-create-tag-name": "Merkkauksen nimi:",
        "tags-deactivate-not-allowed": "Ei ole mahdollista poistaa käytöstä merkkausta \"$1\".",
        "tags-deactivate-submit": "Poista käytöstä",
        "tags-apply-no-permission": "Sinulla ei ole oikeutta käyttää merkkauksia muutostesi yhteydessä.",
-       "tags-apply-blocked": "Et voi asettaa merkkauksia muutostesi yhteyteen kun {{GENDER:$1|olet}} estettynä.",
+       "tags-apply-blocked": "Et voi asettaa merkkauksia muutostesi yhteyteen, kun {{GENDER:$1|olet}} estettynä.",
        "tags-apply-not-allowed-one": "Merkkausta \"$1\" ei ole sallittua asettaa käsin.",
        "tags-apply-not-allowed-multi": "Seuraavia {{PLURAL:$2|merkkauksia}} ei ole sallittua asettaa käsin: $1",
        "tags-update-no-permission": "Sinulla ei ole oikeutta lisätä tai poistaa merkkauksia yksittäisissä sivuversioissa tai lokimerkinnöissä.",
-       "tags-update-blocked": "Et voi lisätä tai poistaa merkkauksia kun {{GENDER:$1|olet}} estettynä.",
+       "tags-update-blocked": "Et voi lisätä tai poistaa merkkauksia, kun {{GENDER:$1|olet}} estettynä.",
        "tags-update-add-not-allowed-one": "Merkkausta \"$1\" ei ole sallittua asettaa käsin.",
        "tags-update-add-not-allowed-multi": "Seuraavia {{PLURAL:$2|merkkauksia}} ei ole sallittua asettaa käsin: $1",
        "tags-update-remove-not-allowed-one": "Merkkausta \"$1\" ei ole sallittua poistaa.",
        "log-action-filter-contentmodel-change": "Sisältömallin muuttaminen",
        "log-action-filter-contentmodel-new": "Luotu sivu, jossa on poikkeava Sisältömalli",
        "log-action-filter-delete-delete": "Sivun poistaminen",
+       "log-action-filter-delete-delete_redir": "Ohjauksen päällekirjoitus",
        "log-action-filter-delete-restore": "Sivun palauttaminen",
        "log-action-filter-delete-event": "Lokimerkinnän poistaminen",
        "log-action-filter-delete-revision": "Version piilottaminen",
        "userjsispublic": "Huomio: JavaScript-alasivuilla ei tulisi olla luottamuksellisia tietoja, koska muut käyttäjät voivat nähdä ne.",
        "usercssispublic": "Huomio: CSS-alasivuilla ei tulisi olla luottamuksellisia tietoja, koska muut käyttäjät voivat nähdä ne.",
        "restrictionsfield-badip": "Virheellinen IP-osoite tai alue: $1",
-       "restrictionsfield-label": "Sallitut IP-alueet:"
+       "restrictionsfield-label": "Sallitut IP-alueet:",
+       "revid": "versio $1",
+       "pageid": "sivun tunnistenumero $1"
 }
index 8cba799..6370801 100644 (file)
        "wlshowhidemine": "mes modifications",
        "wlshowhidecategorization": "catégorisation de la page",
        "watchlist-options": "Options de la liste de suivi",
-       "watchlist-mark-all-visited": "Êtes-vous sûr de vouloir réinitialiser les modifications de la liste de suivi non vues en marquant toutes les pages comme visitées ?",
        "watching": "Suivi…",
        "unwatching": "Fin du suivi…",
        "watcherrortext": "Une erreur s'est produite lors de la modification des paramètres de votre liste de suivi pour « $1 ».",
index a9446ce..063cdae 100644 (file)
        "passwordreset-emaildisabled": "E-mail as üüb detheer Wiki ufknipset wurden.",
        "passwordreset-username": "Brükernööm:",
        "passwordreset-domain": "Domain:",
-       "passwordreset-capture": "Wel dü det e-mail nooracht uunluke?",
-       "passwordreset-capture-help": "Wan dü detheer kasche uunkrüsagst, woort det e-mail nooracht mä det nei paaswurd uunwiset an tu di brüker schüürd.",
        "passwordreset-email": "E-mail adres:",
        "passwordreset-emailtitle": "Brükerkonto aw {{SITENAME}}",
        "passwordreset-emailtext-ip": "Hoker mä det IP-Adres $1, woorskiinelk dü salew, wul hal brükerinformatsjuunen för {{SITENAME}} tusjüürd fu ($4). {{PLURAL:$3|Detdiar brükerkonto as|Jodiar brükerkontos san}} mä detdiar E-Mail-adres ferbünjen:\n\n$2\n\n{{PLURAL:$3|Detheer tidjwiis paaswurd lääpt|Joheer tidjwiis paaswurden luup}} efter {{PLURAL:$5|ään dai|$5 daar}} uf. \nDü skulst di uunmelde an en nei paaswurd iinracht. Wan hoker ööders detheer uunfraag steld hää an dü din ual paaswurd käänst, do säärst dü niks widjer onernem. Melde di ianfach widjerhen mä din ual paaswurd uun.",
        "newarticle": "(Nei)",
        "newarticletext": "Dü beest en ferwisang tu en sidj fulagt, diar't noch ei jaft.\nAm det sidj iinturachten, skriiw dan tekst uun det fial för't bewerkin iin.\nÜüb det [$1 halepsidj] fanjst dü halep.\nWan dü ütj fersen heer beest, trak ianfach üüb di <strong>turag</strong>-knoop faan dan browser.",
        "anontalkpagetext": "----''Üüb detheer sidj könst dü en ünbekäänden brüker en nooracht du. Det lääpt auer sin IP adres. IP adresen kön faan flook brükern brükt wurd. Wan dü mä detheer nooracht niks began könst, do as det ferlicht för hoker ööders mend weesen. Dü säärst niks widjer onernem. Wan dü en aanj [[Special:CreateAccount|brükerkonto iinrachst]] of di [[Special:UserLogin|uunmeldest]], komt sowat ei weder föör.",
-       "noarticletext": "Üüb detdiar sidj stäänt noch niks.\nDü könst didiar tiitel üüb ööder sidjen [[Special:Search/{{PAGENAME}}|schük]],\n<span class=\"plainlinks\">uun [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logbuken schük] of detdiar sidj [{{fullurl:{{FULLPAGENAME}}|action=edit}} bewerke]</span>.",
+       "noarticletext": "Üüb detdiar sidj stäänt noch niks.\nDü könst didiar tiitel üüb ööder sidjen [[Special:Search/{{PAGENAME}}|schük]],\n<span class=\"plainlinks\">uun [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logbuken schük] of detdiar sidj [{{fullurl:{{FULLPAGENAME}}|action=edit}} maage]</span>.",
        "noarticletext-nopermission": "Üüb detdiar sidj stäänt noch niks, oober dü mutst diar uk niks iinskriiw.\nDü könst diar üüb ööder sidjen efter [[Special:Search/{{PAGENAME}}|schük]] of a <span class=\"plainlinks\">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAME}}}} logbuken uunluke].</span>",
        "missing-revision": "Det werjuun #$1 faan det sidj \"{{FULLPAGENAME}}\" jaft at ei.\n\nDet komt diar miast faan, dat en ual ferwisang stregen wurden as.\nDü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} logbuk faan stregen sidjen] efterlees.",
        "userpage-userdoesnotexist": "Det brükerkonto ''$1'' as ei diar.\nWel dü detdiar sidj würelk maage/bewerke?",
        "userrights-reason": "Grünj:",
        "userrights-no-interwiki": "Dü heest ei det rocht, am brükerrochten uun ööder wikis tu feranrin.",
        "userrights-nodatabase": "Det dootenbeenk $1 jaft at ei, tumanst ei lokaal.",
-       "userrights-nologin": "Dü mutst di mä en administraator-brükerkonto [[Special:UserLogin|uunmelde]], wan dü brükerrochten feranre wel.",
-       "userrights-notallowed": "Dü heest ei det rocht, am brükerrochten tu feranrin.",
        "userrights-changeable-col": "Lasmootskapen, diar dü feranre könst",
        "userrights-unchangeable-col": "Lasmootskapen, diar dü ei feranre könst",
        "userrights-conflict": "Konflikt bi't feranrin faan brükerrochten! Du din feranrangen noch ans iin.",
-       "userrights-removed-self": "Dü heest din aanj brükerrochtem stregen. Dü könst nü ei muar üüb det sidj tugrip.",
        "group": "Skööl:",
        "group-user": "Brükern",
        "group-autoconfirmed": "Registriaret brükern",
        "right-siteadmin": "Dootenbeenk spere an eebenmaage",
        "right-override-export-depth": "Sidjen an onersidjen bit tu en jipde faan 5 eksportiare",
        "right-sendemail": "E-mails tu ööder brükern schüür",
-       "right-passwordreset": "Paaswurd faan en brüker turagsaat an det e-mail diartu uunluke",
        "right-managechangetags": "[[Special:Tags|Markiarangen]] iinracht an uun't dootenbeenk strik",
        "right-applychangetags": "[[Special:Tags|Markiarangen]] tuup mä ööder feranrangen brük",
        "right-changetags": "Feranre [[Special:Tags|markiarangen]] faan enkelt werjuunen of logbukiindracher",
        "javascripttest": "JavaScript-test",
        "javascripttest-pagetext-unknownaction": "Ünbekäänd aktjuun „$1“.",
        "javascripttest-qunit-intro": "Luke efter bi [$1 test dokumentatjuun] üüb mediawiki.org",
-       "tooltip-pt-userpage": "Din brükersidj",
+       "tooltip-pt-userpage": "{{GENDER:|Din}} brükersidj",
        "tooltip-pt-anonuserpage": "Brükersidj faan det IP-adres, faan huar ütj dü werkest",
-       "tooltip-pt-mytalk": "Din diskuschuunssidj",
+       "tooltip-pt-mytalk": "{{GENDER:|Din}} diskuschuunsidj",
        "tooltip-pt-anontalk": "Diskuschuun auer feranrangen faan detdiar IP-adres",
-       "tooltip-pt-preferences": "Min iinstelangen",
+       "tooltip-pt-preferences": "{{GENDER:|Din}} iinstelangen",
        "tooltip-pt-watchlist": "Sidjen, diar dü uun't uug behual wel",
-       "tooltip-pt-mycontris": "List mä aanj bidracher",
+       "tooltip-pt-mycontris": "List mä {{GENDER:|aanj}} bidracher",
        "tooltip-pt-login": "Wan dü di uunmeldest, heest dü muar mögelkhaiden. Dü säärst det oober ei.",
        "tooltip-pt-logout": "Ufmelde",
        "tooltip-pt-createaccount": "Wees so gud an racht en brükerkonto iin an melde di uun. Dü säärst det oober ei.",
        "tooltip-t-recentchangeslinked": "Leetst feranrangen faan sidjen, huar faan heer üüb ferwiset woort",
        "tooltip-feed-rss": "RSS-feed för detdiar sidj",
        "tooltip-feed-atom": "Atom-feed för detdiar sidj",
-       "tooltip-t-contributions": "List mä bidracher faan didiar brüker uunluke",
+       "tooltip-t-contributions": "List mä bidracher faan {{GENDER:$1|didiar brüker|detdiar brüker}} uunluke",
        "tooltip-t-emailuser": "En e-mail tu didiar brüker schüür",
        "tooltip-t-info": "Muar auer detdiar sidj",
        "tooltip-t-upload": "Datein huuchschüür",
        "feedback-thanks": "Föl soonk. Dan komentaar as üüb det sidj „[$2 $1]“ skrewen wurden.",
        "feedback-thanks-title": "Föl soonk!",
        "feedback-useragent": "Brüker-agent:",
-       "searchsuggest-search": "Schük",
+       "searchsuggest-search": "Schük uun {{SITENAME}}",
        "searchsuggest-containing": "diar banen as ...",
        "api-error-badaccess-groups": "Dü mutst nian datein tu detdiar Wiki huuchschüür.",
        "api-error-badtoken": "Intern feeler: Token as ferkiard.",
index 39ef2fd..c613bec 100644 (file)
        "subject-preview": "תצוגה מקדימה של הנושא:",
        "previewerrortext": "אירעה שגיאה בעת הניסיון להציג תצוגה מקדימה של השינויים שלך.",
        "blockedtitle": "המשתמש חסום",
-       "blockedtext": "'''שם המשתמש או כתובת ה־IP שלכם נחסמו.'''\n\nהחסימה בוצעה על ידי $1. הסיבה שניתנה לכך היא '''$2'''.\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nבאפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.\nאינכם יכולים להשתמש בתכונת \"שליחת דואר אלקטרוני למשתמש זה\" אם לא ציינתם כתובת דוא\"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא\"ל.\nכתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.\nאנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.",
-       "autoblockedtext": "כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $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כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.\nאנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.",
+       "blockedtext": "<strong>שם המשתמש או כתובת ה־IP שלך נחסמו.</strong>\n\nהחסימה בוצעה על ידי $1.\nהסיבה שניתנה לכך היא <em>$2</em>.\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nבאפשרותך ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.\nאין באפשרותך להשתמש בתכונת \"שליחת דואר אלקטרוני למשתמש זה\" אם לא ציינת כתובת דוא\"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלך]] או אם נחסמת משליחת דוא\"ל.\nכתובת ה־IP הנוכחית שלך היא $3, ומספר החסימה שלך הוא #$5.\nיש לציין את כל הפרטים הללו בכל פנייה לבירור החסימה.",
+       "autoblockedtext": "כתובת ה־IP שלך נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $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כתובת ה־IP הנוכחית שלך היא $3, ומספר החסימה שלך הוא #$5.\nיש לציין את כל הפרטים הללו בכל פנייה לבירור החסימה.",
+       "systemblockedtext": "שם המשתמש או כתובת ה־IP שלך נחסמו באופן אוטומטי על־ידי תוכנת מדיה־ויקי.\nהסיבה שניתנה לחסימה היא:\n\n:<em>$2</em>\n\n* תחילת החסימה: $8\n* פקיעת החסימה: $6\n* החסימה שבוצעה: $7\n\nכתובת ה־IP הנוכחית שלך היא $3.\nיש לציין את כל הפרטים הללו בכל פנייה לבירור החסימה.",
        "blockednoreason": "לא ניתנה סיבה",
        "whitelistedittext": "נדרשת $1 כדי לערוך דפים.",
        "confirmedittext": "עליכם לאמת את כתובת הדוא\"ל שלכם לפני שתוכלו לערוך דפים. אנא הגדירו ואמתו את כתובת הדוא\"ל שלכם באמצעות [[Special:Preferences|העדפות המשתמש]] שלכם.",
        "wlshowhidemine": "עריכות שלי",
        "wlshowhidecategorization": "שינויים בקטגוריות",
        "watchlist-options": "אפשרויות ברשימת המעקב",
-       "watchlist-mark-all-visited": "האם ברצונך לאפס את כל השינויים שלא צפית בהם ברשימת המעקב ולסמן את כל הדפים כאילו נצפו?",
        "watching": "בהוספה לרשימת המעקב...",
        "unwatching": "בהסרה מרשימת המעקב...",
        "watcherrortext": "אירעה שגיאה בעת שינוי הגדרות רשימת המעקב של \"$1\".",
        "pageinfo-length": "אורך הדף (בבייטים)",
        "pageinfo-article-id": "מזהה הדף",
        "pageinfo-language": "שפת התוכן של הדף",
+       "pageinfo-language-change": "שינוי",
        "pageinfo-content-model": "מודל התוכן של הדף",
        "pageinfo-content-model-change": "שינוי",
        "pageinfo-robot-policy": "איסוף על־ידי רובוטים של מנועי חיפוש",
        "log-show-hide-patrol": "$1 יומן שינויים בדוקים",
        "log-show-hide-tag": "$1 יומן תגיות",
        "confirm-markpatrolled-button": "אישור",
-       "confirm-markpatrolled-top": "×\9cס×\9e×\9f ×\90ת ×\92רס×\94 $3 ×©×\9c $2 כבדוקה?",
+       "confirm-markpatrolled-top": "×\9cס×\9e×\9f ×\90ת ×\92רס×\94 $3 ×\91×\93×£ $2 כבדוקה?",
        "deletedrevision": "מחיקת גרסה ישנה ($1)",
        "filedeleteerror-short": "שגיאה במחיקת הקובץ: $1",
        "filedeleteerror-long": "שגיאות שאירעו בעת מחיקת הקובץ:\n\n$1",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 לשם $4 בלי להשאיר הפניה",
        "logentry-move-move_redir": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 לשם $4 תוך דריסת הפניה",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 לשם $4 תוך דריסת הפניה ובלי להשאיר הפניה",
-       "logentry-patrol-patrol": "$1 {{GENDER:$2|ס×\99×\9e×\9f|ס×\99×\9e× ×\94}} ×\90ת ×\94×\92רס×\94 $4 ×\91×\93×£ $3 ×\9b×\91×\93×\95ק×\94",
-       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|ס×\99×\9e×\9f|ס×\99×\9e× ×\94}} ×\90×\95×\98×\95×\9e×\98×\99ת ×\90ת ×\94×\92רס×\94 $4 ×\91×\93×£ $3 ×\9b×\91×\93×\95ק×\94",
+       "logentry-patrol-patrol": "$1 {{GENDER:$2|סימן|סימנה}} את גרסה $4 בדף $3 כבדוקה",
+       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|סימן|סימנה}} אוטומטית את גרסה $4 בדף $3 כבדוקה",
        "logentry-newusers-newusers": "חשבון המשתמש $1 {{GENDER:$2|נוצר}}",
        "logentry-newusers-create": "חשבון המשתמש $1 {{GENDER:$2|נוצר}}",
        "logentry-newusers-create2": "חשבון המשתמש $3 נוצר על־ידי $1",
index 077048b..9f41d2b 100644 (file)
        "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-redirect": "(preusmjeravanje $1)",
+       "search-redirect": "(preusmjeravanje $1)",
        "search-section": "(odlomak $1)",
        "search-category": "(kategorija $1)",
        "search-suggest": "Mislili ste: $1",
        "prefs-advancedrendering": "Napredne mogućnosti",
        "prefs-advancedsearchoptions": "Napredne mogućnosti",
        "prefs-advancedwatchlist": "Napredne mogućnosti",
-       "prefs-displayrc": "Prikaži opcije",
+       "prefs-displayrc": "Mogućnosti prikaza",
        "prefs-displaywatchlist": "Mogućnosti prikaza",
        "prefs-diffs": "Razlike između inačica uređivanja",
        "prefs-help-prefershttps": "Ova mogućnost će stupiti na snagu kod sljedeće prijave.",
        "prefswarning-warning": "Napravili ste promjene u Vašim postavkama koje još nisu snimljene.\nAko napustite ovu stranicu bez pritiska na \"$1\", postavke neće biti ažurirane.",
        "prefs-tabs-navigation-hint": "Savjet: možete rabiti tipke sa strjelicama lijevo i desno za prebacivanje između kartica na popisu kartica.",
        "userrights": "Upravljanje suradničkim pravima",
-       "userrights-lookup-user": "Upravljaj suradničkim skupinama",
+       "userrights-lookup-user": "Izaberi suradnika",
        "userrights-user-editname": "Unesite suradničko ime:",
-       "editusergroup": "Uredi suradničke skupine",
+       "editusergroup": "Učitaj suradničke skupine",
        "editinguser": "Promjena suradničkih prava za suradnika '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Uredi suradničke skupine",
        "saveusergroups": "Snimi suradničke skupine",
        "tooltip-ca-move": "Premjesti ovu stranicu",
        "tooltip-ca-watch": "Dodaj ovu stranicu na svoj popis praćenja",
        "tooltip-ca-unwatch": "Ukloni ovu stranicu s popisa praćenja",
-       "tooltip-search": "Pretraži {{SITENAME}}",
+       "tooltip-search": "Pretraži projekt {{SITENAME}}",
        "tooltip-search-go": "Idi na stranicu s ovim imenom ako ona postoji",
        "tooltip-search-fulltext": "Traži ovaj tekst na svim stranicama",
        "tooltip-p-logo": "Posjeti glavnu stranicu",
        "feedback-termsofuse": "Slažem se da povratne informacije objavljujem u skladu s Uvjetima uporabe.",
        "feedback-thanks": "Hvala! Vaš odgovor je snimljen na stranicu \"[$2 $1]\".",
        "feedback-thanks-title": "Hvala!",
-       "searchsuggest-search": "Traži",
+       "searchsuggest-search": "Pretraži projekt {{SITENAME}}",
        "searchsuggest-containing": "sadrži....",
        "api-error-badaccess-groups": "Nemate ovlasti za postavljanje datoteka na ovu wiki.",
        "api-error-badtoken": "Interna pogrješka: Token nije ispravan.",
index dd6c345..e6c13ad 100644 (file)
        "usercssispublic": "Ricorda: le sottopagine CSS non devono contenere dati riservati poichè sono visualizzabili da altri utenti.",
        "restrictionsfield-badip": "Indirizzo IP o intervallo non valido: $1",
        "restrictionsfield-label": "Intervalli IP consentiti:",
-       "restrictionsfield-help": "Un indirizzo IP o intervallo CIDR per linea. Per consentire tutto, utilizza<br><code>0.0.0.0/0</code><br><code>::/0</code>"
+       "restrictionsfield-help": "Un indirizzo IP o intervallo CIDR per linea. Per consentire tutto, utilizza<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "revid": "versione $1"
 }
index 6f632db..4b7a372 100644 (file)
        "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-type": "უფლება",
        "restriction-level": "შეზღუდვის დონე:",
-       "minimum-size": "მინ ზომა",
+       "minimum-size": "მინ. ზომა",
        "maximum-size": "მაქს. ზომა",
        "pagesize": "(ბაიტი)",
        "restriction-edit": "რედაქტირება",
index 8dc9246..5917442 100644 (file)
        "eauthentsent": "입력한 이메일로 확인 이메일을 보냈습니다.\n다른 모든 형태의 이메일을 당신의 계정으로 보내기 전에, 계정이 정말 당신의 것인지 확인하기 위해 이메일 내용의 지시대로 계정 확인 절차를 실행해 주셔야 합니다.",
        "throttled-mailpassword": "비밀번호 재설정 이메일을 이미 최근 {{PLURAL:$1|$1시간}} 안에 보냈습니다.\n악용을 방지하기 위해 비밀번호 재설정 메일은 {{PLURAL:$1|$1시간}}마다 오직 하나씩만 보낼 수 있습니다.",
        "mailerror": "메일을 보내는 중 오류: $1",
-       "acct_creation_throttle_hit": "당신의 IP 주소를 이용한 방문자가 이전에 이미 {{PLURAL:$1|계정 $1개}}를 만들어, 계정 만들기 한도를 초과하였습니다.\n따라서 지금은 이 IP 주소로는 더 이상 계정을 만들 수 없습니다.",
+       "acct_creation_throttle_hit": "당신의 IP 주소를 이용한 방문자가 $2에 이미 {{PLURAL:$1|계정 $1개}}를 만들어, 계정 만들기 한도를 초과하였습니다.\n따라서 지금은 이 IP 주소로는 더 이상 계정을 만들 수 없습니다.",
        "emailauthenticated": "이메일 주소가 $2 $3에 인증되었습니다.",
        "emailnotauthenticated": "이메일 주소를 인증하지 않았습니다.\n이메일 확인 절차를 거치지 않으면 다음 이메일 기능을 사용할 수 없습니다.",
        "noemailprefs": "이 기능을 사용하려면 사용자 환경 설정에서 이메일 주소를 지정하세요.",
        "grant-basic": "기본 권한",
        "grant-viewdeleted": "삭제된 파일과 문서 보기",
        "grant-viewmywatchlist": "내 주시문서 목록 보기",
+       "grant-viewrestrictedlogs": "제한된 로그 기록 보기",
        "newuserlogpage": "사용자 만들기 기록",
        "newuserlogpagetext": "사용자가 만들어진 기록입니다.",
        "rightslog": "사용자 권한 기록",
        "action-writeapi": "API를 작성할",
        "action-delete": "이 문서 삭제하기",
        "action-deleterevision": "판을 삭제",
+       "action-deletelogentry": "로그 기록 삭제",
        "action-deletedhistory": "문서의 삭제된 기여의 역사 보기",
+       "action-deletedtext": "삭제된 특정판 내용 보기",
        "action-browsearchive": "삭제된 문서 검색",
        "action-undelete": "문서 되살리기",
-       "action-suppressrevision": "ì\9d´ ì\88¨ê²¨ì§\84 í\8c\90ì\9d\84 ê²\80í\86 í\95\98ê³  ë\90\98ì\82´ë¦´",
+       "action-suppressrevision": "ì\9d´ ì\88¨ê²¨ì§\84 í\8c\90ì\9d\84 ê²\80í\86 í\95\98ê³  ë³µêµ¬í\95\98기",
        "action-suppressionlog": "비공개 기록 보기",
        "action-block": "이 사용자가 편집하지 못하도록 차단",
        "action-protect": "이 문서의 보호 설정을 바꾸기",
        "action-userrights-interwiki": "다른 위키의 사용자 권한을 조정",
        "action-siteadmin": "데이터베이스를 잠그거나 잠금 해제하기",
        "action-sendemail": "이메일 보내기",
+       "action-editmyoptions": "자신의 환경 설정 편집",
        "action-editmywatchlist": "내 주시문서 목록 편집",
        "action-viewmywatchlist": "내 주시문서 목록 보기",
        "action-viewmyprivateinfo": "자신의 개인정보 보기",
        "pageinfo-length": "문서 길이 (바이트)",
        "pageinfo-article-id": "문서 ID",
        "pageinfo-language": "문서 내용 언어",
+       "pageinfo-language-change": "바꾸기",
        "pageinfo-content-model": "문서 내용 모델",
        "pageinfo-content-model-change": "변경",
        "pageinfo-robot-policy": "로봇에 의한 색인",
        "restrictionsfield-badip": "유효하지 않은 IP 주소나 대역: $1",
        "restrictionsfield-label": "허용된 IP 대역:",
        "restrictionsfield-help": "줄 단위의 하나의 IP 주소 또는 CIDR 대역입니다. 모든 곳에 적용하려면, 다음을 사용하세요<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "revid": "$1 판",
        "pageid": "페이지 ID $1"
 }
index 817902b..51b0ccc 100644 (file)
        "pageinfo-length": "Gréisst vun der Säit (a Bytes)",
        "pageinfo-article-id": "ID (Nummer) vun der Säit",
        "pageinfo-language": "Sprooch vum Inhalt vun der Säit",
+       "pageinfo-language-change": "änneren",
        "pageinfo-content-model": "Modell vun enger Säit mat Inhalt",
        "pageinfo-content-model-change": "änneren",
        "pageinfo-robot-policy": "Indexéierung duerch Botten",
        "userjsispublic": "DEnkt drun: Op JavaScript-Ënnersäite solle keng vertraulech Informatioune stoe well se vun anere Benotzer kënne gesi ginn.",
        "restrictionsfield-badip": "Net valabel IP-Adress oder Beräich: $1",
        "restrictionsfield-label": "Zougeloossen IP-Beräicher:",
-       "revid": "r$1"
+       "revid": "Versioun $1"
 }
index 2f0e429..1d1d5a9 100644 (file)
        "linkaccounts-success-text": "Paskyra buvo susieta.",
        "linkaccounts-submit": "Susieti paskyras",
        "unlinkaccounts": "Atsieti paskyras",
-       "unlinkaccounts-success": "Paskyra buvo atsieta."
+       "unlinkaccounts-success": "Paskyra buvo atsieta.",
+       "revid": "apžvalga $1"
 }
index 233b95f..c4bb409 100644 (file)
        "specialpages-group-login": "Pieslēgties / izveidot kontu",
        "specialpages-group-changes": "Pēdējās izmaiņas un reģistri",
        "specialpages-group-media": "Failu atskaites un augšuplāde",
-       "specialpages-group-users": "Lietotāji un piekļuves tiesības",
+       "specialpages-group-users": "Dalībnieki un piekļuves tiesības",
        "specialpages-group-highuse": "Bieži izmantotās lapas",
        "specialpages-group-pages": "Lapu saraksti",
        "specialpages-group-pagetools": "Lapu rīki",
index 5812742..bf65c6d 100644 (file)
        "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Ве молиме наведете ги сите подробности прикажани погоре, во вашата евентуална реакција.",
        "autoblockedtext": "Вашата IP-адреса е автоматски блокирана бидејќи била користена од страна на друг корисник, кој бил блокиран од $1.\nДаденото образложение е следново:\n\n:''$2''\n\n* Почеток на блокирањето: $8\n* Истекување на блокирањето: $6\n* Со намера да се блокира: $7\n\nМоже да контактирате со $1 или некој друг [[{{MediaWiki:Grouppage-sysop}}|администратор]] за да разговарате во врска со ова блокирање.\n\nИмајте предвид дека можеби нема да можете да ја искористите можноста „Е-пошта до овој корисник“ доколку не е назначена важечка е-поштенска адреса во [[Special:Preferences|вашите нагодувања]] и ви е забрането користитење на истата.\n\nВашата IP-адреса е $3, a ID на блокирањеto е $5.\nВе молиме наведете ги овие подробности доколку реагирате на блокирањето.",
+       "systemblockedtext": "Вашето корисничко име или IP-адреса е автоматски блокирано од МедијаВики.\nПонудена причина:\n\n:<em>$2</em>\n\n* Почеток на блокот: $8\n* Истек на блокот: $6\n* Блокот е наменет за: $7\n\nВашата тековна IP-адреса гласи $3.\nПрепишете ги сите горенаведени поединости доколку сакате да се распрашате кај надлежните во врска со блокот.",
        "blockednoreason": "не е наведена причина",
        "whitelistedittext": "Мора да сте $1 за да уредувате страници.",
        "confirmedittext": "Морате да ја потврдите вашата е-поштенска адреса пред да уредувате страници.\nПоставете ја и валидирајте ја вашата е-поштенска адреса преку вашите [[Special:Preferences|нагодувања]].",
        "wlshowhidemine": "моите уредувања",
        "wlshowhidecategorization": "категоризација на страници",
        "watchlist-options": "Поставки за список на набљудувања",
-       "watchlist-mark-all-visited": "Дали сигурно сакате ги отстраниѕр невидените промени во набљудуваните, означувајќи ги сите страници како посетени?",
        "watching": "Набљудување...",
        "unwatching": "Отстранувам од набљудувани...",
        "watcherrortext": "Се појави грешка при менувањето на вашите нагодувања набљудуваните за „$1“.",
        "pageinfo-length": "Големина на страницата (во бајти)",
        "pageinfo-article-id": "Назнака на страницата",
        "pageinfo-language": "Јазик на содржината на страницата",
+       "pageinfo-language-change": "смени",
        "pageinfo-content-model": "Модел на содржината на страницата",
        "pageinfo-content-model-change": "смени",
        "pageinfo-robot-policy": "Индексирање со роботи",
        "restrictionsfield-badip": "Неважечки IP-дијапазон на адреси: $1",
        "restrictionsfield-label": "Допуштени IP-опсези:",
        "restrictionsfield-help": "Една IP-адреса или CIDR-опсег по ред. За да овозможите сè, користете<br><code>0.0.0.0/0</code><br><code>::/0</code>",
-       "revid": "п$1",
+       "revid": "преработка $1",
        "pageid": "назнака на страницата $1"
 }
index f0376cb..d47a5c6 100644 (file)
        "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-redirect": "($1 á\80\9eá\80­á\80¯á\80· á\80\95á\80¼á\80\94á\80ºá\80\8aá\80½á\80¾á\80\94á\80ºးသည်)",
+       "search-redirect": "($1 á\80\99á\80¾ á\80\95á\80¼á\80\94á\80ºá\80\8aá\80½á\80¾á\80\94á\80ºá\80¸á\80\91á\80¬းသည်)",
        "search-section": "(အပိုင်း $1)",
        "search-category": "(ကဏ္ဍ $1)",
        "search-suggest": "$1 ဟု ဆိုလိုပါသလား။",
        "prefs-tokenwatchlist": "တိုကင်",
        "prefs-diffs": "ကွဲပြားချက်",
        "userrights": "အသုံးပြုသူ၏ အခွင့်အရေးများကို စီမံခန့်ခွဲခြင်း",
-       "userrights-lookup-user": "á\80¡á\80\9eá\80¯á\80¶á\80¸á\80\95á\80¼á\80¯á\80\9eá\80°á\80¡á\80¯á\80\95á\80ºá\80\85á\80¯á\80\80á\80­á\80¯ á\80\85á\80®á\80\99á\80ရန်",
+       "userrights-lookup-user": "á\80¡á\80\9eá\80¯á\80¶á\80¸á\80\95á\80¼á\80¯á\80\9eá\80°á\80\90á\80\85á\80ºá\80¦á\80¸á\80\80á\80­á\80¯ á\80\9bá\80½á\80±á\80¸á\80\81á\80»á\80\9aá\80ºရန်",
        "userrights-user-editname": "အသုံးပြုသူအမည်တစ်ခုကို ထည့်ပါ -",
-       "editusergroup": "{{GENDER:$1|အသုံးပြုသူ}}အုပ်စုများကို တည်းဖြတ်ရန်",
+       "editusergroup": "အသုံးပြုသူအုပ်စုကို ဖော်ပြရန်",
        "editinguser": "{{GENDER:$1|အသုံးပြုသူ}} <strong>[[User:$1|$1]]</strong> $2 ၏ အသုံးပြုအခွင့်အရေးများကို ပြောင်းလဲခြင်း",
        "userrights-editusergroup": "အသုံးပြုသူအုပ်စုကို တည်းဖြတ်ရန်",
        "saveusergroups": "{{GENDER:$1|အသုံးပြုသူ}}အုပ်စုများကို သိမ်းရန်",
        "userrights-groupsmember": "အဖွဲ့ဝင်",
        "userrights-reason": "အ​ကြောင်း​ပြ​ချက်:",
-       "userrights-notallowed": "သင့်တွင် အသုံးပြုသူအခွင့်အရေး ပေါင်းထည့်ရန်  သို့ ဖယ်ရှားရန် အခွင့်အရေး မရှိပါ။",
        "userrights-changeable-col": "သင်ပြောင်းလဲပေးနိုင်သောအုပ်စုများ",
        "userrights-unchangeable-col": "သင်ပြောင်းလဲမပေးနိုင်သောအုပ်စုများ",
        "group": "အုပ်စု -",
        "action-reupload": "ဤရှိပြီးသားဖိုင်ကို ထပ်ရေးရန်",
        "action-writeapi": "ရေးသားမှု API ကို သုံးရန်",
        "action-delete": "ဤစာမျက်နှာကို ဖျက်ရန်",
-       "action-deleterevision": "á\80¤á\80\99á\80°ကို ဖျက်ရန်",
-       "action-deletedhistory": "á\80¤á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\81\8fဖျက်လိုက်သောရာဇဝင်ကို ကြည့်ရန်",
+       "action-deleterevision": "á\80\99á\80°á\80\99á\80»á\80¬á\80¸ကို ဖျက်ရန်",
+       "action-deletedhistory": "á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\90á\80\85á\80ºá\80\81á\80¯á\81\8f ဖျက်လိုက်သောရာဇဝင်ကို ကြည့်ရန်",
        "action-browsearchive": "ဖျက်ပစ်လိုက်သော စာမျက်နှာများကို ရှာရန်",
-       "action-undelete": "á\80¤á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\80á\80­á\80¯ မဖျက်တော့ရန်",
+       "action-undelete": "á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸ á\80\95á\80¼á\80\94á\80ºမဖျက်တော့ရန်",
        "action-suppressionlog": "ဤကိုယ်ပိုင်မှတ်တမ်းကို ကြည့်ရန်",
        "action-block": "တည်းဖြတ်ခြင်းမှ ဤအသုံးပြုသူကို ပိတ်ပင်ရန်",
        "action-protect": "ဤစာမျက်နှာအတွက် ကာကွယ်မှုအဆင့်ကို ပြောင်းလဲရန်",
        "rcshowhideminor-hide": "ဝှက်",
        "rcshowhidebots": "ဘော့များ $1ရန်",
        "rcshowhidebots-show": "ပြ",
-       "rcshowhidebots-hide": "ဝှက်ရန်",
+       "rcshowhidebots-hide": "ဝှက်",
        "rcshowhideliu": "မှတ်ပုံတင်ထားသော အသုံးပြုသူများ $1",
        "rcshowhideliu-show": "ပြသရန်",
        "rcshowhideliu-hide": "ဝှက်",
        "logentry-upload-overwrite": "$3 ၏ ဗားရှင်းအသစ်ကို $1 {{GENDER:$2|upload တင်ခဲ့သည်}}",
        "rightsnone": "(ဘာမှမရှိ)",
        "revdelete-summary": "အကျဉ်းချုပ်ကို တည်းဖြတ်ရန်",
-       "searchsuggest-search": "ရှာဖွေရန်",
+       "searchsuggest-search": "{{SITENAME}} တွင် ရှာဖွေရန်",
        "api-error-filename-tooshort": "ဖိုင်အမည်သည် တိုလွန်းသည်။",
        "api-error-filetype-banned": "ဤဖိုင်အမျိုးအစားကို တားမြစ်ထားသည်။",
        "api-error-http": "အတွင်းပိုင်းအမှား - ဆာဗာကို မဆက်သွယ်နိုင်ပါ။",
index 6ec8aec..6c21e03 100644 (file)
        "january-gen": "Ic cē mētztli",
        "february-gen": "Īcōmemētztli",
        "march-gen": "Īcyēyimētztli",
-       "april-gen": "Ic nāuhtetl mētztli",
+       "april-gen": "Ic nauhtetl metztli",
        "may-gen": "Īcmācuīllimētztli",
-       "june-gen": "Ic chicuacemmētztli",
-       "july-gen": "Ic chicōme mētztli",
+       "june-gen": "Ic chicuacemmetztli",
+       "july-gen": "Ic chicome metztli",
        "august-gen": "Īcchicuēyimētztli",
        "september-gen": "Īcchiucnāhuimētztli",
        "october-gen": "Īcmahtlāctetlmētztli",
        "shown-title": "Monextiz $1 {{PLURAL:$1|mochihualiztli}} cecen amatl",
        "viewprevnext": "Xiquintta ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Ye ia zāzanilli ītōca \"[[$1]]\" inīn huiquipan'''",
-       "searchmenu-new": "<strong>Ticchīhuāz in zāzanilli «[[:$1]]» inīn huiquipan.</strong> {{PLURAL:$2|0=|Nō xiquitta in tlanāmiquiliztli in mochīhualiztli.}}",
+       "searchmenu-new": "<strong>Ticchihuaz in tlahcuilolamatl «[[:$1]]» inin huiquipan.</strong> {{PLURAL:$2|0=|No xiquitta in tlanamiquiliztli itech tlatemoliztli.}}",
        "searchprofile-articles": "Itech tlahcuilolamatl",
        "searchprofile-images": "Nepapan media",
        "searchprofile-everything": "Mochi",
        "exif-gpslongitude": "Huehtlatzīncāyōtl",
        "exif-gpsaltitude": "Huehcapancayōtl",
        "exif-gpstimestamp": "GPS cāhuitl (atomic tepozcāhuitl)",
-       "exif-iimcategory": "Tlaìxmatkàyòtlàlilòtl",
+       "exif-iimcategory": "Neneuhcayotl",
        "exif-orientation-1": "Yēctli",
        "exif-meteringmode-255": "Occē",
        "exif-lightsource-1": "Tōnameyōtl",
index 80765e6..01bcad4 100644 (file)
        "wlshowhidemine": "mine redigeringer",
        "wlshowhidecategorization": "sidekategorisering",
        "watchlist-options": "Alternativ for overvåkningslisten",
-       "watchlist-mark-all-visited": "Er du sikker på at du vil resette usette endringer på overvåkningslisten ved å merke alle sider som besøkte?",
        "watching": "Overvåker…",
        "unwatching": "Fjerner fra overvåkningsliste…",
        "watcherrortext": "Det oppsto en feil under endring av overvåkningsinnstillingene dine for «$1».",
index 528d6ee..4f46076 100644 (file)
@@ -81,7 +81,8 @@
                        "Jeleniccz",
                        "MrLeopold",
                        "Hex",
-                       "Xxmarijnw"
+                       "Xxmarijnw",
+                       "Mainframe98"
                ]
        },
        "tog-underline": "Koppelingen onderstrepen:",
        "unprotectthispage": "Beveiliging van deze pagina wijzigen",
        "newpage": "Nieuwe pagina",
        "talkpage": "Overlegpagina",
-       "talkpagelinktext": "Overleg",
+       "talkpagelinktext": "overleg",
        "specialpage": "Speciale pagina",
        "personaltools": "Persoonlijke instellingen",
        "articlepage": "Pagina bekijken",
        "pool-servererror": "De dienst \"pool counter\" is niet beschikbaar ($1).",
        "poolcounter-usage-error": "Gebruiksfout: $1",
        "aboutsite": "Over {{SITENAME}}",
-       "aboutpage": "Project:Info",
+       "aboutpage": "Project:Over",
        "copyright": "De inhoud is beschikbaar onder de $1 tenzij anders aangegeven.",
        "copyrightpage": "{{ns:project}}:Auteursrechten",
        "currentevents": "In het nieuws",
        "prefs-help-recentchangescount": "Dit geldt voor recente wijzigingen, paginageschiedenis en logboekpagina's.",
        "prefs-help-watchlist-token2": "Dit is de geheime sleutel voor de webfeed van uw volglijst.\nIedereen die het token kent, kan uw volglijst bekijken, dus deel dit token niet.\nU kunt de [[Special:ResetTokens|tokens opnieuw instellen]] als u dat wilt.",
        "savedprefs": "Uw voorkeuren zijn opgeslagen.",
-       "savedrights": "De gebruikersrechten van {{GENDER:$1|$1}} zijn opgeslagen.",
+       "savedrights": "De gebruikergroepen van {{GENDER:$1|$1}} zijn opgeslagen.",
        "timezonelegend": "Tijdzone:",
        "localtime": "Plaatselijke tijd:",
        "timezoneuseserverdefault": "Wikistandaard gebruiken ($1)",
        "userrights": "Gebruikersrechtenbeheer",
        "userrights-lookup-user": "Een gebruiker selecteren",
        "userrights-user-editname": "Voer een gebruikersnaam in:",
-       "editusergroup": "{{GENDER:$1|Gebruikersgroepen}} wijzigen",
+       "editusergroup": "Gebruikersgroepen wijzigen",
        "editinguser": "Bezig met wijzigen van de gebruikersrechten van gebruiker '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Gebruikersgroepen wijzigen",
        "saveusergroups": "{{GENDER:$1|Gebruikersgroepen}} opslaan",
        "action-upload_by_url": "dit bestand vanaf een URL te uploaden",
        "action-writeapi": "via de API bewerkingen uit te voeren",
        "action-delete": "deze pagina te verwijderen",
-       "action-deleterevision": "deze versie te verwijderen",
-       "action-deletedhistory": "de verwijderde versies van deze pagina te bekijken",
+       "action-deleterevision": "verwijder versies",
+       "action-deletelogentry": "logboekregels te verwijderen",
+       "action-deletedhistory": "de verwijderde versies van een pagina te bekijken",
+       "action-deletedtext": "de verwijderde versietekst te bekijken",
        "action-browsearchive": "verwijderde pagina's te zoeken",
        "action-undelete": "deze pagina terug te plaatsen",
-       "action-suppressrevision": "deze verborgen versie te bekijken en terug te plaatsen",
+       "action-suppressrevision": "verborgen versies te bekijken en terug te plaatsen",
        "action-suppressionlog": "dit beschermde logboek te bekijken",
        "action-block": "deze gebruiker een bewerkingsblokkade op te leggen",
        "action-protect": "het beveiligingsniveau van deze pagina aan te passen",
        "action-userrights-interwiki": "gebruikersrechten van gebruikers van andere wiki's te bewerken",
        "action-siteadmin": "de database af te sluiten of open te stellen",
        "action-sendemail": "e-mails te verzenden",
+       "action-editmyoptions": "uw eigen voorkeuren bewerken",
        "action-editmywatchlist": "uw eigen volglijst te bewerken",
        "action-viewmywatchlist": "uw eigen volglijst te bekijken",
        "action-viewmyprivateinfo": "uw eigen privégegevens te bekijken",
        "emailccsubject": "Kopie van uw bericht aan $1: $2",
        "emailsent": "E-mail verzonden",
        "emailsenttext": "Uw e-mail is verzonden.",
-       "emailuserfooter": "Deze e-mail is {{GENDER:$1|verstuurd}} door $1 aan {{GENDER:$2|$2}} door de functie \"{{int:emailuser}}\" van {{SITENAME}}.",
+       "emailuserfooter": "Deze e-mail is {{GENDER:$1|verstuurd}} door $1 aan {{GENDER:$2|$2}} door de functie \"{{int:emailuser}}\" van {{SITENAME}}. {{GENDER:$2|Uw}} e-mail wordt direct naar de {{GENDER:$1|oorspronkelijke afzender}} verstuurd, waardoor {{GENDER:$2|uw}} e-mailadres aan {{GENDER:$1|hun}} onthult wordt.",
        "usermessage-summary": "Systeembericht achtergelaten",
        "usermessage-editor": "Systeembericht",
        "watchlist": "Volglijst",
        "sp-contributions-newonly": "Alleen nieuwe pagina's weergeven",
        "sp-contributions-hideminor": "Kleine bewerkingen verbergen",
        "sp-contributions-submit": "Bekijken",
-       "whatlinkshere": "Koppelingen naar deze pagina",
+       "whatlinkshere": "Verwijzingen naar deze pagina",
        "whatlinkshere-title": "Pagina's die verwijzen naar \"$1\"",
        "whatlinkshere-page": "Pagina:",
        "linkshere": "De volgende pagina's verwijzen naar '''[[:$1]]''':",
        "movelogpagetext": "Hieronder staan hernoemde pagina's.",
        "movesubpage": "{{PLURAL:$1|Subpagina|Subpagina's}}",
        "movesubpagetext": "De {{PLURAL:$1|subpagina|$1 subpagina's}} van deze pagina {{PLURAL:$1|wordt|worden}} hieronder weergegeven.",
+       "movesubpagetalktext": "De bijbehorende overlegpagina heeft $1 {{PLURAL:$1|deelpagina|deelpagina's}} hierbeneden getoond.",
        "movenosubpage": "Deze pagina heeft geen subpagina's.",
        "movereason": "Reden:",
        "revertmove": "terugdraaien",
        "tooltip-ca-move": "Deze pagina hernoemen",
        "tooltip-ca-watch": "Deze pagina aan mijn volglijst toevoegen",
        "tooltip-ca-unwatch": "Deze pagina van mijn volglijst verwijderen",
-       "tooltip-search": "Zoeken in {{SITENAME}}",
-       "tooltip-search-go": "Naar een pagina met deze naam gaan als die bestaat",
+       "tooltip-search": "Doorzoek {{SITENAME}}",
+       "tooltip-search-go": "Naar een pagina met deze naam gaan als deze bestaat",
        "tooltip-search-fulltext": "Alle pagina's op deze tekst doorzoeken",
        "tooltip-p-logo": "Naar de hoofdpagina gaan",
        "tooltip-n-mainpage": "Naar de hoofdpagina gaan",
        "pageinfo-length": "Paginalengte (in bytes)",
        "pageinfo-article-id": "Paginanummer",
        "pageinfo-language": "Taal voor de pagina",
+       "pageinfo-language-change": "wijziging",
        "pageinfo-content-model": "Paginainhoudmodel",
        "pageinfo-content-model-change": "wijzigen",
        "pageinfo-robot-policy": "Indexering door robots",
        "pageinfo-category-pages": "Aantal pagina's",
        "pageinfo-category-subcats": "Aantal subcategorieën",
        "pageinfo-category-files": "Aantal bestanden",
+       "pageinfo-user-id": "Gebruikers-ID",
        "markaspatrolleddiff": "Als gecontroleerd markeren",
        "markaspatrolledtext": "Deze pagina als gecontroleerd markeren",
        "markaspatrolledtext-file": "Deze bestandsversie als gecontroleerd markeren",
        "feedback-thanks": "Bedankt! Uw terugkoppeling is op de pagina \"[$2 $1]\" geplaatst.",
        "feedback-thanks-title": "Bedankt!",
        "feedback-useragent": "Useragent:",
-       "searchsuggest-search": "Zoeken in {{SITENAME}}",
+       "searchsuggest-search": "Doorzoek {{SITENAME}}",
        "searchsuggest-containing": "bevat...",
        "api-error-badaccess-groups": "U mag geen bestanden uploaden in deze wiki.",
        "api-error-badtoken": "Interne fout: het token klopt niet.",
index 4197703..9ae24b4 100644 (file)
        "action-upload_by_url": "przesłania tego pliku z adresu URL",
        "action-writeapi": "zapisu poprzez interfejs API",
        "action-delete": "usunięcia tej strony",
-       "action-deleterevision": "usunięcia tej wersji",
-       "action-deletedhistory": "podglądu historii usunięć tej strony",
+       "action-deleterevision": "usuwania wersji",
+       "action-deletedhistory": "podglądu historii usunięć strony",
        "action-browsearchive": "przeszukiwania usuniętych stron",
-       "action-undelete": "odtworzenia tej strony",
-       "action-suppressrevision": "podglądu i odtworzenia tej wersji ukrytej",
+       "action-undelete": "odtwarzania stron",
+       "action-suppressrevision": "podglądu i odtwarzania ukrytych wersji",
        "action-suppressionlog": "podglądu rejestru ukrywania",
        "action-block": "zablokowania temu użytkownikowi możliwości edycji",
        "action-protect": "zmiany poziomu zabezpieczenia tej strony",
        "usercssispublic": "Uwaga: Podstrony z kodem CSS są widoczne publicznie i nie powinny zawierać poufnych danych.",
        "restrictionsfield-badip": "Nieprawidłowy adres IP lub zakres adresów: $1",
        "restrictionsfield-label": "Dozwolone zakresy adresów IP:",
-       "restrictionsfield-help": "Jeden adres IP lub zakres CIDR w wierszu. Aby zaznaczyć wszystkie, użyj<br><code>0.0.0.0/0</code><br><code>::/0</code>"
+       "restrictionsfield-help": "Jeden adres IP lub zakres CIDR w wierszu. Aby zaznaczyć wszystkie, użyj<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "revid": "wersja $1"
 }
index e4cfb10..1563f88 100644 (file)
        "summary-preview": "Preview of the edit summary, shown under the edit summary itself.\nShould match: {{msg-mw|summary}}.",
        "subject-preview": "Should match {{msg-mw|subject}}",
        "previewerrortext": "When a user has the editing preference LivePreview enabled, clicked the Preview or Show Changes button in the edit page and the action did not succeed.",
-       "blockedtitle": "Used as title displayed for blocked users. The corresponding message body is one of the following messages:\n* {{msg-mw|Blockedtext|notext=1}}\n* {{msg-mw|Autoblockedtext|notext=1}}",
-       "blockedtext": "Text displayed to blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link)\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Autoblockedtext}}",
-       "autoblockedtext": "Text displayed to automatically blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block (in case of autoblocks: {{msg-mw|autoblocker}})\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link). Use it for GENDER.\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Blockedtext}}",
+       "blockedtitle": "Used as title displayed for blocked users. The corresponding message body is one of the following messages:\n* {{msg-mw|Blockedtext|notext=1}}\n* {{msg-mw|Autoblockedtext|notext=1}}\n* {{msg-mw|Systemblockedtext}}",
+       "blockedtext": "Text displayed to blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link)\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Autoblockedtext}}\n* {{msg-mw|Systemblockedtext}}",
+       "autoblockedtext": "Text displayed to automatically blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block (in case of autoblocks: {{msg-mw|autoblocker}})\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link). Use it for GENDER.\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Blockedtext}}\n* {{msg-mw|Systemblockedtext}}",
+       "systemblockedtext": "Text displayed to requests blocked by MediaWiki configuration.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - (Unused) A dummy user attributed as the blocker, possibly as a link to a user page.\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the dummy blocking user's username (plain text, without the link).\n* $5 - A short string indicating the type of system block.\n* $6 - the expiry of the block\n* $7 - the intended target of the block\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Blockedtext}}\n* {{msg-mw|Autoblockedtext}}",
        "blockednoreason": "Substituted with <code>$2</code> in the following message if the reason is not given:\n* {{msg-mw|cantcreateaccount-text}}.\n{{Identical|No reason given}}",
        "whitelistedittext": "Used as error message. Parameters:\n* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description\nSee also:\n* {{msg-mw|Nocreatetext}}\n* {{msg-mw|Uploadnologintext}}\n* {{msg-mw|Loginreqpagetext}}",
        "confirmedittext": "Used as error message.",
        "removedwatchtext": "Message shown after clicking on the {{msg-mw|Unwatch}} tab in a content namespace page. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatchtext}}\n* {{msg-mw|Removedwatchtext-talk}}",
        "removedwatchtext-talk": "Message shown after clicking on the {{msg-mw|Unwatch}} tab in a talk namespace page. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatchtext-talk}}\n* {{msg-mw|Removedwatchtext}}",
        "removedwatchtext-short": "Explanation shown when unwatching item from [[Special:UnwatchedPages]].\n\nSee also:\n* {{msg-mw|Addedwatchtext-short}}.\n* {{msg-mw|Removedwatchtext}}.",
-       "watch": "{{doc-actionlink}}\nName of the Watch tab. Should be in the imperative mood.\n\nSee also:\n* {{msg-mw|Watch}}\n* {{msg-mw|Accesskey-ca-watch}}\n* {{msg-mw|Tooltip-ca-watch}}",
+       "watch": "{{doc-actionlink}}\nName of the Watch tab. Should be in the imperative mood.\n\nSee also:\n* {{msg-mw|Watch}}\n* {{msg-mw|Accesskey-ca-watch}}\n* {{msg-mw|Tooltip-ca-watch}}\n{{Identical|Watch}}",
        "watchthispage": "Used as link text.\n\nSee also:\n* {{msg-mw|Unwatchthispage|link text}}\n* {{msg-mw|Notanarticle|error message}}\n{{Identical|Watch this page}}",
        "unwatch": "{{doc-actionlink}}\nLabel of \"Unwatch\" tab.\n\nSee also:\n* {{msg-mw|Unwatch}}\n* {{msg-mw|Accesskey-ca-unwatch}}\n* {{msg-mw|Tooltip-ca-unwatch}}",
        "unwatchthispage": "Used as link text.\n\nSee also:\n* {{msg-mw|Watchthispage|link text}}\n* {{msg-mw|Notanarticle|error message}}",
        "wlshowhidemine": "Option text in [[Special:Watchlist]]. Cf. {{msg-mw|rcshowhidemine}}.",
        "wlshowhidecategorization": "Option text in [[Special:Watchlist]]. Cf. {{msg-mw|rcshowhidecategorization}}.",
        "watchlist-options": "Legend of the fieldset of [[Special:Watchlist]]\n\nSee also:\n* {{msg-mw|Watchlist-details|watchlist header}}\n* {{msg-mw|Wlheader-enotif|watchlist header}}\n* {{msg-mw|enotif reset|Submit button text}}",
-       "watchlist-mark-all-visited": "Dialog text in [[Special:Watchlist]] displayed for confirming whether the user wants to reset unseen watchlist changes by marking all pages as visited.",
        "watching": "Text displayed when clicked on the watch tab: {{msg-mw|Watch}}. It means the wiki is adding that page to your watchlist.",
        "unwatching": "Text displayed when clicked on the unwatch tab: {{msg-mw|Unwatch}}. It means the wiki is removing that page from your watchlist.",
        "watcherrortext": "When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed.\n\nThis message is used raw and should not contain wikitext.\n\nParameters:\n* $1 - ...\nSee also:\n* {{msg-mw|Addedwatchtext}}",
        "pageinfo-length": "The length of the page, in bytes.",
        "pageinfo-article-id": "The numeric identifier of the page.\n{{Identical|Page ID}}",
        "pageinfo-language": "Language in which the page content is written.",
+       "pageinfo-language-change": "Link text for a link to Special:PageLanguage. The link will be wrapped in parenthesis.\n{{Identical|Change}}",
        "pageinfo-content-model": "The model in which the page content is written.\n\nUsed as label at [{{fullurl:Main Page|action=info}} action=info]. Followed by one of the following messages:\n* {{msg-mw|Content-model-wikitext}}\n* {{msg-mw|Content-model-javascript}}\n* {{msg-mw|Content-model-css}}\n* {{msg-mw|Content-model-text}}",
        "pageinfo-content-model-change": "Link text for a link to Special:ChangeContentModel. The link will be wrapped in parenthesis.\n{{Identical|Change}}",
        "pageinfo-robot-policy": "The search engine status of the page.\n\nUsed as label. Followed by any one of the following messages:\n*{{msg-mw|Pageinfo-robot-index}}\n*{{msg-mw|Pageinfo-robot-noindex}}",
        "restrictionsfield-badip": "An error message shown when one entered an invalid IP address or range in a restrictions field (such as Special:BotPassword). $1 is the IP address.",
        "restrictionsfield-label": "Field label shown for restriction fields (e.g. on Special:BotPassword).",
        "restrictionsfield-help": "Placeholder text displayed in restriction fields (e.g. on Special:BotPassword).",
-       "revid": "Used to format a revision ID number in text. Parameters:\n* $1 - Revision ID number.",
+       "revid": "Used to format a revision ID number in text. Parameters:\n* $1 - Revision ID number.\n{{Identical|Revision}}",
        "pageid": "Used to format a page ID number in text. Parameters:\n* $1 - Page ID number."
 }
index b5706c5..65eb76a 100644 (file)
        "version-libraries-description": "Ойуулааһын",
        "version-libraries-authors": "Ааптар",
        "redirect": "Билэттэн, кыттааччыттан, сирэйтэн эбэтэр барыл идентификаторыттан утаарыы",
-       "redirect-summary": "Бу аналлаах сирэй билэҕэ (билэ аатыттан), сирэйгэ (барыл эбэтэр сирэй идентификааторыттан) эбэтэр кыттааччы сирэйигэр (кыттааччы идентификаторыттан) утаарар. Туһаныы: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]] эбэтэр\n[[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Бу аналлаах сирэй билэҕэ (билэ аатыттан), сирэйгэ (торум эбэтэр сирэй идентификаторыттан) эбэтэр кыттааччы сирэйигэр (кыттааччы идентификаторыттан) утаарар. Туһаныы: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]],\n[[{{#Special:Redirect}}/user/101]] эбэтэр [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Толор",
        "redirect-lookup": "Көрдөт:",
        "redirect-value": "Суолтата:",
        "tag-filter-submit": "Фильтр",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Тиэк|Тиэктэр}}]]: $2)",
        "tag-mw-contentmodelchange": "Иһинээҕи киэбин уларытыы сурунаала",
+       "tag-mw-contentmodelchange-description": "Сирэй [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel ис тутулун уларытар] көннөрүүлэр",
        "tags-title": "Бэлиэлэр (тиэктэр)",
        "tags-intro": "Бу сирэйгэ бырагыраамма уларытыылары бэлиэтиир анал бэлиэлэрин (тиэктэрин) тиһиктэрэ уонна ол бэлиэлэр суолталара көстөр.",
        "tags-tag": "Бэлиэ (тиэк) аата",
        "tags-actions-header": "Дьайыылар",
        "tags-active-yes": "Сөп",
        "tags-active-no": "Суох",
-       "tags-source-extension": "Ð\9aÑ\8dÒ¥Ñ\8dÑ\82ииÑ\82инÑ\8dн Ð±Ñ\8bһааÑ\80Ñ\8bллаÑ\80",
+       "tags-source-extension": "ТÑ\83һанÑ\8bллаÑ\80 Ð±Ñ\8bÑ\80агÑ\8bÑ\80аамаÑ\82Ñ\82ан Ñ\82Ñ\83Ñ\82Ñ\83лÑ\83кÑ\82ааÑ\85",
        "tags-source-manual": "Кыттааччылар уонна буоттар киллэрэллэр",
        "tags-source-none": "Аны туттуллубат",
        "tags-edit": "уларытыы",
        "tags-deactivate": "араар",
        "tags-hitcount": "$1 {{PLURAL:$1|уларытыы|уларытыылар}}",
        "tags-manage-no-permission": "Тиэктэри уларытар кыаҕыҥ суох эбит.",
-       "tags-manage-blocked": "Хааччахтаммыт буолаҥҥын уларытыы бэлиэлэрин уларытар кыаҕыҥ суох.",
+       "tags-manage-blocked": "Хааччахтаммыт {{GENDER:$1|буолаҥҥын}} уларытыы тиэктэрин уларытар кыаҕыҥ суох.",
        "tags-create-heading": "Саҥа тиэги оҥоруу",
        "tags-create-explanation": "Саҥа оҥоһуллубут тиэктэри кыттааччылар уонна буоттар уларытар кыахтаах буолуохтара.",
        "tags-create-tag-name": "Бэлиэ аата:",
        "tags-delete-not-found": "Маннык $1 бэлиэ суох эбит.",
        "tags-delete-too-many-uses": "«$1» тиэк $2 торумтан ордукка туттуллар, ол аата сотуллар кыаҕа суох.",
        "tags-delete-warnings-after-delete": "«$1» тиэк сотулунна, ол эрээри {{PLURAL:$2|маннык сэрэтии|маннык сэрэтиилэр}} көһүннүлэр:",
+       "tags-delete-no-permission": "Тиэги уларыппыттарын көннөрөр кыаҕыҥ суох эбит.",
        "tags-activate-title": "Тиэги холбоо",
        "tags-activate-question": "\"$1\" тиэги холбоон эрэҕин.",
        "tags-activate-reason": "Төрүөтэ:",
        "tags-deactivate-not-allowed": "\"$1\" тиэги араарар табыллыбат.",
        "tags-deactivate-submit": "араар",
        "tags-apply-no-permission": "Бэйэҥ уларытыыгар уларытыы тиэгин туруорар кыаҕыҥ суох эбит.",
-       "tags-apply-blocked": "Хатана сылдьар кэмҥитигэр көннөрүүлэргитигэр уларытыы бэлиэлэрин туттаргыт табыллыбат.",
+       "tags-apply-blocked": "Хааччахтана сылдьар кэмҥэр көннөрүүлэриҥ тиэгин уларытарыҥ табыллыбат.",
        "tags-apply-not-allowed-one": "«$1» тиэги илииннэн туруорар табыллыбат эбит.",
        "tags-apply-not-allowed-multi": "Маннык {{PLURAL:$2|тиэк илиинэн угуллубат|тиэктэр илиинэн угуллубаттар}}: $1",
        "tags-update-no-permission": "Сурунаал тус-туспа торумнарын уонна суруктарын тиэгин эбэр уонна уларытар кыаҕыҥ суох эбит.",
-       "tags-update-blocked": "Хааччахтаммыт буолаҥҥыт уларытыы бэлиэлэрин уларытар кыаҕыҥ суох.",
+       "tags-update-blocked": "Хааччахтаммыт буолаҥҥын уларытыы тиэктэрин уларытар кыаҕыҥ суох.",
        "tags-update-add-not-allowed-one": "«$1» тиэги илииннэн туруорар табыллыбат эбит.",
        "tags-update-add-not-allowed-multi": "Маннык {{PLURAL:$2|тиэк илиинэн угуллубат|тиэктэр илиинэн угуллубаттар}}: $1",
        "tags-update-remove-not-allowed-one": "«$1» тиэги сотор табыллыбат эбит.",
        "tags-edit-revision-legend": "{{PLURAL:$1|Бу торумҥа|Бары $1 торумҥа}} тиэги угуу эбэтэр онтон сотуу",
        "tags-edit-logentry-legend": "Сурунаал {{PLURAL:$1|суругуттан|$1 бары суруктарыттан}} тиэги сот биитэр онно киллэр",
        "tags-edit-existing-tags": "Баар тиэктэр:",
-       "tags-edit-existing-tags-none": "''Суох''",
+       "tags-edit-existing-tags-none": "<em>Суох</em>",
        "tags-edit-new-tags": "Саҥа тиэктэр:",
        "tags-edit-add": "Бу тиэктэри эп:",
        "tags-edit-remove": "Бу тиэктэри сот:",
        "tags-edit-reason": "Төрүөтэ:",
        "tags-edit-revision-submit": "Уларытыылары бу {{PLURAL:$1|торумҥа|$1 торумнарга}} тарҕат",
        "tags-edit-logentry-submit": "Уларытыылары сурунаал бу {{PLURAL:$1|суругар|$1 суруктарыгар}} тарҕат",
-       "tags-edit-success": "Уларытыы сөпкө бигэргэннэ.",
+       "tags-edit-success": "Уларытыы бигэргэннэ.",
        "tags-edit-failure": "Уларытыылары туттар табыллыбата.\n$1",
        "tags-edit-nooldid-title": "Торум чопчу ыйыллыбата",
        "tags-edit-nooldid-text": "Ханнык торумҥа туттулларын талбатаххын, биитэр талбыт торумуҥ суох эбит.",
        "htmlform-cloner-create": "Өссө эп",
        "htmlform-cloner-delete": "Сот",
        "htmlform-cloner-required": "Саатар биирин толоруохтаах эбиккин.",
+       "htmlform-date-placeholder": "СССС-ЫЫ-КК",
+       "htmlform-time-placeholder": "ЧЧ:ММ:СС",
+       "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS",
+       "htmlform-date-invalid": "Суруйбутуҥ күнү-дьылы бэлиэтээһиҥҥэ майгыннаабат. Маннык көрүҥү туһан: СССС-ЫЫ-КК.",
+       "htmlform-time-invalid": "Суруйбутуҥ кэми бэлиэтээһиҥҥэ майгыннаабат. Маннык көрүҥү туһан: ЧЧ-ММ-СС.",
        "htmlform-title-badnamespace": "[[:$1]] бу аат далыгар киирбэт эбит «{{ns:$2}}».",
        "htmlform-title-not-creatable": "«$1» оҥоһуллар сирэй аата буолбатах",
        "htmlform-title-not-exists": "$1 суох.",
index b496a9a..8bb9827 100644 (file)
        "blockedtitle": "Uporabnik je blokiran",
        "blockedtext": "'''Urejanje z vašim uporabniškim imenom oziroma IP-naslovom je onemogočeno.'''\n\nBlokiral vas je $1.\nPodani razlog je ''$2''.\n\n* začetek blokade: $8\n* potek blokade: $6\n* blokirani uporabnik: $7\n\nO blokiranju se lahko pogovorite z uporabnikom/-co $1 ali katerim drugim [[{{MediaWiki:Grouppage-sysop}}|administratorjem]].\nVedite, da lahko ukaz »Pošlji uporabniku e-pismo« uporabite le, če ste v [[Special:Preferences|nastavitvah]] vpisali in potrdili svoj elektronski naslov in ta ni blokiran.\nVaš IP-naslov je $3, številka blokade pa #$5.\nProsimo, vključite ju v vse morebitne poizvedbe.",
        "autoblockedtext": "Vaš IP-naslov je bil samodejno blokiran, saj je bil uporabljen s strani drugega uporabnika, ki ga je blokiral $1.\nRazlog za to je bil naslednji:\n\n:''$2''\n\n* Začetek blokade: $8\n* Konec blokade: $6\n* Blokirani uporabnik: $7\n\nKontaktirate lahko $1 ali katerega od drugih [[{{MediaWiki:Grouppage-sysop}}|administratorjev]], da razpravljate o blokadi.\n\nVedite, da lahko funkcijo »{{:MediaWiki:Emailuser/sl}}« uporabljate le, če ste v svoje [[Special:Preferences|uporabniške nastavitve]] vnesli veljaven e-poštni naslov, in vam njena uporaba ni bila preprečena.\n\nVaš trenutni IP-naslov je $3, ID blokiranja pa #$5. Prosimo, vključite ta ID v vsako zastavljeno vprašanje.",
+       "systemblockedtext": "Vaše uporabniško ime ali IP-naslov je MediaWiki samodejn blokiral.\nPodani razlog je:\n\n:<em>$2</em>\n\n* Začetek blokade: $8\n* Potek blokade: $6\n* Blokirani uporabnik: $7\n\nVaš trenutni IP-naslov je $3.\nProsimo, da v svoje poizvedbe vključite vse zgornje podatke.",
        "blockednoreason": "razlog ni podan",
        "whitelistedittext": "Za urejanje strani se morate $1.",
        "confirmedittext": "Pred urejanjem strani morate potrditi svoj e-poštni naslov.\nProsimo, da ga z uporabo [[Special:Preferences|uporabniških nastavitev]] vpišete in potrdite.",
        "wlshowhidemine": "moja urejanja",
        "wlshowhidecategorization": "kategorizacija strani",
        "watchlist-options": "Možnosti spiska nadzorov",
-       "watchlist-mark-all-visited": "Ste prepričani, da želite ponastaviti neogledane spremembe na spisku nadzorov tako, da vse strani označite kot ogledane?",
        "watching": "Nadziranje ...",
        "unwatching": "Nenadziranje ...",
        "watcherrortext": "Med spreminjanjem vaših nastavitev spiska nadzora za »$1« je prišlo do napake.",
        "pageinfo-length": "Dolžina strani (v bajtih)",
        "pageinfo-article-id": "ID strani",
        "pageinfo-language": "Jezik vsebine strani",
+       "pageinfo-language-change": "spremeni",
        "pageinfo-content-model": "Model vsebine strani",
        "pageinfo-content-model-change": "spremeni",
        "pageinfo-robot-policy": "Robotsko indeksiranje",
index 8b36833..12fb84b 100644 (file)
@@ -90,7 +90,8 @@
                        "Ece Alpdeniz",
                        "Superyetkin",
                        "Alikaan",
-                       "By erdo can"
+                       "By erdo can",
+                       "1917 Ekim Devrimi"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "changecontentmodel-submit": "Değiştir",
        "changecontentmodel-success-title": "İçerik modeli değiştirildi",
        "changecontentmodel-success-text": "İçerik türü [[:$1]] olarak değiştirildi.",
+       "log-name-contentmodel": "İçerik modeli değiştirme günlüğü",
        "logentry-contentmodel-change-revertlink": "Eski haline döndür",
        "logentry-contentmodel-change-revert": "Eski haline döndür",
        "protectlogpage": "Koruma kayıtları",
        "htmlform-user-not-exists": "<strong>$1</strong> mevcut değil.",
        "htmlform-user-not-valid": "<strong>$1</strong> geçerli bir kullanıcı ismi değildir.",
        "logentry-delete-delete": "$1 $3 sayfasını {{GENDER:$2|sildi}}",
+       "logentry-delete-delete_redir": "$1, $3 yönlendirmesini üzerine yazılması için {{GENDER:$2|sildi}}",
        "logentry-delete-restore": "$1 $3 sayfasını {{GENDER:$2|geri getirdi}}",
        "logentry-delete-event": "$1, $3 sayfasında {{PLURAL:$5|bir günlük girdisinin |$5 günlük girdisinin}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4",
        "logentry-delete-revision": "$1, $3 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4",
index 3e45278..6bac24f 100644 (file)
        "special-characters-group-persian": "Фарсы",
        "special-characters-group-hebrew": "Яхүд",
        "special-characters-group-bangla": "Бенгаль",
-       "special-characters-group-tamil": "Тамиль",
+       "special-characters-group-tamil": "Тамил",
        "special-characters-group-telugu": "Телугу",
-       "special-characters-group-sinhala": "Сингаль",
+       "special-characters-group-sinhala": "Сингал",
        "special-characters-group-gujarati": "Гуҗарати",
        "special-characters-group-devanagari": "Деванагари",
-       "special-characters-group-thai": "Таиланд",
+       "special-characters-group-thai": "Тай",
        "special-characters-group-lao": "Лаос",
        "special-characters-group-khmer": "Кһмер"
 }
index 514adbe..2635dff 100644 (file)
        "subject-preview": "主题预览:",
        "previewerrortext": "尝试预览您的更改时发生未知错误。",
        "blockedtitle": "用户被封禁",
-       "blockedtext": "<strong>您的用户名或IP地址已被封禁。</strong>\n\n执行封禁的管理员是$1。封禁原因是<em>$2</em>。\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联络$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]讨论该封禁。只有当您在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才可以使用它。您当前的IP地址是$3,该封禁ID是#$5。请在您的询问中包含上面的所有信息。",
-       "autoblockedtext": "您的IP地址因曾被一位被$1封禁的用户使用而被自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联系$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]申诉该封禁。\n\n请注意,只有当您已在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才能发送电子邮件联系管理员。\n\n您当前的IP地址为$3,该封禁ID为#$5。\n请您在申诉内容中说明以上所有信息。",
+       "blockedtext": "<strong>您的用户名或IP地址已被封禁。</strong>\n\n执行封禁的管理员是$1。封禁原因是<em>$2</em>。\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联络$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]讨论该封禁。只有当您在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才可以使用它。您当前的IP地址是$3,该封禁ID是#$5。请在您做出的任何查询中包含所有上述详情。",
+       "autoblockedtext": "您的IP地址因曾被一位被$1封禁的用户使用而被自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联系$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]申诉该封禁。\n\n请注意,只有当您已在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才能发送电子邮件联系管理员。\n\n您当前的IP地址为$3,该封禁ID为#$5。请在您做出的任何查询中包含所有上述详情。",
+       "systemblockedtext": "您的用户名或IP地址已被MediaWiki自动封禁。封禁原因:\n\n:<em>$2</em>\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您当前的IP地址是$3。请在您做出的任何查询中包含所有上述详情。",
        "blockednoreason": "未给出原因",
        "whitelistedittext": "请$1以编辑页面。",
        "confirmedittext": "您必须确认您的电子邮件地址才能编辑页面。请通过[[Special:Preferences|系统设置]]设置并确认您的电子邮件地址。",
        "wlshowhidemine": "我的编辑",
        "wlshowhidecategorization": "页面分类",
        "watchlist-options": "监视列表选项",
-       "watchlist-mark-all-visited": "您确定要通过标记所有页面为已访问,重置未查看的监视列表更改么?",
        "watching": "正在监视...",
        "unwatching": "正在取消监视...",
        "watcherrortext": "更改“$1”的监视列表设置时出错。",
        "change-blocklink": "更改封禁",
        "contribslink": "贡献",
        "emaillink": "发送电子邮件",
-       "autoblocker": "因为您与“[[User:$1|$1]]”共享一个IP地址而被自动封禁。\n$1被封禁的理由是“$2”",
+       "autoblocker": "因为您与“[[User:$1|$1]]”共享一个IP地址而被自动封禁。$1被封禁的理由是“$2”",
        "blocklogpage": "封禁日志",
        "blocklog-showlog": "该用户曾被封禁。下面提供封禁日志以供参考:",
        "blocklog-showsuppresslog": "该用户曾被封禁并隐藏。下面提供封锁日志以供参考:",
        "interlanguage-link-title-nonlang": "$1——$2",
        "common.css": "/* 这里放置的CSS将应用于所有皮肤 */",
        "print.css": "/* 这里放置的CSS将影响打印输出 */",
-       "noscript.css": "/* 这里放置的CSS将影响用JavaScript的用户 */",
+       "noscript.css": "/* 这里放置的CSS将影响用JavaScript的用户 */",
        "group-autoconfirmed.css": "/* 这里放置的CSS将只影响自动确认用户 */",
        "group-user.css": "/* 这里放置的CSS将只影响注册用户 */",
        "group-bot.css": "/* 这里放置的CSS将只影响机器人 */",
        "group-bureaucrat.css": "/* 这里放置的CSS将只影响行政员 */",
        "common.js": "/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */",
        "group-autoconfirmed.js": "/* 这里的任何JavaScript将只为自动确认用户加载 */",
-       "group-user.js": "/* 放置于此的JavaScript将只为注册用户加载 */",
+       "group-user.js": "/* 这里的任何JavaScript将只为注册用户加载 */",
        "group-bot.js": "/* 这里的任何JavaScript将只为机器人加载 */",
        "group-sysop.js": "/* 这里的任何JavaScript将只为管理员加载 */",
        "group-bureaucrat.js": "/* 这里的任何JavaScript将只为行政员加载 */",
        "pageinfo-length": "页面长度(字节)",
        "pageinfo-article-id": "页面ID",
        "pageinfo-language": "页面内容语言",
+       "pageinfo-language-change": "更改",
        "pageinfo-content-model": "页面内容类型",
        "pageinfo-content-model-change": "更改",
        "pageinfo-robot-policy": "爬虫索引",
        "restrictionsfield-badip": "无效的IP地址或段:$1",
        "restrictionsfield-label": "允许的IP段:",
        "restrictionsfield-help": "每行一个IP地址或CIDR段。要启用所有,可使用<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "revid": "修订版本$1",
        "pageid": "页面ID$1"
 }
index 3b772c6..d1e7caa 100644 (file)
        "ok": "確定",
        "retrievedfrom": "取自 \"$1\"",
        "youhavenewmessages": "您有 $1 ($2)。",
-       "youhavenewmessagesfromusers": "有來自{{PLURAL:$3|另一位使用者|$3 位使用者}}的 $1 ($2)。",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|您}}有來自{{PLURAL:$3|另一位使用者|$3 位使用者}}的 $1 ($2)。",
        "youhavenewmessagesmanyusers": "你有來自多位使用者的 $1 ($2)。",
        "newmessageslinkplural": "{{PLURAL:$1|一則新訊息|999=新訊息}}",
        "newmessagesdifflinkplural": "最近{{PLURAL:$1|變更}}",
        "listgrouprights-addgroup-all": "加入所有群組",
        "listgrouprights-removegroup-all": "移除所有群組",
        "listgrouprights-addgroup-self": "在自己的帳號中加入的{{PLURAL:$2|一個|多個}}群組: $1",
-       "listgrouprights-removegroup-self": "在自己的帳號中移除的{{PLURAL:$2|一個|多個}}群組: $1",
+       "listgrouprights-removegroup-self": "移除自己帳號中的{{PLURAL:$2|一個|多個}}群組: $1",
        "listgrouprights-addgroup-self-all": "在自己的帳號中加入所有群組",
-       "listgrouprights-removegroup-self-all": "在自己的帳號中移除所有群組",
+       "listgrouprights-removegroup-self-all": "移除自己帳號中的所有群組",
        "listgrouprights-namespaceprotection-header": "命名空間限制",
        "listgrouprights-namespaceprotection-namespace": "命名空間",
        "listgrouprights-namespaceprotection-restrictedto": "允許使用者編輯的權限",
index 7dde2b7..4edce3d 100644 (file)
@@ -174,10 +174,10 @@ $specialPageAliases = [
 
 $magicWords = [
        'redirect'                => [ 0, '#পুনর্নির্দেশ', '#পুনঃর্নির্দেশ', '#পুনঃনির্দেশ', '#পুননির্দেশ', '#REDIRECT' ],
-       'notoc'                   => [ 0, '__à¦\95à§\8bন_বিষà§\9fবসà§\8dতà§\81র_à¦\9bà¦\95_নà§\9f__', '__à¦\95à§\8bনবিষà§\9fবসà§\8dতà§\81রà¦\9bà¦\95নà§\9f__', '__à¦\95à§\8bন_বিষà§\9fবসà§\8dতà§\81র_à¦\9fà§\87বিল_নà§\9f__', '__à¦\95à§\8bনবিষà§\9fবসà§\8dতà§\81রà¦\9fà§\87বিলনà§\9f__', '__NOTOC__' ],
-       'nogallery'               => [ 0, '__à¦\95à§\8bনà¦\97à§\8dযালারিনà§\9f__', '__à¦\95à§\8bনà¦\97à§\8dযালারà§\80নà§\9f__', '__à¦\95à§\8bন_à¦\97à§\8dযালারি_নà§\9f__', '__à¦\95à§\8bন_à¦\97à§\8dযালারà§\80_নà§\9f__', '__NOGALLERY__' ],
-       'toc'                     => [ 0, '__বিষà§\9fবসà§\8dতà§\81র_à¦\9bà¦\95__', '__বিষà§\9fবসà§\8dতà§\81রà¦\9bà¦\95__', '__বিষà§\9fবসà§\8dতà§\81র_à¦\9fà§\87বিল__', '__বিষà§\9fবস্তুরটেবিল__', '__TOC__' ],
-       'noeditsection'           => [ 0, '__à¦\95à§\8bনসমà§\8dপাদনাà¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দনà§\9f__', '__à¦\95à§\8bন_সমà§\8dপাদনা_à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দ_নà§\9f__', '__NOEDITSECTION__' ],
+       'notoc'                   => [ 0, '__à¦\95à§\8bন_বিষয়বসà§\8dতà§\81র_à¦\9bà¦\95_নয়__', '__à¦\95à§\8bনবিষয়বসà§\8dতà§\81রà¦\9bà¦\95নয়__', '__à¦\95à§\8bন_বিষয়বসà§\8dতà§\81র_à¦\9fà§\87বিল_নয়__', '__à¦\95à§\8bনবিষয়বসà§\8dতà§\81রà¦\9fà§\87বিলনয়__', '__NOTOC__' ],
+       'nogallery'               => [ 0, '__à¦\95à§\8bনà¦\97à§\8dযালারিনয়__', '__à¦\95à§\8bনà¦\97à§\8dযালারà§\80নয়__', '__à¦\95à§\8bন_à¦\97à§\8dযালারি_নয়__', '__à¦\95à§\8bন_à¦\97à§\8dযালারà§\80_নয়__', '__NOGALLERY__' ],
+       'toc'                     => [ 0, '__বিষয়বসà§\8dতà§\81র_à¦\9bà¦\95__', '__বিষয়বসà§\8dতà§\81রà¦\9bà¦\95__', '__বিষয়বসà§\8dতà§\81র_à¦\9fà§\87বিল__', '__বিষয়বস্তুরটেবিল__', '__TOC__' ],
+       'noeditsection'           => [ 0, '__à¦\95à§\8bনসমà§\8dপাদনাà¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দনয়__', '__à¦\95à§\8bন_সমà§\8dপাদনা_à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দ_নয়__', '__NOEDITSECTION__' ],
        'currentmonth'            => [ 1, 'চলতি_মাস', 'চলতিমাস', 'বর্তমান_মাস', 'বর্তমানমাস', 'বর্তমান_মাস_২', 'বর্তমানমাস২', 'CURRENTMONTH', 'CURRENTMONTH2' ],
        'currentmonth1'           => [ 1, 'চলতি_মাস_১', 'চলতিমাস১', 'বর্তমান_মাস_১', 'বর্তমানমাস১', 'CURRENTMONTH1' ],
        'currentmonthname'        => [ 1, 'বর্তমান_মাসের_নাম', 'বর্তমানমাসেরনাম', 'CURRENTMONTHNAME' ],
@@ -187,24 +187,24 @@ $magicWords = [
        'currentday2'             => [ 1, 'বর্তমান_দিন_২', 'বর্তমানদিন২', 'আজকের_দিন_২', 'আজকেরদিন২', 'CURRENTDAY2' ],
        'currentdayname'          => [ 1, 'বর্তমান_দিনের_নাম', 'বর্তমানদিনেরনাম', 'আজকের_দিনের_নাম', 'আজকেরদিনেরনাম', 'CURRENTDAYNAME' ],
        'currentyear'             => [ 1, 'চলতি_বছর', 'চলতিবছর', 'বর্তমান_বছর', 'বর্তমানবছর', 'CURRENTYEAR' ],
-       'currenttime'             => [ 1, 'বরà§\8dতমান_সমà§\9f', 'বরà§\8dতমানসমà§\9f', 'à¦\8fà¦\96নà¦\95ার_সমà§\9f', 'à¦\8fà¦\96নà¦\95ারসমà§\9f', 'à¦\8fà¦\96ন_সমà§\9f', 'CURRENTTIME' ],
+       'currenttime'             => [ 1, 'বরà§\8dতমান_সময়', 'বরà§\8dতমানসময়', 'à¦\8fà¦\96নà¦\95ার_সময়', 'à¦\8fà¦\96নà¦\95ারসময়', 'à¦\8fà¦\96ন_সময়', 'CURRENTTIME' ],
        'currenthour'             => [ 1, 'বর্তমান_ঘণ্টা', 'বর্তমানঘণ্টা', 'বর্তমান_ঘন্টা', 'বর্তমানঘন্টা', 'এখনকার_ঘণ্টা', 'এখনকারঘণ্টা', 'CURRENTHOUR' ],
-       'localmonth'              => [ 1, 'সà§\8dথানà§\80à§\9f_মাস', 'সà§\8dথানà§\80à§\9fমাস', 'সà§\8dথানà§\80à§\9f_মাস_২', 'সà§\8dথানà§\80à§\9fমাস২', 'LOCALMONTH', 'LOCALMONTH2' ],
-       'localmonth1'             => [ 1, 'সà§\8dথানà§\80à§\9f_মাস_১', 'সà§\8dথানà§\80à§\9fমাস১', 'LOCALMONTH1' ],
-       'localmonthname'          => [ 1, 'সà§\8dথানà§\80à§\9f_মাসà§\87র_নাম', 'সà§\8dথানà§\80à§\9fমাসেরনাম', 'LOCALMONTHNAME' ],
-       'localmonthnamegen'       => [ 1, 'সà§\8dথানà§\80à§\9f_মাসà§\87র_নাম_à¦\89à§\8eপনà§\8dন', 'সà§\8dথানà§\80à§\9fমাসেরনামউৎপন্ন', 'LOCALMONTHNAMEGEN' ],
-       'localmonthabbrev'        => [ 1, 'সà§\8dথানà§\80à§\9f_মাস_সà¦\82à¦\95à§\8dষà§\87প', 'সà§\8dথানà§\80à§\9fমাসসà¦\82à¦\95à§\8dষà§\87প', 'সà§\8dথানà§\80à§\9f_মাস_সà¦\82à¦\95à§\8dষিপà§\8dত', 'সà§\8dথানà§\80à§\9fমাসসংক্ষিপ্ত', 'সংক্ষেপিত_স্থানীয়_মাস', 'সংক্ষেপিতস্থানীয়মাস', 'LOCALMONTHABBREV' ],
-       'localday'                => [ 1, 'সà§\8dথানà§\80à§\9f_দিন', 'সà§\8dথানà§\80à§\9fদিন', 'স্থানীয়_বার', 'স্থানীয়বার', 'LOCALDAY' ],
-       'localday2'               => [ 1, 'সà§\8dথানà§\80à§\9f_দিন_২', 'সà§\8dথানà§\80à§\9fদিন২', 'LOCALDAY2' ],
-       'localdayname'            => [ 1, 'সà§\8dথানà§\80à§\9f_দিনà§\87র_নাম', 'সà§\8dথানà§\80à§\9fদিনেরনাম', 'LOCALDAYNAME' ],
-       'localyear'               => [ 1, 'সà§\8dথানà§\80à§\9f_বà¦\9bর', 'সà§\8dথানà§\80à§\9fবছর', 'LOCALYEAR' ],
-       'localtime'               => [ 1, 'সà§\8dথানà§\80à§\9f_সমà§\9f', 'সà§\8dথানà§\80à§\9fসমà§\9f', 'LOCALTIME' ],
-       'localhour'               => [ 1, 'সà§\8dথানà§\80à§\9f_à¦\98ণà§\8dà¦\9fা', 'সà§\8dথানà§\80à§\9fà¦\98ণà§\8dà¦\9fা', 'সà§\8dথানà§\80à§\9f_à¦\98নà§\8dà¦\9fা', 'সà§\8dথানà§\80à§\9fঘন্টা', 'LOCALHOUR' ],
+       'localmonth'              => [ 1, 'সà§\8dথানà§\80য়_মাস', 'সà§\8dথানà§\80য়মাস', 'সà§\8dথানà§\80য়_মাস_২', 'সà§\8dথানà§\80য়মাস২', 'LOCALMONTH', 'LOCALMONTH2' ],
+       'localmonth1'             => [ 1, 'সà§\8dথানà§\80য়_মাস_১', 'সà§\8dথানà§\80য়মাস১', 'LOCALMONTH1' ],
+       'localmonthname'          => [ 1, 'সà§\8dথানà§\80য়_মাসà§\87র_নাম', 'সà§\8dথানà§\80য়মাসেরনাম', 'LOCALMONTHNAME' ],
+       'localmonthnamegen'       => [ 1, 'সà§\8dথানà§\80য়_মাসà§\87র_নাম_à¦\89à§\8eপনà§\8dন', 'সà§\8dথানà§\80য়মাসেরনামউৎপন্ন', 'LOCALMONTHNAMEGEN' ],
+       'localmonthabbrev'        => [ 1, 'সà§\8dথানà§\80য়_মাস_সà¦\82à¦\95à§\8dষà§\87প', 'সà§\8dথানà§\80য়মাসসà¦\82à¦\95à§\8dষà§\87প', 'সà§\8dথানà§\80য়_মাস_সà¦\82à¦\95à§\8dষিপà§\8dত', 'সà§\8dথানà§\80য়মাসসংক্ষিপ্ত', 'সংক্ষেপিত_স্থানীয়_মাস', 'সংক্ষেপিতস্থানীয়মাস', 'LOCALMONTHABBREV' ],
+       'localday'                => [ 1, 'সà§\8dথানà§\80য়_দিন', 'সà§\8dথানà§\80য়দিন', 'স্থানীয়_বার', 'স্থানীয়বার', 'LOCALDAY' ],
+       'localday2'               => [ 1, 'সà§\8dথানà§\80য়_দিন_২', 'সà§\8dথানà§\80য়দিন২', 'LOCALDAY2' ],
+       'localdayname'            => [ 1, 'সà§\8dথানà§\80য়_দিনà§\87র_নাম', 'সà§\8dথানà§\80য়দিনেরনাম', 'LOCALDAYNAME' ],
+       'localyear'               => [ 1, 'সà§\8dথানà§\80য়_বà¦\9bর', 'সà§\8dথানà§\80য়বছর', 'LOCALYEAR' ],
+       'localtime'               => [ 1, 'সà§\8dথানà§\80য়_সময়', 'সà§\8dথানà§\80য়সময়', 'LOCALTIME' ],
+       'localhour'               => [ 1, 'সà§\8dথানà§\80য়_à¦\98ণà§\8dà¦\9fা', 'সà§\8dথানà§\80য়à¦\98ণà§\8dà¦\9fা', 'সà§\8dথানà§\80য়_à¦\98নà§\8dà¦\9fা', 'সà§\8dথানà§\80য়ঘন্টা', 'LOCALHOUR' ],
        'numberofpages'           => [ 1, 'পাতার_সংখ্যা', 'পাতারসংখ্যা', 'পৃষ্ঠার_সংখ্যা', 'পৃষ্ঠারসংখ্যা', 'পৃষ্ঠা_সংখ্যা', 'পৃষ্ঠাসংখ্যা', 'NUMBEROFPAGES' ],
        'numberofarticles'        => [ 1, 'নিবন্ধের_সংখ্যা', 'নিবন্ধেরসংখ্যা', 'নিবন্ধ_সংখ্যা', 'নিবন্ধসংখ্যা', 'NUMBEROFARTICLES' ],
        'numberoffiles'           => [ 1, 'ফাইলের_সংখ্যা', 'ফাইলেরসংখ্যা', 'ফাইল_সংখ্যা', 'ফাইলসংখ্যা', 'NUMBEROFFILES' ],
        'numberofusers'           => [ 1, 'ব্যবহারকারীর_সংখ্যা', 'ব্যবহারকারীরসংখ্যা', 'ব্যবহারকারী_সংখ্যা', 'ব্যবহারকারীসংখ্যা', 'NUMBEROFUSERS' ],
-       'numberofactiveusers'     => [ 1, 'সà¦\95à§\8dরিà§\9f_বà§\8dযবহারà¦\95ারà§\80র_সà¦\82à¦\96à§\8dযা', 'সà¦\95à§\8dরিà§\9fবà§\8dযবহারà¦\95ারà§\80রসà¦\82à¦\96à§\8dযা', 'সà¦\95à§\8dরিà§\9f_বà§\8dযবহারà¦\95ারà§\80_সà¦\82à¦\96à§\8dযা', 'সà¦\95à§\8dরিà§\9fব্যবহারকারীসংখ্যা', 'NUMBEROFACTIVEUSERS' ],
+       'numberofactiveusers'     => [ 1, 'সà¦\95à§\8dরিয়_বà§\8dযবহারà¦\95ারà§\80র_সà¦\82à¦\96à§\8dযা', 'সà¦\95à§\8dরিয়বà§\8dযবহারà¦\95ারà§\80রসà¦\82à¦\96à§\8dযা', 'সà¦\95à§\8dরিয়_বà§\8dযবহারà¦\95ারà§\80_সà¦\82à¦\96à§\8dযা', 'সà¦\95à§\8dরিয়ব্যবহারকারীসংখ্যা', 'NUMBEROFACTIVEUSERS' ],
        'numberofedits'           => [ 1, 'সম্পাদনার_সংখ্যা', 'সম্পাদনারসংখ্যা', 'সম্পাদনা_সংখ্যা', 'সম্পাদনাসংখ্যা', 'NUMBEROFEDITS' ],
        'pagename'                => [ 1, 'পাতার_নাম', 'পাতারনাম', 'পৃষ্ঠার_নাম', 'পৃষ্ঠারনাম', 'PAGENAME' ],
        'pagenamee'               => [ 1, 'পাতার_নামম', 'পাতারনামম', 'পৃষ্ঠার_নামম', 'পৃষ্ঠারনামম', 'PAGENAMEE' ],
@@ -213,8 +213,8 @@ $magicWords = [
        'namespacenumber'         => [ 1, 'নামস্থানের_সংখ্যা', 'নামস্থানেরসংখ্যা', 'NAMESPACENUMBER' ],
        'talkspace'               => [ 1, 'আলাপের_স্থান', 'আলোচনার_স্থান', 'আলাপেরস্থান', 'আলোচনারস্থান', 'আলাপের_জায়গা', 'আলাপেরজায়গা', 'TALKSPACE' ],
        'talkspacee'              => [ 1, 'আলাপের_স্থানন', 'আলোচনার_স্থানন', 'আলাপেরস্থানন', 'আলোচনারস্থানন', 'TALKSPACEE' ],
-       'subjectspace'            => [ 1, 'বিষà§\9fà§\87র_সà§\8dথান', 'নিবনà§\8dধà§\87র_সà§\8dথান', 'বিষà§\9fেরস্থান', 'নিবন্ধেরস্থান', 'SUBJECTSPACE', 'ARTICLESPACE' ],
-       'subjectspacee'           => [ 1, 'বিষà§\9fà§\87র_সà§\8dথানন', 'নিবনà§\8dধà§\87র_সà§\8dথানন', 'বিষà§\9fেরস্থানন', 'নিবন্ধেরস্থানন', 'SUBJECTSPACEE', 'ARTICLESPACEE' ],
+       'subjectspace'            => [ 1, 'বিষয়à§\87র_সà§\8dথান', 'নিবনà§\8dধà§\87র_সà§\8dথান', 'বিষয়েরস্থান', 'নিবন্ধেরস্থান', 'SUBJECTSPACE', 'ARTICLESPACE' ],
+       'subjectspacee'           => [ 1, 'বিষয়à§\87র_সà§\8dথানন', 'নিবনà§\8dধà§\87র_সà§\8dথানন', 'বিষয়েরস্থানন', 'নিবন্ধেরস্থানন', 'SUBJECTSPACEE', 'ARTICLESPACEE' ],
        'fullpagename'            => [ 1, 'পূর্ণ_পাতার_নাম', 'সম্পূর্ণ_পাতার_নাম', 'পূর্ণপাতারনাম', 'সম্পূর্ণপাতারনাম', 'পূর্ণ_পৃষ্ঠার_নাম', 'সম্পূর্ণ_পৃষ্ঠার_নাম', 'পূর্ণপৃষ্ঠারনাম', 'সম্পূর্ণপৃষ্ঠারনাম', 'FULLPAGENAME' ],
        'fullpagenamee'           => [ 1, 'পূর্ণ_পাতার_নামম', 'সম্পূর্ণ_পাতার_নামম', 'পূর্ণপাতারনামম', 'সম্পূর্ণপাতারনামম', 'পূর্ণ_পৃষ্ঠার_নামম', 'সম্পূর্ণ_পৃষ্ঠার_নামম', 'পূর্ণপৃষ্ঠারনামম', 'সম্পূর্ণপৃষ্ঠারনামম', 'FULLPAGENAMEE' ],
        'subpagename'             => [ 1, 'উপপাতার_নাম', 'উপপাতারনাম', 'উপপৃষ্ঠার_নাম', 'উপপৃষ্ঠারনাম', 'SUBPAGENAME' ],
@@ -225,8 +225,8 @@ $magicWords = [
        'basepagenamee'           => [ 1, 'ভিত্তি_পাতার_নামম', 'ভিত্তিপাতারনামম', 'ভিত্তি_পৃষ্ঠার_নামম', 'ভিত্তি_পৃষ্ঠার_নামম', 'BASEPAGENAMEE' ],
        'talkpagename'            => [ 1, 'আলাপ_পাতার_নাম', 'আলাপপাতারনাম', 'আলাপ_পৃষ্ঠার_নাম', 'আলোচনা_পৃষ্ঠার_নাম', 'আলোচনা_পাতার_নাম', 'আলোচনাপাতারনাম', 'আলোচনা_পৃষ্ঠার_নাম', 'আলোচনা_পৃষ্ঠার_নাম', 'TALKPAGENAME' ],
        'talkpagenamee'           => [ 1, 'আলাপ_পাতার_নামম', 'আলাপপাতারনামম', 'আলাপ_পৃষ্ঠার_নামম', 'আলোচনা_পৃষ্ঠার_নামম', 'আলোচনা_পাতার_নামম', 'আলোচনাপাতারনামম', 'আলোচনা_পৃষ্ঠার_নামম', 'আলোচনা_পৃষ্ঠার_নামম', 'TALKPAGENAMEE' ],
-       'subjectpagename'         => [ 1, 'বিষà§\9fà§\87র_পাতার_নাম', 'বিষà§\9fà§\87রপাতারনাম', 'বিষà§\9fà§\87র_পà§\83ষà§\8dঠার_নাম', 'বিষà§\9fেরপৃষ্ঠারনাম', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
-       'subjectpagenamee'        => [ 1, 'বিষà§\9fà§\87র_পাতার_নামম', 'বিষà§\9fà§\87রপাতারনামম', 'বিষà§\9fà§\87র_পà§\83ষà§\8dঠার_নামম', 'বিষà§\9fেরপৃষ্ঠারনামম', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
+       'subjectpagename'         => [ 1, 'বিষয়à§\87র_পাতার_নাম', 'বিষয়à§\87রপাতারনাম', 'বিষয়à§\87র_পà§\83ষà§\8dঠার_নাম', 'বিষয়েরপৃষ্ঠারনাম', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
+       'subjectpagenamee'        => [ 1, 'বিষয়à§\87র_পাতার_নামম', 'বিষয়à§\87রপাতারনামম', 'বিষয়à§\87র_পà§\83ষà§\8dঠার_নামম', 'বিষয়েরপৃষ্ঠারনামম', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'img_thumbnail'           => [ 1, 'থাম্ব','থাম্বনেইল', 'thumb', 'thumbnail' ],
        'img_manualthumb'         => [ 1, 'থাম্ব=$1','থাম্বনেইল=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'               => [ 1, 'ডান', 'ডানে', 'right' ],
@@ -248,7 +248,7 @@ $magicWords = [
        'img_link'                => [ 1, 'সংযোগ=$1', 'লিঙ্ক=$1', 'link=$1' ],
        'img_class'               => [ 1, 'ক্লাস=$1', 'class=$1' ],
        'sitename'                => [ 1, 'সাইটের_নাম', 'সাইটেরনাম', 'SITENAME' ],
-       'localurl'                => [ 0, 'সà§\8dথানà§\80à§\9f_à¦\87à¦\89à¦\86রà¦\8fল:', 'সà§\8dথানà§\80à§\9fইউআরএল:', 'LOCALURL:' ],
+       'localurl'                => [ 0, 'সà§\8dথানà§\80য়_à¦\87à¦\89à¦\86রà¦\8fল:', 'সà§\8dথানà§\80য়ইউআরএল:', 'LOCALURL:' ],
        'articlepath'             => [ 0, 'নিবন্ধের_পথ', 'নিবন্ধেরপথ', 'ARTICLEPATH' ],
        'pageid'                  => [ 0, 'পাতার_আইডি', 'পাতারআইডি', 'পৃষ্ঠার_আইডি', 'পৃষ্ঠারআইডি', 'PAGEID' ],
        'server'                  => [ 0, 'সার্ভার', 'SERVER' ],
@@ -258,31 +258,31 @@ $magicWords = [
        'grammar'                 => [ 0, 'ব্যাকরণ:', 'GRAMMAR:' ],
        'gender'                  => [ 0, 'লিঙ্গ:', 'GENDER:' ],
        'bidi'                    => [ 0, 'বিআইডিআই:', 'BIDI:' ],
-       'notitleconvert'          => [ 0, '__à¦\95à§\8bন_শিরà§\8bনাম_রà§\82পানà§\8dতরà¦\95ারà§\80_নà§\9f__', '__à¦\95à§\8bনশিরà§\8bনামরà§\82পানà§\8dতরà¦\95ারà§\80নà§\9f__', '__NOTITLECONVERT__', '__NOTC__' ],
-       'nocontentconvert'        => [ 0, '__à¦\95à§\8bন_বিষà§\9fবসà§\8dতà§\81_রà§\82পানà§\8dতরà¦\95ারà§\80_নà§\9f__', '__à¦\95à§\8bনবিষà§\9fবসà§\8dতà§\81রà§\82পানà§\8dতরà¦\95ারà§\80নà§\9f__', '__NOCONTENTCONVERT__', '__NOCC__' ],
+       'notitleconvert'          => [ 0, '__à¦\95à§\8bন_শিরà§\8bনাম_রà§\82পানà§\8dতরà¦\95ারà§\80_নয়__', '__à¦\95à§\8bনশিরà§\8bনামরà§\82পানà§\8dতরà¦\95ারà§\80নয়__', '__NOTITLECONVERT__', '__NOTC__' ],
+       'nocontentconvert'        => [ 0, '__à¦\95à§\8bন_বিষয়বসà§\8dতà§\81_রà§\82পানà§\8dতরà¦\95ারà§\80_নয়__', '__à¦\95à§\8bনবিষয়বসà§\8dতà§\81রà§\82পানà§\8dতরà¦\95ারà§\80নয়__', '__NOCONTENTCONVERT__', '__NOCC__' ],
        'currentweek'             => [ 1, 'বর্তমান_সপ্তাহ', 'বর্তমানসপ্তাহ', 'চলতি_সপ্তাহ', 'চলতিসপ্তাহ', 'CURRENTWEEK' ],
        'currentdow'              => [ 1, 'বর্তমান_সপ্তাহের_দিন', 'বর্তমানসপ্তাহেরদিন', 'CURRENTDOW' ],
-       'localweek'               => [ 1, 'সà§\8dথানà§\80à§\9f_সপà§\8dতাহ', 'সà§\8dথানà§\80à§\9fসপ্তাহ', 'LOCALWEEK' ],
-       'localdow'                => [ 1, 'সà§\8dথানà§\80à§\9f_সপà§\8dতাহà§\87র_দিন', 'সà§\8dথানà§\80à§\9fসপ্তাহেরদিন', 'LOCALDOW' ],
+       'localweek'               => [ 1, 'সà§\8dথানà§\80য়_সপà§\8dতাহ', 'সà§\8dথানà§\80য়সপ্তাহ', 'LOCALWEEK' ],
+       'localdow'                => [ 1, 'সà§\8dথানà§\80য়_সপà§\8dতাহà§\87র_দিন', 'সà§\8dথানà§\80য়সপ্তাহেরদিন', 'LOCALDOW' ],
        'revisionid'              => [ 1, 'সংশোধনের_আইডি', 'সংশোধনেরআইডি', 'REVISIONID' ],
        'revisionday'             => [ 1, 'সংশোধনের_দিন', 'সংশোধনেরদিন', 'REVISIONDAY' ],
        'revisionday2'            => [ 1, 'সংশোধনের_দিন_২', 'সংশোধনেরদিন২', 'REVISIONDAY2' ],
        'revisionmonth'           => [ 1, 'সংশোধনের_মাস', 'সংশোধনেরমাস', 'REVISIONMONTH' ],
        'revisionmonth1'          => [ 1, 'সংশোধনের_মাস_১', 'সংশোধনেরমাস১', 'REVISIONMONTH1' ],
        'revisionyear'            => [ 1, 'সংশোধনের_বছর', 'সংশোধনেরবছর', 'REVISIONYEAR' ],
-       'revisiontimestamp'       => [ 1, 'সà¦\82শà§\8bধনà§\87র_সমà§\9fতারিà¦\96', 'সà¦\82শà§\8bধনà§\87রসমà§\9fতারিখ', 'REVISIONTIMESTAMP' ],
+       'revisiontimestamp'       => [ 1, 'সà¦\82শà§\8bধনà§\87র_সময়তারিà¦\96', 'সà¦\82শà§\8bধনà§\87রসময়তারিখ', 'REVISIONTIMESTAMP' ],
        'revisionuser'            => [ 1, 'সংশোধনের_ব্যবহারকারী', 'সংশোধনেরব্যবহারকারী', 'REVISIONUSER' ],
        'revisionsize'            => [ 1, 'সংশোধনের_আকার', 'সংশোধনেরআকার', 'REVISIONSIZE' ],
        'plural'                  => [ 0, 'বহুবচন:', 'PLURAL:' ],
        'raw'                     => [ 0, 'অবিন্যস্ত:', 'RAW:' ],
        'displaytitle'            => [ 1, 'প্রদর্শনের_শিরোনাম', 'প্রদর্শনেরশিরোনাম', 'প্রদর্শিত_শিরোনাম', 'প্রদর্শিতশিরোনাম', 'DISPLAYTITLE' ],
        'newsectionlink'          => [ 1, '__নতুন_অনুচ্ছেদের_সংযোগ__', '__নতুন_অনুচ্ছেদের_লিঙ্ক__', '__নতুনঅনুচ্ছেদেরসংযোগ__', '__নতুনঅনুচ্ছেদেরলিঙ্ক__', '__NEWSECTIONLINK__' ],
-       'nonewsectionlink'        => [ 1, '__à¦\95à§\8bন_নতà§\81ন_à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87র_সà¦\82যà§\8bà¦\97_নà§\9f__', '__à¦\95à§\8bন_নতà§\81ন_à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87র_লিà¦\99à§\8dà¦\95_নà§\9f__', '__à¦\95à§\8bননতà§\81নà¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87রসà¦\82যà§\8bà¦\97নà§\9f__', '__à¦\95à§\8bননতà§\81নà¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87রলিà¦\99à§\8dà¦\95নà§\9f__', '__NONEWSECTIONLINK__' ],
+       'nonewsectionlink'        => [ 1, '__à¦\95à§\8bন_নতà§\81ন_à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87র_সà¦\82যà§\8bà¦\97_নয়__', '__à¦\95à§\8bন_নতà§\81ন_à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87র_লিà¦\99à§\8dà¦\95_নয়__', '__à¦\95à§\8bননতà§\81নà¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87রসà¦\82যà§\8bà¦\97নয়__', '__à¦\95à§\8bননতà§\81নà¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87রলিà¦\99à§\8dà¦\95নয়__', '__NONEWSECTIONLINK__' ],
        'currentversion'          => [ 1, 'বর্তমান_সংস্করণ', 'বর্তমানসংস্করণ', 'CURRENTVERSION' ],
-       'currenttimestamp'        => [ 1, 'বরà§\8dতমান_সমà§\9fতারিà¦\96', 'বরà§\8dতমান_সমà§\9fতারিখ', 'CURRENTTIMESTAMP' ],
-       'localtimestamp'          => [ 1, 'সà§\8dথানà§\80à§\9f_সমà§\9fতারিà¦\96', 'সà§\8dথানà§\80à§\9fসমà§\9fতারিখ', 'LOCALTIMESTAMP' ],
+       'currenttimestamp'        => [ 1, 'বরà§\8dতমান_সময়তারিà¦\96', 'বরà§\8dতমান_সময়তারিখ', 'CURRENTTIMESTAMP' ],
+       'localtimestamp'          => [ 1, 'সà§\8dথানà§\80য়_সময়তারিà¦\96', 'সà§\8dথানà§\80য়সময়তারিখ', 'LOCALTIMESTAMP' ],
        'language'                => [ 0, '#ভাষা:', '#LANGUAGE:' ],
-       'contentlanguage'         => [ 1, 'বিষà§\9fবসà§\8dতà§\81র_ভাষা', 'বিষà§\9fবস্তুরভাষা', 'CONTENTLANGUAGE', 'CONTENTLANG' ],
+       'contentlanguage'         => [ 1, 'বিষয়বসà§\8dতà§\81র_ভাষা', 'বিষয়বস্তুরভাষা', 'CONTENTLANGUAGE', 'CONTENTLANG' ],
        'pagesinnamespace'        => [ 1, 'নামস্থানে_পাতা', 'নামস্থানে_পৃষ্ঠা', 'নামস্থানেপাতা', 'নামস্থানেপৃষ্ঠা', 'PAGESINNAMESPACE:', 'PAGESINNS:' ],
        'numberofadmins'          => [ 1, 'প্রশাসকের_সংখ্যা', 'প্রশাসকেরসংখ্যা', 'প্রশাসক_সংখ্যা', 'প্রশাসকসংখ্যা', 'NUMBEROFADMINS' ],
        'formatnum'               => [ 0, 'নম্বর_বিন্যাস', 'নম্বরবিন্যাস', 'FORMATNUM' ],
@@ -290,11 +290,11 @@ $magicWords = [
        'defaultsort'             => [ 1, 'পূর্বনির্ধারিত_বাছাই', 'পূর্বনির্ধারিতবাছাই', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ],
        'filepath'                => [ 0, 'ফাইলের_পথ:', 'ফাইলেরপথ:', 'FILEPATH:' ],
        'tag'                     => [ 0, 'ট্যাগ', 'tag' ],
-       'hiddencat'               => [ 1, '__লà§\81à¦\95াà§\9fিতবিষà§\9fশ্রেণী__', '__লুক্কায়িতবিষয়শ্রেণী__', '__HIDDENCAT__' ],
-       'pagesincategory'         => [ 1, 'বিষà§\9fশà§\8dরà§\87ণà§\80তà§\87পাতা', 'বিষà§\9fশà§\8dরà§\87ণà§\80তà§\87পà§\83ষà§\8dঠা', 'বিষà§\9fশà§\8dরà§\87ণà§\80তà§\87_পাতা', 'বিষà§\9fশ্রেণীতে_পৃষ্ঠা', 'PAGESINCATEGORY', 'PAGESINCAT' ],
+       'hiddencat'               => [ 1, '__লà§\81à¦\95ায়িতবিষয়শ্রেণী__', '__লুক্কায়িতবিষয়শ্রেণী__', '__HIDDENCAT__' ],
+       'pagesincategory'         => [ 1, 'বিষয়শà§\8dরà§\87ণà§\80তà§\87পাতা', 'বিষয়শà§\8dরà§\87ণà§\80তà§\87পà§\83ষà§\8dঠা', 'বিষয়শà§\8dরà§\87ণà§\80তà§\87_পাতা', 'বিষয়শ্রেণীতে_পৃষ্ঠা', 'PAGESINCATEGORY', 'PAGESINCAT' ],
        'pagesize'                => [ 1, 'পাতার_আকার', 'পাতারআকার', 'পৃষ্ঠার_আকার', 'পৃষ্ঠারআকার', 'PAGESIZE' ],
        'index'                   => [ 1, '__নির্ঘণ্ট__', '__INDEX__' ],
-       'noindex'                 => [ 1, '__à¦\95à§\8bননিরà§\8dà¦\98ণà§\8dà¦\9fনà§\9f__', '__à¦\95à§\8bন_নিরà§\8dà¦\98ণà§\8dà¦\9f_নà§\9f__', '__নিরà§\8dà¦\98ণà§\8dà¦\9fনà§\9f__', '__NOINDEX__' ],
+       'noindex'                 => [ 1, '__à¦\95à§\8bননিরà§\8dà¦\98ণà§\8dà¦\9fনয়__', '__à¦\95à§\8bন_নিরà§\8dà¦\98ণà§\8dà¦\9f_নয়__', '__নিরà§\8dà¦\98ণà§\8dà¦\9fনয়__', '__NOINDEX__' ],
        'numberingroup'           => [ 1, 'দলে_সংখ্যা', 'দলেসংখ্যা', 'NUMBERINGROUP', 'NUMINGROUP' ],
        'staticredirect'          => [ 1, '__স্থির_পুনর্নির্দেশ__', '__স্থিরপুনর্নির্দেশ__', '__STATICREDIRECT__' ],
        'protectionlevel'         => [ 1, 'সুরক্ষার_স্তর', 'সুরক্ষারস্তর', 'সুরক্ষা_স্তর', 'সুরক্ষাস্তর', 'PROTECTIONLEVEL' ],
@@ -304,7 +304,7 @@ $magicWords = [
        'url_wiki'                => [ 0, 'উইকি', 'WIKI' ],
        'pagesincategory_all'     => [ 0, 'সব', 'সকল', 'all' ],
        'pagesincategory_pages'   => [ 0, 'পাতাসমূহ', 'পৃষ্ঠাসমূহ', 'pages' ],
-       'pagesincategory_subcats' => [ 0, 'à¦\89পবিষà§\9fশ্রেণী', '', 'subcats' ],
+       'pagesincategory_subcats' => [ 0, 'à¦\89পবিষয়শ্রেণী', '', 'subcats' ],
        'pagesincategory_files'   => [ 0, 'ফাইলসমূহ', 'files' ],
 ];
 
index e4f3e91..2da8830 100644 (file)
@@ -57,7 +57,7 @@ class Orphans extends Maintenance {
        /**
         * Lock the appropriate tables for the script
         * @param Database $db
-        * @param string $extraTable The name of any extra tables to lock (eg: text)
+        * @param string[] $extraTable The name of any extra tables to lock (eg: text)
         */
        private function lockTables( $db, $extraTable = [] ) {
                $tbls = [ 'page', 'revision', 'redirect' ];
index d1dd668..3fef2cc 100644 (file)
@@ -1174,7 +1174,6 @@ return [
                        'searchsuggest-containing',
                ],
                'dependencies' => [
-                       'jquery.client',
                        'jquery.placeholder',
                        'jquery.suggestions',
                        'jquery.getAttrs',
@@ -2031,11 +2030,9 @@ return [
        ],
        'mediawiki.special.watchlist' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.js',
-               'messages' => 'watchlist-mark-all-visited',
                'dependencies' => [
                        'mediawiki.api',
-                       'mediawiki.jqueryMsg',
-                       'oojs-ui-windows',
+                       'oojs-ui-core',
                        'user.options',
                ]
        ],
index 2c6a588..ddda432 100644 (file)
             }
         };
 
-        if (!options.live) this.each(function() { get(this); });
+        this.each(function() { get(this); });
 
         if ( options.trigger != 'manual' ) {
             var eventIn  = options.trigger == 'hover' ? 'mouseenter focus' : 'focus',
                 eventOut = options.trigger == 'hover' ? 'mouseleave blur' : 'blur';
             if ( options.live ) {
                 mw.track( 'mw.deprecate', 'tipsy-live' );
-                mw.log.warn( 'Use of the "live" option of jquery.tipsy is deprecated.' );
-                // XXX: The official status of 'context' is deprecated, and the official status of
-                // 'selector' is removed, so this really needs to go.
-                $( this.context )
-                    .on( eventIn, this.selector, enter )
-                    .on( eventOut, this.selector, leave );
-            } else {
-                this
-                    .on( eventIn, enter )
-                    .on( eventOut, leave );
+                mw.log.warn( 'Use of the "live" option of jquery.tipsy is no longer supported.' );
             }
+            this
+                .on( eventIn, enter )
+                .on( eventOut, leave );
         }
 
         return this;
index de2cd5b..81896de 100644 (file)
@@ -244,7 +244,7 @@ input#wpSummary {
 .catlinks li {
        display: inline-block;
        line-height: 1.25em;
-       border-left: 1px solid #aaa;
+       border-left: 1px solid #a2a9b1;
        margin: 0.125em 0;
        padding: 0 0.5em;
        zoom: 1;
@@ -482,7 +482,7 @@ table.wikitable > caption {
 .mw-datatable,
 .mw-datatable td,
 .mw-datatable th {
-       border: 1px solid #aaa;
+       border: 1px solid #a2a9b1;
        padding: 0 0.15em 0 0.15em;
 }
 
@@ -495,7 +495,7 @@ table.wikitable > caption {
 }
 
 .mw-datatable tr:hover td {
-       background-color: #eef;
+       background-color: #eaf3ff;
 }
 
 /* Correct directionality when page dir is different from site/user dir */
index 33ceb48..83b78a8 100644 (file)
@@ -88,8 +88,8 @@ img {
 
 hr {
        height: 1px;
-       color: #aaa;
-       background-color: #aaa;
+       color: #a2a9b1;
+       background-color: #a2a9b1;
        border: 0;
        margin: .2em 0;
 }
@@ -108,7 +108,7 @@ h6 {
        overflow: hidden;
        padding-top: .5em;
        padding-bottom: .17em;
-       border-bottom: 1px solid #aaa;
+       border-bottom: 1px solid #a2a9b1;
 }
 
 h1 {
index 223770f..7cc9b9b 100644 (file)
@@ -9,52 +9,42 @@
                // Adapted from a user script by User:NQ of English Wikipedia
                // (User:NQ/WatchlistResetConfirm.js)
                $resetForm.submit( function ( event ) {
-                       event.preventDefault();
-
-                       OO.ui.confirm( mw.msg( 'watchlist-mark-all-visited' ) )
-                       .done( function ( confirmed ) {
-                               var $button;
+                       var $button = $resetForm.find( 'input[name=mw-watchlist-reset-submit]' );
 
-                               if ( !confirmed ) {
-                                       return;
-                               }
-
-                               // Disable reset button to prevent multiple requests
-                               $button = $resetForm.find( 'input[name=mw-watchlist-reset-submit]' );
-                               $button.prop( 'disabled', true );
+                       event.preventDefault();
 
-                               // Show progress bar
-                               if ( $progressBar ) {
-                                       $progressBar.css( 'visibility', 'visible' );
-                               } else {
-                                       $progressBar = new OO.ui.ProgressBarWidget( { progress: false } ).$element;
-                                       $progressBar.css( {
-                                               position: 'absolute',
-                                               width: '100%'
-                                       } );
-                                       $resetForm.append( $progressBar );
-                               }
+                       // Disable reset button to prevent multiple concurrent requests
+                       $button.prop( 'disabled', true );
 
-                               // Use action=setnotificationtimestamp to mark all as visited,
-                               // then set all watchlist lines accordingly
-                               new mw.Api().postWithToken( 'csrf', {
-                                       formatversion: 2,
-                                       action: 'setnotificationtimestamp',
-                                       entirewatchlist: true
-                               } ).done( function () {
-                                       // Enable button again
-                                       $button.prop( 'disabled', false );
-                                       // Hide the button because further clicks can not generate any visual changes
-                                       $button.css( 'visibility', 'hidden' );
-                                       $progressBar.css( 'visibility', 'hidden' );
-                                       $( '.mw-changeslist-line-watched' )
-                                               .removeClass( 'mw-changeslist-line-watched' )
-                                               .addClass( 'mw-changeslist-line-not-watched' );
-                               } ).fail( function () {
-                                       // On error, fall back to server-side reset
-                                       // First remove this submit listener and then re-submit the form
-                                       $resetForm.off( 'submit' ).submit();
+                       if ( !$progressBar ) {
+                               $progressBar = new OO.ui.ProgressBarWidget( { progress: false } ).$element;
+                               $progressBar.css( {
+                                       position: 'absolute',
+                                       width: '100%'
                                } );
+                       }
+                       // Show progress bar
+                       $resetForm.append( $progressBar );
+
+                       // Use action=setnotificationtimestamp to mark all as visited,
+                       // then set all watchlist lines accordingly
+                       new mw.Api().postWithToken( 'csrf', {
+                               formatversion: 2,
+                               action: 'setnotificationtimestamp',
+                               entirewatchlist: true
+                       } ).done( function () {
+                               // Enable button again
+                               $button.prop( 'disabled', false );
+                               // Hide the button because further clicks can not generate any visual changes
+                               $button.css( 'visibility', 'hidden' );
+                               $progressBar.detach();
+                               $( '.mw-changeslist-line-watched' )
+                                       .removeClass( 'mw-changeslist-line-watched' )
+                                       .addClass( 'mw-changeslist-line-not-watched' );
+                       } ).fail( function () {
+                               // On error, fall back to server-side reset
+                               // First remove this submit listener and then re-submit the form
+                               $resetForm.off( 'submit' ).submit();
                        } );
                } );
 
index 2ac75c5..0a73bef 100755 (executable)
@@ -34,7 +34,8 @@
                        icon: 'search',
                        maxLength: undefined,
                        performSearchOnClick: true,
-                       dataLocation: 'header'
+                       dataLocation: 'header',
+                       namespace: 0
                }, config );
 
                // Parent constructor
@@ -83,7 +84,7 @@
                        self = this;
 
                // reuse the searchSuggest function from mw.searchSuggest
-               promise = mw.searchSuggest.request( api, this.getQueryValue(), $.noop, this.limit );
+               promise = mw.searchSuggest.request( api, this.getQueryValue(), $.noop, this.limit, this.getNamespace() );
 
                // tracking purposes
                promise.done( function ( data, jqXHR ) {
index 0e5e0c5..3a4581d 100644 (file)
                        cache[ key ] = api.get( {
                                action: 'query',
                                meta: 'siteinfo',
-                               siprop: 'interwikimap'
+                               siprop: 'interwikimap',
+                               // Cache client-side for a day since this info is mostly static
+                               maxage: 60 * 60 * 24,
+                               smaxage: 60 * 60 * 24,
+                               // Workaround T97096 by setting uselang=content
+                               uselang: 'content'
                        } ).then( function ( data ) {
                                return $.map( data.query.interwikimap, function ( interwiki ) {
                                        return interwiki.prefix;
index b9db059..a174f58 100644 (file)
                                                        jqXHR
                                                );
                                        } else if ( result.error ) {
+                                               // errorformat=bc
                                                code = result.error.code === undefined ? 'unknown' : result.error.code;
                                                apiDeferred.reject( code, result, result, jqXHR );
                                        } else if ( result.errors ) {
+                                               // errorformat!=bc
                                                code = result.errors[ 0 ].code === undefined ? 'unknown' : result.errors[ 0 ].code;
                                                apiDeferred.reject( code, result, result, jqXHR );
                                        } else {
index 92722b5..f68697f 100644 (file)
@@ -26,6 +26,7 @@
                var apiPromise = this.postWithToken( 'watch',
                        $.extend(
                                {
+                                       formatversion: 2,
                                        action: 'watch',
                                        titles: $.isArray( pages ) ? pages.join( '|' ) : String( pages ),
                                        uselang: mw.config.get( 'wgUserLanguage' )
index fa1a78c..bcb6c33 100644 (file)
@@ -4,12 +4,12 @@
 ( function ( mw, $ ) {
        mw.searchSuggest = {
                // queries the wiki and calls response with the result
-               request: function ( api, query, response, maxRows ) {
+               request: function ( api, query, response, maxRows, namespace ) {
                        return api.get( {
                                formatversion: 2,
                                action: 'opensearch',
                                search: query,
-                               namespace: 0,
+                               namespace: namespace || 0,
                                limit: maxRows,
                                suggest: true
                        } ).done( function ( data, jqXHR ) {
@@ -22,7 +22,7 @@
        };
 
        $( function () {
-               var api, map, searchboxesSelectors,
+               var api, searchboxesSelectors,
                        // Region where the suggestions box will appear directly below
                        // (using the same width). Can be a container element or the input
                        // itself, depending on what suits best in the environment.
                        $searchInput = $( '#searchInput' ),
                        previousSearchText = $searchInput.val();
 
-               // Compatibility map
-               map = {
-                       // SimpleSearch is broken in Opera < 9.6
-                       opera: [ [ '>=', 9.6 ] ],
-                       // Older Konquerors are unable to position the suggestions correctly (bug 50805)
-                       konqueror: [ [ '>=', '4.11' ] ],
-                       docomo: false,
-                       blackberry: false,
-                       // Support for iOS 6 or higher. It has not been tested on iOS 5 or lower
-                       ipod: [ [ '>=', 6 ] ],
-                       iphone: [ [ '>=', 6 ] ]
-               };
-
-               if ( !$.client.test( map ) ) {
-                       return;
-               }
-
                // Compute form data for search suggestions functionality.
                function getFormData( context ) {
                        var $form, baseHref, linkParams;
index f880e6a..5dda7e0 100644 (file)
 
                                        // Update the "Watch this page" checkbox on action=edit when the
                                        // page is watched or unwatched via the tab (bug 12395).
-                                       $( '#wpWatchthis' ).prop( 'checked', watchResponse.watched !== undefined );
+                                       $( '#wpWatchthis' ).prop( 'checked', watchResponse.watched === true );
                                } )
                                .fail( function () {
                                        var cleanTitle, msg, link;
index b18f1e7..505bc2d 100644 (file)
@@ -528,6 +528,17 @@ Extra newlines between heading and content are swallowed
 </p>
 !! end
 
+!! test
+Heading with line break in nowiki
+!! wikitext
+== A <nowiki>B
+C</nowiki> ==
+!! html
+<h2><span class="mw-headline" id="A_B.0AC">A B
+C</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: A B&#10;C">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+
+!! end
+
 !! test
 Parsing an URL
 !! wikitext
index bed8c69..5d42cf5 100755 (executable)
@@ -1,4 +1,11 @@
-#!/bin/sh
+#!/bin/bash
+
+# mediawiki-vagrant installs dont have realpath by default
+if ! which realpath > /dev/null; then
+       realpath() {
+               php -r "echo realpath('$*');"
+       }
+fi
 
 # Note that this isn't loaded in via composer because then composer can
 # only be run with php7.0
@@ -8,35 +15,57 @@ if [ ! -f "$PHAN" ]; then
        exit 1
 fi
 
-cd "$(dirname "$0")"
+if [ -z "$MW_INSTALL_PATH" ]; then
+       # Figure out where mediawiki is based on the location of this script
+       pushd "$(dirname "$0")" > /dev/null
+       export MW_INSTALL_PATH="$(git rev-parse --show-toplevel)"
+       popd >/dev/null
+fi
+
+# If the first argument doesn't start with a -, then it's a path
+# to another project (extension, skin, etc.) to analyze
+if [[ "$1" != "-"* ]]; then
+       cd $1
+       shift
+else
+       cd "$(dirname "$0")"
+fi
 
 # Root directory of project
 export ROOT="$(git rev-parse --show-toplevel)"
 
-# Phan's issues directory
-export ISSUES="${ROOT}/tests/phan/issues"
-
 # Go to the root of this git repo
 cd "$ROOT"
 
+export CONFIG_FILE="$ROOT/tests/phan/config.php"
+if [ ! -f "$CONFIG_FILE" ]; then
+       echo "Could not find a phan config file to apply in"
+       echo "$CONFIG_FILE"
+       exit 1
+fi
+
+# Phan's issues directory
+export ISSUES="${ROOT}/tests/phan/issues"
+mkdir -p "$ISSUES"
+
 # Get the current hash of HEAD
 export REV="$(git rev-parse HEAD)"
 
 # Destination for issues found
 export RUN="${ISSUES}/issues-${REV}"
 
+
 # Run the analysis, emitting output to the
 # issues file.
 php7.0 $PHAN \
        --project-root-directory "$ROOT" \
-       --config-file "$ROOT/tests/phan/config.php" \
-       --output "$RUN" \
-       "${@}"
-
+       --config-file "$CONFIG_FILE" \
+       --output "php://stdout" \
+       "${@}" \
+       | php "$MW_INSTALL_PATH/tests/phan/bin/postprocess-phan.php" "${@}" \
+       > $RUN
 
-cat "${RUN}" | php "$ROOT/tests/phan/bin/postprocess-phan.php" "${@}" > /tmp/phan.$$
 EXIT_CODE="$?"
-mv /tmp/phan.$$ "${RUN}"
 
 # Re-link the latest file
 rm -f "${ISSUES}/latest"
index 5259ec9..0cf354c 100644 (file)
@@ -316,8 +316,6 @@ return [
                // approximate error count: 2
                "PhanTraitParentReference",
                // approximate error count: 4
-               "PhanTypeArraySuspicious",
-               // approximate error count: 4
                "PhanTypeComparisonFromArray",
                // approximate error count: 3
                "PhanTypeInvalidRightOperand",
@@ -325,15 +323,13 @@ return [
                "PhanTypeMismatchArgument",
                // approximate error count: 39
                "PhanTypeMismatchArgumentInternal",
-               // approximate error count: 4
-               "PhanTypeMismatchDefault",
                // approximate error count: 16
                "PhanTypeMismatchForeach",
                // approximate error count: 63
                "PhanTypeMismatchProperty",
                // approximate error count: 95
                "PhanTypeMismatchReturn",
-               // approximate error count: 16
+               // approximate error count: 11
                "PhanTypeMissingReturn",
                // approximate error count: 5
                "PhanTypeNonVarPassByRef",
index 9f38659..12b277e 100644 (file)
@@ -409,4 +409,33 @@ class BlockTest extends MediaWikiLangTestCase {
                        "Account creation should not be blocked by default"
                );
        }
+
+       public function testSystemBlocks() {
+               $blockOptions = [
+                       'address' => 'UTBlockee',
+                       'reason' => 'test system block',
+                       'timestamp' => wfTimestampNow(),
+                       'expiry' => $this->db->getInfinity(),
+                       'byText' => 'MetaWikiUser',
+                       'systemBlock' => 'test',
+                       'enableAutoblock' => true,
+               ];
+               $block = new Block( $blockOptions );
+
+               $this->assertSame( 'test', $block->getSystemBlockType() );
+
+               try {
+                       $block->insert();
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( MWException $ex ) {
+                       $this->assertSame( 'Cannot insert a system block into the database', $ex->getMessage() );
+               }
+
+               try {
+                       $block->doAutoblock( '192.0.2.2' );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( MWException $ex ) {
+                       $this->assertSame( 'Cannot autoblock from a system block', $ex->getMessage() );
+               }
+       }
 }
index 3cb20e1..7086a92 100644 (file)
@@ -33,16 +33,18 @@ use Psr\Log\LogLevel;
  */
 class TestLogger extends \Psr\Log\AbstractLogger {
        private $collect = false;
+       private $collectContext = false;
        private $buffer = [];
        private $filter = null;
 
        /**
         * @param bool $collect Whether to collect logs
         * @param callable $filter Filter logs before collecting/printing. Signature is
-        *  string|null function ( string $message, string $level );
+        *  string|null function ( string $message, string $level, array $context );
         */
-       public function __construct( $collect = false, $filter = null ) {
+       public function __construct( $collect = false, $filter = null, $collectContext = false ) {
                $this->collect = $collect;
+               $this->collectContext = $collectContext;
                $this->filter = $filter;
        }
 
@@ -56,7 +58,8 @@ class TestLogger extends \Psr\Log\AbstractLogger {
 
        /**
         * Return the collected logs
-        * @return array Array of array( string $level, string $message )
+        * @return array Array of array( string $level, string $message ), or
+        *   array( string $level, string $message, array $context ) if $collectContext was true.
         */
        public function getBuffer() {
                return $this->buffer;
@@ -73,14 +76,18 @@ class TestLogger extends \Psr\Log\AbstractLogger {
                $message = trim( $message );
 
                if ( $this->filter ) {
-                       $message = call_user_func( $this->filter, $message, $level );
+                       $message = call_user_func( $this->filter, $message, $level, $context );
                        if ( $message === null ) {
                                return;
                        }
                }
 
                if ( $this->collect ) {
-                       $this->buffer[] = [ $level, $message ];
+                       if ( $this->collectContext ) {
+                               $this->buffer[] = [ $level, $message, $context ];
+                       } else {
+                               $this->buffer[] = [ $level, $message ];
+                       }
                } else {
                        switch ( $level ) {
                                case LogLevel::DEBUG:
index 5ecdf56..9121178 100644 (file)
@@ -787,5 +787,21 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                # $action != 'read' && $action != 'createaccount' && $user->isBlockedFrom( $this )
                #   $user->blockedFor() == ''
                #   $user->mBlock->mExpiry == 'infinity'
+
+               $this->user->mBlockedby = $this->user->getName();
+               $this->user->mBlock = new Block( [
+                       'address' => '127.0.8.1',
+                       'by' => $this->user->getId(),
+                       'reason' => 'no reason given',
+                       'timestamp' => $now,
+                       'auto' => false,
+                       'expiry' => 10,
+                       'systemBlock' => 'test',
+               ] );
+               $this->assertEquals( [ [ 'systemblockedtext',
+                               '[[User:Useruser|Useruser]]', 'no reason given', '127.0.0.1',
+                               'Useruser', 'test', '23:00, 31 December 1969', '127.0.8.1',
+                               $wgLang->timeanddate( wfTimestamp( TS_MW, $now ), true ) ] ],
+                       $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
        }
 }
index ba47059..0bd0bcc 100644 (file)
@@ -2404,6 +2404,35 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
                );
        }
 
+       public function testSetNotificationTimestampsForUser_nullTimestamp() {
+               $user = $this->getMockNonAnonUserWithId( 1 );
+               $timestamp = null;
+
+               $mockDb = $this->getMockDb();
+               $mockDb->expects( $this->once() )
+                       ->method( 'update' )
+                       ->with(
+                               'watchlist',
+                               [ 'wl_notificationtimestamp' => null ],
+                               [ 'wl_user' => 1 ]
+                       )
+                       ->will( $this->returnValue( true ) );
+               $mockDb->expects( $this->exactly( 0 ) )
+                       ->method( 'timestamp' )
+                       ->will( $this->returnCallback( function( $value ) {
+                               return 'TS' . $value . 'TS';
+                       } ) );
+
+               $store = $this->newWatchedItemStore(
+                       $this->getMockLoadBalancer( $mockDb ),
+                       $this->getMockCache()
+               );
+
+               $this->assertTrue(
+                       $store->setNotificationTimestampsForUser( $user, $timestamp )
+               );
+       }
+
        public function testSetNotificationTimestampsForUser_specificTargets() {
                $user = $this->getMockNonAnonUserWithId( 1 );
                $timestamp = '20100101010101';
index 96f3e44..7327e85 100644 (file)
@@ -135,11 +135,13 @@ class ApiBaseTest extends ApiTestCase {
                $expect = Status::newGood();
                $expect->fatal( 'blockedtext' );
                $expect->fatal( 'autoblockedtext' );
+               $expect->fatal( 'systemblockedtext' );
                $expect->fatal( 'mainpage' );
                $expect->fatal( 'parentheses', 'foobar' );
                $this->assertEquals( $expect, $mock->errorArrayToStatus( [
                        [ 'blockedtext' ],
                        [ 'autoblockedtext' ],
+                       [ 'systemblockedtext' ],
                        'mainpage',
                        [ 'parentheses', 'foobar' ],
                ] ) );
@@ -158,11 +160,13 @@ class ApiBaseTest extends ApiTestCase {
                $expect = Status::newGood();
                $expect->fatal( ApiMessage::create( 'apierror-blocked', 'blocked', $blockinfo ) );
                $expect->fatal( ApiMessage::create( 'apierror-autoblocked', 'autoblocked', $blockinfo ) );
+               $expect->fatal( ApiMessage::create( 'apierror-systemblocked', 'blocked', $blockinfo ) );
                $expect->fatal( 'mainpage' );
                $expect->fatal( 'parentheses', 'foobar' );
                $this->assertEquals( $expect, $mock->errorArrayToStatus( [
                        [ 'blockedtext' ],
                        [ 'autoblockedtext' ],
+                       [ 'systemblockedtext' ],
                        'mainpage',
                        [ 'parentheses', 'foobar' ],
                ], $user ) );
index 11995de..71f760d 100644 (file)
@@ -450,8 +450,9 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                $globalSettings = TestingAccessWrapper::newFromClass(
                        ExtensionProcessor::class )->globalSettings;
 
+               $version = ExtensionRegistry::MANIFEST_VERSION;
                $schema = FormatJson::decode(
-                       file_get_contents( "$IP/docs/extension.schema.json" ),
+                       file_get_contents( "$IP/docs/extension.schema.v$version.json" ),
                        true
                );
                $missing = [];
index 3a959a3..6a00ac9 100644 (file)
@@ -44,7 +44,7 @@
                } );
        } );
 
-       QUnit.test( 'API error', function ( assert ) {
+       QUnit.test( 'API error errorformat=bc', function ( assert ) {
                var api = new mw.Api();
 
                this.server.respond( [ 200, { 'Content-Type': 'application/json' },
                        .always( assert.async() );
        } );
 
+       QUnit.test( 'API error errorformat!=bc', function ( assert ) {
+               var api = new mw.Api();
+
+               this.server.respond( [ 200, { 'Content-Type': 'application/json' },
+                       '{ "errors": [ { "code": "unknown_action", "key": "unknown-error", "params": [] } ] }'
+               ] );
+
+               api.get( { action: 'doesntexist' } )
+                       .fail( function ( errorCode ) {
+                               assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' );
+                       } )
+                       .always( assert.async() );
+       } );
+
        QUnit.test( 'FormData support', function ( assert ) {
                var api = new mw.Api();
 
index b2fac3c..2171f34 100644 (file)
@@ -3,11 +3,11 @@
 
        QUnit.module( 'mediawiki.language', QUnit.newMwEnvironment( {
                setup: function () {
-                       this.liveLangData = mw.language.data.values;
-                       mw.language.data.values = $.extend( true, {}, this.liveLangData );
+                       this.liveLangData = mw.language.data;
+                       mw.language.data = {};
                },
                teardown: function () {
-                       mw.language.data.values = this.liveLangData;
+                       mw.language.data = this.liveLangData;
                },
                messages: {
                        // mw.language.listToText test