Page MenuHomePhabricator

No OneTemporary

File Metadata

Created
Sun, Jan 19, 5:03 PM
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/composer.lock b/composer.lock
index b3b642f1a..1e56918d1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,1471 +1,1471 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "3787d784905377489bb40b47b8fb3355",
"packages": [
{
"name": "composer/installers",
"version": "v1.0.21",
"source": {
"type": "git",
"url": "https://github.com/composer/installers.git",
"reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/installers/zipball/d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
"reference": "d64e23fce42a4063d63262b19b8e7c0f3b5e4c45",
"shasum": ""
},
"replace": {
"roundcube/plugin-installer": "*",
"shama/baton": "*"
},
"require-dev": {
"composer/composer": "1.0.*@dev",
"phpunit/phpunit": "4.1.*"
},
"type": "composer-installer",
"extra": {
"class": "Composer\\Installers\\Installer",
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-0": {
"Composer\\Installers\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Kyle Robinson Young",
"email": "kyle@dontkry.com",
"homepage": "https://github.com/shama"
}
],
"description": "A multi-framework Composer library installer",
"homepage": "http://composer.github.com/installers/",
"keywords": [
"Craft",
"Dolibarr",
"Hurad",
"MODX Evo",
"OXID",
"SMF",
"Thelia",
"WolfCMS",
"agl",
"aimeos",
"annotatecms",
"bitrix",
"cakephp",
"chef",
"codeigniter",
"concrete5",
"croogo",
"dokuwiki",
"drupal",
"elgg",
"fuelphp",
"grav",
"installer",
"joomla",
"kohana",
"laravel",
"lithium",
"magento",
"mako",
"mediawiki",
"modulework",
"moodle",
"phpbb",
"piwik",
"ppi",
"puppet",
"roundcube",
"shopware",
"silverstripe",
"symfony",
"typo3",
"wordpress",
"zend",
"zikula"
],
"time": "2015-02-18 17:17:01"
},
{
"name": "data-values/common",
"version": "0.2.3",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Common.git",
"reference": "c9f4dfd8af6337eb097d722b27fa76fa58dd441a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Common/zipball/c9f4dfd8af6337eb097d722b27fa76fa58dd441a",
"reference": "c9f4dfd8af6337eb097d722b27fa76fa58dd441a",
"shasum": ""
},
"require": {
"data-values/data-values": "~1.0|~0.1",
"data-values/interfaces": "~0.1.4",
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.2.x-dev"
}
},
"autoload": {
"files": [
"Common.php"
],
"psr-0": {
"DataValues\\": "src",
"ValueFormatters\\": "src",
"ValueParsers\\": "src"
},
"classmap": [
"tests/ValueParsers"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "Contains common implementations of the interfaces defined by DataValuesInterfaces",
"homepage": "https://github.com/DataValues/Common",
"keywords": [
"datavalues",
"valueformatters",
"valueparsers",
"valuevalidators",
"wikidata"
],
"time": "2014-10-09 18:21:19"
},
{
"name": "data-values/data-types",
"version": "0.4.3",
"source": {
"type": "git",
"url": "https://github.com/wmde/DataTypes.git",
"reference": "76d3ee4531a4d0f2f47a6111199d6b89e03fd6dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/DataTypes/zipball/76d3ee4531a4d0f2f47a6111199d6b89e03fd6dd",
"reference": "76d3ee4531a4d0f2f47a6111199d6b89e03fd6dd",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"files": [
"DataTypes.php"
],
"psr-4": {
"DataTypes\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "PHP library defining the DataTypes\\DataType class of which instances represent a type of value, such as \"positive integer\" or \"percentage\".",
"homepage": "https://github.com/wmde/DataTypes",
"keywords": [
"datatypes",
"datavalues"
],
"time": "2015-06-18 12:40:39"
},
{
"name": "data-values/data-values",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/DataValues/DataValues.git",
"reference": "de2b9abdbc26c4c393b25aa621619dfe3fc10fdc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/DataValues/zipball/de2b9abdbc26c4c393b25aa621619dfe3fc10fdc",
"reference": "de2b9abdbc26c4c393b25aa621619dfe3fc10fdc",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"replace": {
"mediawiki/data-values": "*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"files": [
"DataValues.php"
],
"classmap": [
"src/interfaces",
"tests/phpunit/DataValueTest.php"
],
"psr-0": {
"DataValues\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "Defines the DataValue interface and some trivial implementations",
"homepage": "https://github.com/DataValues/DataValues",
"keywords": [
"datavalues",
"wikibase",
"wikidata"
],
"time": "2014-09-26 07:02:27"
},
{
"name": "data-values/geo",
"version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Geo.git",
"reference": "e7222bc743ae05bfc5213cb1e20150aa772d8668"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Geo/zipball/e7222bc743ae05bfc5213cb1e20150aa772d8668",
"reference": "e7222bc743ae05bfc5213cb1e20150aa772d8668",
"shasum": ""
},
"require": {
"data-values/common": "~0.1",
"data-values/data-values": "~1.0|~0.1",
"data-values/interfaces": "~0.1",
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"files": [
"Geo.php"
],
"psr-4": {
"DataValues\\Geo\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
},
{
"name": "The Wikidata team",
"role": "Developer"
}
],
"description": "Geographical value objects, parsers and formatters",
"homepage": "https://github.com/DataValues/Geo",
"keywords": [
"datavalues",
"formatters",
"geo",
"geographical",
"latlong",
"parsers",
"wikidata"
],
"time": "2014-11-25 16:48:57"
},
{
"name": "data-values/interfaces",
"version": "0.1.5",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Interfaces.git",
"reference": "f563e6a55547046070e3d79b5662b620005558d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Interfaces/zipball/f563e6a55547046070e3d79b5662b620005558d8",
"reference": "f563e6a55547046070e3d79b5662b620005558d8",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"files": [
"Interfaces.php"
],
"psr-0": {
"ValueFormatters\\": "src",
"ValueParsers\\": "src",
"ValueValidators\\": "src"
},
"classmap": [
"tests/ValueFormatters/ValueFormatterTestBase.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "Defines interfaces for ValueParsers, ValueFormatters and ValueValidators",
"homepage": "https://github.com/DataValues/Interfaces",
"keywords": [
"datavalues",
"valueformatters",
"valueparsers",
"valuevalidators",
"wikidata"
],
"time": "2015-02-14 02:37:02"
},
{
"name": "data-values/javascript",
"version": "0.7.0",
"source": {
"type": "git",
"url": "https://github.com/wmde/DataValuesJavascript.git",
"reference": "65ecb1f7e0bb6fe84dee23834452db40e6f5ca52"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/DataValuesJavascript/zipball/65ecb1f7e0bb6fe84dee23834452db40e6f5ca52",
"reference": "65ecb1f7e0bb6fe84dee23834452db40e6f5ca52",
"shasum": ""
},
"require": {
"composer/installers": ">=1.0.1"
},
"type": "library",
"autoload": {
"files": [
"DataValuesJavaScript.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com"
},
{
"name": "Daniel Werner",
"homepage": "https://www.mediawiki.org/wiki/User:Danwe"
},
{
"name": "H. Snater",
"homepage": "http://www.snater.com"
}
],
"description": "DataValues implementation in JavaScript",
"keywords": [
"datavalues",
"wikidata"
],
"time": "2015-06-03 14:57:45"
},
{
"name": "data-values/number",
"version": "0.5",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Number.git",
"reference": "b4a9b18d5bfc6a9b212aecec9220ba4c595625b9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Number/zipball/b4a9b18d5bfc6a9b212aecec9220ba4c595625b9",
"reference": "b4a9b18d5bfc6a9b212aecec9220ba4c595625b9",
"shasum": ""
},
"require": {
"data-values/common": "~0.2",
"data-values/data-values": "~1.0|~0.1",
"data-values/interfaces": "^0.1.5",
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"files": [
"Number.php"
],
"psr-0": {
"DataValues\\": "src",
"ValueFormatters\\": "src",
"ValueParsers\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Daniel Kinzler"
}
],
"description": "Numerical value objects, parsers and formatters",
"homepage": "https://github.com/DataValues/Number",
"keywords": [
"datavalues",
"number",
"valueformatters",
"valueparsers",
"wikidata"
],
"time": "2015-06-11 17:01:16"
},
{
"name": "data-values/serialization",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Serialization.git",
"reference": "f51978a1abb9c97c83bbfea351ce94c8499c7988"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Serialization/zipball/f51978a1abb9c97c83bbfea351ce94c8499c7988",
"reference": "f51978a1abb9c97c83bbfea351ce94c8499c7988",
"shasum": ""
},
"require": {
"data-values/data-values": "~1.0|~0.1",
"php": ">=5.3.0",
"serialization/serialization": "~3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"DataValues\\Serializers\\": "src/Serializers",
"DataValues\\Deserializers\\": "src/Deserializers"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "Serializers and deserializers for DataValue implementations",
"homepage": "https://github.com/DataValues/Serialization",
"keywords": [
"datavalues",
"deserializers",
"serialization",
"serializers",
"wikidata"
],
"time": "2014-10-10 07:51:44"
},
{
"name": "data-values/time",
"version": "0.8.0",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Time.git",
"reference": "0a28018f7b7f7919775bc25d5961e9a37c8dd279"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Time/zipball/0a28018f7b7f7919775bc25d5961e9a37c8dd279",
"reference": "0a28018f7b7f7919775bc25d5961e9a37c8dd279",
"shasum": ""
},
"require": {
"data-values/common": "~0.2.0",
"data-values/data-values": "~1.0|~0.1",
"data-values/interfaces": "^0.1.5",
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.8.x-dev"
}
},
"autoload": {
"files": [
"Time.php"
],
"psr-0": {
"DataValues\\": "src",
"ValueFormatters\\": "src",
"ValueParsers\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "The Wikidata team",
"role": "Developer"
}
],
"description": "Time value objects, parsers and formatters",
"homepage": "https://github.com/DataValues/Time",
"keywords": [
"datavalues",
"time",
"valueformatters",
"valueparsers",
"wikidata"
],
"time": "2015-06-26 08:41:15"
},
{
"name": "data-values/validators",
"version": "0.1.2",
"source": {
"type": "git",
"url": "https://github.com/DataValues/Validators.git",
"reference": "726f54fdc6bf58aa4f5405ae3d9c3f2b0f916141"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DataValues/Validators/zipball/726f54fdc6bf58aa4f5405ae3d9c3f2b0f916141",
"reference": "726f54fdc6bf58aa4f5405ae3d9c3f2b0f916141",
"shasum": ""
},
"require": {
"data-values/data-values": "~1.0|~0.1",
"data-values/interfaces": "~0.1",
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.1.x-dev"
}
},
"autoload": {
"files": [
"Validators.php"
],
"psr-4": {
"ValueValidators\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
},
{
"name": "The Wikidata team",
"role": "Developer"
}
],
"description": "Common ValueValidator implementations",
"homepage": "https://github.com/DataValues/Validators",
"keywords": [
"datavalues",
"validation",
"validators",
"valueformatters",
"valueparsers",
"wikidata"
],
"time": "2014-10-09 19:10:23"
},
{
"name": "data-values/value-view",
"version": "0.14.5",
"source": {
"type": "git",
"url": "https://github.com/wmde/ValueView.git",
"reference": "4f561f1001fc2317b5d5df1402cedffa686a2b77"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/ValueView/zipball/4f561f1001fc2317b5d5df1402cedffa686a2b77",
"reference": "4f561f1001fc2317b5d5df1402cedffa686a2b77",
"shasum": ""
},
"require": {
"data-values/javascript": "~0.7.0",
"php": ">=5.3.0"
},
"type": "mediawiki-extension",
"autoload": {
"files": [
"ValueView.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Daniel Werner",
"homepage": "https://www.mediawiki.org/wiki/User:Danwe"
},
{
"name": "H. Snater",
"homepage": "http://www.snater.com"
}
],
"description": "Provides JS widgets to edit values defined by the DataValues library",
"homepage": "https://www.mediawiki.org/wiki/Extension:ValueView",
"time": "2015-06-11 15:17:50"
},
{
"name": "diff/diff",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/wmde/Diff.git",
"reference": "779bd922b53a4483f722c546621c0a401e3f2900"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/Diff/zipball/779bd922b53a4483f722c546621c0a401e3f2900",
"reference": "779bd922b53a4483f722c546621c0a401e3f2900",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpmd/phpmd": "~2.1",
"squizlabs/php_codesniffer": "~2.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0.x-dev"
}
},
"autoload": {
"files": [
"Diff.php"
],
"psr-4": {
"Diff\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "Small standalone library for representing differences between data structures, computing such differences, and applying them as patches",
"homepage": "https://github.com/wmde/Diff",
"keywords": [
"diff",
"diffing",
"diffop",
"patching",
"wikidata"
],
"time": "2015-03-17 15:21:21"
},
{
"name": "propertysuggester/property-suggester",
"version": "2.3.1",
"source": {
"type": "git",
"url": "https://github.com/Wikidata-lib/PropertySuggester.git",
"reference": "acfd7b9ff9cff325ac64e7204911980d0a9012bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Wikidata-lib/PropertySuggester/zipball/acfd7b9ff9cff325ac64e7204911980d0a9012bc",
"reference": "acfd7b9ff9cff325ac64e7204911980d0a9012bc",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"satooshi/php-coveralls": "dev-master"
},
"type": "mediawiki-extension",
"autoload": {
"psr-4": {
"PropertySuggester\\": "src/PropertySuggester/"
},
"files": [],
"classmap": [
"PropertySuggesterHooks.php",
"maintenance/UpdateTable.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"description": "Extension for Wikibase to provide usefull suggestions for new properties",
"homepage": "https://github.com/Wikidata-lib/PropertySuggester",
"keywords": [
"propertysuggester",
"wikibase",
"wikidata"
],
"time": "2015-07-14 12:09:42"
},
{
"name": "serialization/serialization",
"version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/wmde/Serialization.git",
"reference": "8e06ec58c8f52079942c9cb2f30b2260f62dc1f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/Serialization/zipball/8e06ec58c8f52079942c9cb2f30b2260f62dc1f4",
"reference": "8e06ec58c8f52079942c9cb2f30b2260f62dc1f4",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.2.x-dev"
}
},
"autoload": {
"files": [
"Serialization.php"
],
"psr-4": {
"Deserializers\\": "src/Deserializers/",
"Serializers\\": "src/Serializers/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com",
"role": "Developer"
}
],
"description": "Library defining a Serializer and a Deserializer interface and basic utilities",
"homepage": "https://github.com/wmde/Serialization",
"keywords": [
"deserialization",
"deserializer",
"serialization",
"serializer",
"unserialization",
"wikidata"
],
"time": "2014-08-19 01:53:31"
},
{
"name": "wikibase/Wikidata.org",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/wmde/Wikidata.org.git",
"reference": "9029d28d8aaeb65cd1338865183740b4be445fa5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/Wikidata.org/zipball/9029d28d8aaeb65cd1338865183740b4be445fa5",
"reference": "9029d28d8aaeb65cd1338865183740b4be445fa5",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "mediawiki-extension",
"autoload": {
"classmap": [
"WikidataOrg.hooks.php"
]
},
"license": [
"GNU GPL v2+"
],
"authors": [
{
"name": "Bene*",
"email": "benestar.wikimedia@gmail.com",
"homepage": "https://www.wikidata.org/wiki/User:Bene*",
"role": "Developer"
}
],
"description": "Configuration for and customizations to Wikibase that are specific to wikidata.org",
"homepage": "https://github.com/wmde/Wikidata.org",
"keywords": [
"Wikibase",
"Wikidata"
],
"support": {
"irc": "irc://irc.freenode.net/wikidata",
"source": "https://github.com/wmde/Wikidata.org/tree/master"
},
"time": "2015-07-06 10:56:50"
},
{
"name": "wikibase/constraints",
"version": "1.x-dev",
"source": {
"type": "git",
"url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQualityConstraints",
"reference": "a04eb8fe6f62d5545a0de45440e90b4c99256914"
},
"require": {
"php": ">=5.3.0",
"serialization/serialization": "3.*,>=3.2.1",
"wikibase/data-model": "~3.0"
},
"require-dev": {
"phpunit/phpunit": "~3.7,>=3.7.37|~4.5",
"satooshi/php-coveralls": "master-dev"
},
"type": "mediawiki-extension",
"autoload": {
"psr-4": {
"WikibaseQuality\\ConstraintReport\\": "includes/",
"WikibaseQuality\\ConstraintReport\\Specials\\": "specials/",
"WikibaseQuality\\ConstraintReport\\Tests\\": "tests/phpunit/",
"WikibaseQuality\\ConstraintReport\\Maintenance\\": "maintenance/"
},
"classmap": [
"WikibaseQualityConstraintsHooks.php",
"maintenance/UpdateConstraintsTable.php"
]
},
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "BP2014N1"
}
],
"description": "Extension for WikibaseQuality to manage constraints in Wikibase.",
"homepage": "https://www.mediawiki.org/wiki/WikidataQuality/",
"keywords": [
"constraint",
"quality",
"trust",
"violation",
"wikibase",
"wikidata"
],
"support": {
"issues": "https://phabricator.wikimedia.org/project/profile/1202/"
},
"time": "2015-07-22 13:21:59"
},
{
"name": "wikibase/data-model",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/wmde/WikibaseDataModel.git",
"reference": "94942755d15f814bfd0da39a33cc170154aece11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/WikibaseDataModel/zipball/94942755d15f814bfd0da39a33cc170154aece11",
"reference": "94942755d15f814bfd0da39a33cc170154aece11",
"shasum": ""
},
"require": {
"data-values/data-values": "~0.1|~1.0",
"diff/diff": "~1.0|~2.0",
"php": ">=5.3.0"
},
"require-dev": {
"phpmd/phpmd": "~2.1",
"squizlabs/php_codesniffer": "~2.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
},
"autoload": {
"files": [
"WikibaseDataModel.php"
],
"psr-4": {
"Wikibase\\DataModel\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Thiemo Mättig"
},
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com"
}
],
"description": "PHP implementation of the Wikibase DataModel",
"homepage": "https://github.com/wmde/WikibaseDataModel",
"keywords": [
"DataModel",
"wikibase",
"wikidata"
],
"time": "2015-07-01 17:54:17"
},
{
"name": "wikibase/data-model-javascript",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/wmde/WikibaseDataModelJavaScript.git",
"reference": "f27c4e0bc9b0c8b45c7fdb5bb577ed59f9d06287"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/WikibaseDataModelJavaScript/zipball/f27c4e0bc9b0c8b45c7fdb5bb577ed59f9d06287",
"reference": "f27c4e0bc9b0c8b45c7fdb5bb577ed59f9d06287",
"shasum": ""
},
"require": {
"data-values/javascript": "~0.6.0|~0.7.0"
},
"type": "library",
"autoload": {
"files": [
"init.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Adrian Lang",
"email": "adrian.lang@wikimedia.de"
},
{
"name": "H. Snater",
"homepage": "http://www.snater.com"
}
],
"description": "Wikibase datamodel implementation in JavaScript",
"time": "2015-05-29 09:52:16"
},
{
"name": "wikibase/data-model-serialization",
"version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/wmde/WikibaseDataModelSerialization.git",
"reference": "aa7737e062c5053c34bed700c0bcfe372188910c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/WikibaseDataModelSerialization/zipball/aa7737e062c5053c34bed700c0bcfe372188910c",
"reference": "aa7737e062c5053c34bed700c0bcfe372188910c",
"shasum": ""
},
"require": {
"data-values/serialization": "~1.0",
"php": ">=5.3.0",
"serialization/serialization": "~3.1",
"wikibase/data-model": "~3.0"
},
"require-dev": {
"data-values/common": "~0.2",
"data-values/geo": "~1.0|~0.1",
"data-values/number": "~0.2",
"data-values/time": "~0.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7.x-dev"
}
},
"autoload": {
"psr-4": {
"Wikibase\\DataModel\\": "src/"
},
"files": [
"mediawiki.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Thomas PT",
"homepage": "https://github.com/Tpt"
},
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com"
}
],
"description": "Serializers and deserializers for the Wikibase DataModel",
"homepage": "https://github.com/wmde/WikibaseDataModelSerialization",
"keywords": [
"DataModel",
"deserializers",
"serialization",
"serializers",
"wikibase",
"wikidata"
],
"time": "2015-07-23 19:30:40"
},
{
"name": "wikibase/internal-serialization",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/wmde/WikibaseInternalSerialization.git",
"reference": "6d8b49d079991d33f4b1d28b8e6ade3b01b61516"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/WikibaseInternalSerialization/zipball/6d8b49d079991d33f4b1d28b8e6ade3b01b61516",
"reference": "6d8b49d079991d33f4b1d28b8e6ade3b01b61516",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"serialization/serialization": "~3.2",
"wikibase/data-model": "~3.0",
"wikibase/data-model-serialization": "~1.4"
},
"require-dev": {
"data-values/common": "~0.2.2",
"data-values/geo": "~1.1",
"data-values/number": "~0.4.0",
"data-values/time": "~0.7.0",
"phpmd/phpmd": "~2.1",
"squizlabs/php_codesniffer": "~2.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4.x-dev"
}
},
"autoload": {
"psr-4": {
"Wikibase\\InternalSerialization\\": "src/"
},
"files": [
"mediawiki.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Jeroen De Dauw",
"email": "jeroendedauw@gmail.com",
"homepage": "http://jeroendedauw.com"
}
],
"description": "Serializers and deserializers for the data access layer of Wikibase Repository",
"homepage": "https://github.com/wmde/WikibaseInternalSerialization",
"keywords": [
"DataModel",
"deserializers",
"serialization",
"serializers",
"wikibase",
"wikidata"
],
"time": "2015-06-12 16:44:21"
},
{
"name": "wikibase/javascript-api",
"version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/wikimedia/mediawiki-extensions-WikibaseJavaScriptApi.git",
"reference": "76452ebbd22bdb32b354c43ee523c4663ed98d1b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-WikibaseJavaScriptApi/zipball/76452ebbd22bdb32b354c43ee523c4663ed98d1b",
"reference": "76452ebbd22bdb32b354c43ee523c4663ed98d1b",
"shasum": ""
},
"require": {
"data-values/javascript": "~0.6.0|~0.7.0"
},
"type": "library",
"autoload": {
"files": [
"WikibaseJavaScriptApi.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Adrian Lang",
"email": "adrian.lang@wikimedia.de"
},
{
"name": "H. Snater",
"homepage": "http://www.snater.com"
}
],
"description": "Wikibase API client in JavaScript",
"time": "2015-05-21 19:07:14"
},
{
"name": "wikibase/quality",
"version": "1.x-dev",
"source": {
"type": "git",
"url": "https://gerrit.wikimedia.org/r/mediawiki/extensions/WikibaseQuality",
"reference": "0e6c3c95ab49c449d35b3228691c885062f766bb"
},
"require": {
"php": ">=5.3.0",
"serialization/serialization": "3.*,>=3.2.1",
"wikibase/data-model": "~3.0"
},
"require-dev": {
"phpunit/phpunit": "~3.7,>=3.7.37|~4.5",
"satooshi/php-coveralls": "master-dev"
},
"type": "mediawiki-extension",
"autoload": {
"psr-4": {
"WikibaseQuality\\": "includes/",
"WikibaseQuality\\Api\\": "api/",
"WikibaseQuality\\Specials\\": "specials/",
"WikibaseQuality\\Tests\\": "tests/phpunit/"
},
"classmap": [
"WikibaseQualityHooks.php"
]
},
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "BP2014N1"
}
],
"description": "Extension for Wikibase to improve the data quality and trust.",
"homepage": "https://www.mediawiki.org/wiki/Wikibase_Quality_Extensions",
"keywords": [
"quality",
"trust",
"violation",
"wikibase",
"wikidata"
],
"support": {
"issues": "https://phabricator.wikimedia.org/project/profile/989/"
},
"time": "2015-06-30 17:53:04"
},
{
"name": "wikibase/serialization-javascript",
"version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/wmde/WikibaseSerializationJavaScript.git",
"reference": "5f20179cfad260ba76f91258fe5ade3f487767f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/WikibaseSerializationJavaScript/zipball/5f20179cfad260ba76f91258fe5ade3f487767f8",
"reference": "5f20179cfad260ba76f91258fe5ade3f487767f8",
"shasum": ""
},
"require": {
"data-values/javascript": "~0.7.0",
"wikibase/data-model-javascript": "~1.0.0"
},
"type": "library",
"autoload": {
"files": [
"init.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Adrian Lang",
"email": "adrian.lang@wikimedia.de"
},
{
"name": "H. Snater",
"homepage": "http://www.snater.com"
}
],
"description": "Wikibase datamodel serialization implementation in JavaScript",
"time": "2015-06-03 16:10:04"
},
{
"name": "wikibase/wikibase",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/wikimedia/mediawiki-extensions-Wikibase.git",
- "reference": "c437e8eb6dcf9e537a8d2373915e835f99691319"
+ "reference": "785b040bff410fbbc273432076b80f28e9c5aec0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/c437e8eb6dcf9e537a8d2373915e835f99691319",
- "reference": "c437e8eb6dcf9e537a8d2373915e835f99691319",
+ "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/785b040bff410fbbc273432076b80f28e9c5aec0",
+ "reference": "785b040bff410fbbc273432076b80f28e9c5aec0",
"shasum": ""
},
"require": {
"data-values/common": "~0.2.0",
"data-values/data-types": "~0.4.0",
"data-values/data-values": "~1.0.0",
"data-values/geo": "~1.0",
"data-values/interfaces": "^0.1.5",
"data-values/javascript": "~0.6.0|~0.7.0",
"data-values/number": "~0.5.0",
"data-values/serialization": "~1.0",
"data-values/time": "~0.8.0",
"data-values/validators": "~0.1.0",
"data-values/value-view": "~0.14.0",
"diff/diff": "~2.0|~1.0",
"php": ">=5.3.2",
"wikibase/data-model": "~3.0",
"wikibase/data-model-javascript": "^1.0.2",
"wikibase/data-model-serialization": "~1.7",
"wikibase/internal-serialization": "~1.4",
"wikibase/javascript-api": "~1.0",
"wikibase/serialization-javascript": "~2.0"
},
"conflict": {
"mediawiki/mediawiki": "<1.23"
},
"require-dev": {
"squizlabs/php_codesniffer": "~2.1"
},
"type": "mediawiki-extension",
"autoload": {
"classmap": [
"client/includes/",
"client/WikibaseClient.hooks.php",
"client/tests/phpunit/",
"lib/includes/",
"lib/WikibaseLib.hooks.php",
"lib/tests/phpunit/",
"repo/includes/",
"repo/maintenance/",
"repo/tests/phpunit/",
"repo/Wikibase.hooks.php"
],
"psr-4": {
"Wikibase\\View\\": "view/src",
"Wikimedia\\Purtle\\": "purtle/src",
"Wikimedia\\Purtle\\Tests\\": "purtle/tests/phpunit"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "The Wikidata team"
}
],
"description": "Structured data repository for MediaWiki",
"homepage": "http://wikiba.se",
"keywords": [
"wikibase",
"wikibaseclient",
"wikibaselib",
"wikibaserepo",
"wikidata"
],
- "time": "2015-07-28 08:34:21"
+ "time": "2015-07-29 01:50:39"
},
{
"name": "wikibase/wikimedia-badges",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/wmde/WikimediaBadges.git",
"reference": "5cb28488f7791302cf6b835610f132b0b05915cf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/wmde/WikimediaBadges/zipball/5cb28488f7791302cf6b835610f132b0b05915cf",
"reference": "5cb28488f7791302cf6b835610f132b0b05915cf",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "mediawiki-extension",
"autoload": {
"files": [
"WikimediaBadges.php"
],
"classmap": [
"WikimediaBadges.hooks.php"
]
},
"license": [
"GNU GPL v2+"
],
"authors": [
{
"name": "Bene*",
"email": "benestar.wikimedia@gmail.com",
"homepage": "https://www.wikidata.org/wiki/User:Bene*",
"role": "Developer"
}
],
"description": "Extension which contains default themes to display badges on Wikimedia projects",
"homepage": "https://github.com/wmde/WikimediaBadges",
"keywords": [
"Wikibase",
"Wikidata"
],
"support": {
"irc": "irc://irc.freenode.net/wikidata",
"source": "https://github.com/wmde/WikimediaBadges/tree/master",
"issues": "https://github.com/wmde/WikimediaBadges/issues"
},
"time": "2015-05-30 21:07:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"wikibase/wikibase": 20,
"wikibase/wikimedia-badges": 20,
"wikibase/wikidata.org": 20,
"wikibase/quality": 20,
"wikibase/constraints": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=5.3.0"
},
"platform-dev": []
}
diff --git a/extensions/Wikibase/client/WikibaseClient.php b/extensions/Wikibase/client/WikibaseClient.php
index 6fb840c12..9a9ae33ea 100644
--- a/extensions/Wikibase/client/WikibaseClient.php
+++ b/extensions/Wikibase/client/WikibaseClient.php
@@ -1,172 +1,176 @@
<?php
/**
* Welcome to the inside of Wikibase, <>
* the software that powers /\ /\
* Wikidata and other <{ }> <{ }>
* structured data websites. <> /\ \/ /\ \/ /\ <>
* // \\ // \\ // \\
* It is Free Software. <{{ }}><{{ }}><{{ }}>
* /\ \\ // \\ // \\ // /\
* <{ }> >< \/ >< <{ }>
* \/ // \\ // \\ \/
* <> <{{ }}> +--------------------------+
* /\ \\ // | |
* <{ }> >< /| W I K I B A S E |
* \/ // \\ // | |
* We are <{{ }}><{{ +--------------------------+
* looking for people \\ // \\ // \\ //
* like you to join us in <> \/ /\ \/ /\ \/ <>
* developing it further. Find <{ }> <{ }>
* out more at http://wikiba.se \/ \/
* and join the open data revolution. <>
*/
/**
* Entry point for the Wikibase Client extension.
*
* @see README.md
* @see https://www.mediawiki.org/wiki/Extension:Wikibase_Client
* @licence GNU GPL v2+
*/
/**
* This documentation group collects source code files belonging to Wikibase Client.
*
* @defgroup WikibaseClient Wikibase Client
*/
if ( !defined( 'MEDIAWIKI' ) ) {
die( "Not an entry point.\n" );
}
if ( defined( 'WBC_VERSION' ) ) {
// Do not initialize more than once.
return;
}
define( 'WBC_VERSION', '0.5 alpha'
. ( defined( 'WB_EXPERIMENTAL_FEATURES' ) && WB_EXPERIMENTAL_FEATURES ? '/experimental' : '' ) );
if ( version_compare( $GLOBALS['wgVersion'], '1.21c', '<' ) ) { // Needs to be 1.21c because version_compare() works in confusing ways.
die( "<b>Error:</b> Wikibase requires MediaWiki 1.21 alpha or above.\n" );
}
define( 'WBC_DIR', __DIR__ );
// Include the WikibaseLib extension if that hasn't been done yet, since it's required for WikibaseClient to work.
if ( !defined( 'WBL_VERSION' ) ) {
include_once __DIR__ . '/../lib/WikibaseLib.php';
}
if ( !defined( 'WBL_VERSION' ) ) {
throw new Exception( 'WikibaseClient depends on the WikibaseLib extension.' );
}
call_user_func( function() {
global $wgExtensionCredits, $wgExtensionMessagesFiles, $wgHooks;
global $wgAPIMetaModules, $wgAPIPropModules, $wgSpecialPages, $wgResourceModules;
global $wgWBClientSettings, $wgRecentChangesFlags, $wgMessagesDirs;
+ global $wgJobClasses;
$wgExtensionCredits['wikibase'][] = array(
'path' => __DIR__,
'name' => 'Wikibase Client',
'version' => WBC_VERSION,
'author' => array(
'The Wikidata team', // TODO: link?
),
'url' => 'https://www.mediawiki.org/wiki/Extension:Wikibase_Client',
'descriptionmsg' => 'wikibase-client-desc'
);
// i18n
$wgMessagesDirs['wikibaseclient'] = __DIR__ . '/i18n';
$wgExtensionMessagesFiles['Wikibaseclientalias'] = __DIR__ . '/WikibaseClient.i18n.alias.php';
$wgExtensionMessagesFiles['wikibaseclientmagic'] = __DIR__ . '/WikibaseClient.i18n.magic.php';
// Hooks
$wgHooks['UnitTestsList'][] = '\Wikibase\ClientHooks::registerUnitTests';
$wgHooks['BaseTemplateToolbox'][] = '\Wikibase\ClientHooks::onBaseTemplateToolbox';
$wgHooks['OldChangesListRecentChangesLine'][] = '\Wikibase\ClientHooks::onOldChangesListRecentChangesLine';
$wgHooks['OutputPageParserOutput'][] = '\Wikibase\Client\Hooks\SidebarHookHandlers::onOutputPageParserOutput';
$wgHooks['SkinTemplateGetLanguageLink'][] = '\Wikibase\Client\Hooks\SidebarHookHandlers::onSkinTemplateGetLanguageLink';
$wgHooks['ContentAlterParserOutput'][] = '\Wikibase\Client\Hooks\ParserOutputUpdateHookHandlers::onContentAlterParserOutput';
$wgHooks['SidebarBeforeOutput'][] = '\Wikibase\Client\Hooks\SidebarHookHandlers::onSidebarBeforeOutput';
$wgHooks['LinksUpdateComplete'][] = '\Wikibase\Client\Hooks\DataUpdateHookHandlers::onLinksUpdateComplete';
$wgHooks['ArticleDeleteComplete'][] = '\Wikibase\Client\Hooks\DataUpdateHookHandlers::onArticleDeleteComplete';
$wgHooks['ParserCacheSaveComplete'][] = '\Wikibase\Client\Hooks\DataUpdateHookHandlers::onParserCacheSaveComplete';
$wgHooks['ParserFirstCallInit'][] = '\Wikibase\ClientHooks::onParserFirstCallInit';
$wgHooks['MagicWordwgVariableIDs'][] = '\Wikibase\ClientHooks::onMagicWordwgVariableIDs';
$wgHooks['ParserGetVariableValueSwitch'][] = '\Wikibase\ClientHooks::onParserGetVariableValueSwitch';
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = '\Wikibase\ClientHooks::onSkinTemplateOutputPageBeforeExec';
$wgHooks['SpecialMovepageAfterMove'][] = '\Wikibase\Client\Hooks\MovePageNotice::onSpecialMovepageAfterMove';
$wgHooks['SpecialWatchlistQuery'][] = '\Wikibase\ClientHooks::onSpecialWatchlistQuery';
$wgHooks['SpecialRecentChangesQuery'][] = '\Wikibase\ClientHooks::onSpecialRecentChangesQuery';
$wgHooks['SpecialRecentChangesFilters'][] = '\Wikibase\ClientHooks::onSpecialRecentChangesFilters';
$wgHooks['GetPreferences'][] = '\Wikibase\ClientHooks::onGetPreferences';
$wgHooks['BeforePageDisplay'][] = '\Wikibase\ClientHooks::onBeforePageDisplay';
$wgHooks['BeforePageDisplay'][] = '\Wikibase\ClientHooks::onBeforePageDisplayAddJsConfig';
$wgHooks['ScribuntoExternalLibraries'][] = '\Wikibase\ClientHooks::onScribuntoExternalLibraries';
$wgHooks['SpecialWatchlistFilters'][] = '\Wikibase\ClientHooks::onSpecialWatchlistFilters';
$wgHooks['InfoAction'][] = '\Wikibase\ClientHooks::onInfoAction';
$wgHooks['TitleMoveComplete'][] = '\Wikibase\Client\Hooks\UpdateRepoHookHandlers::onTitleMoveComplete';
$wgHooks['BaseTemplateAfterPortlet'][] = '\Wikibase\ClientHooks::onBaseTemplateAfterPortlet';
$wgHooks['GetBetaFeaturePreferences'][] = '\Wikibase\ClientHooks::onGetBetaFeaturePreferences';
$wgHooks['ArticleDeleteComplete'][] = '\Wikibase\Client\Hooks\UpdateRepoHookHandlers::onArticleDeleteComplete';
$wgHooks['ArticleDeleteAfterSuccess'][] = '\Wikibase\ClientHooks::onArticleDeleteAfterSuccess';
// update hooks
$wgHooks['LoadExtensionSchemaUpdates'][] = '\Wikibase\Client\Usage\Sql\SqlUsageTrackerSchemaUpdater::onSchemaUpdate';
// extension hooks
$wgHooks['WikibaseDeleteData'][] = '\Wikibase\ClientHooks::onWikibaseDeleteData';
+ // job classes
+ $wgJobClasses['wikibase-addUsagesForPage'] = 'Wikibase\Client\Store\AddUsagesForPageJob';
+
// api modules
$wgAPIMetaModules['wikibase'] = array(
'class' => 'Wikibase\ApiClientInfo',
'factory' => function( ApiQuery $apiQuery, $moduleName ) {
return new Wikibase\ApiClientInfo(
Wikibase\Client\WikibaseClient::getDefaultInstance()->getSettings(),
$apiQuery,
$moduleName
);
}
);
$wgAPIPropModules['pageterms'] = array(
'class' => 'Wikibase\Client\Api\PageTerms',
'factory' => function ( ApiQuery $query, $moduleName ) {
$client = \Wikibase\Client\WikibaseClient::getDefaultInstance();
return new Wikibase\Client\Api\PageTerms(
$client->getStore()->getTermIndex(),
$client->getStore()->getEntityIdLookup(),
$query,
$moduleName
);
}
);
// Special page registration
$wgSpecialPages['UnconnectedPages'] = 'Wikibase\Client\Specials\SpecialUnconnectedPages';
$wgHooks['wgQueryPages'][] = 'Wikibase\ClientHooks::onwgQueryPages';
// Resource loader modules
$wgResourceModules = array_merge(
$wgResourceModules,
include __DIR__ . '/resources/Resources.php'
);
$wgWBClientSettings = array_merge(
require __DIR__ . '/../lib/config/WikibaseLib.default.php',
require __DIR__ . '/config/WikibaseClient.default.php'
);
if ( defined( 'WB_EXPERIMENTAL_FEATURES' ) && WB_EXPERIMENTAL_FEATURES ) {
include_once __DIR__ . '/config/WikibaseClient.experimental.php';
}
$wgRecentChangesFlags['wikibase-edit'] = array(
'letter' => 'wikibase-rc-wikibase-edit-letter',
'title' => 'wikibase-rc-wikibase-edit-title'
);
} );
diff --git a/extensions/Wikibase/client/i18n/es.json b/extensions/Wikibase/client/i18n/es.json
index 74bc69392..aa5b9a038 100644
--- a/extensions/Wikibase/client/i18n/es.json
+++ b/extensions/Wikibase/client/i18n/es.json
@@ -1,84 +1,84 @@
{
"@metadata": {
"authors": [
"Armando-Martin",
"Csbotero",
"DJ Nietzsche",
"Dalton2",
"Fitoschido",
"Gustronico",
"Hazard-SJ",
"Hereñu",
"Invadinado",
"Pegna",
"Vivaelcelta",
"Themasterriot",
"Macofe"
]
},
"wikibase-client-desc": "Cliente para la extensión Wikibase",
"tooltip-t-wikibase": "Enlace al elemento conectado del repositorio de datos",
"apihelp-query+pageterms-description": "Obtener los términos asociados con una página a través de un elemento de datos asociado.",
"apihelp-query+pageterms-example-simple": "Obtener todos los términos asociados con la página 'London', en el idioma del usuario.",
"apihelp-query+pageterms-example-label-en": "Obtener etiquetas y alias asociados con la página 'London', en inglés.",
"apihelp-query+pageterms-param-terms": "Los tipos de términos que obtener, p. ej. 'description'. Si no se especifica, todos los tipos se devuelven.",
"apihelp-query+wikibase-description": "Obtener información acerca del repositorio Wikibase asociado.",
"apihelp-query+wikibase-example": "Obtener la ruta de URL y otra información acerca del cliente y repositorio de Wikibase.",
"apihelp-query+wikibase-param-prop": "Qué propiedades se obtendrán:\n;<kbd>url</kbd>: URL de base, ruta de secuencia de órdenes y ruta de artículo del repositorio de Wikibase.\n;<kbd>siteid</kbd>: el identificador de este sitio.",
"wikibase-after-page-move": "Usted también puede [ $1 actualizar] el elemento {{WBREPONAME}} asociado para mantener los enlaces de idiomas en la página movida.",
"wikibase-after-page-move-queued": "El [$1 elemento {{WBREPONAME}}] asociado a esta página se actualizará automáticamente. Puede que este no sea inmediato.",
"wikibase-after-page-delete-queued": "El [$1 elemento {{WBREPONAME}}] asociado a esta página se actualizará automáticamente. Puede que este no sea inmediato.",
"wikibase-comment-add": "Se ha creado un elemento de {{WBREPONAME}}.",
"wikibase-comment-remove": "Se han borrado los elementos {{WBREPONAME}} asociados. Enlaces de idioma eliminados.",
"wikibase-comment-linked": "Un elemento {{WBREPONAME}} se ha vinculado a esta página.",
"wikibase-comment-unlink": "Esta página ha sido desvinculados del elemento {{WBREPONAME}}. Los enlaces de los idiomas han sido eliminados.",
"wikibase-comment-restore": "No se han borrado los artículos {{WBREPONAME}} asociados. Enlaces de idioma enlaces restaurado.",
"wikibase-comment-update": "Se cambió elemento de {{WBREPONAME}}",
"wikibase-comment-sitelink-add": "Se ha añadido un enlace de idioma: $1",
"wikibase-comment-sitelink-change": "Se ha cambiado el enlace de idioma de $1 a $2",
"wikibase-comment-sitelink-remove": "Se ha eliminado el enlace de idioma: $1",
"wikibase-comment-multi": "$1 {{PLURAL:$1|cambio|cambios}}",
"wikibase-dataitem": "Elemento de {{WBREPONAME}}",
"wikibase-editlinks": "Editar enlaces",
"wikibase-editlinkstitle": "Editar enlaces interlingüísticos",
"wikibase-addlinkstitle": "Agregar enlaces interlingüísticos",
"wikibase-linkitem-addlinks": "Añadir enlaces",
"wikibase-linkitem-alreadylinked": "La página que quieres enlazar con esta, ya está enlazada a un [$1 elemento] en el repositorio de datos central que une a $2 en este sitio. Los elementos sólo pueden tener una sola página por sitio enlazado. Por favor, elige una página diferente para enlazarlo.",
"wikibase-linkitem-close": "Cerrar y recargar la página",
"wikibase-linkitem-failure": "Se produjo un error desconocido al intentar enlazar la página dada.",
"wikibase-linkitem-title": "Enlazar las páginas",
"wikibase-linkitem-linkpage": "Enlazar las páginas",
"wikibase-linkitem-selectlink": "Selecciona un sitio y la página que quieres enlazar con esta.",
"wikibase-linkitem-input-site": "Idioma:",
"wikibase-linkitem-input-page": "Página:",
"wikibase-linkitem-confirmitem-text": "La página elegida ya está asociada con un [$1 elemento de nuestro depósito central de datos]. Confirma que {{PLURAL:$2|la página|las páginas}} que se {{PLURAL:$2|muestra|muestran}} a continuación {{PLURAL:$2|es la|son las}} que quieres enlazar con esta página.",
"wikibase-linkitem-confirmitem-button": "Confirmar",
"wikibase-linkitem-not-loggedin-title": "Debes iniciar sesión",
"wikibase-linkitem-not-loggedin": "Debes iniciar sesión en esta wiki y en el [$1 repositorio central de datos] para usar esta función.",
"wikibase-linkitem-success-link": "Se han enlazado las páginas correctamente. Puedes encontrar el elemento que contiene los enlaces en nuestro [$1 depósito central de datos].",
"wikibase-property-notfound": "No se encontró la propiedad «$1».",
"wikibase-rc-hide-wikidata": "$1 {{WBREPONAME}}",
"wikibase-rc-hide-wikidata-hide": "Ocultar",
"wikibase-rc-hide-wikidata-show": "Mostrar",
"wikibase-rc-show-wikidata-pref": "Mostrar las ediciones de {{WBREPONAME}} en cambios recientes",
"wikibase-rc-wikibase-edit-letter": "D",
"wikibase-rc-wikibase-edit-title": "Edición de {{WBREPONAME}}",
"wikibase-replicationnote": "Ten en cuenta que puede tardar varios minutos hasta que los cambios sean visibles en todas las wikis.",
"wikibase-watchlist-show-changes-pref": "Mostrar las ediciones de {{WBREPONAME}} en tu lista de seguimiento",
"wikibase-error-serialize-error": "Error al serializar datos.",
- "wikibase-error-invalid-entity-id": "El ID ingresado es desconocido para el sistema. Utilice un identificador de entidad válido.",
+ "wikibase-error-invalid-entity-id": "El ID ingresado es desconocido para el sistema. Utiliza un identificador de entidad válido.",
"unconnectedpages": "Páginas no conectadas a elementos",
"unconnectedpages-summary": "Esta página lista páginas sin ningún elemento de datos conectado (en los espacios de nombres que admiten elementos conectados). La lista está ordenada por identificador de página descendente, por lo que las páginas más nuevas se muestran primero.",
"wikibase-unconnectedpages-page": "Comenzar lista de resultados por página:",
"wikibase-unconnectedpages-submit": "Continuar",
"wikibase-unconnectedpages-invalid-language": "\"$1\" no es un código de idioma válido.",
"wikibase-unconnectedpages-page-warning": "El título de la página no se pudo usar para la búsqueda y se ignoró.",
"wikibase-unconnectedpages-iwdata-label": "Solo páginas con enlaces interlingüísticos",
"wikibase-unconnectedpages-format-row": "($1 {{PLURAL:$1|enlace interlingüístico|enlaces interlingüísticos}} en la página)",
"wikibase-pageinfo-entity-id": "Id. del elemento de {{WBREPONAME}}",
"wikibase-pageinfo-entity-id-none": "Ninguno",
"wikibase-property-render-error": "Error al procesar propiedad $1: $2",
"wikibase-otherprojects": "Otros proyectos",
"wikibase-otherprojects-beta-message": "Barra lateral de otros proyectos",
"wikibase-otherprojects-beta-description": "Añade a la barra lateral la sección «{{int:wikibase-otherprojects}}» que enlaza los proyectos de Wikimedia cuyos datos se alojan en {{WBREPONAME}}."
}
diff --git a/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php b/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php
index 8b1296633..6776f659d 100644
--- a/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php
+++ b/extensions/Wikibase/client/includes/Hooks/DataUpdateHookHandlers.php
@@ -1,193 +1,205 @@
<?php
namespace Wikibase\Client\Hooks;
use Content;
+use EnqueueJob;
+use JobQueueGroup;
use LinksUpdate;
use ManualLogEntry;
use ParserCache;
use ParserOptions;
use ParserOutput;
use Title;
use User;
+use Wikibase\Client\Store\AddUsagesForPageJob;
use Wikibase\Client\Store\UsageUpdater;
use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
use Wikibase\Client\WikibaseClient;
use WikiPage;
/**
* Hook handlers for triggering data updates.
*
* This class has a static interface for use with MediaWiki's hook mechanism; the static
* handler functions will create a new instance of DataUpdateHookHandlers and then call the
* corresponding member function on that.
*
* @since 0.5.
*
* @license GPL 2+
* @author Daniel Kinzler
*/
class DataUpdateHookHandlers {
/**
* @var UsageUpdater
*/
private $usageUpdater;
- public static function newFromGlobalState() {
- $wikibaseClient = WikibaseClient::getDefaultInstance();
- $settings = $wikibaseClient->getSettings();
-
- $usageUpdater = new UsageUpdater(
- $settings->getSetting( 'siteGlobalID' ),
- $wikibaseClient->getStore()->getUsageTracker(),
- $wikibaseClient->getStore()->getUsageLookup(),
- $wikibaseClient->getStore()->getSubscriptionManager()
- );
+ /**
+ * @var JobQueueGroup
+ */
+ private $jobScheduler;
+ public static function newFromGlobalState() {
return new DataUpdateHookHandlers(
- $usageUpdater
+ WikibaseClient::getDefaultInstance()->getStore()->getUsageUpdater(),
+ JobQueueGroup::singleton()
);
}
/**
* Static handler for the LinksUpdateComplete hook.
* @see https://www.mediawiki.org/wiki/Manual:Hooks/LinksUpdateComplete
* @see doLinksUpdateComplete
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdateComplete( LinksUpdate $linksUpdate ) {
$handler = self::newFromGlobalState();
$handler->doLinksUpdateComplete( $linksUpdate );
}
/**
* Static handler for ArticleDeleteComplete
* @see https://www.mediawiki.org/wiki/Manual:Hooks/ArticleDeleteComplete
* @see doArticleDeleteComplete
*
* @param WikiPage $article
* @param User $user
* @param string $reason
* @param int $id id of the article that was deleted
* @param Content $content
* @param ManualLogEntry $logEntry
*/
public static function onArticleDeleteComplete(
WikiPage &$article,
User &$user,
$reason,
$id,
Content $content,
ManualLogEntry $logEntry
) {
$title = $article->getTitle();
$handler = self::newFromGlobalState();
$handler->doArticleDeleteComplete( $title->getNamespace(), $id, $logEntry->getTimestamp() );
}
/**
* Static handler for ParserCacheSaveComplete
*
* @see https://www.mediawiki.org/wiki/Manual:Hooks/ParserCacheSaveComplete
* @see doParserCacheSaveComplete
*
*
* @param ParserCache $parserCache
* @param ParserOutput $pout
* @param Title $title
* @param ParserOptions $pops
* @param int $revId
*/
public static function onParserCacheSaveComplete(
ParserCache $parserCache,
ParserOutput $pout,
Title $title,
ParserOptions $pops,
$revId
) {
$handler = self::newFromGlobalState();
$handler->doParserCacheSaveComplete( $pout, $title );
}
public function __construct(
- UsageUpdater $usageUpdater
+ UsageUpdater $usageUpdater,
+ JobQueueGroup $jobScheduler
) {
$this->usageUpdater = $usageUpdater;
+ $this->jobScheduler = $jobScheduler;
}
/**
* Triggered when a page gets re-rendered to update secondary link tables.
* Implemented to update usage tracking information via UsageUpdater.
*
* @param LinksUpdate $linksUpdate
*/
public function doLinksUpdateComplete( LinksUpdate $linksUpdate ) {
$title = $linksUpdate->getTitle();
$parserOutput = $linksUpdate->getParserOutput();
$usageAcc = new ParserOutputUsageAccumulator( $parserOutput );
// For now, use the current timestamp as the touch date.
// $parserOutput->getTimestamp() sounds good, but is documented as "timestamp of the revision",
// which is not what we want. $title->getTouched() sounds good, but it may not have been
// updated reflecting the current run of LinksUpdate yet. Since on LinksUpdateComplete we
// actually want to purge all old tracking entries and only care about keeping the ones
// now present in $parserOutput, using the current timestamp should be fine.
// NOTE: adjust DataUpdateHookHandlerTest::newUsageUpdater when fixing this.
$touched = wfTimestampNow();
// Add or touch any usages present in the rendering
$this->usageUpdater->addUsagesForPage(
$title->getArticleId(),
$usageAcc->getUsages(),
$touched
);
// Prune any usages older than the new rendering's timestamp.
// NOTE: only prune after adding the new updates, to avoid unsubscribing and then
// immediately re-subscribing to the used entities.
$this->usageUpdater->pruneUsagesForPage(
$title->getArticleId(),
$touched
);
}
/**
* Triggered when a new rendering of a page is committed to the ParserCache.
* Implemented to update usage tracking information via UsageUpdater.
*
* @param ParserOutput $parserOutput
- * @param $title $title
+ * @param Title $title
*/
public function doParserCacheSaveComplete( ParserOutput $parserOutput, Title $title ) {
$usageAcc = new ParserOutputUsageAccumulator( $parserOutput );
// The parser output should tell us when it was parsed. If not, ask the Title object.
// These timestamps should usually be the same, but asking $title may cause a database query.
$touched = $parserOutput->getTimestamp() ?: $title->getTouched();
+ if ( count( $usageAcc->getUsages() ) === 0 ) {
+ // no usages, bail out
+ return;
+ }
+
// Add or touch any usages present in the new rendering.
// This allows us to track usages in each user language separately, for multilingual sites.
- $this->usageUpdater->addUsagesForPage(
- $title->getArticleId(),
- $usageAcc->getUsages(),
- $touched
- );
+
+ // NOTE: Since parser cache updates may be triggered by page views (in a new language),
+ // schedule the usage updates in the job queue, to avoid writing to the database
+ // during a GET request.
+
+ //TODO: Before posting a job, check slave database. If no changes are needed, skip update.
+
+ $addUsagesForPageJob = AddUsagesForPageJob::newSpec( $title, $usageAcc->getUsages(), $touched );
+ $enqueueJob = EnqueueJob::newFromLocalJobs( $addUsagesForPageJob );
+
+ $this->jobScheduler->lazyPush( $enqueueJob );
}
/**
* Triggered after a page was deleted.
* Implemented to prune usage tracking information via UsageUpdater.
*
* @param int $namespace
* @param int $pageId
* @param string $timestamp
*/
public function doArticleDeleteComplete( $namespace, $pageId, $timestamp ) {
$this->usageUpdater->pruneUsagesForPage( $pageId, $timestamp );
}
}
diff --git a/extensions/Wikibase/client/includes/Usage/EntityUsage.php b/extensions/Wikibase/client/includes/Usage/EntityUsage.php
index 5876d7a31..864efce2e 100644
--- a/extensions/Wikibase/client/includes/Usage/EntityUsage.php
+++ b/extensions/Wikibase/client/includes/Usage/EntityUsage.php
@@ -1,193 +1,204 @@
<?php
namespace Wikibase\Client\Usage;
use InvalidArgumentException;
use Wikibase\DataModel\Entity\EntityId;
/**
* Value object representing the usage of an entity. This includes information about
* how the entity is used, but not where.
*
* @see docs/usagetracking.wiki
*
* @license GPL 2+
* @author Daniel Kinzler
*/
class EntityUsage {
/**
* Usage flag indicating that the entity's sitelinks were used as links.
* This would be the case when generating language links or sister links from
* an entity's sitelinks, for display in the sidebar.
*
* @note: This does NOT cover sitelinks used in wikitext (e.g. via Lua).
* Use OTHER_USAGE for that.
*/
const SITELINK_USAGE = 'S';
/**
* Usage flag indicating that the entity's label in the local content language was used.
* This would be the case when showing the label of a referenced entity. Note that
* label usage is typically tracked with a modifier specifying the label's language code.
*/
const LABEL_USAGE = 'L';
/**
* Usage flag indicating that the entity's local page name was used.
* This would be the case when linking a referenced entity to the
* corresponding local wiki page.
*/
const TITLE_USAGE = 'T';
/**
* Usage flag indicating that any and all aspects of the entity
* were (or may have been) used.
*/
const ALL_USAGE = 'X';
/**
* Usage flag indicating that some aspect of the entity was changed
* which is not covered by any other usage flag (except "all"). That is,
* the specific usage flags together with the "other" flag are equivalent
* to the "all" flag ( S + T + L + O = X or rather O = X - S - T - L ).
*/
const OTHER_USAGE = 'O';
/**
* List of all valid aspects. Only the array keys are used, the values are meaningless.
*
* @var null[]
*/
private static $aspects = array(
self::SITELINK_USAGE => null,
self::LABEL_USAGE => null,
self::TITLE_USAGE => null,
self::OTHER_USAGE => null,
self::ALL_USAGE => null,
);
/**
* @var EntityId
*/
private $entityId;
/**
* @var string
*/
private $aspect;
/**
* @var null|string
*/
private $modifier;
/**
* @param EntityId $entityId
* @param string $aspect use the EntityUsage::XXX_USAGE constants
* @param string|null $modifier for further qualifying the usage aspect (e.g. a language code
* may be used along with the LABEL_USAGE aspect.
*
* @throws InvalidArgumentException
*/
public function __construct( EntityId $entityId, $aspect, $modifier = null ) {
if ( !array_key_exists( $aspect, self::$aspects ) ) {
throw new InvalidArgumentException( '$aspect must use one of the XXX_USAGE constants!' );
}
$this->entityId = $entityId;
$this->aspect = $aspect;
$this->modifier = $modifier;
}
/**
* @return string
*/
public function getAspect() {
return $this->aspect;
}
/**
* @return null|string
*/
public function getModifier() {
return $this->modifier;
}
/**
* Returns the aspect with the modifier applied.
* @see makeAspectKey
*
* @return string
*/
public function getAspectKey() {
return self::makeAspectKey( $this->aspect, $this->modifier );
}
/**
* @return EntityId
*/
public function getEntityId() {
return $this->entityId;
}
/**
* @return string
*/
public function getIdentityString() {
return $this->getEntityId()->getSerialization() . '#' . $this->getAspectKey();
}
/**
* @return string
*/
public function __toString() {
return $this->getIdentityString();
}
+ /**
+ * @return array array( 'entityId' => $entityId, 'aspect' => $aspect, 'modifier' => $modifier )
+ */
+ public function asArray() {
+ return array(
+ 'entityId' => $this->entityId->getSerialization(),
+ 'aspect' => $this->aspect,
+ 'modifier' => $this->modifier
+ );
+ }
+
/**
* @param string $aspectKey
*
* @return string One of the EntityUsage::..._USAGE constants with the modifier split off.
*/
public static function stripModifier( $aspectKey ) {
// This is about twice as fast compared to calling $this->splitAspectKey.
return strstr( $aspectKey, '.', true ) ?: $aspectKey;
}
/**
* Splits the given aspect key into aspect and modifier (if any).
* This is the inverse of makeAspectKey().
*
* @param string $aspectKey
*
* @return string[] list( $aspect, $modifier )
*/
public static function splitAspectKey( $aspectKey ) {
$parts = explode( '.', $aspectKey, 2 );
if ( !isset( $parts[1] ) ) {
$parts[1] = null;
}
return $parts;
}
/**
* Composes an aspect key from aspect and modifier (if any).
* This is the inverse of splitAspectKey().
*
* @param string $aspect
* @param string|null $modifier
*
* @return string "$aspect.$modifier"
*/
public static function makeAspectKey( $aspect, $modifier = null ) {
if ( $modifier === null ) {
return $aspect;
}
return "$aspect.$modifier";
}
}
diff --git a/extensions/Wikibase/client/includes/store/AddUsagesForPageJob.php b/extensions/Wikibase/client/includes/store/AddUsagesForPageJob.php
new file mode 100644
index 000000000..335fd3e22
--- /dev/null
+++ b/extensions/Wikibase/client/includes/store/AddUsagesForPageJob.php
@@ -0,0 +1,153 @@
+<?php
+
+namespace Wikibase\Client\Store;
+
+use Job;
+use JobSpecification;
+use Title;
+use Wikibase\Client\Usage\EntityUsage;
+use Wikibase\Client\WikibaseClient;
+use Wikibase\DataModel\Entity\EntityIdParser;
+use Wikimedia\Assert\Assert;
+
+/**
+ * Job for scheduled invocation of UsageUpdater::addUsagesForPage
+ *
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+class AddUsagesForPageJob extends Job {
+
+ /**
+ * @var integer
+ */
+ private $pageId;
+
+ /**
+ * @var EntityUsage[]
+ */
+ private $usages;
+
+ /**
+ * @var string timestamp
+ */
+ private $touched;
+
+ /**
+ * @var UsageUpdater
+ */
+ private $usageUpdater;
+
+ /**
+ * @var EntityIdParser $idParser
+ */
+ private $idParser;
+
+ /**
+ * Spec constructor, for creating JobSpecifications to be pushed to the job queue.
+ *
+ * @param Title $title
+ * @param EntityUsage[] $usages
+ * @param string $touched
+ *
+ * @return JobSpecification
+ */
+ public static function newSpec( Title $title, array $usages, $touched ) {
+ // NOTE: Map EntityUsage objects to scalar arrays, for JSON serialization in the job queue.
+ $usages = array_map( function ( EntityUsage $usage ) {
+ return $usage->asArray();
+ }, $usages );
+
+ $jobParams = array(
+ 'pageId' => $title->getArticleId(),
+ 'usages' => $usages,
+ 'touched' => $touched
+ );
+
+ return new JobSpecification(
+ 'wikibase-addUsagesForPage',
+ $jobParams,
+ array( 'removeDuplicates' => true ),
+ $title
+ );
+ }
+
+ /**
+ * @param Title $title
+ * @param array $params
+ */
+ public function __construct( Title $title, array $params ) {
+ parent::__construct( 'wikibase-addUsagesForPage', $title, $params );
+
+ Assert::parameter(
+ isset( $params['pageId'] ) && is_int( $params['pageId'] ) && $params['pageId'] > 0,
+ '$params["pageId"]',
+ 'must be a positive integer' );
+
+ Assert::parameter(
+ isset( $params['usages'] ) && is_array( $params['usages'] ) && !empty( $params['usages'] ),
+ '$params["usages"]',
+ 'must be a non-empty array' );
+
+ Assert::parameter(
+ isset( $params['touched'] ) && is_string( $params['touched'] ) && $params['touched'] !== '',
+ '$params["touched"]',
+ 'must be a timestamp string' );
+
+ Assert::parameterElementType(
+ 'array',
+ $params['usages'],
+ '$params["usages"]' );
+
+ $this->pageId = $params['pageId'];
+ $this->usages = $params['usages'];
+ $this->touched = $params['touched'];
+
+ $usageUpdater = WikibaseClient::getDefaultInstance()->getStore()->getUsageUpdater();
+ $idParser = WikibaseClient::getDefaultInstance()->getEntityIdParser();
+ $this->overrideServices( $usageUpdater, $idParser );
+ }
+
+ /**
+ * Service override for testing
+ *
+ * @param UsageUpdater $usageUpdater
+ * @param EntityIdParser $idParser
+ */
+ public function overrideServices( UsageUpdater $usageUpdater, EntityIdParser $idParser ) {
+ $this->usageUpdater = $usageUpdater;
+ $this->idParser = $idParser;
+ }
+
+ /**
+ * @return EntityUsage[]
+ */
+ private function getUsages() {
+ // Turn serialized usage info into EntityUsage objects
+ $idParser = $this->idParser;
+ $usages = array_map( function ( array $usageArray ) use ( $idParser ) {
+ // This is the inverse of EntityUsage::asArray()
+ return new EntityUsage(
+ $idParser->parse( $usageArray['entityId'] ),
+ $usageArray['aspect'],
+ $usageArray['modifier']
+ );
+ }, $this->usages );
+
+ return $usages;
+ }
+
+ /**
+ * Call UsageUpdater::addUsagesForPage
+ *
+ * @return bool Success
+ */
+ public function run() {
+ $this->usageUpdater->addUsagesForPage(
+ $this->pageId,
+ $this->getUsages(),
+ $this->touched
+ );
+ }
+
+}
diff --git a/extensions/Wikibase/client/includes/store/ClientStore.php b/extensions/Wikibase/client/includes/store/ClientStore.php
index 66b381a5a..51d052fb8 100644
--- a/extensions/Wikibase/client/includes/store/ClientStore.php
+++ b/extensions/Wikibase/client/includes/store/ClientStore.php
@@ -1,128 +1,136 @@
<?php
namespace Wikibase;
use MWException;
+use Wikibase\Client\Store\UsageUpdater;
use Wikibase\Client\Usage\SubscriptionManager;
use Wikibase\Client\Usage\UsageLookup;
use Wikibase\Client\Usage\UsageTracker;
use Wikibase\Lib\Store\EntityLookup;
use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Lib\Store\SiteLinkLookup;
use Wikibase\Store\EntityIdLookup;
/**
* Client store interface.
*
* @since 0.1
*
* @licence GNU GPL v2+
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
* @author Daniel Kinzler
*/
interface ClientStore {
/**
* @since 0.4
*
* @return SiteLinkLookup
*/
public function getSiteLinkLookup();
/**
* @since 0.5
*
* @return UsageLookup
*/
public function getUsageLookup();
/**
* @since 0.5
*
* @return UsageTracker
*/
public function getUsageTracker();
/**
* @since 0.5
*
* @return SubscriptionManager
*/
public function getSubscriptionManager();
/**
* @since 0.4
*
* @return EntityLookup
*/
public function getEntityLookup();
/**
* @since 0.5
*
* @return EntityRevisionLookup
*/
public function getEntityRevisionLookup();
/**
* @since 0.4
*
* @return PropertyLabelResolver
*/
public function getPropertyLabelResolver();
/**
* @since 0.4
*
* @return TermIndex
*/
public function getTermIndex();
/**
* @since 0.5
*
* @return EntityIdLookup
*/
public function getEntityIdLookup();
/**
* @since 0.4
*
* @throws MWException if no changes table can be supplied.
* @return ChangesTable
*/
public function newChangesTable();
/**
* @since 0.4
*
* @return PropertyInfoStore
*/
public function getPropertyInfoStore();
/**
* Removes all data from the store.
*
* @since 0.2
*/
public function clear();
/**
* Rebuilds all data in the store.
*
* @since 0.2
*/
public function rebuild();
/**
* Returns an EntityPrefetcher which can be used to prefetch a list of entity
* ids in case we need to for example load a batch of entity ids.
*
* @since 0.5
*
* @return EntityPrefetcher
*/
public function getEntityPrefetcher();
+ /**
+ * @since 0.5
+ *
+ * @return UsageUpdater
+ */
+ public function getUsageUpdater();
+
}
diff --git a/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php b/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
index dc4f3116b..80d42cf87 100644
--- a/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
+++ b/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php
@@ -1,467 +1,480 @@
<?php
namespace Wikibase;
use HashBagOStuff;
use ObjectCache;
use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
use Wikibase\Client\Store\Sql\PagePropsEntityIdLookup;
use Wikibase\Client\Store\TitleFactory;
+use Wikibase\Client\Store\UsageUpdater;
use Wikibase\Client\Usage\NullSubscriptionManager;
use Wikibase\Client\Usage\NullUsageTracker;
use Wikibase\Client\Usage\SiteLinkUsageLookup;
use Wikibase\Client\Usage\Sql\SqlSubscriptionManager;
use Wikibase\Client\Usage\Sql\SqlUsageTracker;
use Wikibase\Client\Usage\SubscriptionManager;
use Wikibase\Client\Usage\UsageLookup;
use Wikibase\Client\Usage\UsageTracker;
use Wikibase\Client\WikibaseClient;
use Wikibase\DataModel\Entity\EntityIdParser;
use Wikibase\Lib\Store\CachingEntityRevisionLookup;
use Wikibase\Lib\Store\CachingSiteLinkLookup;
use Wikibase\Lib\Store\EntityContentDataCodec;
use Wikibase\Lib\Store\EntityLookup;
use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Lib\Store\RedirectResolvingEntityLookup;
use Wikibase\Lib\Store\RevisionBasedEntityLookup;
use Wikibase\Lib\Store\SiteLinkLookup;
use Wikibase\Lib\Store\SiteLinkTable;
use Wikibase\Lib\Store\Sql\PrefetchingWikiPageEntityMetaDataAccessor;
use Wikibase\Lib\Store\Sql\WikiPageEntityMetaDataLookup;
use Wikibase\Lib\Store\WikiPageEntityRevisionLookup;
use Wikibase\Store\EntityIdLookup;
/**
* Implementation of the client store interface using direct access to the repository's
* database via MediaWiki's foreign wiki mechanism as implemented by LBFactoryMulti.
*
* @since 0.3
*
* @licence GNU GPL v2+
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
* @author Daniel Kinzler
*/
class DirectSqlStore implements ClientStore {
/**
* @var EntityContentDataCodec
*/
private $contentCodec;
/**
* @var EntityIdParser
*/
private $entityIdParser;
/**
* @var string|bool The symbolic database name of the repo wiki or false for the local wiki.
*/
private $repoWiki;
/**
* @var ConsistentReadConnectionManager|null
*/
private $repoConnectionManager = null;
/**
* @var ConsistentReadConnectionManager|null
*/
private $localConnectionManager = null;
/**
* @var string
*/
private $languageCode;
/**
* @var string
*/
private $cacheKeyPrefix;
/**
* @var int
*/
private $cacheType;
/**
* @var int
*/
private $cacheDuration;
/**
* @var bool
*/
private $useLegacyUsageIndex;
/**
* @var bool
*/
private $useLegacyChangesSubscription;
/**
* @var EntityLookup|null
*/
private $entityRevisionLookup = null;
/**
* @var PropertyLabelResolver|null
*/
private $propertyLabelResolver = null;
/**
* @var TermIndex|null
*/
private $termIndex = null;
/**
* @var EntityIdLookup|null
*/
private $entityIdLookup = null;
/**
* @var PropertyInfoTable|null
*/
private $propertyInfoTable = null;
/**
* @var SiteLinkLookup|null
*/
private $siteLinkLookup = null;
/**
* @var UsageTracker|null
*/
private $usageTracker = null;
/**
* @var UsageLookup|null
*/
private $usageLookup = null;
/**
* @var SubscriptionManager|null
*/
private $subscriptionManager = null;
/**
* @var PrefetchingWikiPageEntityMetaDataAccessor|null
*/
private $entityPrefetcher = null;
/**
* @var string
*/
private $siteId;
/**
* @param EntityContentDataCodec $contentCodec
* @param EntityIdParser $entityIdParser
* @param string|bool $repoWiki The symbolic database name of the repo wiki or false for the
* local wiki.
* @param string $languageCode
*/
public function __construct(
EntityContentDataCodec $contentCodec,
EntityIdParser $entityIdParser,
$repoWiki = false,
$languageCode
) {
$this->contentCodec = $contentCodec;
$this->entityIdParser = $entityIdParser;
$this->repoWiki = $repoWiki;
$this->languageCode = $languageCode;
// @TODO: Inject
$settings = WikibaseClient::getDefaultInstance()->getSettings();
$this->cacheKeyPrefix = $settings->getSetting( 'sharedCacheKeyPrefix' );
$this->cacheType = $settings->getSetting( 'sharedCacheType' );
$this->cacheDuration = $settings->getSetting( 'sharedCacheDuration' );
$this->useLegacyUsageIndex = $settings->getSetting( 'useLegacyUsageIndex' );
$this->useLegacyChangesSubscription = $settings->getSetting( 'useLegacyChangesSubscription' );
$this->siteId = $settings->getSetting( 'siteGlobalID' );
}
/**
* @see ClientStore::getSubscriptionManager
*
* @return SubscriptionManager
*/
public function getSubscriptionManager() {
if ( $this->subscriptionManager === null ) {
if ( $this->useLegacyChangesSubscription ) {
$this->subscriptionManager = new NullSubscriptionManager();
} else {
$connectionManager = $this->getRepoConnectionManager();
$this->subscriptionManager = new SqlSubscriptionManager( $connectionManager );
}
}
return $this->subscriptionManager;
}
/**
* Returns a LoadBalancer that acts as a factory for connections to the repo wiki's
* database.
*
* @return ConsistentReadConnectionManager
*/
private function getRepoConnectionManager() {
if ( $this->repoConnectionManager === null ) {
$this->repoConnectionManager = new ConsistentReadConnectionManager( wfGetLB( $this->repoWiki ), $this->repoWiki );
}
return $this->repoConnectionManager;
}
/**
* Returns a LoadBalancer that acts as a factory for connections to the local (client) wiki's
* database.
*
* @return ConsistentReadConnectionManager
*/
private function getLocalConnectionManager() {
if ( $this->localConnectionManager === null ) {
$this->localConnectionManager = new ConsistentReadConnectionManager( wfGetLB() );
}
return $this->localConnectionManager;
}
/**
* @see ClientStore::getUsageLookup
*
* @note: If the useLegacyUsageIndex option is set, this returns a SiteLinkUsageLookup.
*
* @return UsageLookup
*/
public function getUsageLookup() {
if ( $this->usageLookup === null ) {
if ( $this->useLegacyUsageIndex ) {
$this->usageLookup = new SiteLinkUsageLookup(
$this->siteId,
$this->getSiteLinkLookup(),
new TitleFactory()
);
} else {
$this->usageLookup = $this->getUsageTracker();
}
}
return $this->usageLookup;
}
/**
* @see ClientStore::getUsageTracker
*
* @note: If the useLegacyUsageIndex option is set, this returns a NullUsageTracker!
*
* @return UsageTracker
*/
public function getUsageTracker() {
if ( $this->usageTracker === null ) {
if ( $this->useLegacyUsageIndex ) {
$this->usageTracker = new NullUsageTracker();
} else {
$connectionManager = $this->getLocalConnectionManager();
$this->usageTracker = new SqlUsageTracker( $this->entityIdParser, $connectionManager );
}
}
return $this->usageTracker;
}
/**
* @see ClientStore::getSiteLinkLookup
*
* @return SiteLinkLookup
*/
public function getSiteLinkLookup() {
if ( $this->siteLinkLookup === null ) {
$this->siteLinkLookup = new CachingSiteLinkLookup(
new SiteLinkTable( 'wb_items_per_site', true, $this->repoWiki ),
new HashBagOStuff()
);
}
return $this->siteLinkLookup;
}
/**
* @see ClientStore::getEntityLookup
*
* The EntityLookup returned by this method will resolve redirects.
*
* @return EntityLookup
*/
public function getEntityLookup() {
$revisionLookup = $this->getEntityRevisionLookup();
$revisionBasedLookup = new RevisionBasedEntityLookup( $revisionLookup );
$resolvingLookup = new RedirectResolvingEntityLookup( $revisionBasedLookup );
return $resolvingLookup;
}
/**
* @see ClientStore::getEntityRevisionLookup
*
* @return EntityRevisionLookup
*/
public function getEntityRevisionLookup() {
if ( $this->entityRevisionLookup === null ) {
$this->entityRevisionLookup = $this->newEntityRevisionLookup();
}
return $this->entityRevisionLookup;
}
/**
* @return EntityRevisionLookup
*/
private function newEntityRevisionLookup() {
// NOTE: Keep cache key in sync with SqlStore::newEntityRevisionLookup in WikibaseRepo
$cacheKeyPrefix = $this->cacheKeyPrefix . ':WikiPageEntityRevisionLookup';
$metaDataFetcher = $this->getEntityPrefetcher();
$rawLookup = new WikiPageEntityRevisionLookup(
$this->contentCodec,
$metaDataFetcher,
$this->repoWiki
);
// Lower caching layer using persistent cache (e.g. memcached).
$persistentCachingLookup = new CachingEntityRevisionLookup(
$rawLookup,
wfGetCache( $this->cacheType ),
$this->cacheDuration,
$cacheKeyPrefix
);
// We need to verify the revision ID against the database to avoid stale data.
$persistentCachingLookup->setVerifyRevision( true );
// Top caching layer using an in-process hash.
$hashCachingLookup = new CachingEntityRevisionLookup( $persistentCachingLookup, new HashBagOStuff() );
// No need to verify the revision ID, we'll ignore updates that happen during the request.
$hashCachingLookup->setVerifyRevision( false );
return $hashCachingLookup;
}
/**
* @see ClientStore::getTermIndex
*
* @return TermIndex
*/
public function getTermIndex() {
if ( $this->termIndex === null ) {
// TODO: Get StringNormalizer from WikibaseClient?
// Can't really pass this via the constructor...
$this->termIndex = new TermSqlIndex( new StringNormalizer(), $this->repoWiki );
}
return $this->termIndex;
}
/**
* @see ClientStore::getEntityIdLookup
*
* @return EntityIdLookup
*/
public function getEntityIdLookup() {
if ( $this->entityIdLookup === null ) {
$this->entityIdLookup = new PagePropsEntityIdLookup(
wfGetLB(),
$this->entityIdParser
);
}
return $this->entityIdLookup;
}
/**
* @see ClientStore::getPropertyLabelResolver
*
* @return PropertyLabelResolver
*/
public function getPropertyLabelResolver() {
if ( $this->propertyLabelResolver === null ) {
// Cache key needs to be language specific
$cacheKey = $this->cacheKeyPrefix . ':TermPropertyLabelResolver' . '/' . $this->languageCode;
$this->propertyLabelResolver = new TermPropertyLabelResolver(
$this->languageCode,
$this->getTermIndex(),
ObjectCache::getInstance( $this->cacheType ),
$this->cacheDuration,
$cacheKey
);
}
return $this->propertyLabelResolver;
}
/**
* @see ClientStore::newChangesTable
*
* @return ChangesTable
*/
public function newChangesTable() {
return new ChangesTable( $this->repoWiki );
}
/**
* @see ClientStore::clear
*
* Does nothing.
*/
public function clear() {
// noop
}
/**
* @see ClientStore::rebuild
*
* Does nothing.
*/
public function rebuild() {
$this->clear();
}
/**
* @see ClientStore::getPropertyInfoStore
*
* @return PropertyInfoStore
*/
public function getPropertyInfoStore() {
if ( $this->propertyInfoTable === null ) {
$wikibaseClient = WikibaseClient::getDefaultInstance();
$propertyInfoStore = new PropertyInfoTable( true, $this->repoWiki );
$cacheKey = $this->cacheKeyPrefix . ':CachingPropertyInfoStore';
$this->propertyInfoTable = new CachingPropertyInfoStore(
$propertyInfoStore,
ObjectCache::getInstance( $this->cacheType ),
$this->cacheDuration,
$cacheKey
);
}
return $this->propertyInfoTable;
}
/**
* @return PrefetchingWikiPageEntityMetaDataAccessor
*/
public function getEntityPrefetcher() {
if ( $this->entityPrefetcher === null ) {
$this->entityPrefetcher = new PrefetchingWikiPageEntityMetaDataAccessor(
new WikiPageEntityMetaDataLookup(
$this->entityIdParser,
$this->repoWiki
)
);
}
return $this->entityPrefetcher;
}
+ /**
+ * @return UsageUpdater
+ */
+ public function getUsageUpdater() {
+ return new UsageUpdater(
+ $this->siteId,
+ $this->getUsageTracker(),
+ $this->getUsageLookup(),
+ $this->getSubscriptionManager()
+ );
+ }
+
}
diff --git a/extensions/Wikibase/client/tests/phpunit/MockClientStore.php b/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
index 1cef8820b..edf4f111b 100644
--- a/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
+++ b/extensions/Wikibase/client/tests/phpunit/MockClientStore.php
@@ -1,184 +1,202 @@
<?php
namespace Wikibase\Test;
use Wikibase\ChangesTable;
+use Wikibase\Client\Store\UsageUpdater;
use Wikibase\Client\Usage\NullSubscriptionManager;
use Wikibase\Client\Usage\NullUsageTracker;
use Wikibase\ClientStore;
+use Wikibase\Lib\Store\EntityLookup;
+use Wikibase\Lib\Store\EntityPrefetcher;
+use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Lib\Store\NullEntityPrefetcher;
use Wikibase\PropertyInfoStore;
use Wikibase\Store\EntityIdLookup;
use Wikibase\TermIndex;
/**
* (Incomplete) ClientStore mock
*
* @since 0.5
*
* @license GNU GPL v2+
* @author Marius Hoch < hoo@online.de >
*/
class MockClientStore implements ClientStore {
/**
* @var string|null
*/
private $languageCode;
/**
* @param string|null $languageCode
*/
public function __construct( $languageCode = null ) {
$this->languageCode = $languageCode;
}
/**
* @var MockRepository|null
*/
private static $mockRepository = null;
/**
* @var PropertyInfoStore|null
*/
private static $propertyInfoStore = null;
/**
* @see ClientStore::getUsageLookup
*
* @return NullUsageTracker
*/
public function getUsageLookup() {
return new NullUsageTracker();
}
/**
* @see ClientStore::getUsageTracker
*
* @return NullUsageTracker
*/
public function getUsageTracker() {
return new NullUsageTracker();
}
/**
* @see ClientStore::getSubscriptionManager
*
* @return NullSubscriptionManager
*/
public function getSubscriptionManager() {
return new NullSubscriptionManager();
}
/**
* @see ClientStore::getPropertyLabelResolver
*
* @return MockPropertyLabelResolver
*/
public function getPropertyLabelResolver() {
return new MockPropertyLabelResolver(
$this->languageCode ?: 'en',
$this->getMockRepository()
);
}
/**
* @see ClientStore::getTermIndex
*
* @return TermIndex
*/
public function getTermIndex() {
// FIXME: Incomplete
}
/**
* @see ClientStore::getEntityIdLookup
*
* @return EntityIdLookup
*/
public function getEntityIdLookup() {
// FIXME: Incomplete
}
/**
* @see ClientStore::newChangesTable
*
* @return ChangesTable
*/
public function newChangesTable() {
// FIXME: Incomplete
}
/**
* @see ClientStore::clear
*/
public function clear() {
}
/**
* @see ClientStore::rebuild
*/
public function rebuild() {
}
/**
* @return MockRepository
*/
private function getMockRepository() {
if ( self::$mockRepository === null ) {
self::$mockRepository = new MockRepository();
}
return self::$mockRepository;
}
/**
* @see ClientStore::getEntityLookup
*
* @return MockRepository
*/
public function getEntityLookup() {
return $this->getMockRepository();
}
/**
* @see ClientStore::getEntityRevisionLookup
*
* @return MockRepository
*/
public function getEntityRevisionLookup() {
return $this->getMockRepository();
}
/**
* @see ClientStore::getSiteLinkLookup
*
* @return MockRepository
*/
public function getSiteLinkLookup() {
return $this->getMockRepository();
}
/**
* @see ClientStore::getPropertyInfoStore
*
* @return MockPropertyInfoStore
*/
public function getPropertyInfoStore() {
if ( self::$propertyInfoStore === null ) {
self::$propertyInfoStore = new MockPropertyInfoStore();
}
return self::$propertyInfoStore;
}
/**
* @see ClientStore::getEntityPrefetcher
*
* @return NullEntityPrefetcher
*/
public function getEntityPrefetcher() {
return new NullEntityPrefetcher();
}
+ /**
+ * @since 0.5
+ *
+ * @return UsageUpdater
+ */
+ public function getUsageUpdater() {
+ return new UsageUpdater(
+ 'mock',
+ $this->getUsageTracker(),
+ $this->getUsageLookup(),
+ $this->getSubscriptionManager()
+ );
+ }
+
}
diff --git a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php
index 744489fab..ac761a880 100644
--- a/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php
+++ b/extensions/Wikibase/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php
@@ -1,195 +1,274 @@
<?php
namespace Wikibase\Client\Tests\Hooks;
+use JobQueueGroup;
+use JobSpecification;
use ParserOutput;
use Title;
use Wikibase\Client\Hooks\DataUpdateHookHandlers;
use Wikibase\Client\Store\UsageUpdater;
use Wikibase\Client\Usage\EntityUsage;
use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
use Wikibase\DataModel\Entity\ItemId;
use WikiPage;
/**
* @covers Wikibase\Client\Hooks\DataUpdateHookHandlers
*
* @group WikibaseClient
* @group WikibaseUsageTracking
* @group Wikibase
* @group WikibaseHooks
*
* @licence GNU GPL v2+
* @author Daniel Kinzler
*/
class DataUpdateHookHandlersTest extends \MediaWikiTestCase {
/**
* @param Title $title
- * @param EntityUsage[]|null $expectedUsages
+ * @param array $expectedUsages
* @param string|null $touched
- * @param bool $prune
+ * @param bool $prune whether pruneUsagesForPage() should be used
+ * @param bool $add whether addUsagesForPage() should be used
*
* @return UsageUpdater
*/
- private function newUsageUpdater( Title $title, array $expectedUsages = null, $touched = null, $prune = true ) {
+ private function newUsageUpdater(
+ Title $title,
+ array $expectedUsages = null,
+ $touched = null,
+ $prune = true,
+ $add = true
+ ) {
$usageUpdater = $this->getMockBuilder( 'Wikibase\Client\Store\UsageUpdater' )
->disableOriginalConstructor()
->getMock();
if ( $touched === null ) {
$touched = $title->getTouched();
}
// NOTE: doLinksUpdateComplete currently uses wfTimestampNow() as the touch date,
// instead of $title->getTouched(), since that proved to be unreliable. Once that is
// fixed, this test should check for the exact timestamp, instead of accepting any
// greater timestamp.
$touchedMatcher = $this->greaterThanOrEqual( $touched );
- if ( $expectedUsages === null ) {
+ if ( $expectedUsages === null || !$add ) {
$usageUpdater->expects( $this->never() )
->method( 'addUsagesForPage' );
} else {
$usageUpdater->expects( $this->once() )
->method( 'addUsagesForPage' )
->with( $title->getArticleID(), $expectedUsages, $touchedMatcher );
}
if ( $prune ) {
$usageUpdater->expects( $this->once() )
->method( 'pruneUsagesForPage' )
->with( $title->getArticleID(), $touchedMatcher );
} else {
$usageUpdater->expects( $this->never() )
->method( 'pruneUsagesForPage' );
}
return $usageUpdater;
}
+ /**
+ * @param Title $title
+ * @param array|null $expectedUsages
+ * @param string|null $touched
+ * @param bool $useJobQueue whether we expect the job queue to be used
+ *
+ * @return JobQueueGroup
+ */
+ private function newJobScheduler(
+ Title $title,
+ array $expectedUsages = null,
+ $touched = null,
+ $useJobQueue = false
+ ) {
+ $jobScheduler = $this->getMockBuilder( 'JobQueueGroup' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ if ( empty( $expectedUsages ) || !$useJobQueue ) {
+ $jobScheduler->expects( $this->never() )
+ ->method( 'lazyPush' );
+ } else {
+ $expectedUsageArray = array_map( function ( EntityUsage $usage ) {
+ return $usage->asArray();
+ }, $expectedUsages );
+
+ $params = array(
+ 'jobsByWiki' => array(
+ wfWikiID() => array(
+ array(
+ 'type' => 'wikibase-addUsagesForPage',
+ 'params' => array(
+ 'pageId' => $title->getArticleID(),
+ 'usages' => $expectedUsageArray,
+ 'touched' => $touched
+ ),
+ 'opts' => array(
+ 'removeDuplicates' => true
+ ),
+ 'title' => array(
+ 'ns' => NS_MAIN,
+ 'key' => 'Oxygen'
+ )
+ )
+ )
+ )
+ );
+
+ $jobScheduler->expects( $this->once() )
+ ->method( 'lazyPush' )
+ ->with( $this->callback( function ( $job ) use ( $params ) {
+ DataUpdateHookHandlersTest::assertEquals( 'enqueue', $job->getType() );
+ DataUpdateHookHandlersTest::assertEquals( $params, $job->getParams() );
+ return true;
+ } ) );
+
+ }
+
+ return $jobScheduler;
+ }
+
/**
* @param Title $title
* @param EntityUsage[]|null $expectedUsages
* @param string|null $touched timestamp
- * @param bool $prune
+ * @param bool $prune whether pruneUsagesForPage() should be used
+ * @param bool $asyncAdd whether addUsagesForPage() should be called via the job queue
*
* @return DataUpdateHookHandlers
*/
- private function newDataUpdateHookHandlers( Title $title, array $expectedUsages = null, $touched = null, $prune = true ) {
- $usageUpdater = $this->newUsageUpdater( $title, $expectedUsages, $touched, $prune );
+ private function newDataUpdateHookHandlers(
+ Title $title,
+ array $expectedUsages = null,
+ $touched = null,
+ $prune = true,
+ $asyncAdd = false
+ ) {
+ $usageUpdater = $this->newUsageUpdater( $title, $expectedUsages, $touched, $prune, !$asyncAdd );
+ $jobScheduler = $this->newJobScheduler( $title, $expectedUsages, $touched, $asyncAdd );
return new DataUpdateHookHandlers(
- $usageUpdater
+ $usageUpdater,
+ $jobScheduler
);
}
/**
* @param array[]|null $usages
* @param string $timestamp
*
* @return ParserOutput
*/
private function newParserOutput( array $usages = null, $timestamp ) {
$output = new ParserOutput();
$output->setTimestamp( $timestamp );
if ( $usages ) {
$acc = new ParserOutputUsageAccumulator( $output );
foreach ( $usages as $u ) {
$acc->addUsage( $u );
}
}
return $output;
}
/**
* @param Title $title
* @param EntityUsage[]|null $usages
* @param string $touched
*
* @return WikiPage
*/
private function newLinksUpdate( Title $title, array $usages = null, $touched ) {
$pout = $this->newParserOutput( $usages, $touched );
$linksUpdate = $this->getMockBuilder( 'LinksUpdate' )
->disableOriginalConstructor()
->getMock();
$linksUpdate->expects( $this->any() )
->method( 'getTitle' )
->will( $this->returnValue( $title ) );
$linksUpdate->expects( $this->any() )
->method( 'getParserOutput' )
->will( $this->returnValue( $pout ) );
return $linksUpdate;
}
public function testNewFromGlobalState() {
$handler = DataUpdateHookHandlers::newFromGlobalState();
$this->assertInstanceOf( 'Wikibase\Client\Hooks\DataUpdateHookHandlers', $handler );
}
public function provideLinksUpdateComplete() {
return array(
'usage' => array(
Title::makeTitle( NS_MAIN, 'Oxygen' ),
array(
'Q1#S' => new EntityUsage( new ItemId( 'Q1' ), EntityUsage::SITELINK_USAGE ),
'Q2#T' => new EntityUsage( new ItemId( 'Q2' ), EntityUsage::TITLE_USAGE ),
'Q2#L' => new EntityUsage( new ItemId( 'Q2' ), EntityUsage::LABEL_USAGE ),
),
),
'no usage' => array(
Title::makeTitle( NS_MAIN, 'Oxygen' ),
array(),
),
);
}
/**
* @dataProvider provideLinksUpdateComplete
*/
public function testLinksUpdateComplete( Title $title, $usage ) {
$title->resetArticleID( 23 );
$timestamp = '20150505000000';
$linksUpdate = $this->newLinksUpdate( $title, $usage, $timestamp );
// Assertions are done by the UsageUpdater mock
- $handler = $this->newDataUpdateHookHandlers( $title, $usage, $timestamp, true );
+ $handler = $this->newDataUpdateHookHandlers( $title, $usage, $timestamp, true, false );
$handler->doLinksUpdateComplete( $linksUpdate );
}
/**
* @dataProvider provideLinksUpdateComplete
*/
public function testDoParserCacheSaveComplete( Title $title, $usage ) {
$title->resetArticleID( 23 );
$timestamp = '20150505000000';
$parserOutput = $this->newParserOutput( $usage, $timestamp );
// Assertions are done by the UsageUpdater mock
- $handler = $this->newDataUpdateHookHandlers( $title, $usage, $timestamp, false );
+ $handler = $this->newDataUpdateHookHandlers( $title, $usage, $timestamp, false, true );
$handler->doParserCacheSaveComplete( $parserOutput, $title );
}
public function testDoArticleDeleteComplete() {
$title = Title::makeTitle( NS_MAIN, 'Oxygen' );
$title->resetArticleID( 23 );
$timestamp = '20150505000000';
// Assertions are done by the UsageUpdater mock
- $handler = $this->newDataUpdateHookHandlers( $title, null, $timestamp, true );
+ $handler = $this->newDataUpdateHookHandlers( $title, null, $timestamp, true, false );
$handler->doArticleDeleteComplete( $title->getNamespace(), $title->getArticleID(), $timestamp );
}
}
diff --git a/extensions/Wikibase/client/tests/phpunit/includes/Usage/EntityUsageTest.php b/extensions/Wikibase/client/tests/phpunit/includes/Usage/EntityUsageTest.php
index 1a20b6100..48f9bc67d 100644
--- a/extensions/Wikibase/client/tests/phpunit/includes/Usage/EntityUsageTest.php
+++ b/extensions/Wikibase/client/tests/phpunit/includes/Usage/EntityUsageTest.php
@@ -1,97 +1,116 @@
<?php
namespace Wikibase\Client\Tests\Usage;
use PHPUnit_Framework_TestCase;
use Wikibase\Client\Usage\EntityUsage;
use Wikibase\DataModel\Entity\ItemId;
/**
* @covers Wikibase\Client\Usage\EntityUsage
*
* @group Wikibase
* @group WikibaseClient
* @group WikibaseUsageTracking
*
* @license GPL 2+
* @author Daniel Kinzler
*/
class EntityUsageTest extends PHPUnit_Framework_TestCase {
public function testGetEntityId() {
$id = new ItemId( 'Q7' );
$aspect = EntityUsage::ALL_USAGE;
$usage = new EntityUsage( $id, $aspect );
$this->assertEquals( $id, $usage->getEntityId() );
}
public function testGetAspect() {
$id = new ItemId( 'Q7' );
$aspect = EntityUsage::ALL_USAGE;
$usage = new EntityUsage( $id, $aspect );
$this->assertEquals( $aspect, $usage->getAspect() );
}
public function testGetIdentityString() {
$id = new ItemId( 'Q7' );
$aspect = EntityUsage::ALL_USAGE;
$usage = new EntityUsage( $id, $aspect );
$this->assertInternalType( 'string', $usage->getIdentityString() );
}
public function testGetAspectKey() {
$id = new ItemId( 'Q7' );
$aspect = EntityUsage::LABEL_USAGE;
$modifier = 'ru';
$usage = new EntityUsage( $id, $aspect );
$this->assertEquals( $aspect, $usage->getAspectKey() );
$usage = new EntityUsage( $id, $aspect, $modifier );
$this->assertEquals( "$aspect.$modifier", $usage->getAspectKey() );
}
+ public function testAsArray() {
+ $id = new ItemId( 'Q7' );
+ $aspect = EntityUsage::LABEL_USAGE;
+ $modifier = 'ru';
+
+ $expected = array(
+ 'entityId' => $id->getSerialization(),
+ 'aspect' => $aspect,
+ 'modifier' => null
+ );
+
+ $usage = new EntityUsage( $id, $aspect );
+ $this->assertEquals( $expected, $usage->asArray() );
+
+ $expected['modifier'] = $modifier;
+ $usage = new EntityUsage( $id, $aspect, $modifier );
+ $this->assertEquals( $expected, $usage->asArray() );
+ }
+
public function aspectKeyProvider() {
return array(
array( 'L', array( 'L', null ) ),
array( 'L.x', array( 'L', 'x' ) ),
array( 'L.x.y', array( 'L', 'x.y' ) ),
);
}
/**
* @dataProvider aspectKeyProvider
*/
public function testStripModifier( $aspectKey, $expectedParts ) {
$aspect = EntityUsage::stripModifier( $aspectKey );
$this->assertEquals( $expectedParts[0], $aspect );
}
/**
* @dataProvider aspectKeyProvider
*/
public function testSplitAspectKey( $aspectKey, $expectedParts ) {
$parts = EntityUsage::splitAspectKey( $aspectKey );
$this->assertEquals( $expectedParts, $parts );
}
public function provideMakeAspectKey() {
return array(
array( 'L', null, 'L' ),
array( 'L', 'x', 'L.x' ),
);
}
/**
* @dataProvider provideMakeAspectKey
*/
public function testMakeAspectKey( $aspect, $modifier, $expectedKey ) {
$key = EntityUsage::makeAspectKey( $aspect, $modifier );
$this->assertEquals( $expectedKey, $key );
}
}
diff --git a/extensions/Wikibase/client/tests/phpunit/includes/store/AddUsagesForPageJobTest.php b/extensions/Wikibase/client/tests/phpunit/includes/store/AddUsagesForPageJobTest.php
new file mode 100644
index 000000000..cb15661a6
--- /dev/null
+++ b/extensions/Wikibase/client/tests/phpunit/includes/store/AddUsagesForPageJobTest.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace Wikibase\Client\Test\Store;
+
+use Title;
+use Wikibase\Client\Store\AddUsagesForPageJob;
+use Wikibase\Client\Usage\EntityUsage;
+use Wikibase\DataModel\Entity\BasicEntityIdParser;
+use Wikibase\DataModel\Entity\ItemId;
+
+/**
+ * @covers Wikibase\Client\Store\AddUsagesForPageJob
+ *
+ * @group Wikibase
+ * @group WikibaseClient
+ * @group WikibaseUsageTracking
+ *
+ * @licence GNU GPL v2+
+ * @author Daniel Kinzler
+ */
+class AddUsagesForPageJobTest extends \PHPUnit_Framework_TestCase {
+
+ public function provideConstructor_failure() {
+ $pageId = 17;
+ $usageQ5X = new EntityUsage( new ItemId( 'Q5' ), 'X' );
+ $usages = array( $usageQ5X->asArray() );
+ $touched = '20150101000000';
+
+ return array(
+ 'empty' => array( array() ),
+
+ '$pageId is missing' => array( array(
+ 'usages' => $usages,
+ 'touched' => $touched,
+ ) ),
+ '$pageId is not an int' => array( array(
+ 'pageId' => 'foo',
+ 'usages' => $usages,
+ 'touched' => $touched,
+ ) ),
+ '$pageId is zero' => array( array(
+ 'pageId' => 0,
+ 'usages' => $usages,
+ 'touched' => $touched,
+ ) ),
+
+ '$usages is missing' => array( array(
+ 'pageId' => $pageId,
+ 'touched' => $touched,
+ ) ),
+ '$usages is not an array' => array( array(
+ 'pageId' => $pageId,
+ 'usages' => 'xxx',
+ 'touched' => $touched,
+ ) ),
+ '$usages is empty' => array( array(
+ 'pageId' => $pageId,
+ 'usages' => array(),
+ 'touched' => $touched,
+ ) ),
+ '$usages contains crap' => array( array(
+ 'pageId' => $pageId,
+ 'usages' => array( 1, 2, 3 ),
+ 'touched' => $touched,
+ ) ),
+
+ '$touched is missing' => array( array(
+ 'pageId' => $pageId,
+ 'usages' => $usages,
+ ) ),
+ '$touched is not a string' => array( array(
+ 'pageId' => $pageId,
+ 'usages' => $usages,
+ 'touched' => 23,
+ ) ),
+ '$touched is empty' => array( array(
+ 'pageId' => $pageId,
+ 'usages' => $usages,
+ 'touched' => '',
+ ) ),
+ );
+ }
+
+ /**
+ * @dataProvider provideConstructor_failure
+ * @param array $params
+ */
+ public function testConstructor_failure( $params ) {
+ $this->setExpectedException( 'InvalidArgumentException' );
+
+ $title = Title::makeTitle( NS_MAIN, 'Foo' );
+ new AddUsagesForPageJob( $title, $params );
+ }
+
+ public function testRun() {
+ $usageQ5X = new EntityUsage( new ItemId( 'Q5' ), 'X' );
+ $params = array(
+ 'pageId' => 17,
+ 'usages' => array( $usageQ5X->asArray() ),
+ 'touched' => '20150101000000',
+ );
+
+ $usageUpdater = $this->getMockBuilder( 'Wikibase\Client\Store\UsageUpdater' )
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $usageUpdater->expects( $this->once() )
+ ->method( 'addUsagesForPage' )
+ ->with(
+ $params['pageId'],
+ array( $usageQ5X ),
+ $params['touched']
+ );
+
+ $title = Title::makeTitle( NS_MAIN, 'Foo' );
+ $job = new AddUsagesForPageJob( $title, $params );
+ $job->overrideServices( $usageUpdater, new BasicEntityIdParser() );
+
+ $job->run();
+ }
+
+ public function testNewSpec() {
+ $usageQ5X = new EntityUsage( new ItemId( 'Q5' ), 'X' );
+
+ $title = Title::makeTitle( NS_MAIN, 'Foo' );
+ $title->resetArticleID( 17 );
+
+ $touched = '20150101000000';
+ $usages = array( $usageQ5X );
+
+ $spec = AddUsagesForPageJob::newSpec( $title, $usages, $touched );
+
+ $params = array(
+ 'pageId' => $title->getArticleID(),
+ 'usages' => array( $usageQ5X->asArray() ),
+ 'touched' => '20150101000000',
+ );
+
+ $this->assertEquals( 'wikibase-addUsagesForPage', $spec->getType() );
+ $this->assertEquals( $title->getFullText(), $spec->getTitle()->getFullText() );
+ $this->assertEquals( $params, $spec->getParams() );
+ }
+
+}
diff --git a/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php b/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
index 29208f181..372e43ec3 100644
--- a/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
+++ b/extensions/Wikibase/lib/includes/serializers/LibSerializerFactory.php
@@ -1,202 +1,193 @@
<?php
namespace Wikibase\Lib\Serializers;
use InvalidArgumentException;
use SiteStore;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\Property;
use Wikibase\DataModel\Entity\PropertyDataTypeLookup;
use Wikibase\EntityFactory;
/**
* Factory for constructing Serializer and Unserializer objects.
*
* @since 0.4
*
* @licence GNU GPL v2+
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
* @author Daniel Kinzler
*
* @todo: allow this to be obtained from WikibaseRepo resp. WikibaseClient
*/
class LibSerializerFactory {
/**
* @var EntityFactory|null
*/
private $entityFactory = null;
/**
* @var SiteStore|null
*/
private $siteStore = null;
/**
* @var PropertyDataTypeLookup|null
*/
private $dataTypeLookup = null;
/**
* @param SerializationOptions $defaultOptions
* @param PropertyDataTypeLookup $dataTypeLookup
* @param EntityFactory $entityFactory
* @param SiteStore $siteStore
*
* @todo: injecting the services should be required
*/
public function __construct(
SerializationOptions $defaultOptions = null,
PropertyDataTypeLookup $dataTypeLookup = null,
EntityFactory $entityFactory = null,
SiteStore $siteStore = null
) {
if ( $siteStore === null ) {
$siteStore = \SiteSQLStore::newInstance();
}
$this->defaultOptions = $defaultOptions;
$this->dataTypeLookup = $dataTypeLookup;
$this->entityFactory = $entityFactory;
$this->siteStore = $siteStore;
}
/**
* @param string $entityType
* @param SerializationOptions $options
*
* @throws InvalidArgumentException
* @return Serializer
*/
public function newSerializerForEntity( $entityType, $options ) {
switch( $entityType ) {
case Item::ENTITY_TYPE:
return $this->newItemSerializer( $options );
case Property::ENTITY_TYPE:
return $this->newPropertySerializer( $options );
//TODO: support extra entity types!
default:
throw new InvalidArgumentException( '$entityType is invalid' );
}
}
/**
* @param string $entityType
* @param SerializationOptions $options
*
* @throws InvalidArgumentException
* @return Unserializer
*/
public function newUnserializerForEntity( $entityType, $options ) {
switch( $entityType ) {
case Item::ENTITY_TYPE:
return $this->newItemUnserializer( $options );
case Property::ENTITY_TYPE:
return $this->newPropertyUnserializer( $options );
//TODO: support extra entity types!
default:
throw new InvalidArgumentException( '$entityType is invalid' );
}
}
/**
* @param SerializationOptions $options
*
* @return Serializer
*/
public function newSnakSerializer( SerializationOptions $options ) {
return new SnakSerializer( $this->dataTypeLookup, $options );
}
/**
* @param SerializationOptions $options
*
* @return Serializer
*/
public function newClaimSerializer( SerializationOptions $options ) {
return new ClaimSerializer( $this->newSnakSerializer( $options ), $options );
}
- /**
- * @param SerializationOptions $options
- *
- * @return Serializer
- */
- public function newClaimsSerializer( SerializationOptions $options ) {
- return new ClaimsSerializer( $this->newClaimSerializer( $options ), $options );
- }
-
/**
* @param SerializationOptions $options
*
* @return Serializer
*/
private function newItemSerializer( SerializationOptions $options ) {
return new ItemSerializer( $this->newClaimSerializer( $options ), $this->siteStore, $options, $this->entityFactory );
}
/**
* @param SerializationOptions $options
*
* @return Serializer
*/
private function newPropertySerializer( SerializationOptions $options ) {
return new PropertySerializer( $this->newClaimSerializer( $options ), $options, $this->entityFactory );
}
/**
* @param SerializationOptions $options
*
* @return Unserializer
*/
public function newClaimUnserializer( SerializationOptions $options ) {
return $this->newClaimSerializer( $this->makeOptions( $options ) );
}
/**
* @param SerializationOptions $options
*
* @return Unserializer
*/
private function newItemUnserializer( SerializationOptions $options ) {
return $this->newItemSerializer( $this->makeOptions( $options ) );
}
/**
* @param SerializationOptions $options
*
* @return Unserializer
*/
private function newPropertyUnserializer( SerializationOptions $options ) {
return $this->newPropertySerializer( $this->makeOptions( $options ) );
}
/**
* Returns an options object that combines the options in $options
* and the $defaultOptions provided to the constructor.
*
* @param SerializationOptions $options
*
* @return null|SerializationOptions
*/
private function makeOptions( SerializationOptions $options = null ) {
if ( $options === null && $this->defaultOptions === null ) {
return new SerializationOptions();
}
if ( $this->defaultOptions === null ) {
return $options;
}
if ( $options === null ) {
return clone $this->defaultOptions;
}
$mergedOptions = new SerializationOptions();
$mergedOptions->merge( $this->defaultOptions );
$mergedOptions->merge( $options );
return $mergedOptions;
}
}
diff --git a/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php b/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
index 6b049fa09..d0cc992ed 100644
--- a/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
+++ b/extensions/Wikibase/lib/tests/phpunit/serializers/LibSerializerFactoryTest.php
@@ -1,123 +1,122 @@
<?php
namespace Wikibase\Lib\Test\Serializers;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\Property;
use Wikibase\DataModel\Reference;
use Wikibase\DataModel\Snak\PropertyNoValueSnak;
use Wikibase\DataModel\Statement\Statement;
use Wikibase\Lib\Serializers\SerializationOptions;
use Wikibase\Lib\Serializers\LibSerializerFactory;
/**
* @covers Wikibase\Lib\Serializers\LibSerializerFactory
*
* @group WikibaseLib
* @group Wikibase
* @group WikibaseSerialization
*
* @licence GNU GPL v2+
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
* @author Daniel Kinzler
*/
class LibSerializerFactoryTest extends \MediaWikiTestCase {
public function testConstructor() {
new LibSerializerFactory();
$this->assertTrue( true );
}
public function serializationProvider() {
$argLists = array();
$snak = new PropertyNoValueSnak( 42 );
$factory = new LibSerializerFactory();
$serializer = $factory->newSnakSerializer( new SerializationOptions() );
$argLists[] = array( 'Wikibase\DataModel\Snak\Snak', $serializer->getSerialized( $snak ) );
return $argLists;
}
public function entityTypeProvider() {
return array(
array( Item::ENTITY_TYPE ),
array( Property::ENTITY_TYPE ),
);
}
/**
* @dataProvider entityTypeProvider
*/
public function testNewUnserializerForEntity( $entityType ) {
$factory = new LibSerializerFactory();
$options = new SerializationOPtions();
$unserializer = $factory->newUnserializerForEntity( $entityType, $options );
$this->assertInstanceOf( 'Wikibase\Lib\Serializers\Unserializer', $unserializer );
}
/**
* @dataProvider entityTypeProvider
*/
public function testNewSerializerForEntity( $entityType ) {
$factory = new LibSerializerFactory();
$options = new SerializationOPtions();
$unserializer = $factory->newSerializerForEntity( $entityType, $options );
$this->assertInstanceOf( 'Wikibase\Lib\Serializers\Serializer', $unserializer );
}
public function newUnserializerProvider() {
$names = array(
'ClaimUnserializer',
);
return array_map( function( $name ) {
return array( $name );
}, $names );
}
/**
* @dataProvider newUnserializerProvider
*/
public function testNewUnserializer( $serializerName ) {
$factory = new LibSerializerFactory();
$options = new SerializationOPtions();
$method = "new$serializerName";
$unserializer = $factory->$method( $options );
$this->assertInstanceOf( 'Wikibase\Lib\Serializers\Unserializer', $unserializer );
}
public function newSerializerProvider() {
$names = array(
'SnakSerializer',
'ClaimSerializer',
- 'ClaimsSerializer',
);
return array_map( function( $name ) {
return array( $name );
}, $names );
}
/**
* @dataProvider newSerializerProvider
*/
public function testNewSerializer( $serializerName ) {
$factory = new LibSerializerFactory();
$options = new SerializationOPtions();
$method = "new$serializerName";
$unserializer = $factory->$method( $options );
$this->assertInstanceOf( 'Wikibase\Lib\Serializers\Serializer', $unserializer );
}
}
diff --git a/extensions/Wikibase/repo/i18n/en.json b/extensions/Wikibase/repo/i18n/en.json
index 26bbfb4ce..4ad3e6907 100644
--- a/extensions/Wikibase/repo/i18n/en.json
+++ b/extensions/Wikibase/repo/i18n/en.json
@@ -1,674 +1,672 @@
{
"@metadata": {
"authors": [
"Daniel Kinzler",
"Tobias Gritschacher",
"John Erling Blad",
"Jens Ohlig",
"Anja Jentzsch",
"Daniel Werner",
"Michał Łazowik",
"Adam Shorland",
"Bene*",
"Lucie-Aimée Kaffee"
]
},
"wikibase-desc": "Structured data repository",
"wikibase-entity": "entity",
"wikibase-entity-item": "item",
"wikibase-entity-property": "property",
"wikibase-entity-query": "query",
"wikibase-edit": "edit",
"wikibase-save": "save",
"wikibase-cancel": "cancel",
"wikibase-add": "add",
"wikibase-addqualifier": "add qualifier",
"wikibase-addreference": "add reference",
"wikibase-save-inprogress": "Saving…",
"wikibase-remove-inprogress": "Removing…",
"wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "In more languages",
"wikibase-entitytermsview-entitytermsforlanguagelistview-configure-link": "https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Wikibase/Configuring_languages",
"wikibase-entitytermsview-entitytermsforlanguagelistview-configure-link-label": "Configure",
"wikibase-setting-entitytermsview-showEntitytermslistview": "Show labels, aliases and descriptions in all my languages on page load",
"wikibase-setting-entitytermsview-showEntitytermslistview-help": "Personal languages additional to the user interface language may be set using the [[mw:Extension:Babel|Babel extension]] syntax on the user page.",
"wikibase-entitytermsforlanguagelistview-aliases": "Also known as",
"wikibase-entitytermsforlanguagelistview-description": "Description",
"wikibase-entitytermsforlanguagelistview-label": "Label",
"wikibase-entitytermsforlanguagelistview-language": "Language",
"wikibase-label-empty": "No label defined",
"wikibase-label-edit-placeholder": "enter a label",
"wikibase-label-edit-placeholder-language-aware": "enter a label in $1",
"wikibase-description-empty": "No description defined",
"wikibase-description-edit-placeholder": "enter a description",
"wikibase-description-edit-placeholder-language-aware": "enter a description in $1",
"wikibase-aliases-edit-placeholder-language-aware": "enter some aliases in $1",
"wikibase-diffview-reference": "reference",
"wikibase-diffview-rank": "rank",
"wikibase-diffview-rank-preferred": "Preferred rank",
"wikibase-diffview-rank-normal": "Normal rank",
"wikibase-diffview-rank-deprecated": "Deprecated rank",
"wikibase-diffview-qualifier": "qualifier",
"wikibase-diffview-label": "label",
"wikibase-diffview-alias": "aliases",
"wikibase-diffview-description": "description",
"wikibase-diffview-link": "links",
"wikibase-sitelink-site-edit-placeholder": "site",
"wikibase-sitelink-page-edit-placeholder": "page",
"wikibase-alias-edit-placeholder": "enter an alias",
"wikibase-label-input-help-message": "Enter the label of this entity in $1.",
"wikibase-description-input-help-message": "Enter a short description for this entity in $1.",
"wikibase-entitytermsview-input-help-message": "Enter a label of this entity, a short description and aliases per language.",
"wikibase-entitytermsforlanguageview-input-help-message": "Enter the label of this entity, a short description and aliases in $1.",
"wikibase-statements": "Statements",
"wikibase-terms": "In other languages",
"wikibase-sitelinks": "Sitelinks",
"wikibase-sitelinkgroupview-input-help-message": "Add a sitelink by specifying a site and a page of that site, edit or remove existing sitelinks.",
"wikibase-sitelinks-empty": "No page is linked to this item.",
"wikibase-sitelinks-input-help-message": "Set a link to a page related to this item.",
"wikibase-sitelinks-special": "Other sites",
"wikibase-badgeselector-badge-placeholder-title": "Click to assign a badge.",
"wikibase-remove": "remove",
"wikibase-move-up": "move up",
"wikibase-move-down": "move down",
"wikibase-undo-title": "Undoing edit to \"$1\"",
"wikibase-restore-title": "Restoring old revision of \"$1\"",
"wikibase-partial-undo": "The edit can partially be undone.",
"wikibase-omitted-undo-ops": "$1 {{PLURAL:$1|change|changes}} cannot be undone because the {{PLURAL:$1|value has|values have}} changed in the meantime.",
"wikibase-empty-undo": "There is nothing that can be undone here.",
"wikibase-undo-revision-error": "Undo failed",
"wikibase-undo-samerev": "Two different revisions must be specified to undo an edit.",
"wikibase-undo-badpage": "Bad revision: Revision $2 does not belong to [[$1]].",
"wikibase-undo-firstrev": "Cannot undo the page's creation",
"wikibase-undo-nocontent": "Cannot load content of revision $2 of page $1",
"wikibase-ui-pendingquantitycounter-nonpending": "$2 $1",
"wikibase-ui-pendingquantitycounter-pending": "$2$3 $1",
"wikibase-ui-pendingquantitycounter-pending-pendingsubpart": "+$1",
"wikibase-propertyedittool-counter-pending-tooltip": "{{PLURAL:$1|One value|$1 values}} not saved yet",
"wikibase-propertyedittool-counter-entrieslabel": "{{PLURAL:$1|entry|entries}}",
"wikibase-disambiguation-title": "Disambiguation for \"$1\"",
"wb-special-newitem-new-item-notification": "New item $1 created and redirected to its page. Back to $2.",
"wikibase-aliases-label": "Also known as:",
"wikibase-aliases-input-help-message": "To make this entity easier to find, you can enter alternative names.",
"wikibase-aliases-empty": "No aliases defined",
"wikibase-propertypage-datatype": "Data type",
"wikibase-property-footer": "",
"wikibase-claimview-snak-tooltip": "Enter a value corresponding to the property named \"$1\". If the property has no designated value or the actual value is not known, you may choose an alternative to specifying a custom value by clicking the icon next to the value input box.",
"wikibase-claimview-snak-new-tooltip": "After specifying a property you can enter a corresponding value. If the property has no designated value or the actual value is not known, you may choose an alternative to specifying a custom value by clicking the icon next to the value input box.",
"wikibase-statementview-rank-preferred": "Preferred rank",
"wikibase-statementview-rank-normal": "Normal rank",
"wikibase-statementview-rank-deprecated": "Deprecated rank",
"wikibase-statementview-referencesheading-pendingcountersubject": "{{PLURAL:$1|reference|references}}",
"wikibase-statementview-referencesheading-pendingcountertooltip": "{{PLURAL:$1|One reference|$1 references}} not saved yet",
"wikibase-snakview-property-input-placeholder": "property",
"wikibase-snakview-unsupportedsnaktype": "Snak of type \"$1\". Handling for this kind of Snak is not yet supported.",
"wikibase-snakview-choosesnaktype": "Choose a value type.",
"wikibase-snakview-variation-datavaluetypemismatch": "The value does not comply with the property's definition.",
"wikibase-snakview-variation-datavaluetypemismatch-details": "Unexpected conflict between the property type \"$2\" and the value type \"$1\".",
"wikibase-snakview-variation-nonewvaluefordeletedproperty": "It is not possible to define a new value for a deleted property.",
"wikibase-snakview-variations-somevalue-label": "unknown value",
"wikibase-snakview-variations-novalue-label": "no value",
"wikibase-snakview-snaktypeselector-value": "custom value",
"wikibase-snakformat-invalid-value": "Invalid value.",
"wikibase-snakformat-propertynotfound": "Property not found.",
"wikibase-shortcopyrightwarning": "By clicking \"$1\", you agree to the [[$2|terms of use]], and you irrevocably agree to release your contribution under the $3.",
"wikibase-shortcopyrightwarning-version": "wikibase-1",
"wikibase-copyrighttooltip-acknowledge": "I accept these terms for my future edits. Do not show this message again.",
"wikibase-entityselector-more": "more",
"wikibase-anonymouseditwarning": "Warning: You are not logged in.\nYour IP address will be recorded in the edit history of this entity.",
"wikibase-move-error": "You cannot move pages that are in a data namespace, and you cannot move pages into it.",
"wikibase-validator-sitelink-conflict": "The link $1 is already used by item $2. You may remove it from $2 if it does not belong there or merge the items if they are about the exact same topic.",
"wikibase-validator-label-conflict": "Property $3 already has label \"$1\" associated with language code $2.",
"wikibase-validator-label-with-description-conflict": "Item $3 already has label \"$1\" associated with language code $2, using the same description text.",
"wikibase-validator-label-no-entityid": "The label must not be a valid entity id.",
"wikibase-itemlink": "$1 $2",
"wikibase-itemlink-id-wrapper": "($1)",
"wikibase-itemlink-userlang-wrapper": "&nbsp;($1: $2)",
"wikibase-itemlink-title": "$1 | $2",
"wikibase-wikibaserepopage-not-itemid": "\"$1\" is not a valid item id.",
"wikibase-wikibaserepopage-invalid-langcode": "The language code \"$1\" is unknown. Please use a language code known to the system, such as \"en\".",
"wikibase-wikibaserepopage-invalid-id": "The id \"$1\" is unknown to the system. Please use a valid entity id.",
"wikibase-wikibaserepopage-unresolved-redirect": "$1 is a redirect.",
"wikibase-wikibaserepopage-storage-exception": "An error occurred while trying to load $1: $2.",
"special-itembytitle": "Item by title",
"wikibase-itembytitle-lookup-fieldset": "Search for items by site and title",
"wikibase-itembytitle-lookup-site": "Site:",
"wikibase-itembytitle-lookup-page": "Page:",
"wikibase-itembytitle-submit": "Search",
"wikibase-itembytitle-create": "You can also [$1 create an item].",
"wikibase-itembytitle-summary": "Special:ItemByTitle is used to find the corresponding item for a given page on a connected site. <br /> The left field, \"Site:\", is where you enter the language and site code. <br /> For the right field, \"Page:\", you must put in the exact title of the page as it appears on the connected site.",
"special-gotolinkedpage": "Go to linked page",
"wikibase-gotolinkedpage-lookup-fieldset": "Go to linked page by site and item",
"wikibase-gotolinkedpage-lookup-site": "Site:",
"wikibase-gotolinkedpage-lookup-item": "Item id:",
"wikibase-gotolinkedpage-submit": "Go",
"wikibase-gotolinkedpage-summary": "Special:GoToLinkedPage is used to find the page for an item on a connected site.<br /> The left field, \"Site:\", is where you enter the language and site code.<br /> For the right field, \"Item id:\", you must put in the item id you are looking for.",
"special-itemdisambiguation": "Item disambiguation",
"wikibase-itemdisambiguation-lookup-fieldset": "Search for items by language and label",
"wikibase-itemdisambiguation-lookup-language": "Language code:",
"wikibase-itemdisambiguation-lookup-label": "Label:",
"wikibase-itemdisambiguation-submit": "Search",
"wikibase-itemdisambiguation-form-hints": "Note that no more than $1 {{PLURAL:$1|result|results}} will be shown.",
"wikibase-itemdisambiguation-nothing-found": "Sorry, no item with that label was found.",
"wikibase-itemdisambiguation-search": "You can [$1 search for the item].",
"wikibase-itemdisambiguation-create": "You can [$1 create the item].",
"wikibase-itemdisambiguation-invalid-langcode": "Sorry, the language code you have provided is unknown to the system. Please use a valid language code like \"en\".",
"wikibase-itemdisambiguation-description": "Values used for searching must be the complete text entry. Language is an identifier, such as \"en\".",
"wikibase-itemdisambiguation-summary": "Search for all items with the exact same label.",
"special-newproperty": "Create a new property",
"wikibase-newproperty-summary": "Make sure to check if the property already exists!<br />You should create a [[Help:Label|label]] and a [[Help:Description|description]] for all new properties, and in addition a valid property type.",
"wikibase-newproperty-fieldset": "Create a new property",
"wikibase-newproperty-datatype": "Data type:",
"wikibase-newproperty-invalid-datatype": "Invalid data type specified.",
"special-newitem": "Create a new item",
"wikibase-newitem-summary": "Make sure to [[Special:ItemByTitle|check if the item already exists]]!<br />You should create a [[Help:Label|label]] and a [[Help:Description|description]] for all new items.",
"wikibase-newitem-fieldset": "Create a new item",
"wikibase-newitem-site": "Site of the first linked page",
"wikibase-newitem-page": "Name of the first linked page",
"wikibase-newitem-no-external-page": "The specified page could not be found on the corresponding site.",
"wikibase-newitem-not-recognized-siteid": "The provided site identifier was not recognized.",
"wikibase-newentity-label": "Label:",
"wikibase-newentity-description": "Description:",
"wikibase-newentity-aliases": "Aliases, pipe-separated:",
"wikibase-newentity-submit": "Create",
"special-setlabel": "Set a label",
"wikibase-setlabel-introfull": "You are setting the label in $2 for [[$1]].",
"wikibase-setlabel-intro": "This form allows you to set the label of an entity. You need to provide the id of the entity (e.g. Q23), a language code (e.g. \"en\") and the label to set to.",
"wikibase-setlabel-label": "Label:",
"wikibase-setlabel-submit": "Set label",
"special-setdescription": "Set a description",
"wikibase-setdescription-introfull": "You are setting the description in $2 for [[$1]].",
"wikibase-setdescription-intro": "This form allows you to set the description of an entity. You need to provide the id of the entity (e.g. Q23), a language code (e.g. \"en\") and the description to set to.",
"wikibase-setdescription-label": "Description:",
"wikibase-setdescription-submit": "Set description",
"special-setaliases": "Set aliases",
"wikibase-setaliases-introfull": "You are setting the aliases in $2 for [[$1]]. Several aliases are separated by a pipe (<code>|</code>) character.",
"wikibase-setaliases-intro": "This form allows you to set the aliases of an entity. You need to provide the id of the entity (e.g. Q23), a language code (e.g. \"en\") and the aliases to set to. Several aliases are separated by a pipe (<code>|</code>) character.",
"wikibase-setaliases-label": "Aliases:",
"wikibase-setaliases-submit": "Set aliases",
"special-setlabeldescriptionaliases": "Set label, description and aliases",
"wikibase-setlabeldescriptionaliases-introfull": "You are setting label, description and aliases in $2 for [[$1]]. Several aliases are separated by a pipe (<code>|</code>) character.",
"wikibase-setlabeldescriptionaliases-intro": "This form allows you to set label, description and aliases of an entity. You need to first provide the id of the entity (e.g. \"Q23\") and a language code (e.g. \"en\").",
"wikibase-setlabeldescriptionaliases-label-label": "Label:",
"wikibase-setlabeldescriptionaliases-description-label": "Description:",
"wikibase-setlabeldescriptionaliases-aliases-label": "Aliases:",
"wikibase-setlabeldescriptionaliases-submit": "Set label, description and aliases",
"special-setsitelink": "Set a sitelink",
"wikibase-setsitelink-introfull": "You are setting the sitelink of $2 for [[$1]].",
"wikibase-setsitelink-intro": "This form allows you to set the sitelink of an item. You need to provide the id of the item (e.g. Q23), a site id (e.g. \"enwiki\") and the sitelink to set to.",
"wikibase-setsitelink-intro-badges": "Additionally you can set various badges for this sitelink which are listed below.",
"wikibase-setsitelink-site": "Site id:",
"wikibase-setsitelink-label": "Sitelink:",
"wikibase-setsitelink-badges": "Badges:",
"wikibase-setsitelink-submit": "Set the sitelink",
"wikibase-setsitelink-invalid-site": "The site id \"$1\" is unknown. Please use an existing site id, such as \"enwiki\".",
"wikibase-setsitelink-not-item": "The id $1 does not belong to an item.",
"wikibase-setsitelink-not-badge": "The item $1 is not a badge.",
"wikibase-setsitelink-add-failed": "The sitelink could not be saved.",
"wikibase-setsitelink-remove-failed": "The sitelink could not be removed.",
"wikibase-modifyentity-id": "ID:",
"wikibase-modifyterm-language": "Language code:",
"special-mergeitems": "Merge two items",
"wikibase-mergeitems-intro": "If you merge two items, all labels, descriptions, aliases, sitelinks and statements will be moved from one item to the other.",
"wikibase-mergeitems-fromid": "The id to merge from",
"wikibase-mergeitems-toid": "The id to merge to",
"wikibase-mergeitems-submit": "Merge items",
"wikibase-mergeitems-success": "$1 was successfully merged into $3 and redirected.",
"wikibase-itemmerge-missing-parameter": "Incomplete input.",
"wikibase-itemmerge-not-item": "The specified entity is not an Item.",
"wikibase-itemmerge-failed-save": "Failed to save item.",
"wikibase-itemmerge-permissiondenied": "Permission denied.",
"wikibase-itemmerge-failed-modify": "Failed to merge items, please resolve any conflicts first.",
"wikibase-itemmerge-no-such-entity": "Item not found.",
"wikibase-itemmerge-cant-load-entity-content": "Failed to load item.",
"wikibase-itemmerge-cant-merge-self": "Cannot merge an item with itself.",
"wikibase-tokencheck-missingtoken": "Edit token required.",
"wikibase-tokencheck-mustposttoken": "Editing is only possible using POST requests.",
"wikibase-tokencheck-badtoken": "Bad edit token (perhaps your session expired).",
"special-dispatchstats": "Change dispatch statistics",
"wikibase-dispatchstats-intro": "This page provides statistics about dispatching changes to the clients.\nA client wiki is notified of a change on {{SITENAME}} once the change has been dispatched on that wiki, and the job queue on that wiki has processed that notification.\n* {{int:wikibase-dispatchstats-changes}} shows the number and the date for the oldest and the most recent items currently in the queue.\n* {{int:wikibase-dispatchstats-stats}} provides information about the most lagged and the least lagged client wiki, and one median one in between. For each wiki, the following information is provided:\n** \"{{int:wikibase-dispatchstats-site-id}}\" is the internal ID of the client wiki.\n** \"{{int:wikibase-dispatchstats-pos}}\" is the ID of the last change dispatched to that wiki.\n** \"{{int:wikibase-dispatchstats-lag-num}}\" is the number of changes not yet dispatched to that wiki.\n** \"{{int:wikibase-dispatchstats-lag-time}}\" is the time between the change last dispatched to the wiki, and the last change performed on {{SITENAME}}.\n** \"{{int:wikibase-dispatchstats-touched}}\" is the time when the last batch of changes got dispatched to the wiki.",
"wikibase-dispatchstats-no-stats": "There are currently no statistics available.",
"wikibase-dispatchstats-changes": "Change log statistics",
"wikibase-dispatchstats-stats": "Dispatch statistics",
"wikibase-dispatchstats-change-id": "ID",
"wikibase-dispatchstats-change-timestamp": "Timestamp",
"wikibase-dispatchstats-oldest-change": "Oldest",
"wikibase-dispatchstats-newest-change": "Newest",
"wikibase-dispatchstats-site-id": "Site",
"wikibase-dispatchstats-pos": "Position",
"wikibase-dispatchstats-lag-num": "Pending",
"wikibase-dispatchstats-lag-time": "Lag",
"wikibase-dispatchstats-touched": "Touched",
"wikibase-dispatchstats-large-lag": "(very large)",
"wikibase-dispatchstats-freshest": "Freshest",
"wikibase-dispatchstats-stalest": "Stalest",
"wikibase-dispatchstats-median": "Median",
"wikibase-dispatchstats-average": "Average",
"special-listdatatypes": "List of all data types available",
"wikibase-listdatatypes-intro": "This is a list of all data types available on this installation:",
"wikibase-listdatatypes-listproperties": "List of properties with this data type",
"wikibase-history-title-with-label": "Revision history of \"$2\" ($1)",
"wikibase-history-title-without-label": "Revision history of ($1)",
"special-listproperties": "List of properties",
"wikibase-listproperties-legend": "Get a list of properties by data type",
"wikibase-listproperties-datatype": "Data type:",
"wikibase-listproperties-all": "All data types",
"wikibase-listproperties-submit": "Find",
"wikibase-listproperties-invalid-datatype": "\"$1\" is not a valid data type.",
"special-entitieswithoutdescription": "Entities without description",
"wikibase-entitieswithoutdescription-legend": "Get list of entities without description",
"special-entitieswithoutlabel": "Entities without label",
"wikibase-entitieswithoutlabel-legend": "Get list of entities without label",
"wikibase-entitieswithoutlabel-label-language": "Language code:",
"wikibase-entitieswithoutlabel-label-type": "Type:",
"wikibase-entitieswithoutlabel-label-alltypes": "all",
"wikibase-entitieswithoutlabel-submit": "Find",
"wikibase-entitieswithoutlabel-invalid-language": "\"$1\" is not a valid language code.",
"wikibase-entitieswithoutlabel-invalid-type": "\"$1\" is not a valid entity type.",
"special-itemswithoutsitelinks": "Items without sitelinks",
"special-entitydata": "Entity data",
"wikibase-entitydata-not-found": "No entity with ID $1 was found.",
"wikibase-entitydata-not-acceptable": "No matching format found. Supported MIME types: $1",
"wikibase-entitydata-bad-revision": "Can't show revision $2 of entity $1.",
"wikibase-entitydata-bad-id": "Invalid ID: $1.",
"wikibase-entitydata-unsupported-format": "The data format $1 is not supported by this interface.",
"wikibase-entitydata-storage-error": "Failed to load entity $1.",
"wikibase-entitydata-title": "Entity Data",
"wikibase-entitydata-text": "This page provides a linked data interface to entity values. Please provide the entity ID in the URL, using subpage syntax.\n* Content negotiation applies based on you client's Accept header. This means that the entity data will be provided in the format preferred by your client. For a web browser, this will be HTML, causing your browser to be redirected to the regular entity page.\n* You can explicitly request a specific data format by adding the appropriate file extension to the entity ID: Q23.json will return data in the JSON format, Q23.ttl will return RDF/Turtle, and so on.",
"special-redirectentity": "Redirect an entity",
"wikibase-redirectentity-success": "$1 was successfully redirected to $2.",
"wikibase-redirectentity-fromid": "The id to redirect from",
"wikibase-redirectentity-toid": "The id to redirect to",
"wikibase-redirectentity-submit": "Redirect",
"special-mylanguagefallbackchain": "My language fallback chain",
"wikibase-mylanguagefallbackchain-text": "The language fallback chain used to display entity labels for you is shown below.",
"wikibase-mylanguagefallbackchain-babel": "You can edit it by putting <nowiki>{{#babel: }}</nowiki> on {{GENDER:$1|your}} [[Special:MyPage|user page]].",
"wikibase-mylanguagefallbackchain-verbatim-item": "$1 - $2",
"wikibase-mylanguagefallbackchain-converted-item": "$1 - $2, converted from $3 - $4",
"wikibase-api-common-item": "Common item detected",
"wikibase-api-badtoken": "Bad token detected",
"wikibase-api-cant-load-entity-content": "Cannot access content, revision may be deleted.",
"wikibase-api-unresolved-redirect": "The given entity ID refers to a redirect, which is not supported in this context.",
"wikibase-api-editconflict": "Edit conflict, could not patch the current revision",
"wikibase-api-failed-add-sitelink": "The sitelink could not be saved",
"wikibase-api-failed-modify": "Attempted modification of the item failed",
"wikibase-api-failed-save": "The save has failed",
"wikibase-api-inconsistent-language": "Inconsistent language detected",
"wikibase-api-inconsistent-site": "Inconsistent site detected",
"wikibase-api-invalid-guid": "Invalid claim guid",
"wikibase-api-invalid-json": "Invalid json in request",
"wikibase-api-invalid-snak": "Invalid snak",
"wikibase-api-invalid-list": "Invalid list",
"wikibase-api-invalid-property-id": "Invalid property id",
"wikibase-api-invalid-entity-id": "Invalid entity id",
"wikibase-api-no-common-iten": "There is no common item",
"wikibase-api-no-data": "No data to operate on",
"wikibase-api-no-external-page": "The external client site '$1' did not provide page information for page '$2'.",
"wikibase-api-nosuchrevid": "Revision with id not found",
"wikibase-api-no-such-claim": "Could not find such a claim",
"wikibase-api-no-such-entity": "Could not find such an entity",
"wikibase-api-no-such-entity-id": "Could not find such an entity id",
"wikibase-api-no-such-entity-link": "Could not find such an entity link",
"wikibase-api-no-such-reference": "Could not find such a reference",
"wikibase-api-no-such-site": "Could not find such a site",
"wikibase-api-no-such-sitelink": "Could not find a sitelink to '$1' when trying to edit badges.",
"wikibase-api-no-such-statement": "Could not find such a statement",
"wikibase-api-not-statement": "Not a statement",
"wikibase-api-not-item": "Not an item",
"wikibase-api-not-recognized-siteid": "The supplied site identifier was not recognized",
"wikibase-api-not-recognized": "Something was not recognized",
"wikibase-api-not-recognized-array": "An array was expected, but not recognized",
"wikibase-api-not-recognized-language": "The supplied language code was not recognized",
"wikibase-api-not-recognized-string": "A string was expected, but not recognized",
"wikibase-api-param-missing": "A parameter that is required was missing",
"wikibase-api-param-illegal": "An illegal set of parameters have been used",
"wikibase-api-permissiondenied": "You do not have the permissions needed to carry out this action",
"wikibase-api-wrong-class": "Wrong class type detected",
"wikibase-api-target-not-empty": "The redirect can only be created on top of an empty entity.",
"wikibase-api-target-is-redirect": "The redirect's target must not be a redirect too.",
"wikibase-api-target-is-incompatible": "Attempt to redirect to an entity of a different type.",
"wikibase-api-cant-redirect": "Can't create redirect (possibly because redirects between this kind of entity are not supported at all).",
"wikibase-self-conflict-patched": "Your edit was patched into the latest version, overriding some of your own intermediate changes.",
"wikibase-conflict-patched": "Your edit was patched into the latest version.",
"wikibase-restoreold": "restore",
"wikibase-restore-summary": "Restore revision $1 by [[Special:Contributions/$2|$2]]",
"wikibase-no-direct-editing": "Direct editing is disabled in namespace $1",
"wikibase-noentity": "This entity does not exist. You can [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs] to find out where it went.",
"wikibase-noentity-createone": "You can also [[$1|create a new one]].",
"wikibase-special-mergeitems-error-prefix": "The items could not be merged. The following error occurred:",
"wikibase-item-summary-wbsetitem": "Created a new item",
"wikibase-item-summary-wbcreate-new": "Created a new item",
"wikibase-item-summary-wbcreateredirect": "Redirected to $4",
"wikibase-item-summary-wbeditentity": "Created a new item",
"wikibase-item-summary-wbeditentity-create": "Created a new item",
"wikibase-item-summary-wbeditentity-update": "Changed an item",
"wikibase-item-summary-wbeditentity-override": "Cleared an item",
"wikibase-item-summary-wbsetreference": "Set a reference",
"wikibase-item-summary-wbsetreference-add": "Added reference to claim",
"wikibase-item-summary-wbsetreference-set": "Changed reference of claim",
"wikibase-item-summary-wbsetlabel-add": "Added [$2] label",
"wikibase-item-summary-wbsetlabel-set": "Changed [$2] label",
"wikibase-item-summary-wbsetlabel-remove": "Removed [$2] label",
"wikibase-item-summary-wbsetdescription-add": "Added [$2] description",
"wikibase-item-summary-wbsetdescription-set": "Changed [$2] description",
"wikibase-item-summary-wbsetdescription-remove": "Removed [$2] description",
"wikibase-item-summary-wbsetaliases-set": "Setting [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-item-summary-wbsetaliases-add-remove": "Added and removed [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-item-summary-wbsetaliases-add": "Added [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-item-summary-wbsetaliases-remove": "Removed [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-item-summary-wbsetlabeldescriptionaliases": "Changed [$2] label, description and aliases",
"wikibase-item-summary-wbsetsitelink-add": "Added link to [$2]",
"wikibase-item-summary-wbsetsitelink-add-both": "Added link with badges to [$2]",
"wikibase-item-summary-wbsetsitelink-set": "Changed link to [$2]",
"wikibase-item-summary-wbsetsitelink-set-badges": "Changed badges for [$2]",
"wikibase-item-summary-wbsetsitelink-set-both": "Changed link and badges for [$2]",
"wikibase-item-summary-wbsetsitelink-remove": "Removed link to [$2]",
"wikibase-item-summary-wblinktitles-create": "Created this item to connect pages",
"wikibase-item-summary-wblinktitles-connect": "Added a language link to connect pages",
"wikibase-item-summary-wbcreateclaim-value": "Created {{PLURAL:$1|a claim|claims}}",
"wikibase-item-summary-wbcreateclaim-novalue": "Created {{PLURAL:$1|a claim|claims}}",
"wikibase-item-summary-wbcreateclaim-somevalue": "Created {{PLURAL:$1|a claim|claims}}",
"wikibase-item-summary-wbcreateclaim": "Created {{PLURAL:$1|a claim|claims}}",
"wikibase-item-summary-wbsetclaimvalue": "Set {{PLURAL:$1|a claim value|claim values}}",
"wikibase-item-summary-wbremoveclaims": "Removed {{PLURAL:$1|a claim|claims}}",
"wikibase-item-summary-special-create-item": "Created an [$2] item with {{PLURAL:$1|value|values}}",
"wikibase-item-summary-wbcreateclaim-create": "Created claim",
"wikibase-item-summary-wbremoveclaims-remove": "Removed {{PLURAL:$1|claim|claims}}",
"wikibase-item-summary-wbsetclaim-update": "Changed {{PLURAL:$3|claim|claims}}",
"wikibase-item-summary-wbsetclaim-create": "Created {{PLURAL:$3|claim|claims}}",
"wikibase-item-summary-wbsetclaim-update-qualifiers": "Changed {{PLURAL:$4|one qualifier|$4 qualifiers}} of {{PLURAL:$3|claim|claims}}",
"wikibase-item-summary-wbsetclaim-update-references": "Changed {{PLURAL:$4|one reference|$4 references}} of {{PLURAL:$3|claim|claims}}",
"wikibase-item-summary-wbsetclaim-update-rank": "Changed rank of {{PLURAL:$3|claim|claims}}",
"wikibase-item-summary-clientsitelink-update": "Page moved from [$3] to [$4]",
"wikibase-item-summary-clientsitelink-remove": "Page on [$3] deleted",
"wikibase-item-summary-wbsetqualifier-add": "Added {{PLURAL:$1|qualifier|qualifiers}}",
"wikibase-item-summary-wbsetqualifier-update": "Changed {{PLURAL:$1|qualifier|qualifiers}}",
"wikibase-item-summary-wbremovequalifiers-remove": "Removed {{PLURAL:$1|qualifier|qualifiers}}",
"wikibase-item-summary-wbremovereferences-remove": "Removed {{PLURAL:$3|reference|references}} from claim",
"wikibase-item-summary-wbmergeitems-from": "Merged item from $3",
"wikibase-item-summary-wbmergeitems-to": "Merged item into $3",
"wikibase-property-summary-wbcreate-new": "Created a new property",
"wikibase-property-summary-wbcreateclaim-create": "Created claim",
"wikibase-property-summary-wbcreateclaim": "Created {{PLURAL:$1|a claim|claims}}",
"wikibase-property-summary-wbsetclaimvalue": "Set {{PLURAL:$1|a claim value|claim values}}",
"wikibase-property-summary-wbsetreference": "Set a reference",
"wikibase-property-summary-wbsetreference-add": "Added reference to claim",
"wikibase-property-summary-wbsetreference-set": "Changed reference of claim",
"wikibase-property-summary-wbremoveclaims": "Removed {{PLURAL:$1|a claim|claims}}",
"wikibase-property-summary-wbremoveclaims-remove": "Removed {{PLURAL:$1|claim|claims}}",
"wikibase-property-summary-wbeditentity-create": "Created a new property",
"wikibase-property-summary-wbeditentity-update": "Changed a property",
"wikibase-property-summary-wbeditentity-override": "Cleared a property",
"wikibase-property-summary-wbsetlabel-add": "Added [$2] label",
"wikibase-property-summary-wbsetlabel-set": "Changed [$2] label",
"wikibase-property-summary-wbsetlabel-remove": "Removed [$2] label",
"wikibase-property-summary-wbsetdescription-add": "Added [$2] description",
"wikibase-property-summary-wbsetdescription-set": "Changed [$2] description",
"wikibase-property-summary-wbsetdescription-remove": "Removed [$2] description",
"wikibase-property-summary-wbsetaliases-set": "Setting [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-property-summary-wbsetaliases-add-remove": "Added and removed [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-property-summary-wbsetaliases-add": "Added [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-property-summary-wbsetaliases-remove": "Removed [$2] {{PLURAL:$1|alias|aliases}}",
"wikibase-property-summary-wbsetlabeldescriptionaliases": "Changed [$2] label, description and aliases",
"wikibase-property-summary-wbsetclaim-update": "Changed {{PLURAL:$3|claim|claims}}",
"wikibase-property-summary-wbsetclaim-create": "Created {{PLURAL:$3|claim|claims}}",
"wikibase-property-summary-wbsetclaim-update-qualifiers": "Changed {{PLURAL:$4|one qualifier|$4 qualifiers}} of {{PLURAL:$3|claim|claims}}",
"wikibase-property-summary-wbsetclaim-update-references": "Changed {{PLURAL:$4|one reference|$4 references}} of {{PLURAL:$3|claim|claims}}",
"wikibase-property-summary-wbsetclaim-update-rank": "Changed rank of {{PLURAL:$3|claim|claims}}",
"wikibase-property-summary-wbsetqualifier-add": "Added {{PLURAL:$1|qualifier|qualifiers}}",
"wikibase-property-summary-wbsetqualifier-update": "Changed {{PLURAL:$1|qualifier|qualifiers}}",
"wikibase-property-summary-wbremovequalifiers-remove": "Removed {{PLURAL:$1|qualifier|qualifiers}}",
"wikibase-property-summary-wbremovereferences-remove": "Removed {{PLURAL:$3|reference|references}} from claim",
"wikibase-property-summary-special-create-property": "Created a [$2] property with {{PLURAL:$1|value|values}}",
"wikibase-listdatatypes-wikibase-item-head": "Item",
"wikibase-listdatatypes-wikibase-item-body": "Link to other items at the project. When a value is entered, the project's \"Item\" namespace will be searched for matching items.",
"wikibase-listdatatypes-wikibase-property-head": "Property",
"wikibase-listdatatypes-wikibase-property-body": "Link to properties at the project. When a value is entered, the project's \"Property\" namespace will be searched for matching properties.",
"wikibase-listdatatypes-commonsmedia-head": "Commons media",
"wikibase-listdatatypes-commonsmedia-body": "Link to files stored at Wikimedia Commons. When a value is entered, the \"File\" namespace on Commons will be searched for matching files.",
"wikibase-listdatatypes-globe-coordinate-head": "Globe coordinate",
"wikibase-listdatatypes-globe-coordinate-body": "Literal data for a geographical position given as a latitude-longitude pair in gms or decimal degrees for the given stellar body. Defaults to \"Earth\" and then \"WGS84\". It adds a resolution and range.\n* latitude – implicit first part (float, dms, dm, dd) of the coordinate string, direction is either given by prefixed sign or by postfixed N/S\n* longitude – implicit second part (float, dms, dm, dd) of the coordinate string, direction is either given by prefixed sign or by postfixed E/W\n* globe – explicit (?) data value, given as stellar body that defaults to Earth \"http://www.wikidata.org/entity/Q2\"\n* precision - numeric precision of the coordinate",
"wikibase-listdatatypes-quantity-head": "Quantity",
"wikibase-listdatatypes-quantity-body": "Literal data field for a quantity that relates to some kind of well-defined unit. The actual unit goes in the data values that is entered.\n* amount – implicit part of the string (mapping of unit prefix is unclear)\n* unit – implicit part of the string that defaults to \"1\" (mapping to standardizing body is unclear)\n* upperbound - quantity's upper bound\n* lowerbound - quantity's lower bound",
"wikibase-listdatatypes-monolingualtext-head": "Monolingual text",
"wikibase-listdatatypes-monolingualtext-body": "Literal data field for a string that is not translated into other languages. This type of string is defined once and reused across all languages. Typical use is a geographical names written in the local language, an identifier of some kind, a chemical formula or a Latin scientific name.\n* language – explicit value for identifying the language for the text part\n* value – explicit value for the language specific variant string",
"wikibase-listdatatypes-multilingualtext-head": "Multilingual text",
"wikibase-listdatatypes-multilingualtext-body": "Literal data field for a string that must be translated into other languages. Typical use is an entity name of global interest that has non-local written forms. Those can differ both in languages and script systems.\n* language – explicit value for identifying the language for the text part\n* value – explicit value for the language specific variant string",
"wikibase-listdatatypes-string-head": "String",
"wikibase-listdatatypes-string-body": "Literal data field for a string of glyphs. Typical use are identifiers that have written forms which do not depend on the language of the reader.\n* value – explicit value for the language specific variant string",
"wikibase-listdatatypes-time-head": "Time",
"wikibase-listdatatypes-time-body": "Literal data field for a time value. Given as a time with some precision and boundaries. The time is always saved internally in the Proleptic Gregorian format, but can use other formats during parsing and formatting.\n* time – explicit value for point in time, represented as a timestamp resembling ISO 8601, e.g. +2013-01-01T00:00:00Z. The year is always signed and padded to have between 1 and 16 digits.\n* timezone – explicit value as a signed integer. Timezone information as an offset from UTC in minutes.\n* before – explicit integer value for how many units after the given time it could be. The unit is given by the precision.\n* after – explicit integer value for how many units before the given time it could be. The unit is given by the precision.\n* precision – explicit value encoded in a shortint. The numbers have the following meaning: 0 - billion years, 1 - hundred million years, ..., 6 - millennium, 7 - century, 8 - decade, 9 - year, 10 - month, 11 - day, 12 - hour, 13 - minute, 14 - second.\n* calendarmodel – explicit value given as a URI. It will identify the calendar model that should be used to display this time value.",
"wikibase-listdatatypes-url-head": "URL",
"wikibase-listdatatypes-url-body": "Literal data field for a URL. URLs are restricted to the protocols also supported for external links in wikitext.",
"wikibase-concept-uri": "Concept URI",
"wikibase-concept-uri-tooltip": "URI that identifies the concept described by this item",
"wikibase-add-badges": "Add badges",
"datatypes-type-url": "URL",
"content-model-wikibase-item": "Wikibase item",
"content-model-wikibase-property": "Wikibase property",
"content-model-wikibase-query": "Wikibase query",
"right-item-term": "Change item terms (labels, descriptions, aliases)",
"right-item-merge": "Merge items",
"right-item-redirect": "Create item redirects",
"right-property-term": "Change property terms (labels, descriptions, aliases)",
"right-property-create": "Create properties",
"wikibase-entity-not-viewable-title": "Content type mismatch: Cannot display content",
"wikibase-entity-not-viewable": "The given content of type \"$1\" is not an Entity and cannot be displayed by Wikibase.",
"action-item-merge": "merge items",
"action-property-create": "create properties",
"apihelp-wbavailablebadges-description": "Queries available badge items.",
"apihelp-wbavailablebadges-example-1": "Queries all available badge items",
"apihelp-wbcreateclaim-description": "Creates Wikibase claims.",
"apihelp-wbcreateclaim-param-entity": "ID of the entity you are adding the claim to",
"apihelp-wbcreateclaim-param-property": "ID of the snaks property",
"apihelp-wbcreateclaim-param-value": "Value of the snak when creating a claim with a snak that has a value",
"apihelp-wbcreateclaim-param-snaktype": "The type of the snak",
"apihelp-wbcreateclaim-example-1": "Creates a claim for item Q42 of property P9001 with a novalue snak.",
"apihelp-wbcreateclaim-example-2": "Creates a claim for item Q42 of property P9002 with string value \"itsastring\"",
"apihelp-wbcreateclaim-example-3": "Creates a claim for item Q42 of property P9003 with a value of item Q1",
"apihelp-wbcreateclaim-example-4": "Creates a claim for item Q42 of property P9004 with a coordinate snak value",
"apihelp-wbcreateredirect-description": "Creates Entity redirects.",
"apihelp-wbcreateredirect-param-from": "Entity ID to make a redirect",
"apihelp-wbcreateredirect-param-to": "Entity ID to point the redirect to",
"apihelp-wbcreateredirect-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbcreateredirect-example-1": "Turn Q11 into a redirect to Q12",
"apihelp-wbeditentity-description": "Creates a single new Wikibase entity and modifies it with serialised information.",
"apihelp-wbeditentity-param-id": "The identifier for the entity, including the prefix.\nUse either 'id' or 'site' and 'title' together.",
"apihelp-wbeditentity-param-site": "An identifier for the site on which the page resides.\nUse together with 'title' to make a complete sitelink.",
"apihelp-wbeditentity-param-title": "Title of the page to associate.\nUse together with 'site' to make a complete sitelink.",
"apihelp-wbeditentity-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbeditentity-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbeditentity-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbeditentity-param-data": "The serialized object that is used as the data source.\nA newly created entity will be assigned an 'id'.",
"apihelp-wbeditentity-param-clear": "If set, the complete entity is emptied before proceeding.\nThe entity will not be saved before it is filled with the \"data\", possibly with parts excluded.",
"apihelp-wbeditentity-param-new": "If set, a new entity will be created.\nSet this to the type of the entity you want to create - currently 'item'|'property'.\nIt is not allowed to have this set when 'id' is also set.",
"apihelp-wbeditentity-example-1": "Create a new empty item, return full entity structure",
"apihelp-wbeditentity-example-2": "Create a new item and set labels for de and en",
"apihelp-wbeditentity-example-3": "Create a new property containing the json data, return full entity structure",
"apihelp-wbeditentity-example-4": "Clear all data from entity with ID Q42",
"apihelp-wbeditentity-example-5": "Clear all data from entity with ID Q42 and set a label for en",
"apihelp-wbeditentity-example-6": "Sets sitelink for nowiki, overwriting it if it already exists",
"apihelp-wbeditentity-example-7": "Sets description for nb, overwriting it if it already exists",
"apihelp-wbeditentity-example-8": "Creates a new claim on the item for the property P56 and a value of \"ExampleString\"",
"apihelp-wbeditentity-example-9": "Removes the claims from the item with the GUIDs Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F and Q42$GH678DSA-01PQ-28XC-HJ90-DDFD9990126X",
"apihelp-wbeditentity-example-10": "Sets the claim with the GUID to the value of the claim",
"apihelp-wbformatvalue-description": "Formats DataValues.",
"apihelp-wbformatvalue-param-generate": "The desired output format to generate.",
"apihelp-wbformatvalue-param-datatype": "The value's data type. This is distinct from the value's type",
"apihelp-wbformatvalue-param-datavalue": "The data to format. This has to be the JSON serialization of a DataValue object.",
"apihelp-wbformatvalue-param-options": "The options the formatter should use. Provided as a JSON object.",
"apihelp-wbformatvalue-example-1": "Format a simple string value.",
"apihelp-wbformatvalue-example-2": "Format a string value as a URL in HTML.",
"apihelp-wbgetclaims-description": "Gets Wikibase claims.",
"apihelp-wbgetclaims-param-entity": "ID of the entity from which to obtain claims. Required unless claim GUID is provided.",
"apihelp-wbgetclaims-param-property": "Optional filter to only return claims with a main snak that has the specified property.",
"apihelp-wbgetclaims-param-claim": "A GUID identifying the claim. Required unless entity is provided. The GUID is the globally unique identifier for a claim, e.g. \"q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\".",
"apihelp-wbgetclaims-param-rank": "Optional filter to return only the claims that have the specified rank",
"apihelp-wbgetclaims-param-props": "Some parts of the claim are returned optionally. This parameter controls which ones are returned.",
- "apihelp-wbgetclaims-param-ungroupedlist": "Do not group snaks by property ID",
"apihelp-wbgetclaims-example-1": "Get claims for item with ID Q42",
"apihelp-wbgetclaims-example-2": "Get claims for item with ID Q42 and property with ID P2",
"apihelp-wbgetclaims-example-3": "Get claims for item with ID Q42 that are ranked as normal",
"apihelp-wbgetclaims-example-4": "Get claim with GUID of Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F",
"apihelp-wbgetentities-description": "Gets the data for multiple Wikibase entities.",
"apihelp-wbgetentities-param-ids": "The IDs of the entities to get the data from",
"apihelp-wbgetentities-param-sites": "Identifier for the site on which the corresponding page resides\nUse together with 'title', but only give one site for several titles or several sites for one title.",
"apihelp-wbgetentities-param-titles": "The title of the corresponding page\nUse together with 'sites', but only give one site for several titles or several sites for one title.",
"apihelp-wbgetentities-param-redirects": "Whether redirects shall be resolved.\nIf set to \"no\", redirects will be treated like deleted entities.",
"apihelp-wbgetentities-param-props": "The names of the properties to get back from each entity.\nWill be further filtered by any languages given.",
"apihelp-wbgetentities-param-languages": "By default the internationalized values are returned in all available languages.\nThis parameter allows filtering these down to one or more languages by providing one or more language codes.",
"apihelp-wbgetentities-param-languagefallback": "Apply language fallback for languages defined in the \"languages\" parameter, with the current context of API call.",
"apihelp-wbgetentities-param-normalize": "Try to normalize the page title against the client site.\nThis only works if exactly one site and one page have been given.",
- "apihelp-wbgetentities-param-ungroupedlist": "Do not group snaks by property ID.",
"apihelp-wbgetentities-param-sitefilter": "Filter sitelinks in entities to those with these siteids.",
"apihelp-wbgetentities-example-1": "Get entities with ID Q42 with all available attributes in all available languages",
"apihelp-wbgetentities-example-2": "Get entities with ID P17 with all available attributes in all available languages",
"apihelp-wbgetentities-example-3": "Get entities with IDs Q42 and P17 with all available attributes in all available languages",
"apihelp-wbgetentities-example-4": "Get entities with ID Q42 with all available attributes in English language",
"apihelp-wbgetentities-example-5": "Get entities with ID Q42 with all available attributes in any possible fallback language for the ii language",
"apihelp-wbgetentities-example-6": "Get entities with ID Q42 showing all labels in all available languages",
"apihelp-wbgetentities-example-7": "Get entities with IDs P17 and P3 showing only datatypes",
"apihelp-wbgetentities-example-8": "Get entities with ID Q42 showing all aliases in English language",
"apihelp-wbgetentities-example-9": "Get entities with IDs Q1 and Q42 showing descriptions in English, German and French languages",
"apihelp-wbgetentities-example-10": "Get the item for page \"Berlin\" on the site \"enwiki\", with language attributes in English language",
"apihelp-wbgetentities-example-11": "Get the item for page \"Berlin\" on the site \"enwiki\" after normalizing the title from \"berlin\"",
"apihelp-wbgetentities-example-12": "Get the sitelinks for item Q42",
"apihelp-wbgetentities-example-13": "Get entities with ID Q42 showing only sitelinks from enwiki",
"apihelp-wblinktitles-description": "Associates two articles on two different wikis with a Wikibase item.",
"apihelp-wblinktitles-param-tosite": "An identifier for the site on which the page resides.\nUse together with 'totitle' to make a complete sitelink.",
"apihelp-wblinktitles-param-totitle": "Title of the page to associate.\nUse together with 'tosite' to make a complete sitelink.",
"apihelp-wblinktitles-param-fromsite": "An identifier for the site on which the page resides.\nUse together with 'fromtitle' to make a complete sitelink.",
"apihelp-wblinktitles-param-fromtitle": "Title of the page to associate.\nUse together with 'fromsite' to make a complete sitelink.",
"apihelp-wblinktitles-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wblinktitles-example-1": "Add a link \"Hydrogen\" from the English page to \"Wasserstoff\" at the German page",
"apihelp-wbmergeitems-description": "Merges multiple items.",
"apihelp-wbmergeitems-param-fromid": "The ID to merge from",
"apihelp-wbmergeitems-param-toid": "The ID to merge to",
"apihelp-wbmergeitems-param-ignoreconflicts": "Array of elements of the item to ignore conflicts for, can only contain values of \"label\" and or \"description\" and or \"sitelink\"",
"apihelp-wbmergeitems-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbmergeitems-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbmergeitems-example-1": "Merges data from Q42 into Q222",
"apihelp-wbmergeitems-example-2": "Merges data from Q555 into Q3",
"apihelp-wbmergeitems-example-3": "Merges data from Q66 into Q99 ignoring any conflicting labels",
"apihelp-wbmergeitems-example-4": "Merges data from Q66 into Q99 ignoring any conflicting labels and descriptions",
"apihelp-wbparsevalue-description": "Parses values using a ValueParser.",
"apihelp-wbparsevalue-param-parser": "ID of the ValueParser to use",
"apihelp-wbparsevalue-param-values": "The values to parse",
"apihelp-wbparsevalue-param-options": "The options the parser should use. Provided as a JSON object.",
"apihelp-wbparsevalue-example-1": "No change to the format of the string.",
"apihelp-wbparsevalue-example-2": "Parse 1994-02-08 to a date format with a precision of 9 (the year).",
"apihelp-wbremoveclaims-description": "Removes Wikibase claims.",
"apihelp-wbremoveclaims-param-claim": "One GUID or several (pipe-separated) GUIDs identifying the claims to be removed.\nAll claims must belong to the same entity.",
"apihelp-wbremoveclaims-example-1": "Remove claim with GUID of \"Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0N\"",
"apihelp-wbremovequalifiers-description": "Removes a qualifier from a claim.",
"apihelp-wbremovequalifiers-param-claim": "A GUID identifying the claim from which to remove qualifiers",
"apihelp-wbremovequalifiers-param-qualifiers": "Snak hashes of the qualifiers to remove",
"apihelp-wbremovequalifiers-example-1": "Remove qualifier with hash \"1eb8793c002b1d9820c833d234a1b54c8e94187e\" from claim with GUID of \"Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\"",
"apihelp-wbremovereferences-description": "Removes one or more references of the same statement.",
"apihelp-wbremovereferences-param-statement": "A GUID identifying the statement for which a reference is being set",
"apihelp-wbremovereferences-param-references": "The hashes of the references that should be removed",
"apihelp-wbremovereferences-example-1": "Remove reference with hash \"455481eeac76e6a8af71a6b493c073d54788e7e9\" from claim with GUID of \"Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\"",
"apihelp-wbsearchentities-description": "Searches for entities using labels and aliases.\nReturns a label and description for the entity in the user language if possible.\nReturns details of the matched term.\nThe matched term text is also present in the aliases key if different from the display label.",
"apihelp-wbsearchentities-param-search": "Search for this text.",
"apihelp-wbsearchentities-param-language": "Search in this language.",
"apihelp-wbsearchentities-param-strictlanguage": "Whether to disable language fallback",
"apihelp-wbsearchentities-param-type": "Search for this type of entity.",
"apihelp-wbsearchentities-param-limit": "Maximal number of results",
"apihelp-wbsearchentities-param-continue": "Offset where to continue a search",
"apihelp-wbsearchentities-example-1": "Search for \"abc\" in English language, with defaults for type and limit",
"apihelp-wbsearchentities-example-2": "Search for \"abc\" in English language with a limit of 50",
"apihelp-wbsearchentities-example-3": "Search for \"alphabet\" in English language for type property",
"apihelp-wbsetaliases-description": "Sets the aliases for a Wikibase entity.",
"apihelp-wbsetaliases-param-id": "The identifier for the entity, including the prefix.\nUse either 'id' or 'site' and 'title' together.",
"apihelp-wbsetaliases-param-site": "An identifier for the site on which the page resides.\nUse together with 'title' to make a complete sitelink.",
"apihelp-wbsetaliases-param-title": "Title of the page to associate.\nUse together with 'site' to make a complete sitelink.",
"apihelp-wbsetaliases-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetaliases-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetaliases-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetaliases-param-add": "List of aliases to add (can be combined with remove)",
"apihelp-wbsetaliases-param-remove": "List of aliases to remove (can be combined with add)",
"apihelp-wbsetaliases-param-set": "A list of aliases that will replace the current list (cannot be combined with neither add nor remove)",
"apihelp-wbsetaliases-param-language": "The language for which to set the aliases",
"apihelp-wbsetaliases-example-1": "Set the English aliases for the entity with ID Q1 to Foo and Bar",
"apihelp-wbsetaliases-example-2": "Add Foo and Bar to the list of English aliases for the entity with ID Q1",
"apihelp-wbsetaliases-example-3": "Remove Foo and Bar from the list of English aliases for the entity with ID Q1",
"apihelp-wbsetaliases-example-4": "Remove Foo from the list of English aliases for the entity with ID Q1 while adding Bar to it",
"apihelp-wbsetclaim-description": "Creates or updates an entire Statement or Claim.",
"apihelp-wbsetclaim-param-claim": "Statement or Claim serialization",
"apihelp-wbsetclaim-param-index": "The index within the entity's list of statements to move the statement to. Optional. Be aware that when setting an index that specifies a position not next to a statement whose main snak does not feature the same property, the whole group of statements whose main snaks feature the same property is moved. When not provided, an existing statement will stay in place while a new statement will be appended to the last one whose main snak features the same property.",
"apihelp-wbsetclaim-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetclaim-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetclaim-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetclaim-example-1": "Set the claim with the given ID to property P1 with a string value of \"City\"",
"apihelp-wbsetclaim-example-2": "Set the claim with the given ID to property P1 with a string value of \"City\" and move the claim to the topmost position within the entity's subgroup of claims that feature the main snak property P1. In addition, move the whole subgroup to the top of all subgroups aggregated by property.",
"apihelp-wbsetclaim-example-3": "Set the Statement with the given ID to Property P1 with a string value of \"City\" and set the Statement's References to a single Reference featuring the string value \"The Economy of Cities\" assigned to the Property P2.",
"apihelp-wbsetclaimvalue-description": "Sets the value of a Wikibase claim.",
"apihelp-wbsetclaimvalue-param-claim": "A GUID identifying the claim",
"apihelp-wbsetclaimvalue-param-snaktype": "The type of the snak",
"apihelp-wbsetclaimvalue-param-value": "The value to set the DataValue of the the main snak of the claim to",
"apihelp-wbsetclaimvalue-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetclaimvalue-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetclaimvalue-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetclaimvalue-example-1": "Sets the claim with the GUID of Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F to a value of Q1",
"apihelp-wbsetdescription-description": "Sets a description for a single Wikibase entity.",
"apihelp-wbsetdescription-param-id": "The identifier for the entity, including the prefix.\nUse either 'id' or 'site' and 'title' together.",
"apihelp-wbsetdescription-param-site": "An identifier for the site on which the page resides.\nUse together with 'title' to make a complete sitelink.",
"apihelp-wbsetdescription-param-title": "Title of the page to associate.\nUse together with 'site' to make a complete sitelink.",
"apihelp-wbsetdescription-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetdescription-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetdescription-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetdescription-param-language": "Language of the description",
"apihelp-wbsetdescription-param-value": "The value to set for the description",
"apihelp-wbsetdescription-example-1": "Set the string \"An encyclopedia that everyone can edit\" for page with ID \"Q42\" as a description in English language",
"apihelp-wbsetdescription-example-2": "Set the string \"An encyclopedia that everyone can edit\" as a description in English language for page with a sitelink to enwiki:Wikipedia",
"apihelp-wbsetlabel-description": "Sets a label for a single Wikibase entity.",
"apihelp-wbsetlabel-param-id": "The identifier for the entity, including the prefix.\nUse either 'id' or 'site' and 'title' together.",
"apihelp-wbsetlabel-param-site": "An identifier for the site on which the page resides.\nUse together with 'title' to make a complete sitelink.",
"apihelp-wbsetlabel-param-title": "Title of the page to associate.\nUse together with 'site' to make a complete sitelink.",
"apihelp-wbsetlabel-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetlabel-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetlabel-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetlabel-param-language": "Language of the label",
"apihelp-wbsetlabel-param-value": "The value of the label",
"apihelp-wbsetlabel-example-1": "Set the string \"Wikimedia\" for page with ID \"Q42\" as a label in English language and report it as pretty printed json",
"apihelp-wbsetlabel-example-2": "Set the English language label to \"Earth\" for the item with sitelink enwiki => \"Earth\".",
"apihelp-wbsetqualifier-description": "Creates a qualifier or sets the value of an existing one.",
"apihelp-wbsetqualifier-param-claim": "A GUID identifying the claim for which a qualifier is being set",
"apihelp-wbsetqualifier-param-property": "ID of the snaks property.\nShould only be provided when creating a new qualifier or changing the property of an existing one",
"apihelp-wbsetqualifier-param-value": "The new value of the qualifier.\nShould only be provdied for PropertyValueSnak qualifiers",
"apihelp-wbsetqualifier-param-snaktype": "The type of the snak.\nShould only be provided when creating a new qualifier or changing the type of an existing one",
"apihelp-wbsetqualifier-param-snakhash": "The hash of the snak to modify.\nShould only be provided for existing qualifiers",
"apihelp-wbsetqualifier-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetqualifier-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetqualifier-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetqualifier-example-1": "Set the qualifier for the given claim with property P1 to string value GdyjxP8I6XB3",
"apihelp-wbsetreference-description": "Creates a reference or sets the value of an existing one.",
"apihelp-wbsetreference-param-statement": "A GUID identifying the statement for which a reference is being set",
"apihelp-wbsetreference-param-snaks": "The snaks to set the reference to. JSON object with property IDs pointing to arrays containing the snaks for that property",
"apihelp-wbsetreference-param-snaks-order": "The order of the snaks. Comma-separated list of property IDs",
"apihelp-wbsetreference-param-reference": "A hash of the reference that should be updated. Optional. When not provided, a new reference is created",
"apihelp-wbsetreference-param-index": "The index within the statement's list of references where to move the reference to. Optional. When not provided, an existing reference will stay in place while a new reference will be appended.",
"apihelp-wbsetreference-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetreference-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetreference-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetreference-example-1": "Create a new reference for claim with GUID Q76$D4FDE516-F20C-4154-ADCE-7C5B609DFDFF",
"apihelp-wbsetreference-example-2": "Set reference for claim with GUID Q76$D4FDE516-F20C-4154-ADCE-7C5B609DFDFF which has hash of 1eb8793c002b1d9820c833d234a1b54c8e94187e",
"apihelp-wbsetreference-example-3": "Creates a new reference for the claim with GUID Q76$D4FDE516-F20C-4154-ADCE-7C5B609DFDFF and inserts the new reference at the top of the list of references instead of appending it to the bottom.",
"apihelp-wbsetsitelink-description": "Associates an article on a wiki with a Wikibase item or removes an already made such association.",
"apihelp-wbsetsitelink-param-id": "The identifier for the entity, including the prefix.\nUse either 'id' or 'site' and 'title' together.",
"apihelp-wbsetsitelink-param-site": "An identifier for the site on which the page resides.\nUse together with 'title' to make a complete sitelink.",
"apihelp-wbsetsitelink-param-title": "Title of the page to associate.\nUse together with 'site' to make a complete sitelink.",
"apihelp-wbsetsitelink-param-baserevid": "The numeric identifier for the revision to base the modification on.\nThis is used for detecting conflicts during save.",
"apihelp-wbsetsitelink-param-summary": "Summary for the edit.\nWill be prepended by an automatically generated comment. The length limit of the autocomment together with the summary is 260 characters. Be aware that everything above that limit will be cut off.",
"apihelp-wbsetsitelink-param-bot": "Mark this edit as bot. This URL flag will only be respected if the user belongs to the group \"bot\".",
"apihelp-wbsetsitelink-param-linksite": "The identifier of the site on which the article to link resides",
"apihelp-wbsetsitelink-param-linktitle": "The title of the article to link. If this parameter is an empty string or both linktitle and badges are not set, the link will be removed.",
"apihelp-wbsetsitelink-param-badges": "The IDs of items to be set as badges. They will replace the current ones. If this parameter is not set, the badges will not be changed",
"apihelp-wbsetsitelink-example-1": "Add a sitelink \"Hydrogen\" for English page with ID \"Q42\", if the sitelink does not exist",
"apihelp-wbsetsitelink-example-2": "Add a sitelink \"Hydrogen\" for English page with ID \"Q42\", if the sitelink does not exist with an edit summary of \"World domination will be mine soon!\"",
"apihelp-wbsetsitelink-example-3": "Add a sitelink \"Wasserstoff\" for the German page on item with the link for the English page to \"Hydrogen\", if the sitelink does not exist",
"apihelp-wbsetsitelink-example-4": "Removes the German sitelink from the item",
"apihelp-wbsetsitelink-example-5": "Add a sitelink \"Wodór\" for the Polish page on item with the link for the English page to \"Hydrogen\" with one badge pointing to the item with ID \"Q149\"",
"apihelp-wbsetsitelink-example-6": "Change badges for the link to the Polish page from the item with ID \"Q42\" to two badges pointing to the items with IDs \"Q2\" and \"Q149\" without providing the link title",
"apihelp-wbsetsitelink-example-7": "Change the link to the Polish page from the item with ID \"Q42\" without changing badges",
"apihelp-wbsetsitelink-example-8": "Change the link to the Polish page from the item with ID \"Q42\" and remove all of its badges"
}
diff --git a/extensions/Wikibase/repo/i18n/et.json b/extensions/Wikibase/repo/i18n/et.json
index e2f0ccf79..3baff7671 100644
--- a/extensions/Wikibase/repo/i18n/et.json
+++ b/extensions/Wikibase/repo/i18n/et.json
@@ -1,595 +1,593 @@
{
"@metadata": {
"authors": [
"Avjoska",
"Pikne",
"WikedKentaur",
"Boxmein"
]
},
"wikibase-desc": "Struktureeritud andmehoidla",
"wikibase-entity": "olem",
"wikibase-entity-item": "üksus",
"wikibase-entity-property": "omadus",
"wikibase-entity-query": "päring",
"wikibase-edit": "redigeeri",
"wikibase-save": "salvesta",
"wikibase-cancel": "loobu",
"wikibase-add": "lisa",
"wikibase-addqualifier": "lisa näitaja",
"wikibase-addreference": "lisa viide",
"wikibase-save-inprogress": "Salvestamine...",
"wikibase-remove-inprogress": "Eemaldamine...",
"wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "Teistes keeltes",
"wikibase-entitytermsview-entitytermsforlanguagelistview-configure-link-label": "Häälesta",
"wikibase-setting-entitytermsview-showEntitytermslistview": "Näita silte, rööpkujusid ja kirjeldusi kõigis minu keeltes",
"wikibase-setting-entitytermsview-showEntitytermslistview-help": "Isiklikud keeled, lisaks kasutajaliidese keelele, saab määrata kasutajaleheküljel tarkvaralisa [[mw:Extension:Babel|Babel]] süntaksi abil.",
"wikibase-entitytermsforlanguagelistview-aliases": "Teisiti",
"wikibase-entitytermsforlanguagelistview-description": "Kirjeldus",
"wikibase-entitytermsforlanguagelistview-label": "Silt",
"wikibase-entitytermsforlanguagelistview-language": "Keel",
"wikibase-label-empty": "Silti pole määratud",
"wikibase-label-edit-placeholder": "sisesta silt",
"wikibase-label-edit-placeholder-language-aware": "sisesta silt ($1)",
"wikibase-description-empty": "Kirjeldust pole määratud",
"wikibase-description-edit-placeholder": "sisesta kirjeldus",
"wikibase-description-edit-placeholder-language-aware": "sisesta kirjeldus ($1)",
"wikibase-diffview-reference": "viide",
"wikibase-diffview-rank": "järk",
"wikibase-diffview-rank-preferred": "Eelisjärk",
"wikibase-diffview-rank-normal": "Tavajärk",
"wikibase-diffview-rank-deprecated": "Igandjärk",
"wikibase-diffview-qualifier": "näitaja",
"wikibase-diffview-label": "silt",
"wikibase-diffview-alias": "rööpkujud",
"wikibase-diffview-description": "kirjeldus",
"wikibase-diffview-link": "lingid",
"wikibase-sitelink-site-edit-placeholder": "võrgukoht",
"wikibase-sitelink-page-edit-placeholder": "lehekülg",
"wikibase-alias-edit-placeholder": "sisesta rööpkuju",
"wikibase-label-input-help-message": "Sisesta selle üksuse silt järgmises keeles: $1",
"wikibase-description-input-help-message": "Sisesta selle üksuse lühikirjeldus järgmises keeles: $1",
"wikibase-entitytermsview-input-help-message": "Sisesta erinevates keeltes selle olemi silt, lühikirjeldus ja rööpkujud.",
"wikibase-entitytermsforlanguageview-input-help-message": "Sisesta selle olemi silt, lühikirjeldus ja rööpkujud järgmises keeles: $1",
"wikibase-statements": "Avaldused",
"wikibase-terms": "Teistes keeltes",
"wikibase-sitelinks": "Võrgukohalingid",
"wikibase-sitelinkgroupview-input-help-message": "Et võrgukohalink lisada, määra võrgukoht ja lehekülg selles võrgukohas. Saad olemasolevaid linke ka muuta või eemaldada.",
"wikibase-sitelinks-empty": "Ükski lehekülg pole selle üksusega lingitud.",
"wikibase-sitelinks-input-help-message": "Määra selle üksusega seotud leheküljele viitav link.",
"wikibase-sitelinks-special": "Teised võrgukohad",
"wikibase-badgeselector-badge-placeholder-title": "Klõpsa, et äramärkimine lisada.",
"wikibase-remove": "eemalda",
"wikibase-move-up": "liiguta üles",
"wikibase-move-down": "liiguta alla",
"wikibase-undo-title": "Üksuse \"$1\" redigeerimise tagasi võtmine",
"wikibase-restore-title": "Üksuse \"$1\" vana redaktsiooni taastamine",
"wikibase-partial-undo": "Selle muudatuse saab osaliselt tagasi võtta.",
"wikibase-omitted-undo-ops": "{{PLURAL:$1|Üht|$1}} muudatust ei saa eemaldada, sest {{PLURAL:$1|väärtus|väärtused}} on vahepeal muutunud.",
"wikibase-empty-undo": "Siin pole midagi tagasi võtta.",
"wikibase-undo-revision-error": "Tagasivõtmine ebaõnnestus",
"wikibase-undo-samerev": "Muudatuse eemaldamiseks tuleb määrata kaks erinevat redaktsiooni.",
"wikibase-undo-badpage": "Halb redaktsioon: $2 pole lehekülje [[$1]] redaktsioon.",
"wikibase-undo-firstrev": "Lehekülje loomist ei saa tagasi võtta",
"wikibase-undo-nocontent": "Lehekülje $1 redaktsiooni $2 sisu ei saa laadida.",
"wikibase-propertyedittool-counter-pending-tooltip": "{{PLURAL:$1|Üks väärtus|$1 väärtust}} on veel salvestamata.",
"wikibase-propertyedittool-counter-entrieslabel": "{{PLURAL:$1|sissekanne|sissekannet}}",
"wikibase-disambiguation-title": "Eristatavad üksused sildiga \"$1\"",
"wb-special-newitem-new-item-notification": "Uus üksus $1 loodud. Sind suunati selle leheküljele. Naase leheküljele \"$2\".",
"wikibase-aliases-label": "Teisiti:",
"wikibase-aliases-input-help-message": "Et seda üksust oleks lihtsam leida, saad sisestada teised võimalikud nimetused.",
"wikibase-aliases-empty": "Rööpkujusid pole määratud",
"wikibase-propertypage-datatype": "Andmetüüp",
"wikibase-claimview-snak-tooltip": "Sisesta omadusele \"$1\" vastav väärtus. Kui omaduse väärtus pole ette antud või kui tegelik väärtus pole teada, võid klõpsata väärtuse sisestamise välja kõrval olevat ikooni ja valida kohandatud väärtuse asemele midagi muud.",
"wikibase-claimview-snak-new-tooltip": "Kui oled määranud omaduse, saad sisestada sobiva väärtuse. Kui omaduse väärtus pole ette antud või kui tegelik väärtus pole teada, võid klõpsata väärtuse sisestamise välja kõrval olevat ikooni ja valida kohandatud väärtuse asemele midagi muud.",
"wikibase-statementview-rank-preferred": "Eelisjärk",
"wikibase-statementview-rank-normal": "Tavajärk",
"wikibase-statementview-rank-deprecated": "Igandjärk",
"wikibase-statementview-referencesheading-pendingcountersubject": "{{PLURAL:$1|viide|viited}}",
"wikibase-statementview-referencesheading-pendingcountertooltip": "{{PLURAL:$1|Üks viide|$1 viidet}} on veel salvestamata.",
"wikibase-snakview-property-input-placeholder": "omadus",
"wikibase-snakview-unsupportedsnaktype": "Snaki tüüp on \"$1\". Sellise snaki tugi puudub praegu veel.",
"wikibase-snakview-choosesnaktype": "Vali väärtuse tüüp.",
"wikibase-snakview-variation-datavaluetypemismatch": "Väärtus ei sobi omaduse määratlusega.",
"wikibase-snakview-variation-datavaluetypemismatch-details": "Ootamatu vastuolu omaduse tüübi \"$2\" ja väärtuse tüübi \"$1\" vahel.",
"wikibase-snakview-variation-nonewvaluefordeletedproperty": "Kustutatud omadusele pole võimalik määrata uut väärtust.",
"wikibase-snakview-variations-somevalue-label": "tundmatu väärtus",
"wikibase-snakview-variations-novalue-label": "väärtus puudub",
"wikibase-snakview-snaktypeselector-value": "kohandatud väärtus",
"wikibase-snakformat-invalid-value": "Vigane väärtus.",
"wikibase-snakformat-propertynotfound": "Omadust ei leitud.",
"wikibase-shortcopyrightwarning": "Kui klõpsad \"$1\", nõustud [[$2|kasutustingimustega]] ja avaldad pöördumatult oma kaastöö litsentsi $3 all.",
"wikibase-copyrighttooltip-acknowledge": "Nõustun tegema edasisi muudatusi kooskõlas nende tingimustega. Ära seda sõnumit enam näita.",
"wikibase-entityselector-more": "veel",
"wikibase-anonymouseditwarning": "Hoiatus: Sa pole sisse loginud.\nSinu IP-aadress talletatakse olemi ajaloos.",
"wikibase-move-error": "Andmete nimeruumis olevaid lehekülgi ei saa teisaldada. Samuti ei saa sinna mujalt lehekülgi teisaldada.",
"wikibase-validator-sitelink-conflict": "Link $1 on juba kasutuses üksuse $2 juures. Võid lingi üksuse $2 juurest eemaldada, kui see ei kuulu sinna, või liita kaks üksust, kui need on samast asjast.",
"wikibase-validator-label-conflict": "Omadusel $3 on juba silt \"$1\", mis on seotud keelekoodiga $2.",
"wikibase-validator-label-with-description-conflict": "Üksusel $3 on juba silt \"$1\", mis on seotud keelekoodiga $2 ja millel on sama kirjeldus.",
"wikibase-validator-label-no-entityid": "Silt ei tohi sobida üksuse identifikaatoriks.",
"wikibase-wikibaserepopage-not-itemid": "\"$1\" pole sobiv üksuse identifikaator.",
"wikibase-wikibaserepopage-invalid-langcode": "Keelekood \"$1\" on tundmatu. Palun kasuta süsteemile tuntavat keelekoodi nagu \"en\".",
"wikibase-wikibaserepopage-invalid-id": "Identifikaator \"$1\" on süsteemis tundmatu. Palun kasuta sobivat olemi identifikaatorit.",
"wikibase-wikibaserepopage-unresolved-redirect": "$1 on ümber suunatud.",
"wikibase-wikibaserepopage-storage-exception": "Tõrge olemi $1 laadimisel: $2.",
"special-itembytitle": "Üksus pealkirja järgi",
"wikibase-itembytitle-lookup-fieldset": "Üksuste otsimine võrgukoha ja pealkirja järgi",
"wikibase-itembytitle-lookup-site": "Võrgukoht:",
"wikibase-itembytitle-lookup-page": "Lehekülg:",
"wikibase-itembytitle-submit": "Otsi",
"wikibase-itembytitle-create": "Saad üksuse ka [$1 luua].",
"wikibase-itembytitle-summary": "Lehekülje Special:ItemByTitle abil saab leida ühendatud võrgukoha etteantud leheküljele vastava üksuse.<br />Vasakpoolsele väljale \"{{int:wikibase-itembytitle-lookup-site}}\" tuleb kirjutada keele ja võrgukoha kood.<br />Parempoolsele väljale \"{{int:wikibase-itembytitle-lookup-page}}\" tuleb kirjutada lehekülje pealkiri täpselt nii nagu see ühendatud võrgukohas esineb.",
"special-gotolinkedpage": "Minek lingitud leheküljele",
"wikibase-gotolinkedpage-lookup-fieldset": "Minek leheküljele võrgukoha ja üksuse järgi",
"wikibase-gotolinkedpage-lookup-site": "Võrgukoht:",
"wikibase-gotolinkedpage-lookup-item": "Üksuse ID:",
"wikibase-gotolinkedpage-submit": "Mine",
"wikibase-gotolinkedpage-summary": "Lehekülje Special:GoToLinkedPage abil saab leida etteantud üksusele vastava lehekülje ühendatud võrgukohas.<br /> Vasakpoolsele väljale \"{{int:wikibase-gotolinkedpage-lookup-site}}\" tuleb kirjutada keele ja võrgukoha kood.<br /> Parempoolsele väljale \"{{int:wikibase-gotolinkedpage-lookup-item}}\" tuleb kirjutada huvipakkuva üksuse identifikaator.",
"special-itemdisambiguation": "Sama sildiga üksuste eristamine",
"wikibase-itemdisambiguation-lookup-fieldset": "Üksuste otsimine keele ja sildi järgi",
"wikibase-itemdisambiguation-lookup-language": "Keelekood:",
"wikibase-itemdisambiguation-lookup-label": "Silt:",
"wikibase-itemdisambiguation-submit": "Otsi",
"wikibase-itemdisambiguation-form-hints": "Pane tähele, et üle {{PLURAL:$1|ühe|$1}} tulemuse ei näidata.",
"wikibase-itemdisambiguation-nothing-found": "Sellise sildiga üksust kahjuks ei leitud.",
"wikibase-itemdisambiguation-search": "Saad [{{fullurl:Special:Search|search=$1}} üksust otsida].",
"wikibase-itemdisambiguation-create": "Saad [{{fullurl:Special:NewItem|label=$1}} üksuse luua].",
"wikibase-itemdisambiguation-invalid-langcode": "Keelekood, mille ära tõid, on kahjuks süsteemis tundmatu. Palun kasuta sobivat keelekoodi nagu \"et\".",
"wikibase-itemdisambiguation-description": "Otsingus kasutatav väärtus peab olema täielikult tekstisisend. Keel on identifikaator, näiteks \"et\".",
"wikibase-itemdisambiguation-summary": "Leia kõik üksused, millel on täpselt sama silt.",
"special-newproperty": "Uue omaduse loomine",
"wikibase-newproperty-summary": "Kontrolli kindlasti, ega omadus juba olemas pole!<br />Kõigi uute omaduste juurde tuleks lisada [[Help:Label|silt]] ja [[Help:Description|kirjeldus]] ning lisaks ka sobiv omaduse tüüp.",
"wikibase-newproperty-fieldset": "Uue omaduse loomine",
"wikibase-newproperty-datatype": "Andmetüüp:",
"wikibase-newproperty-invalid-datatype": "Määratud vigane andmetüüp.",
"special-newitem": "Uue üksuse loomine",
"wikibase-newitem-summary": "Kontrolli kindlasti, ega [[Special:ItemByTitle|üksus juba olemas pole]]!<br />Kõigi uute üksuste juurde tuleks lisada [[Help:Label|silt]] ja [[Help:Description|kirjeldus]].",
"wikibase-newitem-fieldset": "Uue üksuse loomine",
"wikibase-newitem-site": "Esimese lingitud lehekülje võrgukoht",
"wikibase-newitem-page": "Esimese lingitud lehekülje pealkiri",
"wikibase-newitem-no-external-page": "Vastavast võrgukohast ei leitud määratud lehekülge.",
"wikibase-newitem-not-recognized-siteid": "Ette antud võrgukohaidentifikaatorit ei tuntud ära.",
"wikibase-newentity-label": "Silt:",
"wikibase-newentity-description": "Kirjeldus:",
"wikibase-newentity-submit": "Loo",
"special-setlabel": "Sildi määramine",
"wikibase-setlabel-introfull": "Määrad $2 keeles üksuse [[$1]] silti.",
"wikibase-setlabel-intro": "See vorm võimaldab määrata olemi sildi. Sul tuleb ära tuua olemi identifikaator (nt Q23), keelekood (nt \"et\") ja soovitud silt.",
"wikibase-setlabel-label": "Silt:",
"wikibase-setlabel-submit": "Määra silt",
"special-setdescription": "Kirjelduse määramine",
"wikibase-setdescription-introfull": "Määrad $2 keeles üksuse [[$1]] kirjeldust.",
"wikibase-setdescription-intro": "See vorm võimaldab määrata olemi kirjelduse. Sul tuleb ära tuua olemi identifikaator (nt Q23), keelekood (nt \"et\") ja soovitud kirjeldus.",
"wikibase-setdescription-label": "Kirjeldus:",
"wikibase-setdescription-submit": "Määra kirjeldus",
"special-setaliases": "Rööpkujude määramine",
"wikibase-setaliases-introfull": "Määrad $2 keeles üksuse [[$1]] rööpkujusid. Mitu rööpkuju eraldatakse püstkriipsuga (<code>|</code>).",
"wikibase-setaliases-intro": "See vorm võimaldab määrata olemi rööpkujusid. Sul tuleb ära tuua olemi identifikaator (nt Q23), keelekood (nt \"et\") ja soovitud rööpkujud. Mitut rööpkuju eraldab püstkriips (<code>|</code>).",
"wikibase-setaliases-label": "Rööpkujud:",
"wikibase-setaliases-submit": "Määra rööpkujud",
"special-setlabeldescriptionaliases": "Sildi, kirjelduse ja rööpkujude määramine",
"wikibase-setlabeldescriptionaliases-introfull": "Oled määramas antud keeles ($2) olemi [[$1]] silti, kirjeldust ja rööpkujusid. Mitut rööpkuju eraldab püstkriips (<code>|</code>).",
"wikibase-setlabeldescriptionaliases-intro": "See vorm võimaldab määrata olemi sildi, kirjelduse ja röökujud. Pead kõigepealt ära tooma olemi identifikaatori (nt \"Q23\") ja keelekoodi (nt \"et\").",
"wikibase-setlabeldescriptionaliases-label-label": "Silt:",
"wikibase-setlabeldescriptionaliases-description-label": "Kirjeldus:",
"wikibase-setlabeldescriptionaliases-aliases-label": "Rööpkujud:",
"wikibase-setlabeldescriptionaliases-submit": "Määra silt, kirjeldus ja rööpkujud",
"special-setsitelink": "Võrgukohalingi määramine",
"wikibase-setsitelink-introfull": "Määrad üksuse [[$1]] linki võrgukohas $2.",
"wikibase-setsitelink-intro": "See vorm võimaldab määrata üksuse võrgukohalingi. Sul tuleb ära tuua üksuse identifikaator (nt Q23), võrgukoha identifikaator (nt \"et\") ja soovitud võrgukohalink.",
"wikibase-setsitelink-intro-badges": "Lisaks saad selle võrgukohalingi juurde lisada erinevaid äramärkimisi, mis on loetletud allpool.",
"wikibase-setsitelink-site": "Võrgukoha identifikaator:",
"wikibase-setsitelink-label": "Võrgukohalink:",
"wikibase-setsitelink-badges": "Äramärkimised:",
"wikibase-setsitelink-submit": "Määra võrgukohalink",
"wikibase-setsitelink-invalid-site": "Võrgukoha identifikaator \"$1\" on tundmatu. Palun kasuta olemasolevat võrgukoha identifikaatorit nagu \"etwiki\".",
"wikibase-setsitelink-not-item": "$1 pole üksuse identifikaator.",
"wikibase-setsitelink-not-badge": "Üksus $1 pole äramärkimine.",
"wikibase-setsitelink-add-failed": "Võrgukohalinki ei õnnestunud salvestada.",
"wikibase-setsitelink-remove-failed": "Võrgukohalinki ei õnnestunud eemaldada.",
"wikibase-modifyentity-id": "Identifikaator:",
"wikibase-modifyterm-language": "Keelekood:",
"special-mergeitems": "Kahe üksuse liitmine",
"wikibase-mergeitems-intro": "Kui liidad kaks üksust, teisaldatakse kõik sildid, kirjeldused, rööpkujud, võrgukohalingid ja avaldused ühest üksusest teise.",
"wikibase-mergeitems-fromid": "Üksus, mida liidad, identifikaator",
"wikibase-mergeitems-toid": "Üksus, millega liidad, identifikaator",
"wikibase-mergeitems-submit": "Liida üksused",
"wikibase-mergeitems-success": "$1 on edukalt liidetud üksusega $3 ja ümber suunatud.",
"wikibase-itemmerge-missing-parameter": "Sisestatu on poolik.",
"wikibase-itemmerge-not-item": "Määratud olem pole üksus.",
"wikibase-itemmerge-failed-save": "Üksuse salvestamine ebaõnnestus.",
"wikibase-itemmerge-permissiondenied": "Juurdepääs keelatud.",
"wikibase-itemmerge-failed-modify": "Üksuseid ei õnnestunud liita, palun lahenda kõigepealt võimalikud konfliktid.",
"wikibase-itemmerge-no-such-entity": "Üksust ei leitud.",
"wikibase-itemmerge-cant-load-entity-content": "Üksust ei õnnestunud laadida.",
"wikibase-itemmerge-cant-merge-self": "Üksust ei saa liita iseendaga.",
"wikibase-tokencheck-missingtoken": "Vaja on redigeerimisluba.",
"wikibase-tokencheck-mustposttoken": "Redigeerimine on võimalik ainult POST-päringutega.",
"wikibase-tokencheck-badtoken": "Vigane redigeerimisluba (võib-olla on seanss lõppenud).",
"special-dispatchstats": "Muudatuste dispetšimise arvandmed",
"wikibase-dispatchstats-intro": "Sellel leheküljel on toodud arvandmed klientide vahel muudatuste dispetšimise kohta.\nKlientvikit teavitatakse muudatusest võrgukohas {{SITENAME}}, kui muudatus on selles vikis dispetšitud ja kui muudatus on selles vikis tööjärje läbinud.\n* {{int:wikibase-dispatchstats-changes}} näitavad tööjärjes vanima ja kõige hilisema üksuse numbrit ja kuupäeva.\n* {{int:wikibase-dispatchstats-stats}} näitavad suurima ja väikseima viibega klientviki teavet ja nende vahele jääva mediaani teavet. Iga viki kohta on toodud järgmised andmed:\n** \"{{int:wikibase-dispatchstats-site-id}}\" on klientviki seesmine identifikaator.\n** \"{{int:wikibase-dispatchstats-pos}}\" on viimati sellesse vikisse dispetšitud muudatuse identifikaator.\n** \"{{int:wikibase-dispatchstats-lag-num}}\" on sellesse vikisse seni dispetšimata muudatuste arv.\n** \"{{int:wikibase-dispatchstats-lag-time}}\" on aeg viimase muudatuse vikisse dispetšimise ja viimase võrgukohas {{SITENAME}} tehtud muudatuse vaheline aeg.\n** \"{{int:wikibase-dispatchstats-touched}}\" on aeg, mil viimane muudatuste pakk vikisse dispetšiti.",
"wikibase-dispatchstats-no-stats": "Saadaolevad arvandmed puuduvad praegu.",
"wikibase-dispatchstats-changes": "Muudatuste logi arvandmed",
"wikibase-dispatchstats-stats": "Dispetšimise arvandmed",
"wikibase-dispatchstats-change-id": "Identifikaator",
"wikibase-dispatchstats-change-timestamp": "Ajatempel",
"wikibase-dispatchstats-oldest-change": "Vanim",
"wikibase-dispatchstats-newest-change": "Uusim",
"wikibase-dispatchstats-site-id": "Võrgukoht",
"wikibase-dispatchstats-pos": "Koht",
"wikibase-dispatchstats-lag-num": "Ootel",
"wikibase-dispatchstats-lag-time": "Viive",
"wikibase-dispatchstats-touched": "Kokkupuude",
"wikibase-dispatchstats-large-lag": "(väga suur)",
"wikibase-dispatchstats-freshest": "Värskeim",
"wikibase-dispatchstats-stalest": "Vanim",
"wikibase-dispatchstats-median": "Mediaan",
"wikibase-dispatchstats-average": "Keskmine",
"special-listdatatypes": "Kõigi olemasolevate andmetüüpide loend",
"wikibase-listdatatypes-intro": "Siin on loetletud kõik selles installis saadaolevad andmetüübid:",
"wikibase-listdatatypes-listproperties": "Selle andmetüübiga omaduste loend",
"wikibase-history-title-with-label": "Olemi \"$2\" ($1) redaktsiooniajalugu",
"wikibase-history-title-without-label": "Olemi ($1) redaktsiooniajalugu",
"special-listproperties": "Omaduste loend",
"wikibase-listproperties-legend": "Omaduste loendi koostamine andmetüübi järgi",
"wikibase-listproperties-datatype": "Andmetüüp:",
"wikibase-listproperties-all": "Kõik andmetüübid",
"wikibase-listproperties-submit": "Leia",
"wikibase-listproperties-invalid-datatype": "\"$1\" pole sobiv andmetüüp.",
"special-entitieswithoutdescription": "Kirjelduseta olemid",
"wikibase-entitieswithoutdescription-legend": "Kirjelduseta olemite loendi hankimine",
"special-entitieswithoutlabel": "Sildita olemid",
"wikibase-entitieswithoutlabel-legend": "Sildita olemite loendi hankimine",
"wikibase-entitieswithoutlabel-label-language": "Keelekood:",
"wikibase-entitieswithoutlabel-label-type": "Tüüp:",
"wikibase-entitieswithoutlabel-label-alltypes": "kõik",
"wikibase-entitieswithoutlabel-submit": "Otsi",
"wikibase-entitieswithoutlabel-invalid-language": "\"$1\" pole sobiv keelekood.",
"wikibase-entitieswithoutlabel-invalid-type": "\"$1\" pole sobiv olemi tüüp.",
"special-itemswithoutsitelinks": "Võrgukohalinkideta üksused",
"special-entitydata": "Olemi andmed",
"wikibase-entitydata-not-found": "Olemit identifikaatoriga $1 ei leitud.",
"wikibase-entitydata-not-acceptable": "Vastavat vormingut ei leitud. Toetatud MIME tüübid: $1",
"wikibase-entitydata-bad-revision": "Olemi $1 redaktsiooni $2 ei õnnestu näidata.",
"wikibase-entitydata-bad-id": "Vigane identifikaator: $1.",
"wikibase-entitydata-unsupported-format": "See liides ei toeta andmevormingut $1.",
"wikibase-entitydata-storage-error": "Olemi $1 laadimine ebaõnnestus.",
"wikibase-entitydata-title": "Olemi andmed",
"wikibase-entitydata-text": "See lehekülg võimaldab linkida olemi väärtusi sisaldava andmeliidese juurde. Palun kasuta alamlehekülje süntaksit, et tuua internetiaadressis ära olemi identifikaator.\n* Sisu poole pöördumine kooskõlastatakse sinu kliendi Accept-päisega. Teisisõnu väljastatakse olemi andmed vormingus, mida sinu klient eelistab. Veebilehitsejas on see HTML ja seetõttu suunab veebilehitseja sind harilikule olemileheküljele.\n* Saad pärida kindlas vormingus andmeid, kui lisad olemi identifikaatorile vastava faililaiendi: Q23.json tagastab andmed JSON-vormingus, Q23.ttl tagastab vormingu RDF/Turtle jne.",
"special-redirectentity": "Olemi ümbersuunamine",
"wikibase-redirectentity-success": "$1 on edukalt ümber suunatud olemi $2 juurde.",
"wikibase-redirectentity-fromid": "Olem, kust suunata (identifikaator)",
"wikibase-redirectentity-toid": "Olem, kuhu suunata (identifikaator)",
"wikibase-redirectentity-submit": "Suuna ümber",
"special-mylanguagefallbackchain": "Minu keelevaliku ahel",
"wikibase-mylanguagefallbackchain-text": "Allpool on toodud keelevaliku ahel, mille järgi näed olemite silte.",
"wikibase-mylanguagefallbackchain-babel": "Saad seda muuta, kui paned {{GENDER:$1|oma}} [[Special:MyPage|kasutajaleheküljele]] parserifunktsiooni <nowiki>{{#babel: }}</nowiki>.",
"wikibase-mylanguagefallbackchain-verbatim-item": "$1 – $2",
"wikibase-mylanguagefallbackchain-converted-item": "$1 – $2, konverditud valikust $3 – $4",
"wikibase-api-unresolved-redirect": "See üksuse identifikaator viitab ümbersuunamisele, mida siin ei toetata.",
"wikibase-api-no-such-sitelink": "Äramärkimiste muutmisel ei leitud linki võrgukohta \"$1\".",
"wikibase-api-target-not-empty": "Ümbersuunamise saab teha ainult tühja olemi algusesse.",
"wikibase-api-target-is-redirect": "Ümbersuunamise sihtlehekülg ei tohi olla samuti ümbersuunamine.",
"wikibase-api-target-is-incompatible": "Ümbersuunamiskatse teist tüüpi olemi juurde.",
"wikibase-api-cant-redirect": "Ei saa ümber suunata (võimalik, et seda tüüpi olemite vahel pole ümbersuunamine lubatud).",
"wikibase-self-conflict-patched": "Sinu muudatus paigati viimasesse versiooni, mõned sinu vahepealsed muudatused kirjutati üle.",
"wikibase-conflict-patched": "Sinu muudatus paigati viimasesse versiooni.",
"wikibase-restoreold": "ennista",
"wikibase-restore-summary": "Kasutaja [[Special:Contributions/$2|$2]] redaktsioon $1 taastatud.",
"wikibase-no-direct-editing": "Otseredigeerimine nimeruumis $1 on keelatud",
"wikibase-noentity": "Üksust pole olemas. Saad <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida seotud logidest]</span>, kuhu see kadus.",
"wikibase-noentity-createone": "Saad ka [[$1|uue luua]].",
"wikibase-special-mergeitems-error-prefix": "Üksuseid ei saanud liita. Ilmnes järgmine tõrge:",
"wikibase-item-summary-wbsetitem": "Loodud uus üksus",
"wikibase-item-summary-wbcreate-new": "Loodud uus üksus",
"wikibase-item-summary-wbcreateredirect": "Ümber suunatud leheküljele $4",
"wikibase-item-summary-wbeditentity": "Loodud uus üksus",
"wikibase-item-summary-wbeditentity-create": "Loodud uus üksus",
"wikibase-item-summary-wbeditentity-update": "Üksus muudetud",
"wikibase-item-summary-wbeditentity-override": "Üksus tühjendatud",
"wikibase-item-summary-wbsetreference": "Määratud viide",
"wikibase-item-summary-wbsetreference-add": "Väitele lisatud viide",
"wikibase-item-summary-wbsetreference-set": "Väite viide muudetud",
"wikibase-item-summary-wbsetlabel-add": "Lisatud [$2]-silt",
"wikibase-item-summary-wbsetlabel-set": "Muudetud [$2]-silt",
"wikibase-item-summary-wbsetlabel-remove": "Eemaldatud [$2]-silt",
"wikibase-item-summary-wbsetdescription-add": "Lisatud [$2]-kirjeldus",
"wikibase-item-summary-wbsetdescription-set": "Muudetud [$2]-kirjeldus",
"wikibase-item-summary-wbsetdescription-remove": "Eemaldatud [$2]-kirjeldus",
"wikibase-item-summary-wbsetaliases-set": "Määratud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-item-summary-wbsetaliases-add-remove": "Lisatud ja eemaldatud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-item-summary-wbsetaliases-add": "Lisatud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-item-summary-wbsetaliases-remove": "Eemaldatud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-item-summary-wbsetlabeldescriptionaliases": "Muudetud [$2]-silt, -kirjeldus ja -rööpkujud",
"wikibase-item-summary-wbsetsitelink-add": "Lisatud [$2]-link",
"wikibase-item-summary-wbsetsitelink-add-both": "Lisatud äramärkimisega [$2]-link",
"wikibase-item-summary-wbsetsitelink-set": "Muudetud [$2]-link",
"wikibase-item-summary-wbsetsitelink-set-badges": "Muudetud [$2]-äramärkimised",
"wikibase-item-summary-wbsetsitelink-set-both": "Muudetud äramärkimisega [$2]-link",
"wikibase-item-summary-wbsetsitelink-remove": "Eemaldatud [$2]-link",
"wikibase-item-summary-wblinktitles-create": "Üksus loodud, et ühendada lehekülgi",
"wikibase-item-summary-wblinktitles-connect": "Keelelink lisatud, et ühendada lehekülgi",
"wikibase-item-summary-wbcreateclaim-value": "Loodud {{PLURAL:$1|väide|väited}}",
"wikibase-item-summary-wbcreateclaim-novalue": "Loodud {{PLURAL:$1|väide|väited}}",
"wikibase-item-summary-wbcreateclaim-somevalue": "Loodud {{PLURAL:$1|väide|väited}}",
"wikibase-item-summary-wbcreateclaim": "Loodud {{PLURAL:$1|väide|väited}}",
"wikibase-item-summary-wbsetclaimvalue": "{{PLURAL:$1|Väite väärtus|Väite väärtused}} määratud",
"wikibase-item-summary-wbremoveclaims": "{{PLURAL:$1|Väide|Väited}} eemaldatud",
"wikibase-item-summary-special-create-item": "Loodud [$2]-üksus {{PLURAL:$1|väärtusega|väärtustega}}",
"wikibase-item-summary-wbcreateclaim-create": "Loodud väide",
"wikibase-item-summary-wbremoveclaims-remove": "Eemaldatud {{PLURAL:$1|väide|väited}}",
"wikibase-item-summary-wbsetclaim-update": "Muudetud {{PLURAL:$3|väide|väited}}",
"wikibase-item-summary-wbsetclaim-create": "Loodud {{PLURAL:$3|väide|väited}}",
"wikibase-item-summary-wbsetclaim-update-qualifiers": "Muudetud {{PLURAL:$3|väite|väidete}} {{PLURAL:$4|üks näitaja|$4 näitajat}}",
"wikibase-item-summary-wbsetclaim-update-references": "Muudetud {{PLURAL:$3|väite|$4 väite}} {{PLURAL:$4|üht viidet|$4 viidet}}",
"wikibase-item-summary-wbsetclaim-update-rank": "{{PLURAL:$3|Väite|Väidete}} järk muudetud",
"wikibase-item-summary-clientsitelink-update": "Lehekülg teisaldatud asukohast [$3] pealkirja [$4] alla",
"wikibase-item-summary-clientsitelink-remove": "[$3]-lehekülg kustutatud",
"wikibase-item-summary-wbsetqualifier-add": "Lisatud {{PLURAL:$1|näitaja|näitajad}}",
"wikibase-item-summary-wbsetqualifier-update": "{{PLURAL:$1|Näitaja|Näitajad}} muudetud",
"wikibase-item-summary-wbremovequalifiers-remove": "{{PLURAL:$1|Näitaja|Näitajad}} eemaldatud",
"wikibase-item-summary-wbremovereferences-remove": "Väite {{PLURAL:$3|viide|viited}} eemaldatud",
"wikibase-item-summary-wbmergeitems-from": "Liidetud üksus $3",
"wikibase-item-summary-wbmergeitems-to": "Liidetud üksusega $3",
"wikibase-property-summary-wbcreate-new": "Loodud uus omadus",
"wikibase-property-summary-wbcreateclaim-create": "Loodud väide",
"wikibase-property-summary-wbcreateclaim": "Loodud {{PLURAL:$1|väide|väited}}",
"wikibase-property-summary-wbsetclaimvalue": "Väite {{PLURAL:$1|väärtus|väärtused}} määratud",
"wikibase-property-summary-wbsetreference": "Määratud viide",
"wikibase-property-summary-wbsetreference-add": "Väitele lisatud viide",
"wikibase-property-summary-wbsetreference-set": "Muudetud väite viide",
"wikibase-property-summary-wbremoveclaims": "{{PLURAL:$1|Väide|Väited}} eemaldatud",
"wikibase-property-summary-wbremoveclaims-remove": "{{PLURAL:$1|Väide|Väited}} eemaldatud",
"wikibase-property-summary-wbeditentity-create": "Loodud uus omadus",
"wikibase-property-summary-wbeditentity-update": "Omadus muudetud",
"wikibase-property-summary-wbeditentity-override": "Omadus tühjendatud",
"wikibase-property-summary-wbsetlabel-add": "Lisatud [$2]-silt",
"wikibase-property-summary-wbsetlabel-set": "Muudetud [$2]-silt",
"wikibase-property-summary-wbsetlabel-remove": "Eemaldatud [$2]-silt",
"wikibase-property-summary-wbsetdescription-add": "Lisatud [$2]-kirjeldus",
"wikibase-property-summary-wbsetdescription-set": "Muudetud [$2]-kirjeldus",
"wikibase-property-summary-wbsetdescription-remove": "Eemaldatud [$2]-kirjeldus",
"wikibase-property-summary-wbsetaliases-set": "Määratud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-property-summary-wbsetaliases-add-remove": "Lisatud ja eemaldatud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-property-summary-wbsetaliases-add": "Lisatud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-property-summary-wbsetaliases-remove": "Eemaldatud [$2]-{{PLURAL:$1|rööpkuju|rööpkujud}}",
"wikibase-property-summary-wbsetlabeldescriptionaliases": "Muudetud [$2]-silt, -kirjeldus ja -rööpkujud",
"wikibase-property-summary-wbsetclaim-update": "{{PLURAL:$3|Väide|Väited}} muudetud",
"wikibase-property-summary-wbsetclaim-create": "Loodud {{PLURAL:$3|väide|väited}}",
"wikibase-property-summary-wbsetclaim-update-qualifiers": "{{PLURAL:$3|Väite|Väidete}} {{PLURAL:$4|üks näitaja|$4 näitajat}} muudetud",
"wikibase-property-summary-wbsetclaim-update-references": "{{PLURAL:$3|Väite|Väidete}} {{PLURAL:$4|üks viide|$4 viidet}} muudetud",
"wikibase-property-summary-wbsetclaim-update-rank": "{{PLURAL:$3|Väite|Väidete}} järk muudetud",
"wikibase-property-summary-wbsetqualifier-add": "Lisatud {{PLURAL:$1|näitaja|näitajad}}",
"wikibase-property-summary-wbsetqualifier-update": "Muudetud {{PLURAL:$1|näitaja|näitajad}}",
"wikibase-property-summary-wbremovequalifiers-remove": "Eemaldatud {{PLURAL:$1|näitaja|näitajad}}",
"wikibase-property-summary-wbremovereferences-remove": "Eemaldatud väite {{PLURAL:$3|viide|viited}}",
"wikibase-property-summary-special-create-property": "Loodud {{PLURAL:$1|väärtusega|väärtustega}} omadus [$2]",
"wikibase-listdatatypes-wikibase-item-head": "Üksus",
"wikibase-listdatatypes-wikibase-item-body": "Link projekti teiste üksuste juurde. Sisestatud väärtusele vastavaid üksusi otsitakse projekti üksuste nimeruumist.",
"wikibase-listdatatypes-wikibase-property-head": "Omadus",
"wikibase-listdatatypes-wikibase-property-body": "Link projekti omaduste juurde. Sisestatud väärtusele vastavaid omadusi otsitakse projekti nimeruumist \"Property\".",
"wikibase-listdatatypes-commonsmedia-head": "Commonsi meediafail",
"wikibase-listdatatypes-commonsmedia-body": "Link Wikimedia Commonsis hoitava faili juurde. Sisestatud väärtusele vastavaid faile otsitakse Commonsi nimeruumist \"File\".",
"wikibase-listdatatypes-globe-coordinate-head": "Koordinaat",
"wikibase-listdatatypes-globe-coordinate-body": "Literaalandmed geograafilise asukoha kohta teatud taevakehal laiuse ja pikkuse paarina, mis on esitatud vormingus GMS või kümnendkraadides. Vaikimisi \"Maa\" ja vastavalt \"WGS84\". Sellele lisandub esitustäpsus ja ulatus.\n* laius – koordinaadisõne ilmutamata esimene osa (ujukomaga, dms, dm, dd), suund on määratud kas eelneva märgi või järgneva tähisega N/S\n* pikkus – koordinaadisõne ilmutamata teine osa (ujukomaga, dms, dm, dd), suund on määratud kas eelneva märgi või järgneva tähisega E/W\n* taevakeha – ilmutatud (?) andmeväärtus, esitatud taevakehana, mis on vaikimisi \"http://www.wikidata.org/entity/Q2\" (Maa)\n* esitustäpsus – koordinaatide numbriline esitustäpsus",
"wikibase-listdatatypes-quantity-head": "Suurus",
"wikibase-listdatatypes-quantity-body": "Literaalandmed mingi kindla ühikuga seotud suuruse kohta. Tegelik ühik sisaldub sisestatud andmeväärtustes.\n* määr – sõne ilmutamata osa (ühiku eesliite vastendus ebaselge)\n* ühik – sõne ilmutamata osa, mis on vaikimisi \"1\" (vastendus normaliseerimiskehaga ebaselge)\n* ülempiir – suuruse ülempiir\n* alampiir – suuruse alampiir",
"wikibase-listdatatypes-monolingualtext-head": "Ühekeelne tekst",
"wikibase-listdatatypes-monolingualtext-body": "Literaalandmete väli sõnele, mida teistesse keeltesse ei tõlgita. Seda tüüpi sõne defineeritaske ühe korra ja seda kasutatakse kõigis keeltes. Tüüpilises kasutuses on see näiteks kohalikus keeles kirjutatud geograafiline nimi, teatud identifikaator, keemiline valem või ladinakeelne teaduslik nimetus.\n* keel – ilmutatud väärtus, millega määratakse tekstiosa keel\n* väärtus – ilmutatud väärtus keelele eriomase variantsõne jaoks",
"wikibase-listdatatypes-multilingualtext-head": "Mitmekeelne tekst",
"wikibase-listdatatypes-multilingualtext-body": "Literaalandmete väli sõnele, mis tuleb tõlkida teistesse keeltesse. Tüüpilises kasutuses on see näiteks üleilmset huvi pakkuva nähtuse oleminime mittekohalik kirjakuju. See võib erineda nii keeltes kui ka kirjasüsteemides.\n* keel – ilmutatud väärtus, millega määratakse tekstiosa keel\n* väärtus – ilmutatud väärtus keelele eriomase variantsõne jaoks",
"wikibase-listdatatypes-string-head": "Sõne",
"wikibase-listdatatypes-string-body": "Literaalandmete väli glüüfidest sõne jaoks. Tüüpilises kasutuses on see näiteks identifikaator, millel on kirjalikke kujusid, mis ei olene lugeja keelest.\n* väärtus – ilmutatud väärtus keelele eriomase variantsõne jaoks",
"wikibase-listdatatypes-time-head": "Aeg",
"wikibase-listdatatypes-time-body": "Literaalandmete väli ajaväärtuste jaoks. Aeg esitatakse teatud esitustäpsuse ja piiridega. Sisemiselt salvestatakse aeg alati proleptilise uue kalendri vormingus, aga parsimiseks ja vormindamiseks saab kasutada ka teisi vorminguid.\n* aeg – ilmutatud väärtus ajahetke jaoks, esitatud ISO 8601 järgi, näiteks +2013-01-01T00:00:00Z. Aasta on alati arvu märgiga ja täidistatud 1–16 numbrimärgi kohaliseks.\n* ajavöönd – ilmutatud väärtus märgiga täisarvuna. Teave ajavööndi kohta minutites ajavahena UTC suhtes.\n* enne – ilmutatud täisarvuline väärtus, mis näitab mitu ühikut pärast antud aega saab miski olla. Ühik on määratud esitustäpsusega.\n* pärast – ilmutatud täisarvuline väärtus, mis näitab mitu ühikut enne antud aega saab miski olla. Ühik on määratud esitustäpsusega.\n* esitustäpsus – ilmutatud väärtus, mis on kodeeritud lühikese täisarvuna. Arvude tähendused on järgmised: 0 – miljard aastat, 1 – sada miljonit aastat, ..., 6 – aastatuhat, 7 – sajand, 8 – aastakümme, 9 – aasta, 10 – kuu, 11 – päev, 12 – tund, 13 – minut, 14 – sekund.\n* kalendrimudel – ilmutatud väärtus URI-na. Sellega määratakse kalendrimudel, mida tuleks kasutada ajaväärtuse kuvamiseks.",
"wikibase-listdatatypes-url-body": "Literaalandmete väli URL-i jaoks. Sobivad URL-id on piiratud protokollidega, mis on toetatud ka vikiteksti välislinkides.",
"wikibase-concept-uri": "Mõiste URI",
"wikibase-concept-uri-tooltip": "URI, mis identifitseerib mõiste, mida see üksus kirjeldab",
"wikibase-add-badges": "Lisa äramärkimised",
"content-model-wikibase-item": "Vikibaasi üksus",
"content-model-wikibase-property": "Vikibaasi omadus",
"content-model-wikibase-query": "Vikibaasi päring",
"right-item-term": "Muuta üksuse liikmeid (silte, kirjeldusi, rööpkujusid)",
"right-item-merge": "Liita üksusi",
"right-item-redirect": "Suunata üksusi ümber",
"right-property-term": "Muuta omaduse liikmeid (silte, kirjeldusi, rööpkujusid)",
"right-property-create": "Luua omadusi",
"wikibase-entity-not-viewable-title": "Lahknev sisutüüp: sisu ei saa kuvada",
"wikibase-entity-not-viewable": "Antud sisutüüp \"$1\" pole olem ja Vikibaas ei saa seda kuvada.",
"action-item-merge": "üksusi liita",
"action-property-create": "omadusi luua",
"apihelp-wbavailablebadges-description": "Pärib saadaolevad äramärkimisüksused.",
"apihelp-wbavailablebadges-example-1": "Pärib kõik saadaolevad äramärkimisüksused",
"apihelp-wbcreateclaim-description": "Loob Vikibaasi väited.",
"apihelp-wbcreateclaim-param-entity": "Olem, mille juurde väite lisad, olemi identifikaator",
"apihelp-wbcreateclaim-param-property": "Snakiomaduse identifikaator",
"apihelp-wbcreateclaim-param-value": "Snaki väärtus, kui loodaval väitel on väärtusega snakk",
"apihelp-wbcreateclaim-param-snaktype": "Snaki tüüp",
"apihelp-wbcreateclaim-example-1": "Loob üksusesse Q42 omaduse P9001 juurde väärtuseta snakiga väite",
"apihelp-wbcreateclaim-example-2": "Loob üksusesse Q42 omaduse P9002 juurde väite sõneväärtusega \"itsastring\"",
"apihelp-wbcreateclaim-example-3": "Loob üksusesse Q42 omaduse P9003 juurde väite, mille väärtus on üksus Q1",
"apihelp-wbcreateclaim-example-4": "Loob üksusesse Q42 omaduse P9004 juurde koordinaadi snakiväärtusega väite",
"apihelp-wbcreateredirect-description": "Loob olemi ümbersuunamise.",
"apihelp-wbcreateredirect-param-from": "Olem, millest ümbersuunamine teha, identifikaator",
"apihelp-wbcreateredirect-param-to": "Olem, mille juurde ümber suunata, identifikaator",
"apihelp-wbcreateredirect-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbcreateredirect-example-1": "Suuna Q11 ümber olemisse Q12",
"apihelp-wbeditentity-description": "Vikibaasi üksiku uue olemi loomine ja selle muutmine jadastatud teabega.",
"apihelp-wbeditentity-param-id": "Olemi identifikaator, kaasa arvatud eesliide.\nKasuta parameetriga \"title\" kas parameetrit \"id\" või \"site\".",
"apihelp-wbeditentity-param-site": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"title\", et koostada täielik võrgukohalink.",
"apihelp-wbeditentity-param-title": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"site\", et koostada täielik võrgukohalink.",
"apihelp-wbeditentity-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbeditentity-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbeditentity-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbeditentity-param-data": "Jadastatud objekt, mida kasutatakse andmeallikana.\nVastloodud olemile omistatakse identifikaator.",
"apihelp-wbeditentity-param-clear": "Kui määratud, tühjendatakse kogu olem enne jätkamist.\nOlemit ei salvestata enne, kui see on täidetud andmeobjektiga, millest osa võib välja jääda.",
"apihelp-wbeditentity-param-new": "Kui määratud, luuakse uus olem.\nMäära sellega, mis tüüpi olemit soovid luua: praegu kas \"item\" (üksus) või \"property\" (omadus).\nSelle määramine pole lubatud, kui määratud on ka parameeter \"id\".",
"apihelp-wbeditentity-example-1": "Loo uus tühi üksus, tagasta olemi täielik struktuur",
"apihelp-wbeditentity-example-2": "Loo uus üksus ja määra silt keeltele \"de\" ja \"en\"",
"apihelp-wbeditentity-example-3": "Loo uus üksus, mis sisaldab json-andmeid, tagasta olemi täielik struktuur",
"apihelp-wbeditentity-example-4": "Eemalda kõik andmed olemist identifikaatoriga Q42",
"apihelp-wbeditentity-example-5": "Eemalda kõik andmed olemist identifikaatoriga Q42 ja määra silt keelele \"en\"",
"apihelp-wbeditentity-example-6": "Määrab lingi võrgukohale \"nowiki\", kirjutatakse üle, kui on juba olemas",
"apihelp-wbeditentity-example-7": "Määrab kirjelduse keelele \"nb\", kirjutatakse üle, kui on juba olemas",
"apihelp-wbeditentity-example-8": "Loob üksusesse omaduse P56 juurde uue väite väärtusega \"ExampleString\"",
"apihelp-wbeditentity-example-9": "Eemaldab üksuselt väited, mille GUID-d on Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F ja Q42$GH678DSA-01PQ-28XC-HJ90-DDFD9990126X",
"apihelp-wbeditentity-example-10": "Määrab antud GUID-ga väite väärtuse",
"apihelp-wbformatvalue-description": "Andmeväärtuste vormindamine.",
"apihelp-wbformatvalue-param-generate": "Vorming, mida soovid väljundis kasutada.",
"apihelp-wbformatvalue-param-datatype": "Väärtuse andmetüüp. See on väärtuse tüübist eraldi.",
"apihelp-wbformatvalue-param-datavalue": "Vormindatavad andmed. See peab olema andmeväärtuse objekti JSON-vormingus jadastatud kuju.",
"apihelp-wbformatvalue-param-options": "Suvandid, mida vormindaja peaks kasutama. Esitatud JSON-objektina.",
"apihelp-wbformatvalue-example-1": "Vorminda lihtne sõneväärtus.",
"apihelp-wbformatvalue-example-2": "Esita sõneväärtus HTML-vormingus internetiaadressina",
"apihelp-wbgetclaims-description": "Hangib Vikibaasi väited.",
"apihelp-wbgetclaims-param-entity": "Olem, mille väited hankida, identifikaator. Nõutav, kui väite GUID on toomata.",
"apihelp-wbgetclaims-param-property": "Valikuline filter, millega tagastatakse ainult väited, mille peasnakil on antud omadus.",
"apihelp-wbgetclaims-param-claim": "Väite GUID. Nõutav, kui olemit pole toodud. GUID on väite globaalne ja ainuline identifikaator, nt \"q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\".",
"apihelp-wbgetclaims-param-rank": "Valikuline filter, millega tagastatakse ainult antud järguga väited",
"apihelp-wbgetclaims-param-props": "Väite mõni osa tagastatakse valikuliselt. Selle parameetriga määratakse, millised osad tagastatakse.",
- "apihelp-wbgetclaims-param-ungroupedlist": "Ära rühmita snakke omaduse identifikaatori järgi",
"apihelp-wbgetclaims-example-1": "Hangi üksuse Q42 väited",
"apihelp-wbgetclaims-example-2": "Hangi üksuse Q42 ja omaduse P2 väited",
"apihelp-wbgetclaims-example-3": "Hangi üksuse Q42 väited, mis on tavajärguga",
"apihelp-wbgetclaims-example-4": "Hangi väide, mille GUID on Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F",
"apihelp-wbgetentities-description": "Hangib andmed Vikibaasi mitme olemi kohta.",
"apihelp-wbgetentities-param-ids": "Olemid, mille kohta andmed hankida, identifikaatorid.",
"apihelp-wbgetentities-param-sites": "Võrgukoht, kus seotud lehekülg asub, identifikaator.\nKasuta koos parameetriga \"title\". Vali mitme pealkirja jaoks ainult üks võrgukoht või ühe pealkirja jaoks mitu võrgukohta.",
"apihelp-wbgetentities-param-titles": "Seotud lehekülje pealkiri.\nKasuta koos parameetriga \"sites\". Vali mitme pealkirja jaoks ainult üks võrgukoht või ühe pealkirja jaoks mitu võrgukohta.",
"apihelp-wbgetentities-param-redirects": "Kas ümbersuunamised tuleks resolvida.\nKui valida \"no\" (ei), koheldakse ümbersuunamisi kustutatud olemitena.",
"apihelp-wbgetentities-param-props": "Atribuudid, mida iga olemi kohta tagastada.\nValik filtritakse täiendavalt antud keelte järgi.",
"apihelp-wbgetentities-param-languages": "Vaikimisi tagastatakse rahvusvahelikustatud väärtused kõigis saadaolevates keeltes.\nSee parameeter võimaldab piirata väärtuste hulka ühele või rohkemale keelele, kui valid vähemalt ühe keelekoodi.",
"apihelp-wbgetentities-param-languagefallback": "Rakenda parameetriga \"languages\" määratud keelte suhtes keeletaande režiimi ja kasuta selleks API-kutse praegust sisu.",
"apihelp-wbgetentities-param-normalize": "Proovi lehekülje pealkiri kliendi võrgukoha suhtes normaliseerida.\nSee töötab ainult siis, kui määratud on täpselt üks võrgukoht ja üks lehekülg.",
- "apihelp-wbgetentities-param-ungroupedlist": "Ära rühmita snakke omaduse identifikaatori järgi.",
"apihelp-wbgetentities-param-sitefilter": "Piira olemites sisalduvad võrukohalingid nende võrgukohtade identifikaatoritega.",
"apihelp-wbgetentities-example-1": "Hangi olemid identifikaatoriga Q42 kõigi saadaolevate atribuutidega kõigis saadaolevates keeltes",
"apihelp-wbgetentities-example-2": "Hangi olemid identifikaatoriga P17 kõigi saadaolevate atribuutidega kõigis saadaolevates keeltes",
"apihelp-wbgetentities-example-3": "Hangi olemid identifikaatoritega Q42 ja P17 kõigi saadaolevate atribuutidega kõigis saadaolevates keeltes",
"apihelp-wbgetentities-example-4": "Hangi olemid identifikaatoriga Q42 kõigi saadaolevate atribuutidega inglise keeles",
"apihelp-wbgetentities-example-5": "Hangi olemid identifikaatoriga Q42 kõigi saadaolevate atribuutidega keele \"ii\" kõigis võimalikes taanderežiimi keeltes",
"apihelp-wbgetentities-example-6": "Hangi olemid identifikaatoriga Q42 ja näita silte kõigis saadaolevates keeltes",
"apihelp-wbgetentities-example-7": "Hangi olemid identifikaatoritega P17 ja P3 ning näita ainult andmetüüpe",
"apihelp-wbgetentities-example-8": "Hangi olemid identifikaatoriga Q42 ja näita kõiki ingliskeelseid rööpkujusid",
"apihelp-wbgetentities-example-9": "Hangi olemid identifikaatoritega Q1 ja Q42 ning näita inglis-, saksa-, ja prantsuskeelseid kirjeldusi",
"apihelp-wbgetentities-example-10": "Hangi üksus, mis vastab võrgukohas \"enwiki\" leheküljele \"Berlin\", ja näita keeleatribuute inglise keeles",
"apihelp-wbgetentities-example-11": "Hangi üksus, mis vastab võrgukohas \"enwiki\" leheküljele \"Berlin\", kui enne normaliseerimist oli pealkiri \"berlin\"",
"apihelp-wbgetentities-example-12": "Hangi üksuse Q42 võrgukohalingid",
"apihelp-wbgetentities-example-13": "Hangi olemid identifikaatoriga Q42 ja näita ainult võrgukoha \"enwiki\" linke",
"apihelp-wblinktitles-description": "Seostab kahe erineva viki kaks erinevat artiklit Vikibaasi üksusega.",
"apihelp-wblinktitles-param-tosite": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"totitle\", et koostada täielik võrgukohalink.",
"apihelp-wblinktitles-param-totitle": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"tosite\", et koostada täielik võrgukohalink.",
"apihelp-wblinktitles-param-fromsite": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"fromtitle\", et koostada täielik võrgukohalink.",
"apihelp-wblinktitles-param-fromtitle": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"fromsite\", et koostada täielik võrgukohalink.",
"apihelp-wblinktitles-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wblinktitles-example-1": "Lisa saksa lehekülje \"Wasserstoff\" juurde inglise lehekülje link \"Hydrogen\"",
"apihelp-wbmergeitems-description": "Liidab mitu üksust.",
"apihelp-wbmergeitems-param-fromid": "Üksus, mida liita, identifikaator.",
"apihelp-wbmergeitems-param-toid": "Üksus, millega liita, identifikaator.",
"apihelp-wbmergeitems-param-ignoreconflicts": "Massiiv üksuse elementidest, mille konflikte eirata. Väärtused saavad olla ainult \"label\" (silt), \"description\" (kirjeldus) ja \"sitelink\" (võrgukohalink).",
"apihelp-wbmergeitems-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbmergeitems-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbmergeitems-example-1": "Liida üksuse Q42 andmed üksusega Q222",
"apihelp-wbmergeitems-example-2": "Liida üksuse Q555 andmed üksusega Q3",
"apihelp-wbmergeitems-example-3": "Liida üksuse Q66 andmed üksusega Q99 ja eira kõiki sildikonflikte",
"apihelp-wbmergeitems-example-4": "Liida üksuse Q66 andmed üksusega Q99 ning eira kõiki sildi- ja kirjelduse konflikte",
"apihelp-wbparsevalue-description": "Parsib väärtused ValueParseri abil.",
"apihelp-wbparsevalue-param-parser": "Kasutatava ValueParseri identifikaator",
"apihelp-wbparsevalue-param-values": "Parsitavad väärtused",
"apihelp-wbparsevalue-param-options": "Suvandid, mida parser kasutab, esitatud JSON-objektina.",
"apihelp-wbparsevalue-example-1": "Sõne vormingut ei muudeta.",
"apihelp-wbparsevalue-example-2": "Parsi 1994-02-08 kuupäeva vormingusse esitustäpsusega 9 (aasta).",
"apihelp-wbremoveclaims-description": "Eemaldab Vikibaasi väited.",
"apihelp-wbremoveclaims-param-claim": "Üks GUID või mitu püstkriipsuga eraldatud GUID-d, mis identifitseerivad eemaldatavad väited.\nKõik väited, peavad käima sama olemi kohta.",
"apihelp-wbremoveclaims-example-1": "Eemalda väide, mille GUID on \"Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0N\"",
"apihelp-wbremovequalifiers-description": "Eemaldab väitelt näitaja.",
"apihelp-wbremovequalifiers-param-claim": "Väide, millelt näitajaid eemaldada, väite GUID",
"apihelp-wbremovequalifiers-param-qualifiers": "Eemaldatavate näitajate snaki räsiväärtused",
"apihelp-wbremovequalifiers-example-1": "Eemalda näitaja, mille räsiväärtus on \"1eb8793c002b1d9820c833d234a1b54c8e94187e\" väitelt, mille GUID on \"Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\"",
"apihelp-wbremovereferences-description": "Eemaldab samalt avalduselt ühe või rohkema arvu viiteid.",
"apihelp-wbremovereferences-param-statement": "Avaldus, mille viide määratakse, avalduse GUID",
"apihelp-wbremovereferences-param-references": "Eemaldatavate viidete räsiväärtused",
"apihelp-wbremovereferences-example-1": "Eemalda viide, mille räsiväärtus on \"455481eeac76e6a8af71a6b493c073d54788e7e9\" väitelt, mille GUID on \"Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F\"",
"apihelp-wbsearchentities-description": "Otsib siltide ja rööpkujude abil olemeid.\nTagastab olemi sildi ja kirjelduse, kui see on kasutaja keeles võimalik.\nTagastab leitud vaste üksikasjad.\nLeitud vaste tekst on samuti esitatud rööpkujude juures, kui see erineb kuvatavast sildist.",
"apihelp-wbsearchentities-param-search": "Otsi seda teksti.",
"apihelp-wbsearchentities-param-language": "Otsi selles keeles.",
"apihelp-wbsearchentities-param-type": "Otsi seda tüüpi olemit.",
"apihelp-wbsearchentities-param-limit": "Tulemuste ülemmäär",
"apihelp-wbsearchentities-param-continue": "Lüke, mille juurest otsimist jätkata",
"apihelp-wbsearchentities-example-1": "Otsi teksti \"abc\" inglise keeles, kasuta tüübi ja piirangu vaikeväärtust",
"apihelp-wbsearchentities-example-2": "Otsi teksti \"abc\" inglise keeles, piira tulemused 50-le",
"apihelp-wbsearchentities-example-3": "Otsi teksti \"alphabet\" inglise keeles omaduse tüüpi olemitest",
"apihelp-wbsetaliases-description": "Määrab Vikibaasi olemi rööpkujud.",
"apihelp-wbsetaliases-param-id": "Olemi identifikaator, kaasa arvatud eesliide.\nKasuta parameetriga \"title\" kas parameetrit \"id\" või \"site\".",
"apihelp-wbsetaliases-param-site": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"title\", et koostada täielik võrgukohalink.",
"apihelp-wbsetaliases-param-title": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"site\", et koostada täielik võrgukohalink.",
"apihelp-wbsetaliases-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetaliases-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetaliases-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetaliases-param-add": "Lisatavate rööpkujude loetelu (saab ühitada eemaldamisega)",
"apihelp-wbsetaliases-param-remove": "Eemaldatavate rööpkujude loetelu (saab ühitada lisamisega)",
"apihelp-wbsetaliases-param-set": "Loetelu rööpkujudest, mis asendavad praeguse loetelu (ei saa ühitada lisamise ega eemaldamisega)",
"apihelp-wbsetaliases-param-language": "Keel, mille jaoks rööpkujud määrata",
"apihelp-wbsetaliases-example-1": "Määra olemi Q1 ingliskeelseteks rööpkujudeks \"Foo\" ja \"Bar\"",
"apihelp-wbsetaliases-example-2": "Lisa olemi Q1 ingliskeelsete rööpkujude loetellu \"Foo\" ja \"Bar\"",
"apihelp-wbsetaliases-example-3": "Eemalda olemi Q1 ingliskeelsete rööpkujude loetelust \"Foo\" ja \"Bar\"",
"apihelp-wbsetaliases-example-4": "Eemalda olemi Q1 ingliskeelsete rööpkujude loetelust \"Foo\" ning lisa sinna \"Bar\"",
"apihelp-wbsetclaim-description": "Loob või värskendab terve avalduse või väite.",
"apihelp-wbsetclaim-param-claim": "Avalduse või väite jadastamine",
"apihelp-wbsetclaim-param-index": "Olemi avalduste loetelu indeks, mille juurde avaldus liigutada. Valikuline. Pane tähele, et kui määrata indeks, mille asukoha kõrval pole avaldust, mille peasnaki omadus pole sama, siis liigutatakse terve avalduste rühm, kus peasnakkide omadus on sama. Kui indeks määramata jätta, jääb olemasolev avaldus samasse kohta ning uus avaldus lisatakse pärast viimast, mille peasnakk on sama omadusega.",
"apihelp-wbsetclaim-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetclaim-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetclaim-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetclaim-example-1": "Määra omadusele P1 antud identifikaatoriga väide, mille sõneväärtus on \"City\"",
"apihelp-wbsetclaim-example-2": "Määra omadusele P1 antud identifikaatoriga väide, mille sõneväärtus on \"City\", ning liiguta väide esikohale olemi väidete alamrühmas, kus peasnakk on omadusega P1. Lisaks liiguta kogu alamrühm kõigi omaduse järgi koondatud alamrühmade seas esikohale.",
"apihelp-wbsetclaim-example-3": "Määra omadusele P1 antud identifikaatoriga avaldus, mille sõneväärtus on \"City\", ning määra avalduse viideteks üks viide, milleks on omadusele P2 omistatud sõneväärtus \"The Economy of Cities\"",
"apihelp-wbsetclaimvalue-description": "Määrab Vikibaasi väitele väärtuse.",
"apihelp-wbsetclaimvalue-param-claim": "Väite GUID",
"apihelp-wbsetclaimvalue-param-snaktype": "Snaki tüüp",
"apihelp-wbsetclaimvalue-param-value": "Väite peasnakile määratav andmeväärtus",
"apihelp-wbsetclaimvalue-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetclaimvalue-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetclaimvalue-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetclaimvalue-example-1": "Määrab väite Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F (GUID) väärtuseks Q1",
"apihelp-wbsetdescription-description": "Määrab Vikibaasi üksiku olemi kirjelduse.",
"apihelp-wbsetdescription-param-id": "Olemi identifikaator, kaasa arvatud eesliide.\nKasuta parameetriga \"title\" kas parameetrit \"id\" või \"site\".",
"apihelp-wbsetdescription-param-site": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"title\", et koostada täielik võrgukohalink.",
"apihelp-wbsetdescription-param-title": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"site\", et koostada täielik võrgukohalink.",
"apihelp-wbsetdescription-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetdescription-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetdescription-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetdescription-param-language": "Kirjelduse keel",
"apihelp-wbsetdescription-param-value": "Kirjeldusele määratav väärtus",
"apihelp-wbsetdescription-example-1": "Määra lehekülje \"Q42\" ingliskeelseks kirjelduseks sõne \"An encyclopedia that everyone can edit\"",
"apihelp-wbsetdescription-example-2": "Määra ingliskeelseks kirjelduseks sõne \"An encyclopedia that everyone can edit\" leheküljel, mille võrgukohalink on enwiki:Wikipedia",
"apihelp-wbsetlabel-description": "Määrab Vikibaasi üksiku olemi sildi.",
"apihelp-wbsetlabel-param-id": "Olemi identifikaator, kaasa arvatud eesliide.\nKasuta parameetriga \"title\" kas parameetrit \"id\" või \"site\".",
"apihelp-wbsetlabel-param-site": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"title\", et koostada täielik võrgukohalink.",
"apihelp-wbsetlabel-param-title": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"site\", et koostada täielik võrgukohalink.",
"apihelp-wbsetlabel-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetlabel-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetlabel-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetlabel-param-language": "Sildi keel",
"apihelp-wbsetlabel-param-value": "Sildi väärtus",
"apihelp-wbsetlabel-example-1": "Määra lehekülje \"Q42\" ingliskeelseks sildiks \"Wikimedia\" ja teata sellest ilusa vormistusega json-is",
"apihelp-wbsetlabel-example-2": "Määra ingliskeelseks sildiks sõne \"Earth\" üksuses, mille võrgukohalink on enwiki:Earth",
"apihelp-wbsetqualifier-description": "Loob näitaja või määrab olemasoleva näitaja väärtuse.",
"apihelp-wbsetqualifier-param-claim": "Väide, mille jaoks näitaja määratakse, GUID.",
"apihelp-wbsetqualifier-param-property": "Snakiomaduse identifikaator.\nTuleks ära tuua vaid juhul, kui luuakse uus näitaja või kui muudetakse olemasoleva näitaja omadust.",
"apihelp-wbsetqualifier-param-value": "Näitaja uus väärtus.\nTuleks ära tuua vaid PropertyValueSnaki tüüpi näitajatele",
"apihelp-wbsetqualifier-param-snaktype": "Snaki tüüp.\nTuleks ära tuua vaid juhul, kui luuakse uus näitaja või kui muudetakse olemasoleva näitaja tüüpi.",
"apihelp-wbsetqualifier-param-snakhash": "Muudetava snaki räsiväärtus.\nTuleks ära tuua vaid olemasolevate näitajate jaoks",
"apihelp-wbsetqualifier-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetqualifier-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetqualifier-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetqualifier-example-1": "Määra antud väite näitaja (omadus P1) sõneväärtuseks GdyjxP8I6XB3",
"apihelp-wbsetreference-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetreference-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetreference-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma.",
"apihelp-wbsetsitelink-param-id": "Olemi identifikaator, kaasa arvatud eesliide.\nKasuta parameetriga \"title\" kas parameetrit \"id\" või \"site\".",
"apihelp-wbsetsitelink-param-site": "Võrgukoht, kus lehekülg asub, identifikaator.\nKasuta parameetriga \"title\", et koostada täielik võrgukohalink.",
"apihelp-wbsetsitelink-param-title": "Seostatava lehekülje pealkiri.\nKasuta parameetriga \"site\", et koostada täielik võrgukohalink.",
"apihelp-wbsetsitelink-param-baserevid": "Redaktsioon, millel muudatus põhineb, numbriline identifikaator.\nSeda kasutatakse salvestamise ajal konfliktide tuvastamiseks.",
"apihelp-wbsetsitelink-param-summary": "Muudatuse resümee.\nSelle ette lisatakse automaatselt koostatud kommentaar. Automaatne kommentaar ja resümee võivad kokku olla pikkusega kuni 260 märki. Pane tähele, et resümeest jääb välja kõik, mis seda määra ületab.",
"apihelp-wbsetsitelink-param-bot": "Märgi robotimuudatuseks.\nSelle URL-sildiga arvestatakse vaid juhul, kui kasutaja kuulub robotite rühma."
}
diff --git a/extensions/Wikibase/repo/i18n/fr.json b/extensions/Wikibase/repo/i18n/fr.json
index e30b1317c..a09192aed 100644
--- a/extensions/Wikibase/repo/i18n/fr.json
+++ b/extensions/Wikibase/repo/i18n/fr.json
@@ -1,655 +1,656 @@
{
"@metadata": {
"authors": [
"Alno",
"Boniface",
"Brunoperel",
"Byrial",
"Crochet.david",
"DavidL",
"Dereckson",
"Gomoko",
"Hazard-SJ",
"Hello71",
"Immortal",
"Jean-Frédéric",
"Jitrixis",
"Laddo",
"Linedwell",
"Ltrlg",
"Metroitendo",
"Nicolas Raoul",
"Nnemo",
"Nodulation",
"Peter17",
"Shirayuki",
"Tititou36",
"Tpt",
"Wyz",
"Zolo",
"SnowedEarth",
"Verdy p",
"Elodark",
"Macofe",
"Benjozork",
"Weft",
"Brenloch56",
"Spasmedevivre",
"Freak2fast4u",
"Mattho69",
"Windes",
"TomT0m",
"Pathe",
- "Wladek92"
+ "Wladek92",
+ "Ash Crow"
]
},
"wikibase-desc": "Référentiel de données structurées",
"wikibase-entity": "entité",
"wikibase-entity-item": "élément",
"wikibase-entity-property": "propriété",
"wikibase-entity-query": "requête",
"wikibase-edit": "modifier",
"wikibase-save": "enregistrer",
"wikibase-cancel": "annuler",
"wikibase-add": "ajouter",
"wikibase-addqualifier": "ajouter un qualificatif",
"wikibase-addreference": "ajouter une référence",
"wikibase-save-inprogress": "Sauvegarde en cours…",
"wikibase-remove-inprogress": "Suppression en cours…",
"wikibase-entitytermsview-entitytermsforlanguagelistview-toggler": "Plus de langues",
"wikibase-entitytermsview-entitytermsforlanguagelistview-configure-link-label": "Configurer",
"wikibase-setting-entitytermsview-showEntitytermslistview": "Afficher les libellés, alias et descriptions dans toutes mes langues au chargement des pages.",
"wikibase-setting-entitytermsview-showEntitytermslistview-help": "Des langues personnelles additionnelles pour l’interface peuvent être définie en utilisant la syntaxe de l’[[mw:Extension:Babel|extension ''Babel'']] sur la page utilisateur.",
"wikibase-entitytermsforlanguagelistview-aliases": "Alias",
"wikibase-entitytermsforlanguagelistview-description": "Description",
"wikibase-entitytermsforlanguagelistview-label": "Libellé",
"wikibase-entitytermsforlanguagelistview-language": "Langue",
"wikibase-label-empty": "Pas de libellé défini",
"wikibase-label-edit-placeholder": "saisir un libellé",
"wikibase-label-edit-placeholder-language-aware": "entrer le libellé en $1",
"wikibase-description-empty": "Aucune description fournie",
"wikibase-description-edit-placeholder": "saisir une description",
"wikibase-description-edit-placeholder-language-aware": "entrer la description en $1",
+ "wikibase-aliases-edit-placeholder-language-aware": "entrer certains des alias dans $1",
"wikibase-diffview-reference": "référence",
"wikibase-diffview-rank": "rang",
"wikibase-diffview-rank-preferred": "Rang privilégié",
"wikibase-diffview-rank-normal": "Rang normal",
"wikibase-diffview-rank-deprecated": "Rang déprécié",
"wikibase-diffview-qualifier": "qualificateur",
"wikibase-diffview-label": "libellé",
"wikibase-diffview-alias": "alias",
"wikibase-diffview-description": "description",
"wikibase-diffview-link": "liens",
"wikibase-sitelink-site-edit-placeholder": "site",
"wikibase-sitelink-page-edit-placeholder": "page",
"wikibase-alias-edit-placeholder": "entrer un alias",
"wikibase-label-input-help-message": "Saisissez le libellé de cette entité en $1.",
"wikibase-description-input-help-message": "Saisissez une courte description pour cette entité en $1.",
"wikibase-entitytermsview-input-help-message": "Indiquez pour cette entité un libellé, une courte description et des alias par langues.",
"wikibase-entitytermsforlanguageview-input-help-message": "Entrer le libellé de cette entité, une courte description et ses alias dans $1.",
"wikibase-statements": "Déclarations",
"wikibase-terms": "Autres langues",
"wikibase-sitelinks": "Liens de site",
"wikibase-sitelinkgroupview-input-help-message": "Ajouter un lien de site en spécifiant un site et une page de ce site, modifier ou supprimer des liens de site existants.",
"wikibase-sitelinks-empty": "Aucune page n’est liée à cet élément.",
"wikibase-sitelinks-input-help-message": "Créer un lien vers une page relative à cet élément.",
"wikibase-sitelinks-special": "Autres sites",
"wikibase-badgeselector-badge-placeholder-title": "Cliquer pour attribuer un badge.",
"wikibase-remove": "supprimer",
"wikibase-move-up": "monter",
"wikibase-move-down": "descendre",
"wikibase-undo-title": "Annuler la modification de «&nbsp;$1&nbsp;»",
"wikibase-restore-title": "Restauration d’une ancienne révision de «&nbsp;$1&nbsp;»",
"wikibase-partial-undo": "La modification peut être partiellement annulée.",
"wikibase-omitted-undo-ops": "{{PLURAL:$1|Un changement n’a pas pu être annulé|$1 changements n’ont pas pu être annulés}} parce que {{PLURAL:$1|sa valeur a|leur valeur a}} été modifiées dans l’intervalle.",
"wikibase-empty-undo": "Il n'y a rien qui puisse être annulé ici.",
"wikibase-undo-revision-error": "L’annulation a échoué",
"wikibase-undo-samerev": "Deux révisons différentes doivent être spécifiées pour annuler une modification.",
"wikibase-undo-badpage": "Numéro de version erroné&nbsp;: la révision $2 n'appartient pas à [[$1]].",
"wikibase-undo-firstrev": "Impossible d'annuler la création de la page",
"wikibase-undo-nocontent": "Impossible de charger le contenu de la modification $2 de la page $1",
"wikibase-ui-pendingquantitycounter-pending-pendingsubpart": "+$1",
"wikibase-propertyedittool-counter-pending-tooltip": "{{PLURAL:$1|Une valeur pas encore enregistrée|$1&nbsp;valeurs pas encore enregistrées}}",
"wikibase-propertyedittool-counter-entrieslabel": "{{PLURAL:$1|entrée|entrées}}",
"wikibase-disambiguation-title": "Homonymie pour «&nbsp;$1&nbsp;»",
"wb-special-newitem-new-item-notification": "Un nouvel élément $1 créé et redirigé vers sa page. Retour à $2.",
"wikibase-aliases-label": "Alias&nbsp;:",
"wikibase-aliases-input-help-message": "Pour rendre cette entité plus facile à trouver, vous pouvez entrer des noms de remplacement.",
"wikibase-aliases-empty": "Aucun alias défini.",
"wikibase-propertypage-datatype": "Type de données",
"wikibase-claimview-snak-tooltip": "Saisissez une valeur correspondant à la propriété appelée « $1 ». Si la propriété n’a pas de valeur désignée ou si sa valeur actuelle n’est pas connue, vous pouvez choisir une alternative pour spécifier une valeur personnalisée en cliquant sur l’icône à côté de la zone de saisie de la valeur.",
"wikibase-claimview-snak-new-tooltip": "Après avoir spécifié une propriété, vous pouvez saisir une valeur correspondante. Si la propriété n’a pas de valeur désignée ou si sa valeur actuelle est inconnue, vous pouvez choisir une alternative en spécifiant une valeur personnalisée en cliquant sur l’icône à côté de la zone de saisie de la valeur.",
"wikibase-statementview-rank-preferred": "Rang privilégié",
"wikibase-statementview-rank-normal": "Rang normal",
"wikibase-statementview-rank-deprecated": "Rang obsolète",
"wikibase-statementview-referencesheading-pendingcountersubject": "{{PLURAL:$1|référence|références}}",
"wikibase-statementview-referencesheading-pendingcountertooltip": "{{PLURAL:$1|Une référence|$1 références}} pas encore enregistrée{{PLURAL:$1||s}}",
"wikibase-snakview-property-input-placeholder": "propriété",
"wikibase-snakview-unsupportedsnaktype": "Snak de type « $1 ». La gestion de ce type de Snak n’est pas encore prise en charge.",
"wikibase-snakview-choosesnaktype": "Choisir un type de valeur.",
"wikibase-snakview-variation-datavaluetypemismatch": "La valeur n’est pas conforme à la définition de la propriété.",
"wikibase-snakview-variation-datavaluetypemismatch-details": "Conflit non attendu entre le type de propriété « $2 » et le type de valeur « $1 ».",
"wikibase-snakview-variation-nonewvaluefordeletedproperty": "Il n’est pas possible de définir une nouvelle valeur pour une propriété supprimée.",
"wikibase-snakview-variations-somevalue-label": "valeur inconnue",
"wikibase-snakview-variations-novalue-label": "aucune valeur",
"wikibase-snakview-snaktypeselector-value": "valeur personnalisée",
"wikibase-snakformat-invalid-value": "Valeur non valide.",
"wikibase-snakformat-propertynotfound": "Propriété non trouvée.",
"wikibase-shortcopyrightwarning": "En cliquant sur « $1 » , vous acceptez les [[$2|conditions d'utilisation]] et acceptez acceptez de placer irrévocablement votre contribution sous $3.",
"wikibase-copyrighttooltip-acknowledge": "J’accepte ces conditions pour mes prochaines modifications. Ne plus afficher ce message.",
"wikibase-entityselector-more": "plus",
"wikibase-anonymouseditwarning": "Attention: Vous n’êtes pas connecté.\nVotre adresse IP sera enregistrée dans l’historique des modifications de cette entité.",
"wikibase-move-error": "Vous ne pouvez pas déplacer des pages situées dans un espace des données, ni déplacer des pages vers cet espace.",
"wikibase-validator-sitelink-conflict": "Le lien $1 est déjà utilisé par l’élément $2. Vous pouvez le supprimer de $2 s’il n’a rien à faire là, ou fusionner les éléments s’ils concernent exactement le même sujet.",
"wikibase-validator-label-conflict": "La propriété $3 a déjà un libellé « $1 » associé au code de langue $2.",
"wikibase-validator-label-with-description-conflict": "L’élément $3 a déjà le libellé « $1 » associé au code de langue $2, en utilisant exactement le même texte descriptif.",
"wikibase-validator-label-no-entityid": "Le libellé ne doit pas être un id d’entité valide.",
"wikibase-wikibaserepopage-not-itemid": "« $1 » n’est pas un identifiant (''id'') d’élément valide.",
"wikibase-wikibaserepopage-invalid-langcode": "Le code de langue « $1 » n’est pas connu. Veuillez utiliser un code de langue connu du système, comme « fr ».",
"wikibase-wikibaserepopage-invalid-id": "L’ID « $1 » est inconnu du système. Veuillez utiliser un ID d’entité valide.",
"wikibase-wikibaserepopage-unresolved-redirect": "$1 est une redirection.",
"wikibase-wikibaserepopage-storage-exception": "Une erreur s’est produite lors d’un essai de chargement de $1 : $2.",
"special-itembytitle": "Élément par titre",
"wikibase-itembytitle-lookup-fieldset": "Rechercher des éléments par site et par titre",
"wikibase-itembytitle-lookup-site": "Site&nbsp;:&nbsp;",
"wikibase-itembytitle-lookup-page": "Page&nbsp;:&nbsp;",
"wikibase-itembytitle-submit": "Rechercher",
"wikibase-itembytitle-create": "Vous pouvez aussi [$1 créer un élément].",
"wikibase-itembytitle-summary": "Special:ItemByTitle est utilisé pour trouver l’élément correspondant pour une page donnée sur un site connecté. <br /> Le champ de gauche, \"Site:\", est là où vous entrez la langue et le code du site. <br /> Pour le champ de droite, \"Page:\", vous devez mettre le titre exact de la page tel qu’il apparaît sur le site connecté.",
"special-gotolinkedpage": "Aller à la page liée",
"wikibase-gotolinkedpage-lookup-fieldset": "Aller à la page liée par le site et l'élément",
"wikibase-gotolinkedpage-lookup-site": "Site :",
"wikibase-gotolinkedpage-lookup-item": "Id de l’élément :",
"wikibase-gotolinkedpage-submit": "Aller",
"wikibase-gotolinkedpage-summary": "Spécial:GoToLinkedPage est utilisé pour trouver la page pour un élément sur un site connecté.<br /> Le champ de gauche, « Site: », est là où vous entrez la langue et le code du site.<br /> Pour le champ de droite, « Id de l’élément: », vous devez mettre l’id de l’élément que vous recherchez.",
"special-itemdisambiguation": "Homonymie d’éléments",
"wikibase-itemdisambiguation-lookup-fieldset": "Rechercher des éléments par langue et libellé",
"wikibase-itemdisambiguation-lookup-language": "Code de langue :",
"wikibase-itemdisambiguation-lookup-label": "Libellé&nbsp;:",
"wikibase-itemdisambiguation-submit": "Rechercher",
"wikibase-itemdisambiguation-form-hints": "Notez que pas plus de $1 {{PLURAL:$1|résultat sera affiché|résultats seront affichés}}.",
"wikibase-itemdisambiguation-nothing-found": "Désolé, aucun élément avec ce libellé n'a été trouvé.",
"wikibase-itemdisambiguation-search": "Vous pouvez [$1 rechercher cet élément].",
"wikibase-itemdisambiguation-create": "Vous pouvez [$1 créer l’élément].",
"wikibase-itemdisambiguation-invalid-langcode": "Désolé, le code de langue que vous avez fourni n’est pas connu du système. Veuillez utiliser un code valide, comme « fr ».",
"wikibase-itemdisambiguation-description": "Les valeurs utilisées pour la recherche doivent être le texte entier. La langue est un identifiant, comme «&nbsp;en&nbsp;».",
"wikibase-itemdisambiguation-summary": "Rechercher tous les éléments avec la même étiquette.",
"special-newproperty": "Créer une nouvelle propriété",
"wikibase-newproperty-summary": "Assurez-vous que [[Special:PropertyDisambiguation|la propriété n’existe pas déjà]] !<br />Vous devriez créer un [[Help:Label|libellé]] et une [[Help:Description|description]] pour toutes les nouvelles propriétés, ainsi qu’un type de propriété valide.",
"wikibase-newproperty-fieldset": "Créer une nouvelle propriété",
"wikibase-newproperty-datatype": "Type de données:",
"wikibase-newproperty-invalid-datatype": "Type de données spécifié non valide.",
"special-newitem": "Créer un nouvel élément",
"wikibase-newitem-summary": "Assurez-vous que [[Special:ItemByTitle|l’élément n’existe pas déjà]] !<br />Vous devriez créer un [[Help:Label/fr|libellé]] et une [[Help:Description/fr|description]] pour tous les nouveaux éléments.",
"wikibase-newitem-fieldset": "Créer un nouvel élément",
"wikibase-newitem-site": "Site de la première page liée",
"wikibase-newitem-page": "Nom de la première page liée",
"wikibase-newitem-no-external-page": "La page spécifiée est introuvable sur le site correspondant.",
"wikibase-newitem-not-recognized-siteid": "L’identifiant de site fourni n’a pas été reconnu.",
"wikibase-newentity-label": "Libellé&nbsp;:",
"wikibase-newentity-description": "Description&nbsp;:",
+ "wikibase-newentity-aliases": "Alias, séparés par une barre verticale (''pipe'') :",
"wikibase-newentity-submit": "Créer",
"special-setlabel": "Définir un libellé",
"wikibase-setlabel-introfull": "Vous êtes en train de définir le libellé en $2 pour [[$1]].",
"wikibase-setlabel-intro": "Ce formulaire vous permet de définir le libellé d'une entité. Vous devez fournir l'ID de l'entité (par exemple Q23), un code de langue (par exemple en) et le libellé à définir.",
"wikibase-setlabel-label": "Libellé:",
"wikibase-setlabel-submit": "Définir le libellé",
"special-setdescription": "Fixer une description",
"wikibase-setdescription-introfull": "Vous êtes en train de donner la description en $2 pour [[$1]].",
"wikibase-setdescription-intro": "Ce formulaire vous permet de donner la description d’une entité. Vous devez fournir l’ID de l’entité (par ex. Q23), un code de langue (par ex. \"en\") et la description à enregistrer.",
"wikibase-setdescription-label": "Description:",
"wikibase-setdescription-submit": "Donner la description",
"special-setaliases": "Définir les alias",
"wikibase-setaliases-introfull": "Vous êtes en train de définir les alias en $2 pour [[$1]]. Plusieurs alias doivent être séparés par une barre verticale (<code>|</code>).",
"wikibase-setaliases-intro": "Ce formulaire vous permet de donner les alias d’une entité. Vous devez fournir l’ID de l’entité (par ex. Q23), un code de langue (par ex. \"en\") et les alias à fixer. Plusieurs alias sont séparés par un caractère trait vertical (<code>|</code>).",
"wikibase-setaliases-label": "Alias:",
"wikibase-setaliases-submit": "Fixer les alias",
"special-setlabeldescriptionaliases": "Définir le libellé, la description et les alias",
"wikibase-setlabeldescriptionaliases-introfull": "Vous définissez le libellé, la description et les alias dans $2 pour [[$1]]. Plusieurs alias sont séparés par un caractère barre verticale (<code>|</code>).",
"wikibase-setlabeldescriptionaliases-intro": "Ce formulaire vous permet de fixer le libellé, la description et les alias d’une entité. Vous devez d’abord fournir l’id de l’entité (par ex. « Q23 ») et un code de langue (par ex. « en »).",
"wikibase-setlabeldescriptionaliases-label-label": "Libellé :",
"wikibase-setlabeldescriptionaliases-description-label": "Description:",
"wikibase-setlabeldescriptionaliases-aliases-label": "Alias :",
"wikibase-setlabeldescriptionaliases-submit": "Définir le libellé, la description et les alias",
"special-setsitelink": "Définir un lien de site",
"wikibase-setsitelink-introfull": "Vous êtes en train de définir le lien de site $2 pour [[$1]].",
"wikibase-setsitelink-intro": "Ce formulaire vous permet de définir le lien de site d’un élément. Vous devez fournir l’identifiant de l’élément (par ex. « Q23 »), un identifiant de site (par ex. « enwiki ») et le lien de site à définir.",
"wikibase-setsitelink-intro-badges": "De plus, vous pouvez définir divers badges pour ce lien de site parmi ceux listés ci-dessous.",
"wikibase-setsitelink-site": "Id de site :",
"wikibase-setsitelink-label": "Lien de site :",
"wikibase-setsitelink-badges": "Insignes :",
"wikibase-setsitelink-submit": "Définir le lien de site",
"wikibase-setsitelink-invalid-site": "L’id de site « $1 » est inconnu. Veuillez utiliser un id de site existant, comme « enwiki ».",
"wikibase-setsitelink-not-item": "L’id $1 n’appartient pas à un élément.",
"wikibase-setsitelink-not-badge": "L’élément $1 n’est pas un insigne.",
"wikibase-setsitelink-add-failed": "Le lien de site n’a pas pu être enregistré.",
"wikibase-setsitelink-remove-failed": "Le site de lien n’a pas pu être supprimé.",
"wikibase-modifyentity-id": "Identifiant :",
"wikibase-modifyterm-language": "Code de langue :",
"special-mergeitems": "Fusionner les deux éléments",
"wikibase-mergeitems-intro": "Si vous fusionnez deux éléments, tous les libellés, descriptions, alias, liens de site et déclarations seront déplacés d’un élément vers l’autre.",
"wikibase-mergeitems-fromid": "L’id à partir duquel fusionner",
"wikibase-mergeitems-toid": "L’id vers lequel fusionner",
"wikibase-mergeitems-submit": "Fusionner les éléments",
"wikibase-mergeitems-success": "$1 a bien été fusionné avec $3 et redirigé.",
"wikibase-itemmerge-missing-parameter": "Entrée incomplète.",
"wikibase-itemmerge-not-item": "L'entité spécifiée n'est pas un élément.",
"wikibase-itemmerge-failed-save": "Impossible d'enregistrer l'élément.",
"wikibase-itemmerge-permissiondenied": "Permission refusée.",
"wikibase-itemmerge-failed-modify": "Impossible de fusionner les éléments, merci de résoudre tous les conflits existants avant de réessayer.",
"wikibase-itemmerge-no-such-entity": "Élément introuvable.",
"wikibase-itemmerge-cant-load-entity-content": "Impossible de charger l'élément",
"wikibase-itemmerge-cant-merge-self": "Impossible de fusionner un élément avec lui-même.",
"wikibase-tokencheck-missingtoken": "Jeton d'édition obligatoire",
"wikibase-tokencheck-mustposttoken": "La modification n’est possible qu’en utilisant des requêtes POST.",
"wikibase-tokencheck-badtoken": "Jeton d'édition refusé (votre session a peut-être expiré).",
"special-dispatchstats": "Statistiques de répartition des changements",
"wikibase-dispatchstats-intro": "Cette page fournit des statistiques à propos de la répartition des changements entre les clients.\nUn wiki client est averti d’un changement sur {{SITENAME}} une fois que la modification a été envoyée sur ce wiki, et que la file de travaux sur ce wiki a exécuté cette notification.\n* {{int:wikibase-dispatchstats-changes}} affiche le nombre et la date du plus ancien et du plus récent événements actuellement dans la file.\n* {{int:wikibase-dispatchstats-stats}} fournit des informations sur les wikis clients le plus et le moins ralenti, et un médian entre les deux. Pour chaque wiki, les informations suivantes sont fournies :\n** \"{{int:wikibase-dispatchstats-site-id}}\" est l’ID interne du wiki client.\n** \"{{int:wikibase-dispatchstats-pos}}\" est l’ID de la dernière modification envoyée à ce wiki.\n** \"{{int:wikibase-dispatchstats-lag-num}}\" est le nombre de modifications pas encore envoyées à ce wiki.\n** \"{{int:wikibase-dispatchstats-lag-time}}\" est la durée entre la dernière modification envoyée à ce wiki et la dernière modification effectuée sur {{SITENAME}}.\n** \"{{int:wikibase-dispatchstats-touched}}\" est le moment où le dernier lot de modifications a été envoyé au wiki.",
"wikibase-dispatchstats-no-stats": "Il n'y a actuellement aucune statistique disponible.",
"wikibase-dispatchstats-changes": "Statistiques du journal des changements",
"wikibase-dispatchstats-stats": "Statistiques de répartition",
"wikibase-dispatchstats-change-id": "Identifiant",
"wikibase-dispatchstats-change-timestamp": "Horodatage",
"wikibase-dispatchstats-oldest-change": "Les plus anciens",
"wikibase-dispatchstats-newest-change": "Les plus récents",
"wikibase-dispatchstats-site-id": "Site",
"wikibase-dispatchstats-pos": "Position",
"wikibase-dispatchstats-lag-num": "En attente",
"wikibase-dispatchstats-lag-time": "Retard",
"wikibase-dispatchstats-touched": "Touché",
"wikibase-dispatchstats-large-lag": "(très grand)",
"wikibase-dispatchstats-freshest": "Plus récent",
"wikibase-dispatchstats-stalest": "Plus ancien",
"wikibase-dispatchstats-median": "Médiane",
"wikibase-dispatchstats-average": "Moyenne",
"special-listdatatypes": "Liste de tous les types de données disponibles",
"wikibase-listdatatypes-intro": "Voici une liste de tous les types de données disponibles sur cette installation :",
"wikibase-listdatatypes-listproperties": "Liste des propriétés avec ce type de données",
"wikibase-history-title-with-label": "Historique des révisions de « $2 » ($1)",
"wikibase-history-title-without-label": "Historique des révisions de ($1)",
"special-listproperties": "Liste des propriétés",
"wikibase-listproperties-legend": "Obtenir une liste de propriétés par type de données",
"wikibase-listproperties-datatype": "Type de données :",
"wikibase-listproperties-all": "Tous les types de données",
"wikibase-listproperties-submit": "Rechercher",
"wikibase-listproperties-invalid-datatype": "$1 n'est pas un type de données valide.",
"special-entitieswithoutdescription": "Entités sans description",
"wikibase-entitieswithoutdescription-legend": "Obtenir une liste des entités sans description",
"special-entitieswithoutlabel": "Entités sans libellé",
"wikibase-entitieswithoutlabel-legend": "Récupérer la liste des entités sans libellé",
"wikibase-entitieswithoutlabel-label-language": "Code de langue :",
"wikibase-entitieswithoutlabel-label-type": "Type :",
"wikibase-entitieswithoutlabel-label-alltypes": "tous",
"wikibase-entitieswithoutlabel-submit": "Rechercher",
"wikibase-entitieswithoutlabel-invalid-language": "« $1 » n'est pas un code de langue valide.",
"wikibase-entitieswithoutlabel-invalid-type": "\"$1\" n’est pas un type d’entité valide.",
"special-itemswithoutsitelinks": "Éléments sans liens de site",
"special-entitydata": "Données d’entité",
"wikibase-entitydata-not-found": "Aucune entité avec l’ID « $1 » n’a été trouvée",
"wikibase-entitydata-not-acceptable": "Aucun format correspondant trouvé. Types MIME supportés : $1",
"wikibase-entitydata-bad-revision": "Impossible d’afficher la révision $2 de l’entité $1.",
"wikibase-entitydata-bad-id": "ID non valide : $1",
"wikibase-entitydata-unsupported-format": "Le format de données $1 n’est pas pris en charge par cette interface.",
"wikibase-entitydata-storage-error": "Échec au chargement de l’entité $1.",
"wikibase-entitydata-title": "Données d’entité",
"wikibase-entitydata-text": "Cette page fournit une interface de données liées à des valeurs d’entité. Veuillez fournir l’ID de l’entité dans l'URL, en utilisant la syntaxe de sous-page.\n* La négociation de contenu s’applique d’après l’entête Accept de votre client. Cela veut dire que les données d’entité seront fournies dans le format préféré par votre client. Pour un navigateur web, ce sera du HTML, ce qui redirigera votre navigateur vers la page normale de l’entité.\n* Vous pouvez demander explicitement un format de données spécifique en ajoutant l’extension de fichier appropriée à l’ID de l’entité : Q23.json renverra les données au format JSON, Q23.ttl renverra du RDF/Turtle, etc.",
"special-redirectentity": "Redirection d'une entité",
"wikibase-redirectentity-success": "$1 a bien été redirigé vers $2.",
"wikibase-redirectentity-fromid": "L’id depuis lequel rediriger",
"wikibase-redirectentity-toid": "L’id vers lequel rediriger",
"wikibase-redirectentity-submit": "Rediriger",
"special-mylanguagefallbackchain": "Mon enchaînement de langues de repli",
"wikibase-mylanguagefallbackchain-text": "L’enchaînement de langues de repli utilisé pour vous afficher les libellés des entités est présenté ci-dessous.",
"wikibase-mylanguagefallbackchain-babel": "Vous pouvez la modifier en mettant <nowiki>{{#babel: }}</nowiki> sur {{GENDER:$1|votre}} [[Special:MyPage|page utilisateur]].",
"wikibase-mylanguagefallbackchain-converted-item": "$1 - $2, traduit depuis $3 - $4",
"wikibase-api-unresolved-redirect": "L'identifiant de l'entité fait référence à une redirection, ce qui n'est pas pris en charge dans ce contexte.",
"wikibase-api-no-such-sitelink": "Impossible de trouver un lien de site vers '$1' en essayant de modifier les badges.",
"wikibase-api-target-not-empty": "La redirection ne peut être créée qu’en haut d’une entité vide.",
"wikibase-api-target-is-redirect": "La cible d’une redirection ne doit pas également être une redirection.",
"wikibase-api-target-is-incompatible": "Tentative pour rediriger vers une entité d’un type différent.",
"wikibase-api-cant-redirect": "Impossible de créer la redirection (peut-être parce que les redirections entre cette sorte d’entité ne sont pas du tout permises).",
"wikibase-self-conflict-patched": "Votre modification a été intégrée dans la dernière version, écrasant certaines de vos corrections intermédiaires.",
"wikibase-conflict-patched": "Votre modification a été intégrée dans la dernière version.",
"wikibase-restoreold": "restaurer",
"wikibase-restore-summary": "Restauration de la révision $1 par [[Special:Contributions/$2|$2]]",
"wikibase-no-direct-editing": "La modification directe est désactivée dans l'espace $1",
"wikibase-noentity": "Cette entité n’existe pas. Vous pouvez [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les journaux concernés]</span> pour savoir où elle est allée.",
"wikibase-noentity-createone": "Vous pouvez aussi [[$1|en créer une nouvelle]].",
"wikibase-special-mergeitems-error-prefix": "Impossible de fusionner les éléments. L'erreur suivante s'est produite :",
"wikibase-item-summary-wbsetitem": "Création d’un nouvel élément",
"wikibase-item-summary-wbcreate-new": "Création d’un nouvel élément",
"wikibase-item-summary-wbcreateredirect": "Redirigé vers $4",
"wikibase-item-summary-wbeditentity": "Nouvel élément créé",
"wikibase-item-summary-wbeditentity-create": "Création d’un nouvel élément",
"wikibase-item-summary-wbeditentity-update": "Modification d’un élément",
"wikibase-item-summary-wbeditentity-override": "Élément réinitialisé",
"wikibase-item-summary-wbsetreference": "Référence modifiée",
"wikibase-item-summary-wbsetreference-add": "Ajout d'une référence à une affirmation",
"wikibase-item-summary-wbsetreference-set": "Modification d'une référence d'une affirmation",
"wikibase-item-summary-wbsetlabel-add": "Libellé [$2] ajouté",
"wikibase-item-summary-wbsetlabel-set": "Changement du libellé [$2]",
"wikibase-item-summary-wbsetlabel-remove": "Retrait du libellé [$2]",
"wikibase-item-summary-wbsetdescription-add": "Description [$2] ajoutée",
"wikibase-item-summary-wbsetdescription-set": "Modification de la description [$2]",
"wikibase-item-summary-wbsetdescription-remove": "Retrait de la description [$2]",
"wikibase-item-summary-wbsetaliases-set": "{{PLURAL:$1|Alias}} [$2] défini(s)",
"wikibase-item-summary-wbsetaliases-add-remove": "Ajout et retrait {{PLURAL:$1|d’un alias|d’alias}} [$2]",
"wikibase-item-summary-wbsetaliases-add": "Ajout {{PLURAL:$1|d’un alias|d’alias}} [$2]",
"wikibase-item-summary-wbsetaliases-remove": "Retrait {{PLURAL:$1|d’un alias|d’alias}} [$2]",
"wikibase-item-summary-wbsetlabeldescriptionaliases": "Libellé, description et alias de [$2] modifiés",
"wikibase-item-summary-wbsetsitelink-add": "Lien vers [$2] ajouté",
"wikibase-item-summary-wbsetsitelink-add-both": "Lien ajouté avec des badges à [$2]",
"wikibase-item-summary-wbsetsitelink-set": "Lien vers [$2] modifié",
"wikibase-item-summary-wbsetsitelink-set-badges": "Badges modifiés pour [$2]",
"wikibase-item-summary-wbsetsitelink-set-both": "Lien et badges modifiés pour [$2]",
"wikibase-item-summary-wbsetsitelink-remove": "Lien vers [$2] supprimé",
"wikibase-item-summary-wblinktitles-create": "Cet élément créé pour connecter les pages",
"wikibase-item-summary-wblinktitles-connect": "Lien de langue ajouté pour connecter les pages",
"wikibase-item-summary-wbcreateclaim-value": "{{PLURAL:$1|Affirmation ajoutée|Affirmations ajoutées}}",
"wikibase-item-summary-wbcreateclaim-novalue": "{{PLURAL:$1|Valeur spéciale «&nbsp;aucune valeur&nbsp;» ajoutée|Valeurs spéciales «&nbsp;aucune valeur&nbsp;» ajoutées}}",
"wikibase-item-summary-wbcreateclaim-somevalue": "{{PLURAL:$1|Affirmation ajoutée : «&nbsp;valeur inconnue&nbsp;»|A\nffirmations ajoutées : «&nbsp;valeur inconnue&nbsp;»}}",
"wikibase-item-summary-wbcreateclaim": "{{PLURAL:$1|Affirmation ajoutée|A\nffirmation ajoutée}}",
"wikibase-item-summary-wbsetclaimvalue": "{{PLURAL:$1|affirmation modifiée|affirmations modifiées}}",
"wikibase-item-summary-wbremoveclaims": "{{PLURAL:$1|Affirmation supprimée|Affirmations supprimées}}",
"wikibase-item-summary-special-create-item": "Un élément [$2] créé avec {{PLURAL:$1|la valeur|les valeurs}}",
"wikibase-item-summary-wbcreateclaim-create": "Affirmation ajoutée",
"wikibase-item-summary-wbremoveclaims-remove": "{{PLURAL:$1|Affirmation supprimée|Affirmations supprimées}}",
"wikibase-item-summary-wbsetclaim-update": "{{PLURAL:$3|Affirmation modifiée|Affirmations modifiées}}",
"wikibase-item-summary-wbsetclaim-create": "{{PLURAL:$3|affirmation créée|Affirmations créées}}",
"wikibase-item-summary-wbsetclaim-update-qualifiers": "{{PLURAL:$4|Un qualifieur|$4 qualifieurs}} d’{{PLURAL:$3|affirmation|affirmations}} {{PLURAL:$4|modifié|modifiés}}",
"wikibase-item-summary-wbsetclaim-update-references": "{{PLURAL:$4|Une référence|$4 références}} d’{{PLURAL:$3|affirmation|affirmations}} {{PLURAL:$4|modifiée|modifiées}}",
"wikibase-item-summary-wbsetclaim-update-rank": "Rang {{PLURAL:$3|de l’affirmation|des affirmations}} modifié",
"wikibase-item-summary-clientsitelink-update": "Page déplacée de [$3] à [$4]",
"wikibase-item-summary-clientsitelink-remove": "Page de [$3] supprimée",
"wikibase-item-summary-wbsetqualifier-add": "{{PLURAL:$1|qualifieur ajouté|qualifieurs ajoutés}}",
"wikibase-item-summary-wbsetqualifier-update": "{{PLURAL:$1|qualifieur modifié|qualifieurs modifiés}}",
"wikibase-item-summary-wbremovequalifiers-remove": "{{PLURAL:$1|qualifieur supprimé|qualifieurs supprimés}}",
"wikibase-item-summary-wbremovereferences-remove": "Suppression {{PLURAL:$3|d'une référénce|de réferences}} dans une affirmation",
"wikibase-item-summary-wbmergeitems-from": "Élément fusionné depuis $3",
"wikibase-item-summary-wbmergeitems-to": "Élément fusionné avec $3",
"wikibase-property-summary-wbcreate-new": "Création d’une nouvelle propriété",
"wikibase-property-summary-wbcreateclaim-create": "Affimation créée",
"wikibase-property-summary-wbcreateclaim": "{{PLURAL:$1|Une affirmation créée|Affirmations créées}}",
"wikibase-property-summary-wbsetclaimvalue": "Définir {{PLURAL:$1|une valeur d’affirmation|des valeurs d’affirmations}}",
"wikibase-property-summary-wbsetreference": "Définir une référence",
"wikibase-property-summary-wbsetreference-add": "Référence à l’affirmation ajoutée",
"wikibase-property-summary-wbsetreference-set": "Référence à l’affirmation modifiée",
"wikibase-property-summary-wbremoveclaims": "{{PLURAL:$1|Une affirmation supprimée|Affirmations supprimées}}",
"wikibase-property-summary-wbremoveclaims-remove": "{{PLURAL:$1|Affirmation supprimée|Affirmations supprimées}}",
"wikibase-property-summary-wbeditentity-create": "Création d’une nouvelle propriété",
"wikibase-property-summary-wbeditentity-update": "Modification d’une propriété",
"wikibase-property-summary-wbeditentity-override": "Une propriété outrepassée",
"wikibase-property-summary-wbsetlabel-add": "Libellé [$2] ajouté",
"wikibase-property-summary-wbsetlabel-set": "Changement du libellé [$2]",
"wikibase-property-summary-wbsetlabel-remove": "Retrait du libellé [$2]",
"wikibase-property-summary-wbsetdescription-add": "Description [$2] ajoutée",
"wikibase-property-summary-wbsetdescription-set": "Modification de la description [$2]",
"wikibase-property-summary-wbsetdescription-remove": "Retrait de la description [$2]",
"wikibase-property-summary-wbsetaliases-set": "Alias [$2] {{PLURAL:$1|défini|définis}}",
"wikibase-property-summary-wbsetaliases-add-remove": "Ajout et retrait {{PLURAL:$1|d’un alias|d’alias}} [$2]",
"wikibase-property-summary-wbsetaliases-add": "Ajout {{PLURAL:$1|d’un alias|d’alias}} [$2]",
"wikibase-property-summary-wbsetaliases-remove": "Retrait {{PLURAL:$1|d’un alias|d’alias}} [$2]",
"wikibase-property-summary-wbsetlabeldescriptionaliases": "Libellé, description et alias de [$2] modifiés",
"wikibase-property-summary-wbsetclaim-update": "{{PLURAL:$3|Affirmation modifiée|Affirmations modifiées}}",
"wikibase-property-summary-wbsetclaim-create": "{{PLURAL:$3|Affirmation créée|Affirmations créées}}",
"wikibase-property-summary-wbsetclaim-update-qualifiers": "{{PLURAL:$4|Un qualifieur|$4 qualifieurs}} d’{{PLURAL:$3|affirmation|affirmations}} {{PLURAL:$4|modifié|modifiés}}",
"wikibase-property-summary-wbsetclaim-update-references": "{{PLURAL:$4|Une référence|$4 références}} d’{{PLURAL:$3|affirmation|affirmations}} {{PLURAL:$4|modifiée|modifiées}}",
"wikibase-property-summary-wbsetclaim-update-rank": "Rang de {{PLURAL:$3|affirmation|affirmations}} modifié",
"wikibase-property-summary-wbsetqualifier-add": "{{PLURAL:$1|Qualifieur ajouté|Qualifieurs ajoutés}}",
"wikibase-property-summary-wbsetqualifier-update": "{{PLURAL:$1|Qualifieur modifié|Qualifieurs modifiés}}",
"wikibase-property-summary-wbremovequalifiers-remove": "{{PLURAL:$1|Qualifieur supprimé|Qualifieurs supprimés}}",
"wikibase-property-summary-wbremovereferences-remove": "{{PLURAL:$3|Référence de l’affirmation supprimée|Références de l’affirmation supprimées}}",
"wikibase-property-summary-special-create-property": "Propriété [$2] créée avec {{PLURAL:$1|une valeur|des valeurs}}",
"wikibase-listdatatypes-wikibase-item-head": "Élément",
"wikibase-listdatatypes-wikibase-item-body": "Lien vers d’autres éléments du projet. Quand une valeur est saisie, l’espace de l’espace de noms « Élément » du projet sera scruté à la recherche des éléments correspondants.",
"wikibase-listdatatypes-wikibase-property-head": "Propriété",
"wikibase-listdatatypes-wikibase-property-body": "Lien vers les propriétés du projet. Quand une valeur est saisie, l’espace de noms « Property » du projet sera scruté pour trouver des propriétés correspondantes.",
"wikibase-listdatatypes-commonsmedia-head": "Médias communs",
"wikibase-listdatatypes-commonsmedia-body": "Lien vers des fichiers hébergés sur Wikimedia Commons. Quand une valeur est entrée, l’espace de noms « Fichier » de Wikimedia Commons sera scruté à la recherche des fichiers correspondantes.",
"wikibase-listdatatypes-globe-coordinate-head": "Coordonnées du globe",
"wikibase-listdatatypes-globe-coordinate-body": "Données littérales pour une position géographique donnée sous forme de paire latitude-longitude en GMS ou en degrés décimaux pour le corps céleste concerné. Par défaut, \"Terre\" puis \"WGS84\". Cela ajoute une résolution et une portée.\n* latitude — première partie implicite (float, dms, dm, dd) de la chaîne des coordonnées, la direction étant donnée soit par le signe en préfixe ou par le N/S en suffixe\n* longitude – seconde partie implicite (float, dms, dm, dd) de la chaîne des coordonnées, la direction étant donnée soit par le signe en préfixe soit par le E/W en suffixe\n* globe – valeur de donnée explicite (?), fournissant le corps céleste, par défaut Terre \"http://www.wikidata.org/entity/Q2\"",
"wikibase-listdatatypes-quantity-head": "Quantité",
"wikibase-listdatatypes-quantity-body": "Champ de donnée littérale pour une quantité qui se rapporte à un type d’unité bien défini. L’unité réelle va dans les valeurs de donnée qui sont entrées.\n* montant — partie implicite de la chaîne (l’application du préfixe de l’unité n’est pas clair)\n* unité — partie implicite de la chaîne, « 1 » par défaut (l’application du corps standardisé n’est pas claire)\n* majorant — majorant de la quantité",
"wikibase-listdatatypes-monolingualtext-head": "Texte monolingue",
"wikibase-listdatatypes-monolingualtext-body": "Champ de donnée littéral pour une chaîne qui n’est pas traduite dans d’autres langues. Ce type de chaîne est défini une fois et réutilisé dans toutes les langues. Une utilisation typique concerne les noms géographiques écrits dans la langue locale, un identifiant de type quelconque, une formule chimique ou un nom scientifique latin.\n* langue — valeur explicite pour identifier la langue de la partie texte\n* value — valeur explicite pour la chaîne dans la variante spécifique de la langue",
"wikibase-listdatatypes-multilingualtext-head": "Texte multilingue",
"wikibase-listdatatypes-multilingualtext-body": "Champ de donnée littéral pour une chaîne qui doit être traduite en d’autres langues. Une utilisation typique concerne un nom d’entité d’intérêt global qui a des formes écrites non locales. Elles peuvent différer à la fois dans les langues et les systèmes de script.\n* language — valeur explicite pour identifier la langue de la partie texte\n* value — valeur explicite pour la chaîne dans la variante spécifique de la langue",
"wikibase-listdatatypes-string-head": "Chaîne",
"wikibase-listdatatypes-string-body": "Champ de donnée littéral pour une chaîne de glyphes. Une utilisation typique concerne les identifiants qui ont des formes écrites ne dépendant pas de la langue du lecteur.\n* value — valeur explicite pour la chaîne dans la variante spécifique de la langue",
"wikibase-listdatatypes-time-head": "Date",
"wikibase-listdatatypes-time-body": "Champ de donnée littéral pour une valeur d’horodatage. Fournit un horodatage avec certaines précision et limites. L’horodatage est toujours enregistré en interne au format grégorien proleptique, mais peut utiliser d’autres formats lors de l’analyse et de la mise en forme.\n* time — valeur explicite pour le point dans le temps, représentée sous forme d’un horodatage ressemblant à ISO 8601, par ex. +2013-01-01T00:00:00Z. L’année est toujours signée et complétée pour être entre 1 et 16 chiffres.\n* timezone — valeur explicite sous forme d’entier signé. L’information de fuseau horaire est un décalage de l’UTC en minutes.\n* before — valeur entière explicite pour le nombre d’unités possible après l’horodatage fourni. L’unité est indiquée par la précision.\n* after — valeur entière explicite pour le nombre d’unités possible avant l’horodatage fourni. L’unité est indiquée par la précision.\n* precision — valeur explicite encodée en entier court. Les nombres ont la signification suivante: 0 — milliard d’années, 1 — centaine de million d’années, …, 6 — millénaire, 7 — siècle, 8 — décennie, 9 — année, 10 — mois, 11 — jour, 12 — heure, 13 — minute, 14 — seconde.\n* calendarmodel — valeur explicite fournie sous forme d’une URI. Elle identifie le modèle de calendrier qui doit être utilisé pour afficher cette valeur d’horodatage.",
"wikibase-listdatatypes-url-head": "URL",
"wikibase-listdatatypes-url-body": "Champ de données littéral pour une URL. Les URLs sont limitées aux protocoles supportés aussi pour les liens externes en wikitexte.",
"wikibase-concept-uri": "URI du concept",
"wikibase-concept-uri-tooltip": "URI qui identifie le concept décrit par cet élément",
"wikibase-add-badges": "Ajouter des badges",
"datatypes-type-url": "URL",
"content-model-wikibase-item": "Élément Wikibase",
"content-model-wikibase-property": "Propriété de Wikibase",
"content-model-wikibase-query": "Requête de Wikibase",
"right-item-term": "Modifier les termes de l’élément (libellés, descriptions, alias)",
"right-item-merge": "Fusionner les éléments",
"right-item-redirect": "Créer des redirections d’élément",
"right-property-term": "Modifier les termes de la propriété (libellés, descriptions, alias)",
"right-property-create": "Créer des propriétés",
"wikibase-entity-not-viewable-title": "Le type de contenu diverge : Impossible d'afficher le contenu",
"wikibase-entity-not-viewable": "Le contenu fourni de type \"$1\" n'est pas une Entité ne peut pas être affiché par Wikibase.",
"action-item-merge": "fusionner les éléments",
"action-property-create": "créer des propriétés",
"apihelp-wbavailablebadges-description": "Recherche les éléments de badge disponibles.",
"apihelp-wbavailablebadges-example-1": "Recherche tous les éléments de badge disponibles",
"apihelp-wbcreateclaim-description": "Crée les déclarations Wikibase.",
"apihelp-wbcreateclaim-param-entity": "ID de l’entité à laquelle vous ajoutez la déclaration",
"apihelp-wbcreateclaim-param-property": "ID de la propriété snaks",
"apihelp-wbcreateclaim-param-value": "Valeur de l’assertion simple lors de la création d’une déclaration avec une assertion simple avec une valeur",
"apihelp-wbcreateclaim-param-snaktype": "Le type d’assertion simple",
"apihelp-wbcreateclaim-example-1": "Crée une déclaration pour l’élément Q42 de la propriété P9001 avec une assertion simple sans valeur.",
"apihelp-wbcreateclaim-example-2": "Crée une déclaration pour l’élément Q42 de la propriété P9002 avec une valeur de chaîne « estunechaine »",
"apihelp-wbcreateclaim-example-3": "Crée une déclaration pour l’élément Q42 de la propriété P9003 avec une valeur de l’élément Q1",
"apihelp-wbcreateclaim-example-4": "Crée une déclaration pour l’élément Q42 de la propriété P9004 avec une valeur d’assertion simple de coordonnée",
"apihelp-wbcreateredirect-description": "Crée les redirections d’entité.",
"apihelp-wbcreateredirect-param-from": "ID d’entité pour faire une redirection",
"apihelp-wbcreateredirect-param-to": "ID d’entité vers laquelle faire pointer la redirection",
"apihelp-wbcreateredirect-param-bot": "Marquer cette modification comme faite par robot. Cette marque d’URL sera respectée uniquement si l’utilisateur appartient au groupe « bot ».",
"apihelp-wbcreateredirect-example-1": "Transformer Q11 en une redirection vers Q12",
"apihelp-wbeditentity-description": "Crée une nouvelle entité Wikibase unique et la modifie avec l’information sérialisée.",
"apihelp-wbeditentity-param-id": "L’identifiant de l’entité, y compris le préfixe.\nUtiliser soit 'id' soit 'site' et 'title' ensemble.",
"apihelp-wbeditentity-param-site": "Un identifiant pour le site sur lequel se trouve la page.\nÀ utiliser ensemble avec 'title' pour faire un lien de site complet.",
"apihelp-wbeditentity-param-title": "Titre de la page à associer.\nÀ utiliser avec 'site' pour faire un lien de site complet.",
"apihelp-wbeditentity-param-baserevid": "L’identifiant numérique de la révision sur laquelle baser la modification.\nIl est utilisé pour détecter les conflits à l’enregistrement.",
"apihelp-wbeditentity-param-summary": "Résumé de la modification.\nSera complété par un commentaire automatiquement généré. La longueur maximale du commentaire automatique ajouté au résumé est de 260 caractères. Notez bien que tout ce qui dépasse cette limite sera tronqué.",
"apihelp-wbeditentity-param-bot": "Marquer cette modification comme robot. Cette marque d’URL ne sera respectée que si l’utilisateur appartient au groupe « bot ».",
"apihelp-wbeditentity-param-data": "L’objet sérialisé qui est utilisé comme source de données.\nUne entité nouvellement créée se verra affectée un 'id'.",
"apihelp-wbeditentity-param-clear": "Si positionné, l’entité complète est vidée avant le traitement.\nL’entité ne sera pas enregistrée avant d’être remplie avec les « données », éventuellement avec des parties exclues.",
"apihelp-wbeditentity-param-new": "Si positionné, une nouvelle entité sera créée.\nY mettre le type de l’entité que vous voulez créer — actuellement 'item'|'property'.\nIl n’est pas permis de le positionner quand 'id' est déjà mis.",
"apihelp-wbeditentity-example-1": "Créer un nouvel élément vide, renvoyer la structure complète de l’entité",
"apihelp-wbeditentity-example-2": "Créer un nouvel élément et définir des libellés pour de et en",
"apihelp-wbeditentity-example-3": "Créer une nouvelle propriété contenant les données json, retourner la structure complète de l’élément",
"apihelp-wbeditentity-example-4": "Effacer toutes les données de l’entité avec l’ID Q42",
"apihelp-wbeditentity-example-5": "Effacer toutes les données de l’entité avec l’ID Q42 et définir un libellé pour en",
"apihelp-wbeditentity-example-6": "Définit le lien de site pour nowiki, en l’écrasant s’il existe déjà",
"apihelp-wbeditentity-example-7": "Définit la description pour nb, l’écrasant si elle existe déjà",
"apihelp-wbeditentity-example-8": "Crée une nouvelle déclaration sur l’élément pour la propriété P56 et une valeur de « ChaineExemple »",
"apihelp-wbeditentity-example-9": "Supprime les déclarations pour l’élément avec les GUIDs Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F et Q42$GH678DSA-01PQ-28XC-HJ90-DDFD9990126X",
"apihelp-wbeditentity-example-10": "Fixe la déclaration avec le GUID à la valeur de la déclaration",
"apihelp-wbformatvalue-description": "Met en forme DataValues.",
"apihelp-wbformatvalue-param-generate": "Le format de sortie souhaité à générer.",
"apihelp-wbformatvalue-param-datatype": "Le type de donnée de la valeur. C’est distinct du type de la valeur",
"apihelp-wbformatvalue-param-datavalue": "La donnée à mettre en forme. Ce doit être une sérialisation JSON d’un objet DataValue.",
"apihelp-wbformatvalue-param-options": "Les options que devrait utiliser la mise en forme. Fournies sous forme d’objet JSON.",
"apihelp-wbformatvalue-example-1": "Mettre en forme une valeur de chaîne simple.",
"apihelp-wbformatvalue-example-2": "Mettre en forme une valeur de chaîne sous forme d’une URL en HTML.",
"apihelp-wbgetclaims-description": "Obtenir les réclamations de Wikibase.",
"apihelp-wbgetclaims-param-entity": "ID de l’entité de laquelle obtenir les déclarations. Obligatoire sauf si le GUID de la déclaration est fourni.",
"apihelp-wbgetclaims-param-property": "Filtre facultatif pour renvoyer uniquement les déclarations avec une assertion simple principale qui a la propriété spécifiée.",
"apihelp-wbgetclaims-param-claim": "Un GUID identifiant la déclaration. Obligatoire sauf si l’entité est fournie. Le GUID est l’identifiant unique global pour une déclaration, par ex. « q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F ».",
"apihelp-wbgetclaims-param-rank": "Filtre facultatif pour renvoyer uniquement les déclarations qui ont le rang spécifié",
"apihelp-wbgetclaims-param-props": "Certaines parties de la déclaration sont renvoyées de façon facultative. Ce paramètre contrôle lesquelles sont renvoyées.",
- "apihelp-wbgetclaims-param-ungroupedlist": "Ne pas regrouper les assertions simples par ID de propriété",
"apihelp-wbgetclaims-example-1": "Obtenir les déclarations pour l’élément d’ID Q42",
"apihelp-wbgetclaims-example-2": "Obtenir les déclarations pour l’élément avec l’ID Q42 et la propriété avec l’ID P2",
"apihelp-wbgetclaims-example-3": "Obtenir les déclarations pour l’élément d’ID Q42 qui sont de rang normal",
"apihelp-wbgetclaims-example-4": "Obtenir la déclaration de GUID Q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F",
"apihelp-wbgetentities-description": "Obtiens les données de multiples entités de Wikibase.",
"apihelp-wbgetentities-param-ids": "Les IDs des entités desquelles on veut obtenir les données",
"apihelp-wbgetentities-param-sites": "Identifiant pour le site sur lequel résident les pages correspondantes\nÀ utiliser avec 'title', mais fournit uniquement un site pour plusieurs titres ou plusieurs sites pour un seul titre.",
"apihelp-wbgetentities-param-titles": "Le titre de la page correspondante\nÀ utiliser avec 'sites', mais ne fournir qu'un site pour plusieurs titres ou plusieurs sites pour un seul titre.",
"apihelp-wbgetentities-param-redirects": "Si les redirections doivent être résolues.\nSi mis à « no », les redirections seront traitées comme des entités supprimées.",
"apihelp-wbgetentities-param-props": "Le nom des propriétés à récupérer de chaque entité.\nSera filtré ultérieurement par les langues fournies.",