Update to MediaWiki 1.27.1

This commit is contained in:
Pierre Schmitz 2016-09-25 09:13:49 +02:00
parent 7c2a4c95e1
commit 4c074e3465
6925 changed files with 1216335 additions and 213578 deletions

View File

@ -1,6 +1,6 @@
{{int:version-credits-summary}}
<!--
MediaWiki 1.26 is a collaborative project released under the
MediaWiki 1.27 is a collaborative project released under the
GNU General Public License v2. We would like to recognize the
following names for their contribution to the product.
-->
@ -138,6 +138,7 @@ following names for their contribution to the product.
* Erwin Dokter
* Étienne Beaulé
* Federico Leva
* Florian Schmidt
* fomafix
* FunPika
* Gabriel Wicke
@ -169,6 +170,7 @@ following names for their contribution to the product.
* Louperivois
* Lucas Garczewski
* Luigi Corsaro
* Luke Faraone
* Lupo
* Madman
* Manuel Menal

View File

@ -5,7 +5,7 @@ GEM
astrolabe (1.3.0)
parser (>= 2.2.0.pre.3, < 3.0)
builder (3.2.2)
childprocess (0.5.6)
childprocess (0.5.9)
ffi (~> 1.0, >= 1.0.11)
cucumber (1.3.20)
builder (>= 2.1.2)
@ -13,15 +13,15 @@ GEM
gherkin (~> 2.12)
multi_json (>= 1.7.5, < 2.0)
multi_test (>= 0.1.2)
data_magic (0.21)
data_magic (0.22)
faker (>= 1.1.2)
yml_reader (>= 0.4)
yml_reader (>= 0.6)
diff-lcs (1.2.5)
domain_name (0.5.24)
domain_name (0.5.20160310)
unf (>= 0.0.5, < 1.0.0)
faker (1.4.3)
faker (1.6.3)
i18n (~> 0.5)
faraday (0.9.1)
faraday (0.9.2)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
@ -29,30 +29,31 @@ GEM
ffi (1.9.10)
gherkin (2.12.2)
multi_json (~> 1.3)
headless (1.0.2)
headless (2.2.3)
http-cookie (1.0.2)
domain_name (~> 0.5)
i18n (0.7.0)
json (1.8.3)
mediawiki_api (0.4.1)
mediawiki_api (0.5.0)
faraday (~> 0.9, >= 0.9.0)
faraday-cookie_jar (~> 0.0, >= 0.0.6)
mediawiki_selenium (1.2.1)
cucumber (~> 1.3, >= 1.3.10)
headless (~> 1.0, >= 1.0.1)
mediawiki_selenium (1.7.0)
cucumber (~> 1.3, >= 1.3.20)
headless (~> 2.0, >= 2.1.0)
json (~> 1.8, >= 1.8.1)
mediawiki_api (~> 0.2, >= 0.2.1)
mediawiki_api (~> 0.5, >= 0.5.0)
page-object (~> 1.0)
rest-client (~> 1.6, >= 1.6.7)
rspec-core (~> 2.14, >= 2.14.4)
rspec-expectations (~> 2.14, >= 2.14.4)
syntax (~> 1.2, >= 1.2.0)
thor (~> 0.19, >= 0.19.1)
mime-types (2.6.1)
multi_json (1.11.2)
mime-types (2.99.1)
multi_json (1.11.3)
multi_test (0.1.2)
multipart-post (2.0.0)
netrc (0.10.3)
page-object (1.1.0)
netrc (0.11.0)
page-object (1.1.1)
page_navigation (>= 0.9)
selenium-webdriver (>= 2.44.0)
watir-webdriver (>= 0.6.11)
@ -62,10 +63,12 @@ GEM
ast (>= 1.1, < 3.0)
powerpack (0.1.1)
rainbow (2.0.0)
rake (11.1.1)
rest-client (1.8.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 3.0)
netrc (~> 0.7)
rspec-core (2.99.2)
rspec-expectations (2.99.2)
diff-lcs (>= 1.1.3, < 2.0)
rubocop (0.32.1)
@ -75,28 +78,28 @@ GEM
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.4)
ruby-progressbar (1.7.5)
rubyzip (1.1.7)
selenium-webdriver (2.46.2)
rubyzip (1.2.0)
selenium-webdriver (2.53.0)
childprocess (~> 0.5)
multi_json (~> 1.0)
rubyzip (~> 1.0)
websocket (~> 1.0)
syntax (1.2.0)
thor (0.19.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.1)
watir-webdriver (0.8.0)
unf_ext (0.0.7.2)
watir-webdriver (0.9.1)
selenium-webdriver (>= 2.46.2)
websocket (1.2.2)
yml_reader (0.5)
websocket (1.2.3)
yml_reader (0.7)
PLATFORMS
ruby
DEPENDENCIES
mediawiki_selenium (~> 1.2.1)
rubocop
mediawiki_selenium (~> 1.7)
rake (~> 11.1, >= 11.1.1)
rubocop (~> 0.32.1)
BUNDLED WITH
1.10.5
1.10.6

View File

@ -33,9 +33,7 @@ module.exports = function ( grunt ) {
},
banana: {
options: {
disallowBlankTranslations: false,
disallowDuplicateTranslations: false,
disallowUnusedTranslations: false
disallowBlankTranslations: false
},
core: 'languages/i18n/',
api: 'includes/api/i18n/',
@ -58,8 +56,9 @@ module.exports = function ( grunt ) {
included: true,
served: false
} ],
logLevel: 'DEBUG',
frameworks: [ 'qunit' ],
reporters: [ 'dots' ],
reporters: [ 'progress' ],
singleRun: true,
autoWatch: false,
// Some tests in extensions don't yield for more than the default 10s (T89075)

782
HISTORY
View File

@ -1,6 +1,371 @@
Change notes from older releases. For current info see RELEASE-NOTES-1.26.
Change notes from older releases. For current info see RELEASE-NOTES-1.27.
== MediaWiki 1.25 ==
= MediaWiki 1.26 =
== MediaWiki 1.26.2 ==
This is a maintenance release of the MediaWiki 1.26 branch.
=== Changes since 1.26.1 ===
* (T121892) Fix fatal error on some Special pages, introduced in 1.26.1.
== MediaWiki 1.26.1 ==
This is a maintenance release of the MediaWiki 1.26 branch.
=== Changes since 1.26.0 ===
* (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
that do not begin with a slash. This enabled trivial XSS attacks.
Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
"/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
error.
* (T119309) SECURITY: Use hash_compare() for edit token comparison
* (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
with '@' as file uploads
* (T115522) SECURITY: Passwords generated by User::randomPassword() can no
longer be shorter than $wgMinimalPasswordLength
* (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
result in improper blocks being issued
* (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
and related pages no longer use HTTP redirects and are now redirected by
MediaWiki
* Fixed ConfigException in ExpandTemplates due to AlwaysUseTidy.
* Fixed stray literal \n in Special:Search.
* Fix issue that breaks HHVM Repo Authorative mode.
* (T120267) Work around APCu memory corruption bug
== MediaWiki 1.26.0 ==
=== Configuration changes in 1.26 ===
* $wgPasswordResetRoutes['email'] = true by default.
* $wgEnableParserCache was deprecated, set $wgParserCacheType to CACHE_NONE
instead if you want to disable the parser cache.
* New-style continuation is now the default for API action=continue. Clients may
use the 'rawcontinue' parameter to receive raw query-continue data, but the
new style is encouraged as it's harder to implement incorrectly.
* Deprecated API formats dump and wddx have been completely removed.
* (T7645) The "Signature" button on the edit toolbar is now hidden by default
in non-talk namespaces. A new configuration variable,
$wgExtraSignatureNamespaces, controls in which subject (non-talk) namespaces
the "Signature" button on the edit toolbar will be displayed.
* $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
feature that was never enabled by default.
* $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
This experimental feature was never enabled by default and is obsolete as of
MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
* $wgMasterWaitTimeout was removed (deprecated in 1.24).
* Fields in ParserOptions are now private. Use the accessors instead.
* Custom LESS functions (defined via $wgResourceLoaderLESSFunctions or
in extension.json) have been removed, after being deprecated in 1.24.
* $wgAlwaysUseTidy has been removed.
* ResetSessionID hook has been removed. Nothing seems to use it.
* Certain AuthPlugin methods are deprecated in favor of new hooks:
** AuthPlugin::initUser() is replaced by LocalUserCreated.
** AuthPlugin::updateUser() is replaced by UserLoggedIn.
** AuthPlugin::updateExternalDB() is replaced by the existing UserSaveSettings.
** AuthPlugin::updateExternalDBGroups() is replaced by UserGroupsChanged.
** AuthPluginUser::isHidden() is replaced by UserIsHidden.
** AuthPluginUser::isLocked() is replaced by UserIsLocked.
* The UserRights hook is deprecated in favor of the new UserGroupsChanged hook.
* AuthPlugin::initUser() and AuthPlugin::updateUser() should no longer replace
the passed User object.
* $wgBlockAllowsUTEdit is now set to true by default. This allows
blocked users to edit their talk pages unless explicitly disabled
when they are being blocked.
=== New features in 1.26 ===
* (T51506) Now action=info gives estimates of actual watchers for a page.
See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
to learn how to configure if needed.
* Change tags can now be hidden in the interface by disabling the associated
"tag-<id>" interface message.
* ':' (colon) is now invalid in usernames for new accounts. Existing accounts
are not affected.
* Added a new hook, 'LogException', to log exceptions in nonstandard ways.
* Revive the 'SpecialSearchResultsAppend' hook which occurs after the list of
search results are rendered. The initial use case is to append a "give us
feedback" link beneath the search results.
* Added a new hook, 'RejectParserCacheValue', which allows extensions to
reject an otherwise-successful parser cache lookup. The intent is to allow
extensions to manage the eviction of archaic HTML output from the cache.
* (T68699) The expiration of the UserID and Token login cookies
($wgExtendedLoginCookieExpiration) can be configured independently of the
expiration of all other cookies ($wgCookieExpiration).
* (T50519) Support for generating JPEG/PNG thumbnails from WebP images added
if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
of WebP images still disabled by default. Add $wgFileExtensions[] =
'webp'; to LocalSettings.php to enable uploading of WebP images.
* Added new hooks 'EnhancedChangesListModifyLineData' &
'EnhancedChangesListModifyBlockLineData', to modify the data used to build
lines in enhanced recentchanges and watchlist.
* Caches that need purging ability now use the WANObjectCache interface.
This corresponds to a new $wgMainWANCache setting, which defaults to using
the $wgMainCacheType settings.
* Callers needing fast light-weight data stores use $wgMainStash to select
the store type from $wgObjectCaches. The default is the local database.
* Interface message overrides in the MediaWiki namespace will now be cached in
memcached and APC (if available), rather than memcached and local files.
* Added a new hook, 'RandomPageQuery', to allow modification of the query used
by Special:Random to select random pages.
* $wgTransactionalTimeLimit was added, which controls the request time limit
for potentially slow POST requests that need to be as atomic as possible.
* ResourceLoader now loads all scripts asynchronously. The top-queue and
startup modules are no longer synchronously loaded.
* 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
page. During the deprecation period, the styles will only be loaded on pages
which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
only be loaded if explicitly required.
* If search returns zero results and current search engine has a "did you mean"
suggestion, results for suggestion will be shown. Can be disabled by setting
$wgSearchRunSuggestedQuery to false.
* Added several JavaScript libraries for uploading files to MediaWiki
from the client-side. See documentation for mw.Upload and its
subclasses for more information.
* Added OOUI dialogs and layout for file upload interfaces. See
documentation for mw.Upload.Dialog, mw.Upload.BookletLayout and its
subclasses for more information.
=== extension.json changes in 1.26 ===
* (T99344) The extension.json schema is now versioned. All extensions
and skins should set a "manifest_version" property corresponding to
the schema version they were written for. The only supported version
currently is "1".
* (T102523) The error message if a non-array attribute is set was improved.
* (T107646) Configuration settings can now specify how they should be merged,
which is necessary for arrays using integer keys.
* (T110389) Adding namespaces through extension.json now actually works
* $wgNamespaceProtection can now be set in extension.json.
* $wgCapitalLinkOverrides can now be set in extension.json.
* (T97186) Extensions using a custom prefix for their configuration settings
can now set a "_prefix" key to override the default of "wg".
* (T99084) Extensions can now specify what MediaWiki core versions they
depend upon.
* (T105236) The extension.json schema now validates custom classes in
the "ResourceModules" property properly.
=== External library changes in 1.26 ===
==== Upgraded external libraries ====
* Updated es5-shim from v4.0.0 to v4.1.5.
* Updated json2 from revision 2014-02-04 to 2015-05-03.
* Updated Sinon.JS from 1.10.3 to 1.15.4.
* Updated jQuery Client from v1.0.0 to v2.0.0.
* Updated QUnit from v1.17.1 to v1.18.0.
* Updated liuggio/statsd-php-client from v1.0.12 to v1.0.16.
* Updated oojs/oojs-ui from v0.11.3 to v0.12.12.
* Updated wikimedia/cdb from v1.0.1 to v1.3.0.
* Updated wikimedia/utfnormal from v1.0.2 to v1.0.3.
* Updated wikimedia/composer-merge-plugin from v1.0.0 to v1.3.0.
* Updated zordius/lightncandy from v0.18 to v0.21.
==== New external libraries ====
* Added composer/semver v1.0.0.
* Added mediawiki/at-ease v1.1.0.
* Added wikimedia/assert v0.2.2.
* Added wikimedia/ip-set v1.0.1.
* Added wikimedia/wrappedstring v2.0.0.
==== Removed and replaced external libraries ====
* Replaced leafo/lessphp v0.5.0 with oyejorge/less.php v1.7.0.9.
=== Bug fixes in 1.26 ===
* (T53283) load.php sometimes sends 304 response without full headers
* (T65198) Talk page tabs now have a "rel=discussion" attribute
* (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
* (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
value if set to an empty string.
=== Action API changes in 1.26 ===
* New-style continuation is now the default for action=continue. Clients may
use the 'rawcontinue' parameter to receive raw query-continue data, but the
new style is encouraged as it's harder to implement incorrectly.
* Deprecated API formats dump and wddx have been completely removed.
* API action=query&list=tags: The displayname can now be boolean false if the
tag is meant to be hidden from user interfaces.
* action=import no longer allows both the namespace= and rootpage= parameters
to be set. If they are both set, the value of rootpage= will be ignored.
* prop=revision output in enum mode is now sorted by timestamp rather than
revision ID. This usually won't make any difference.
* (T102645) Namespace list from meta=siteinfo&siprop=namespaces is now an array
with formatversion=2.
* Various other output from meta=siteinfo will now always be arrays instead of
sometimes being numerically-indexed objects with formatversion=2.
* When errors about users being blocked are returned, they now include
information about the relevant block.
* (T99926) list=random has higher limits, in line with other API modules.
* list=random's rnredirect parameter is deprecated in favor of a new
rnfilterredir parameter that also allows for listing both redirects and
non-redirects.
* list=random now supports continuation.
* API responses to GET requests may now include ETag and Last-Modified headers,
and will honor corresponding If-None-Match and If-Modified-Since on such
requests.
=== Action API internal changes in 1.26 ===
* New metadata item ApiResult::META_KVP_MERGE to allow for merging the KVP key
into the value when the value is an assoc.
* API action modules may now provide values for the RFC 7232 ETag and
Last-Modified headers. The API will check these against If-None-Match and
If-Modified-Since request headers on GET requests and avoid executing the
module when appropriate.
=== Languages updated in 1.26 ===
MediaWiki supports over 350 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* Languages added:
** ase (American sign language), thanks to translator Icemandeaf
** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
मेश सिंह बोहरा, and राम प्रसाद जोशी
** luz (لئری دوٙمینی / Southern Luri)
** olo (Livvinкarjala / Livvi-Karelian), thanks to translators Denö, Hiloin Natoi,
Ilja.mos, and Mashoi7
=== Other changes in 1.26 ===
* ChangeTags::tagDescription() will return false if the interface message
for the tag is disabled.
* Added PageHistoryPager::doBatchLookups hook.
* Added $wikiId parameter to FormatAutocomments hook.
* Added ParserCacheSaveComplete to ParserCache
* supportsDirectEditing and supportsDirectApiEditing methods added to
ContentHandler, to provide a way for ApiEditPage and EditPage to check
if direct editing of content is allowed. These methods return false,
by default for the ContentHandler base class and true for TextContentHandler
and it's derivative classes (everything in core). For Content types that
do not support direct editing, an alternative mechanism should be provided
for editing, such as action overrides or specific api modules.
* mediaWiki.confirmCloseWindow now returns an object of functions, instead of
one function. The callback can't be called directly any more. The callback
function is replaced with confirmCloseWindow.release().
* BREAKING CHANGE: Added an optional ResouceLoaderContext parameter to
ResourceLoaderModule::getDependencies(). Extension classes that override that
method should be updated. If they aren't updated, PHP Strict standards
warnings will appear when E_STRICT error reporting is enabled. Note: in the
near future, this parameter will probably become non-optional.
* Removed maintenance script deleteImageMemcached.php.
* MWFunction::newObj() was removed (deprecated in 1.25).
ObjectFactory::getObjectFromSpec() should be used instead.
* The parser will no longer randomize the string it uses to mark the place of
items that were stripped during parsing. It will use a fixed string instead.
This causes the parser to re-use the regular expressions it uses to search
and replace markers rather than generate novel expressions on each parse.
Re-using regular expressions will improve performance on HHVM and the
forthcoming PHP 7. The interfaces changes accompanying this change are:
- Parser::getRandomString() and Parser::uniqPrefix() have been deprecated.
- The $uniq_prefix argument for Parser::extractTagsAndParams() and the
$prefix argument for StripState::_construct() are deprecated and their
value is ignored.
* wfSuppressWarnings() and wfRestoreWarnings() were split into a separate library,
mediawiki/at-ease, and are now deprecated. Callers should use
MediaWiki\suppressWarnings() and MediaWiki\restoreWarnings() directly.
* The Block class constructor now takes an associative array of parameters
instead of many optional positional arguments. Calling the constructor the old
way will issue a deprecation warning.
* The jquery.mwExtension module was deprecated.
* $wgSpecialPageGroups was removed (deprecated in 1.21).
* SpecialPageFactory::setGroup was removed (deprecated in 1.21).
* SpecialPageFactory::getGroup was removed (deprecated in 1.21).
* DatabaseBase::ignoreErrors() is now protected.
* BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
a lengthy deprecation period.
* The ScopedPHPTimeout class was removed.
* Removed maintenance script fixSlaveDesync.php.
* Watchlist tokens, SpecialResetTokens, and User::getTokenFromOption()
are deprecated. Applications using those can work via the OAuth
extension instead. New tokens types should not be added.
* DatabaseBase::errorCount() was removed (unused).
* $wgDeferredUpdateList was removed.
* DeferredUpdates::addHTMLCacheUpdate() was removed.
= MediaWiki 1.25 =
== MediaWiki 1.25.5 ==
This is a maintenance release of the MediaWiki 1.25 branch.
=== Changes since 1.25.4 ===
* (T121892) Fix fatal error on some Special pages, introduced in 1.25.4.
== MediaWiki 1.25.4 ==
This is a security and maintenance release of the MediaWiki 1.25 branch.
=== Changes since 1.25.3 ===
* (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
that do not begin with a slash. This enabled trivial XSS attacks.
Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
"/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
error.
* (T119309) SECURITY: Use hash_compare() for edit token comparison
* (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
with '@' as file uploads
* (T115522) SECURITY: Passwords generated by User::randomPassword() can no
longer be shorter than $wgMinimalPasswordLength
* (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
result in improper blocks being issued
* (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
and related pages no longer use HTTP redirects and are now redirected by
MediaWiki
* (T103237) $wgUseGzip had no effect when using file cache.
* (T114606) mw.notify was not correctly fixed to the page if
initialized while not at the top of the page.
* Fix issue that breaks HHVM Repo Authorative mode.
== MediaWiki 1.25.3 ==
This is a security and maintenance release of the MediaWiki 1.25 branch.
=== Changes since 1.25.2 ===
* (T98975) Fix having multiple callbacks for a single hook.
* (T107632) maintenance/refreshLinks.php did not always remove all links
pointing to nonexistent pages.
* (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
value if set to an empty string.
* (T62174) Provide fallbacks for use of mb_convert_encoding() in
HtmlFormatter. It was causing an error when accessing the api help page
if the mbstring PHP extension was not installed.
* (T105896) Confirmation emails would sometimes contain invalid codes.
* (T105597) Fixed edit stash inclusion queries.
* (T91850) SECURITY: Add throttle check in ApiUpload and SpecialUpload
* (T91203, T91205) SECURITY: API: Improve validation in chunked uploading
* (T95589) SECURITY: RevDel: Check all revisions for suppression, not just the
first
* (T108616) SECURITY: Avoid exposure of local path in PNG thumbnails
== MediaWiki 1.25.2 ==
This is a security and maintenance release of the MediaWiki 1.25 branch.
=== Changes since 1.25.1 ===
* (T94116) SECURITY: Compare API watchlist token in constant time
* (T97391) SECURITY: Escape error message strings in thumb.php
* (T106893) SECURITY: Don't leak autoblocked IP addresses on
Special:DeletedContributions
* (T102562) Fix InstantCommons parameters to handle the new HTTPS-only
policy of Wikimedia Commons.
* (T100767) Setting a configuration setting for skin or extension to
false in LocalSettings.php was not working.
* (T100635) API action=opensearch json output no longer breaks when
$wgDebugToolbar is enabled.
* (T102522) Using an extension.json or skin.json file which has
a "manifest_version" property for 1.26 compatability will no longer
trigger warnings.
* (T86156) Running updateSearchIndex.php will not throw an error as
page_restrictions has been added to the locked table list.
* Special:Version would throw notices if using SVN due to an incorrectly
named variable. Add an additional check that an index is defined.
== MediaWiki 1.25.1 ==
This is a bug fix release of the MediaWiki 1.25 branch.
=== Changes since 1.25 ===
* (T100351) Fix syntax errors in extension.json of ConfirmEdit extension
== MediaWiki 1.25.0 ==
=== Configuration changes in 1.25 ===
* $wgPageShowWatchingUsers was removed.
@ -504,49 +869,108 @@ changes to languages because of Bugzilla reports.
loadedScripts object, from wikibits.js (deprecated since 1.17) now emit
warnings through mw.log.warn when accessed.
= MediaWiki 1.24 =
== Compatibility ==
== MediaWiki 1.24.6 ==
MediaWiki 1.25 requires PHP 5.3.3 or later. There is experimental support for
HHVM 3.3.0.
This is a maintenance release of the MediaWiki 1.24 branch.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
=== Changes since 1.24.5 ===
* (T121892) Fix fatal error on some Special pages, introduced in 1.24.5.
The supported versions are:
== MediaWiki 1.24.5 ==
* MySQL 5.0.3 or later
* PostgreSQL 8.3 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
This is a security and maintenance release of the MediaWiki 1.23 branch.
== Upgrading ==
=== Changes since 1.24.4 ===
* (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
that do not begin with a slash. This enabled trivial XSS attacks.
Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
"/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
error.
* (T119309) SECURITY: Use hash_compare() for edit token comparison
* (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
with '@' as file uploads
* (T115522) SECURITY: Passwords generated by User::randomPassword() can no
longer be shorter than $wgMinimalPasswordLength
* (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
result in improper blocks being issued
* (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
and related pages no longer use HTTP redirects and are now redirected by
MediaWiki
* (T103237) $wgUseGzip had no effect when using file cache.
1.25 has several database changes since 1.24, and will not work without schema
updates. Note that due to changes to some very large tables like the revision
table, the schema update may take quite long (minutes on a medium sized site,
many hours on a large site).
== MediaWiki 1.24.4 ==
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
This is a security and maintenance release of the MediaWiki 1.24 branch.
If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
new database fields are filled with data.
=== Changes since 1.24.3 ===
If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
with MediaWiki 1.21.
* (T91653) Minimal PSR-3 debug logger to support backports from 1.25+.
* (T68650) Fix indexing of moved pages with PostgreSQL. Requires running
update.php to fix.
* (T91850) SECURITY: Add throttle check in ApiUpload and SpecialUpload
* (T91203, T91205) SECURITY: API: Improve validation in chunked uploading
* (T95589) SECURITY: RevDel: Check all revisions for suppression, not just the
first
* (T108616) SECURITY: Avoid exposure of local path in PNG thumbnails
Don't forget to always back up your database before upgrading!
== MediaWiki 1.24.3 ==
See the file UPGRADE for more detailed upgrade instructions.
This is a security and maintenance release of the MediaWiki 1.24 branch.
For notes on 1.24.x and older releases, see HISTORY.
=== Changes since 1.24.2 ===
== MediaWiki 1.24 ==
* (T94116) SECURITY: Compare API watchlist token in constant time
* (T97391) SECURITY: Escape error message strings in thumb.php
* (T106893) SECURITY: Don't leak autoblocked IP addresses on
Special:DeletedContributions
* Update jQuery from v1.11.2 to v1.11.3.
* (T102562) Fix InstantCommons parameters to handle the new HTTPS-only
policy of Wikimedia Commons.
== MediaWiki 1.24.2 ==
This is a security and maintenance release of the MediaWiki 1.24 branch.
=== Changes since 1.24.1 ===
* (T85848, T71210) SECURITY: Don't parse XMP blocks that contain XML entities,
to prevent various DoS attacks.
* (T85848) SECURITY: Don't allow directly calling Xml::isWellFormed, to reduce
likelihood of DoS.
* (T88310) SECURITY: Always expand xml entities when checking SVG's.
* (T73394) SECURITY: Escape > in Html::expandAttributes to prevent XSS.
* (T85855) SECURITY: Don't execute another user's CSS or JS on preview.
* (T64685) SECURITY: Allow setting maximal password length to prevent DoS when
using PBKDF2.
* (T85349, T85850, T86711) SECURITY: Multiple issues fixed in SVG filtering to
prevent XSS and protect viewer's privacy.
* Fix case of SpecialAllPages/SpecialAllMessages in SpecialPageFactory to fix
loading these special pages when $wgAutoloadAttemptLowercase is false.
* (bug T70087) Fix Special:ActiveUsers page for installations using
PostgreSQL.
* (bug T76254) Fix deleting of pages with PostgreSQL. Requires a schema change
and running update.php to fix.
== MediaWiki 1.24.1 ==
This is a security and maintenance release of the MediaWiki 1.24 branch.
=== Changes since 1.24.0 ===
* (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
could lead to xss. Permission to edit MediaWiki namespace is required to
exploit this.
* (bug T77028) [SECURITY] Malicious site can bypass CORS restrictions in
$wgCrossSiteAJAXdomains in API calls if it only included an allowed domain as
part of its name.
* (bug T74222) The original patch for T74222 was reverted as unnecessary.
* Fixed a couple of entries in RELEASE-NOTES-1.24.
* (bug T76168) OutputPage: Add accessors for some protected properties.
* (bug T74834) Make 1.24 branch directly installable under PostgreSQL.
== MediaWiki 1.24.0 ==
=== Configuration changes in 1.24 ===
* MediaWiki will no longer run if register_globals is enabled. It has been
@ -1240,8 +1664,204 @@ of files that are no longer available follows.
* skins/common/images/icons/fileicon.png
* skins/common/images/ksh/button_S_italic.png
= MediaWiki 1.23 =
== MediaWiki 1.23 ==
== MediaWiki 1.23.13 ==
This is a maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.12 ===
* (T121892) Fix fatal errors on some Special pages, introduced in 1.23.12.
== MediaWiki 1.23.12 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.11 ===
* (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
that do not begin with a slash. This enabled trivial XSS attacks.
Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
"/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
error.
* (T119309) SECURITY: Use hash_compare() for edit token comparison
* (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
with '@' as file uploads
* (T115522) SECURITY: Passwords generated by User::randomPassword() can no
longer be shorter than $wgMinimalPasswordLength
* (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
result in improper blocks being issued
* (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
and related pages no longer use HTTP redirects and are now redirected by
MediaWiki
== MediaWiki 1.23.11 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.10 ===
* (T91850) SECURITY: Add throttle check in ApiUpload and SpecialUpload
* (T91203, T91205) SECURITY: API: Improve validation in chunked uploading
* (T108616) SECURITY: Avoid exposure of local path in PNG thumbnails
== MediaWiki 1.23.10 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.9 ===
* (T94116) SECURITY: Compare API watchlist token in constant time
* (T97391) SECURITY: Escape error message strings in thumb.php
* (T106893) SECURITY: Don't leak autoblocked IP addresses on
Special:DeletedContributions
* (bug 67644) Make AutoLoaderTest handle namespaces
* (T91653) Minimal PSR-3 debug logger to support backports from 1.25+.
* (T102562) Fix InstantCommons parameters to handle the new HTTPS-only
policy of Wikimedia Commons.
== MediaWiki 1.23.9 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.8 ===
* (T85848, T71210) SECURITY: Don't parse XMP blocks that contain XML entities,
to prevent various DoS attacks.
* (T85848) SECURITY: Don't allow directly calling Xml::isWellFormed, to reduce
likelihood of DoS.
* (T88310) SECURITY: Always expand xml entities when checking SVG's.
* (T73394) SECURITY: Escape > in Html::expandAttributes to prevent XSS.
* (T85855) SECURITY: Don't execute another user's CSS or JS on preview.
* (T85349, T85850, T86711) SECURITY: Multiple issues fixed in SVG filtering to
prevent XSS and protect viewer's privacy.
* (bug T68650) Fix indexing of moved pages with PostgreSQL. Requires running
update.php to fix.
* (bug T70087) Fix Special:ActiveUsers page for installations using
PostgreSQL.
== MediaWiki 1.23.8 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.7 ===
* (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
could lead to xss. Permission to edit MediaWiki namespace is required to
exploit this.
* (bug T77028) [SECURITY] Malicious site can bypass CORS restrictions in
$wgCrossSiteAJAXdomains in API calls if it only included an allowed domain as
part of its name.
* (bug T74222) The original patch for T74222 was reverted as unnecessary.
== MediaWiki 1.23.7 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.6 ===
* (bugs 66776, 71478) SECURITY: User PleaseStand reported a way to inject code
into API clients that used format=php to process pages that underwent flash
policy mangling. This was fixed along with improving how the mangling was done
for format=json, and allowing sites to disable the mangling using
$wgMangleFlashPolicy.
* (bug 70901) SECURITY: User Jackmcbarn reported that the ability to update
the content model for a page could allow an unprivileged attacker to edit
another user's common.js under certain circumstances. The user right
"editcontentmodel" was added, and is needed to change a revision's content
model.
* (bug 71111) SECURITY: User PleaseStand reported that on wikis that allow raw
HTML, it is not safe to preview wikitext coming from an untrusted source such
as a cross-site request. Thus add an edit token to the form, and when raw HTML
is allowed, ensure the token is provided before showing the preview. This
check is not performed on wikis that both allow raw HTML and anonymous
editing, since there are easier ways to exploit that scenario.
* (bug 72222) SECURITY: Do not show log action when the entry is revdeleted with
DELETED_ACTION. NOTICE: this may be reverted in a future release pending a
public RFC about the desired functionality. This issue was reported by user
Bawolff.
* (bug 71621) Make allowing site-wide styles on restricted special pages a
config option.
* (bug 42723) Added updated version history from 1.19.2 to 1.22.13
* $wgMangleFlashPolicy was added to make MediaWiki's mangling of anything that
might be a flash policy directive configurable.
== MediaWiki 1.23.6 ==
This is a maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.5 ===
* (Bug 72274) Job queue not running (HTTP 411) due to missing
Content-Length: header
* (Bug 67440) Allow classes to be registered properly from installer
== MediaWiki 1.23.5 ==
This is a security release of the MediaWiki 1.23 branch.
=== Changes since 1.23.4 ===
* (bug 70672) SECURITY: OutputPage: Remove separation of css and js module
allowance.
== MediaWiki 1.23.4 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.3 ===
* (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style>
elements; normalize style elements and attributes before filtering; add
checks for attributes that contain css; add unit tests for html5sec and
reported bugs.
* (bug 65998) Make MySQLi work with non-standard socket.
* (bug 66986) GlobalVarConfig shouldn't throw exceptions for null-valued config
settings.
== MediaWiki 1.23.3 ==
This is a maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.2 ===
* (bug 68501) Correctly handle incorrect namespace in cleanupTitles.php.
* (bug 64970) Fix support for blobs on DatabaseOracle::update.
* (bug 66574) Display MediaWiki:Loginprompt on the login page.
* (bug 67870) wfShellExec() cuts off stdout at multiples of 8192 bytes.
* (bug 60629) Handle invalid language code gracefully in
Language::fetchLanguageNames.
* (bug 62017) Restore the number of rows shown on Special:Watchlist.
* Check for boolean false result from database query in SqlBagOStuff.
== MediaWiki 1.23.2 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.1 ===
* (bug 68187) SECURITY: Prepend jsonp callback with comment.
* (bug 66608) SECURITY: Fix for XSS issue in bug 66608: Generate the URL used
for loading a new page in Javascript,instead of relying on the URL in the link
that has been clicked.
* (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and
ParserOutput.
* (bug 68313) Preferences: Turn stubthreshold back into a combo box.
* (bug 65214) Fix initSiteStats.php maintenance script.
* (bug 67594) Special:ActiveUsers: Fix to work with PostgreSQL.
== MediaWiki 1.23.1 ==
This is a security and maintenance release of the MediaWiki 1.23 branch.
=== Changes since 1.23.0 ===
* (bug 65839) SECURITY: Prevent external resources in SVG files.
* (bug 67025) Special:Watchlist: Don't try to render empty row.
* (bug 66922) Don't allow some E_NOTICE messages to end up in the LocalSettings.php.
* (bug 66467) FileBackend: Avoid using popen() when "parallelize" is disabled.
* (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects
like only extracting the tail of the file partially or not at all.
* (bug 66182) Removed -x flag on some php files.
== MediaWiki 1.23.0 ==
=== Configuration changes in 1.23 ===
* (bug 13250) Restored method for clearing a watchlist in web UI
@ -1710,8 +2330,46 @@ changes to languages because of Bugzilla reports.
==== Removed globals ====
* $wgBetterDirectionality (deprecated in 1.18)
== MediaWiki 1.22 ==
= MediaWiki 1.22 =
== MediaWiki 1.22.15 ==
This is a security and maintenance release of the MediaWiki 1.22 branch.
=== Changes since 1.22.14 ===
* (bug T76686) [SECURITY] thumb.php outputs wikitext message as raw HTML, which
could lead to xss. Permission to edit MediaWiki namespace is required to
exploit this.
* (bug T77028) [SECURITY] Malicious site can bypass CORS restrictions in
$wgCrossSiteAJAXdomains in API calls if it only included an allowed domain as
part of its name.
* (bug T74222) The original patch for T74222 was reverted as unnecessary.
== MediaWiki 1.22.14 ==
This is a security and maintenance release of the MediaWiki 1.22 branch.
=== Changes since 1.22.13 ===
* (bugs 66776, 71478) SECURITY: User PleaseStand reported a way to inject code
into API clients that used format=php to process pages that underwent flash
policy mangling. This was fixed along with improving how the mangling was done
for format=json, and allowing sites to disable the mangling using
$wgMangleFlashPolicy.
* (bug 70901) SECURITY: User Jackmcbarn reported that the ability to update
the content model for a page could allow an unprivileged attacker to edit
another user's common.js under certain circumstances. The user right
"editcontentmodel" was added, and is needed to change a revision's content
model.
* (bug 72222) SECURITY: Do not show log action when the entry is revdeleted with
DELETED_ACTION. NOTICE: this may be reverted in a future release pending a
public RFC about the desired functionality. This issue was reported by user
Bawolff.
* (bug 71621) Make allowing site-wide styles on restricted special pages a
config option.
* $wgMangleFlashPolicy was added to make MediaWiki's mangling of anything that
might be a flash policy directive configurable.
== MediaWiki 1.22.13 ==
This is a maintenance release of the MediaWiki 1.22 branch.
@ -1828,6 +2486,8 @@ This is a security and maintenance release of the MediaWiki 1.22 branch.
* (bug 47055) Changed FOR UPDATE handling in Postgresql
* (bug 57026) Avoid extra parsing in prepareContentForEdit()
== MediaWiki 1.22.0 ==
=== Configuration changes in 1.22 ===
* $wgRedirectScript was removed. It was unused.
* Removed $wgLocalMessageCacheSerialized, it is now always true.
@ -2237,7 +2897,7 @@ This is a security and maintenance release of the MediaWiki 1.22 branch.
file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
* The new query module list=allfileusages to enumerate file usages was added.
=== Languages updated in 1.22===
=== Languages updated in 1.22 ===
MediaWiki supports over 350 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
@ -2355,7 +3015,7 @@ changes to languages because of Bugzilla reports.
* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
still works, but is deprecated.)
== MediaWiki 1.21 ==
= MediaWiki 1.21 =
== MediaWiki 1.21.11 ==
This is a security and maintenance release of the MediaWiki 1.21 branch.
@ -2443,6 +3103,8 @@ This is a maintenance release of the MediaWiki 1.21 branch.
* A problem with the Oracle SQL table creation was fixed.
* (PdfHandler extension) Fix warning if pdfinfo fails but pdftext succeeds.
== MediaWiki 1.21.0 ==
=== Configuration changes in 1.21 ===
* (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
* Deprecated $wgAllowRealName is removed. Use $wgHiddenPrefs[] = 'realname'
@ -2771,7 +3433,7 @@ changes to languages because of Bugzilla reports.
* BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
and moved it to the TitleBlacklist extension.
== MediaWiki 1.20 ==
= MediaWiki 1.20 =
== MediaWiki 1.20.8 ==
This is a security release of the MediaWiki 1.20 branch.
@ -2824,7 +3486,7 @@ This is a security release of the MediaWiki 1.20 branch.
== MediaWiki 1.20.3 ==
This is a security and maintenance release of the MediaWiki 1.20 branch.
== MediaWiki 1.20.2 ==
=== Changes since MediaWiki 1.20.2 ===
* New preference type - 'api'. Preferences of this type are not shown on Special:Preferences, but are still available via the action=options API. (Unbreaks MLEB.)
* (bug 44010) Context is passed to UserGetLanguageObject.
* The recursion guard on RequestContext::getLanguage() was weakened.
@ -2838,14 +3500,14 @@ This is a security and maintenance release of the MediaWiki 1.20 branch.
== MediaWiki 1.20.2 ==
This is a maintenance release of the MediaWiki 1.20 branch
== MediaWiki 1.20.1 ==
=== Changes since MediaWiki 1.20.1 ===
* (bug 42638) Fix API action=options&reset=1 & unit tests.
* (bug 42370) Fixed backport of 60cc060 to use mDoneWrites — caused * (bug 42592) User rights, preferences and other things are not saving in 1.20.1.
== MediaWiki 1.20.1 ==
This is a security release of the MediaWiki 1.20 branch
Changes since 1.20
=== Changes since 1.20.0 ===
* (bug 42202) Validate options to prevent html injection
* (bug 40995) Prevent session fixation in Special:UserLogin (CVE-2012-5391)
* (bug 41400) Prevent linker regex from exceeding PCRE backtrack limit
@ -2853,9 +3515,7 @@ Changes since 1.20
* (bug 40632) Remove CleanupPresentationalAttributes feature
* [Database] Fixed case where trx idle callbacks might be lost.
== MediaWiki 1.20 ==
== MediaWiki 1.20.0 ==
=== PHP 5.3 now required ===
Since 1.20, the lowest supported version of PHP is now 5.3.2. Please
@ -3222,7 +3882,7 @@ changes to languages because of Bugzilla reports.
== MediaWiki 1.19.21 ==
This is a maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.20===
=== Changes since 1.19.20 ===
* (bug 67440) Allow classes to be registered properly from installer.
* (bug 47281) Fixed a dumpBackup.php error with --uploads --include-filesoptions: Unable to find the wrapper "mwstore". * System administrators are encouraged to upgrade to this release or 1.22+ and produce a full data dump. https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Backing_up_a_wiki
* (bug 63049) Removed anonymous functions from ApiFormatBase, added in1.19.13 as part of the fix for bug 61362, for PHP 5.2 compatibility.
@ -3230,73 +3890,73 @@ This is a maintenance release of the MediaWiki 1.19 branch.
== MediaWiki 1.19.20 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.19===
=== Changes since 1.19.19 ===
* (bug 70672) SECURITY: OutputPage: Remove separation of css and js module allowance.
== MediaWiki 1.19.19 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.18===
=== Changes since 1.19.18 ===
* (bug 69008) SECURITY: Enhance CSS filtering in SVG files. Filter <style> elements; normalize style elements and attributes before filtering; add checks for attributes that contain css; add unit tests for html5sec and reported bugs.
== MediaWiki 1.19.18 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.17===
=== Changes since 1.19.17 ===
* (bug 68187) SECURITY: Prepend jsonp callback with comment.
* (bug 65778) SECURITY: Copy prevent-clickjacking between OutputPage and ParserOutput.
== MediaWiki 1.19.17 ==
This is a security and maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.16===
=== Changes since 1.19.16 ===
* (bug 65839) SECURITY: Prevent external resources in SVG files.
* (bug 66428) MimeMagic: Don't seek before BOF. This has weird side effects like only extracting the tail of the file partially or not at all.
== MediaWiki 1.19.16 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.15===
=== Changes since 1.19.15 ===
* (bug 65501) SECURITY: Don't parse usernames as wikitext on Special:PasswordReset.
== MediaWiki 1.19.15 ==
This is a security and maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.14===
=== Changes since 1.19.14 ===
Fixed resetting passwords.
* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages to appear blank or with missing text.
== MediaWiki 1.19.14 ==
This is a security and maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.13===
=== Changes since 1.19.13 ===
* (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword.
* (bug 62467) Set a title for the context during import on the cli.
== MediaWiki 1.19.13 ==
This is a security and maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.12===
=== Changes since 1.19.12 ===
* (bug 61362) SECURITY: API: Don't find links in the middle of api.php links.
* Use the correct branch of the extensions' git repositories.
== MediaWiki 1.19.12 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.11===
=== Changes since 1.19.11 ===
* (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted namespaces. Also disallow iframe elements. * User will get an error including the namespace name if they use a non- whitelisted namespace.
* (bug 61346) SECURITY: Make token comparison use constant time. It seems like our token comparison would be vulnerable to timing attacks. This will take constant time.
== MediaWiki 1.19.11 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.10===
=== Changes since 1.19.10 ===
* (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media formats
== MediaWiki 1.19.10 ==
This is a security release of the MediaWiki 1.19 branch.
=== Changes since 1.19.9===
=== Changes since 1.19.9 ===
* (bug 57550) SECURITY: Disallow stylesheets in SVG Uploads
* (bug 58088) SECURITY: Don't normalize U+FF3C to \ in CSS Checks
* (bug 58472) SECURITY: Disallow -o-link in styles
@ -3306,7 +3966,7 @@ This is a security release of the MediaWiki 1.19 branch.
== MediaWiki 1.19.9 ==
This is a security and maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.8===
=== Changes since 1.19.8 ===
* (bug 53032) SECURITY: Don't cache when a call could autocreate
* (bug 55332) SECURITY: Improve css javascript detection
* (bug 49717) Fix behaviour $wgVerifyMimeType = false; in Upload
@ -3317,7 +3977,7 @@ This is a security and maintenance release of the MediaWiki 1.19 branch.
This is a security and maintenance release of the MediaWiki 1.19 branch.
=== Changes since 1.19.7===
=== Changes since 1.19.7 ===
* SECURITY: Sanitize ResourceLoader exception messages
* SECURITY: Token-getting functions will fail when using jsonp callbacks.
* SECURITY: Fix extension detection with 2 .'s
@ -3330,7 +3990,7 @@ This is a security and maintenance release of the MediaWiki 1.19 branch.
This is a security release of the MediaWiki 1.19 branch
=== Changes since 1.19.6===
=== Changes since 1.19.6 ===
* (bug 48306) SECURITY: Run file validation checks on chunked uploads, and chunks of upload, during the upload process.
== MediaWiki 1.19.6 ==
@ -3338,7 +3998,7 @@ This is a security release of the MediaWiki 1.19 branch
This is a security and maintenance release of the MediaWiki 1.19 branch
=== Changes since 1.19.5===
=== Changes since 1.19.5 ===
* (bug 47304) SECURITY: Check SVG xml encoding against whitelist
* (bug 46590) Added AbortChangePassword hook to allow extensions to abort password changes from Special:ChangePassword
* Localisation updates from http://translatewiki.net.
@ -3351,7 +4011,7 @@ This is a security and maintenance release of the MediaWiki 1.19 branch
This is a security and maintenance release of the MediaWiki 1.19 branch
=== Changes since 1.19.4===
=== Changes since 1.19.4 ===
* (bug 47251) SECURITY: Disable external entities in Import
* (bug 46859) SECURITY: Disable external entities in XMLReader
* (bug 46084) SECURITY: Sanitize $limitReport before outputting
@ -3363,7 +4023,7 @@ This is a security and maintenance release of the MediaWiki 1.19 branch
This is a security release of the MediaWiki 1.19 branch
=== Changes since 1.19.3===
=== Changes since 1.19.3 ===
* New preference type - 'api'. Preferences of this type are not shown on Special:Preferences, but are still available via the action=options API.
* (bug 44010) Context is passed to UserGetLanguageObject.
* The recursion guard on RequestContext::getLanguage() was weakened.
@ -3375,7 +4035,7 @@ This is a security release of the MediaWiki 1.19 branch
This is a security release of the MediaWiki 1.19 branch
=== Changes since 1.19.2===
=== Changes since 1.19.2 ===
* (bug 40995) Prevent session fixation in Special:UserLogin (CVE-2012-5391)
* (bug 41400) Prevent linker regex from exceeding PCRE backtrack limit
* Increase permitted runtime for testParserTest (only used for continuous integration).

View File

@ -6,7 +6,7 @@ Starting with MediaWiki 1.2.0, it's possible to install and configure the wiki
"in-place", as long as you have the necessary prerequisites available.
Required software:
* Web server with PHP 5.3.3 or higher.
* Web server with PHP 5.5.9 or higher.
* A SQL server, the following types are supported
** MySQL 5.0.3 or higher
** PostgreSQL 8.3 or higher
@ -18,8 +18,7 @@ MediaWiki is developed and tested mainly on Unix/Linux platforms, but should
work on Windows as well.
If your PHP is configured as a CGI plug-in rather than an Apache module you may
experience problems, as this configuration is not well tested. safe_mode is also
not tested and unlikely to work.
experience problems, as this configuration is not well tested.
Support for rendering mathematical formulas requires installing the Math extension,
see https://www.mediawiki.org/wiki/Extension:Math

8
README
View File

@ -1,10 +1,10 @@
== MediaWiki ==
MediaWiki is a free and open-source wiki software package written in PHP. It
serves as the platform for Wikipedia and the other projects of the Wikimedia
Foundation, which deliver content in over 280 languages to more than half a
billion people each month. MediaWiki's reliability and robust feature set have
earned it a large and vibrant community of third-party users and developers.
serves as the platform for Wikipedia and the other Wikimedia projects, used
by hundreds of millions of people each month. MediaWiki is localised in over
350 languages and its reliability and robust feature set have earned it a large
and vibrant community of third-party users and developers.
MediaWiki is:

View File

@ -1,393 +0,0 @@
Security reminder: If you have PHP's register_globals option set, you must
turn it off. MediaWiki will not work with it enabled.
== MediaWiki 1.26.4 ==
This is a maintenance release of the MediaWiki 1.26 branch.
=== Changes since 1.26.3 ===
* BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
made by MediaWiki via a proxy. Relying on the http_proxy environment
variable is no longer supported.
* (T124163) Fixed fatal error in DifferenceEngine under HHVM.
* (T139565) SECURITY: API: Generate head items in the context of the given title
* (T137264) SECURITY: XSS in unclosed internal links
* (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
* (T133147) SECURITY: Require login to preview user CSS pages
* (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
the top file
* (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
permissions
* (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
* (T115333) SECURITY: Check read permission when loading page content in ApiParse
* Remove support for $wgWellFormedXml = false, all output is now well formed
== MediaWiki 1.26.3 ==
This is a maintenance release of the MediaWiki 1.26 branch.
=== Changes since 1.26.2 ===
* (T116266) Fixed undefined property notices in DairikiDiff under HHVM.
* (T123166) Fix fatal error when importing pages to titles which cannot be
created, such as invalid titles or titles the user is not allowed to edit.
* (T122056) Old tokens are remaining valid within a new session
* (T127114) Login throttle can be tricked using non-canonicalized usernames
* (T123653) Cross-domain policy regexp is too narrow
* (T123071) Incorrectly identifying http link in a's href attributes, due to
m modifier in regex
* (T129506) MediaWiki:Gadget-popups.js isn't renderable
* (T125283) Users occasionally logged in as different users after
SessionManager deployment
* (T103239) Patrol allows click catching and patrolling of any page
* (T122807) [tracking] Check php crypto primatives
* (T98313) Graphs can leak tokens, leading to CSRF
* (T130947) Diff generation should use PoolCounter
* (T133507) Careless use of $wgExternalLinkTarget is insecure
* (T132874) API action=move is not rate limited
* (T110143) strip markers can be used to get around html attribute escaping in
(many?) parser tags
* (T116030) Increase pbkdf2 parameter strengths
* (T127420) Pbkdf2Password does not check if hash_pbkdf2() succeeded
* (T126685) Globally throttle password attempts
== MediaWiki 1.26.2 ==
This is a maintenance release of the MediaWiki 1.26 branch.
=== Changes since 1.26.1 ===
* (T121892) Fix fatal error on some Special pages, introduced in 1.26.1.
== MediaWiki 1.26.1 ==
This is a maintenance release of the MediaWiki 1.26 branch.
=== Changes since 1.26.0 ===
* (T117899) SECURITY: $wgArticlePath can no longer be set to relative paths
that do not begin with a slash. This enabled trivial XSS attacks.
Configuration values such as "http://my.wiki.com/wiki/$1" are fine, as are
"/wiki/$1". A value such as "$1" or "wiki/$1" is not and will now throw an
error.
* (T119309) SECURITY: Use hash_compare() for edit token comparison
* (T118032) SECURITY: Don't allow cURL to interpret POST parameters starting
with '@' as file uploads
* (T115522) SECURITY: Passwords generated by User::randomPassword() can no
longer be shorter than $wgMinimalPasswordLength
* (T97897) SECURITY: Improve IP parsing and trimming. Previous behavior could
result in improper blocks being issued
* (T109724) SECURITY: Special:MyPage, Special:MyTalk, Special:MyContributions
and related pages no longer use HTTP redirects and are now redirected by
MediaWiki
* Fixed ConfigException in ExpandTemplates due to AlwaysUseTidy.
* Fixed stray literal \n in Special:Search.
* Fix issue that breaks HHVM Repo Authorative mode.
* (T120267) Work around APCu memory corruption bug
== MediaWiki 1.26 ==
=== Configuration changes in 1.26 ===
* $wgPasswordResetRoutes['email'] = true by default.
* $wgEnableParserCache was deprecated, set $wgParserCacheType to CACHE_NONE
instead if you want to disable the parser cache.
* New-style continuation is now the default for API action=continue. Clients may
use the 'rawcontinue' parameter to receive raw query-continue data, but the
new style is encouraged as it's harder to implement incorrectly.
* Deprecated API formats dump and wddx have been completely removed.
* (T7645) The "Signature" button on the edit toolbar is now hidden by default
in non-talk namespaces. A new configuration variable,
$wgExtraSignatureNamespaces, controls in which subject (non-talk) namespaces
the "Signature" button on the edit toolbar will be displayed.
* $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
feature that was never enabled by default.
* $wgResourceLoaderExperimentalAsyncLoading was deprecated and removed.
This experimental feature was never enabled by default and is obsolete as of
MediaWiki 1.26, in where ResourceLoader became fully asynchronous.
* $wgMasterWaitTimeout was removed (deprecated in 1.24).
* Fields in ParserOptions are now private. Use the accessors instead.
* Custom LESS functions (defined via $wgResourceLoaderLESSFunctions or
in extension.json) have been removed, after being deprecated in 1.24.
* $wgAlwaysUseTidy has been removed.
* ResetSessionID hook has been removed. Nothing seems to use it.
* Certain AuthPlugin methods are deprecated in favor of new hooks:
** AuthPlugin::initUser() is replaced by LocalUserCreated.
** AuthPlugin::updateUser() is replaced by UserLoggedIn.
** AuthPlugin::updateExternalDB() is replaced by the existing UserSaveSettings.
** AuthPlugin::updateExternalDBGroups() is replaced by UserGroupsChanged.
** AuthPluginUser::isHidden() is replaced by UserIsHidden.
** AuthPluginUser::isLocked() is replaced by UserIsLocked.
* The UserRights hook is deprecated in favor of the new UserGroupsChanged hook.
* AuthPlugin::initUser() and AuthPlugin::updateUser() should no longer replace
the passed User object.
* $wgBlockAllowsUTEdit is now set to true by default. This allows
blocked users to edit their talk pages unless explicitly disabled
when they are being blocked.
=== New features in 1.26 ===
* (T51506) Now action=info gives estimates of actual watchers for a page.
See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
to learn how to configure if needed.
* Change tags can now be hidden in the interface by disabling the associated
"tag-<id>" interface message.
* ':' (colon) is now invalid in usernames for new accounts. Existing accounts
are not affected.
* Added a new hook, 'LogException', to log exceptions in nonstandard ways.
* Revive the 'SpecialSearchResultsAppend' hook which occurs after the list of
search results are rendered. The initial use case is to append a "give us
feedback" link beneath the search results.
* Added a new hook, 'RejectParserCacheValue', which allows extensions to
reject an otherwise-successful parser cache lookup. The intent is to allow
extensions to manage the eviction of archaic HTML output from the cache.
* (T68699) The expiration of the UserID and Token login cookies
($wgExtendedLoginCookieExpiration) can be configured independently of the
expiration of all other cookies ($wgCookieExpiration).
* (T50519) Support for generating JPEG/PNG thumbnails from WebP images added
if ImageMagick is used as image scaler ($wgUseImageMagick = true). Uploading
of WebP images still disabled by default. Add $wgFileExtensions[] =
'webp'; to LocalSettings.php to enable uploading of WebP images.
* Added new hooks 'EnhancedChangesListModifyLineData' &
'EnhancedChangesListModifyBlockLineData', to modify the data used to build
lines in enhanced recentchanges and watchlist.
* Caches that need purging ability now use the WANObjectCache interface.
This corresponds to a new $wgMainWANCache setting, which defaults to using
the $wgMainCacheType settings.
* Callers needing fast light-weight data stores use $wgMainStash to select
the store type from $wgObjectCaches. The default is the local database.
* Interface message overrides in the MediaWiki namespace will now be cached in
memcached and APC (if available), rather than memcached and local files.
* Added a new hook, 'RandomPageQuery', to allow modification of the query used
by Special:Random to select random pages.
* $wgTransactionalTimeLimit was added, which controls the request time limit
for potentially slow POST requests that need to be as atomic as possible.
* ResourceLoader now loads all scripts asynchronously. The top-queue and
startup modules are no longer synchronously loaded.
* 'mediawiki.ui.button' styles are no longer unconditionally loaded on every
page. During the deprecation period, the styles will only be loaded on pages
which contain 'mw-ui-button' in their HTML. Starting in 1.28, the styles will
only be loaded if explicitly required.
* If search returns zero results and current search engine has a "did you mean"
suggestion, results for suggestion will be shown. Can be disabled by setting
$wgSearchRunSuggestedQuery to false.
* Added several JavaScript libraries for uploading files to MediaWiki
from the client-side. See documentation for mw.Upload and its
subclasses for more information.
* Added OOUI dialogs and layout for file upload interfaces. See
documentation for mw.Upload.Dialog, mw.Upload.BookletLayout and its
subclasses for more information.
== extension.json changes in 1.26 ==
* (T99344) The extension.json schema is now versioned. All extensions
and skins should set a "manifest_version" property corresponding to
the schema version they were written for. The only supported version
currently is "1".
* (T102523) The error message if a non-array attribute is set was improved.
* (T107646) Configuration settings can now specify how they should be merged,
which is necessary for arrays using integer keys.
* (T110389) Adding namespaces through extension.json now actually works
* $wgNamespaceProtection can now be set in extension.json.
* $wgCapitalLinkOverrides can now be set in extension.json.
* (T97186) Extensions using a custom prefix for their configuration settings
can now set a "_prefix" key to override the default of "wg".
* (T99084) Extensions can now specify what MediaWiki core versions they
depend upon.
* (T105236) The extension.json schema now validates custom classes in
the "ResourceModules" property properly.
=== External library changes in 1.26 ===
==== Upgraded external libraries ====
* Updated es5-shim from v4.0.0 to v4.1.5.
* Updated json2 from revision 2014-02-04 to 2015-05-03.
* Updated Sinon.JS from 1.10.3 to 1.15.4.
* Updated jQuery Client from v1.0.0 to v2.0.0.
* Updated QUnit from v1.17.1 to v1.18.0.
* Updated liuggio/statsd-php-client from v1.0.12 to v1.0.16.
* Updated oojs/oojs-ui from v0.11.3 to v0.12.12.
* Updated wikimedia/cdb from v1.0.1 to v1.3.0.
* Updated wikimedia/utfnormal from v1.0.2 to v1.0.3.
* Updated wikimedia/composer-merge-plugin from v1.0.0 to v1.3.0.
* Updated zordius/lightncandy from v0.18 to v0.21.
==== New external libraries ====
* Added composer/semver v1.0.0.
* Added mediawiki/at-ease v1.1.0.
* Added wikimedia/assert v0.2.2.
* Added wikimedia/ip-set v1.0.1.
* Added wikimedia/wrappedstring v2.0.0.
==== Removed and replaced external libraries ====
* Replaced leafo/lessphp v0.5.0 with oyejorge/less.php v1.7.0.9.
=== Bug fixes in 1.26 ===
* (T53283) load.php sometimes sends 304 response without full headers
* (T65198) Talk page tabs now have a "rel=discussion" attribute
* (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
* (T104142) $wgEmergencyContact and $wgPasswordSender now use their default
value if set to an empty string.
=== Action API changes in 1.26 ===
* New-style continuation is now the default for action=continue. Clients may
use the 'rawcontinue' parameter to receive raw query-continue data, but the
new style is encouraged as it's harder to implement incorrectly.
* Deprecated API formats dump and wddx have been completely removed.
* API action=query&list=tags: The displayname can now be boolean false if the
tag is meant to be hidden from user interfaces.
* action=import no longer allows both the namespace= and rootpage= parameters
to be set. If they are both set, the value of rootpage= will be ignored.
* prop=revision output in enum mode is now sorted by timestamp rather than
revision ID. This usually won't make any difference.
* (T102645) Namespace list from meta=siteinfo&siprop=namespaces is now an array
with formatversion=2.
* Various other output from meta=siteinfo will now always be arrays instead of
sometimes being numerically-indexed objects with formatversion=2.
* When errors about users being blocked are returned, they now include
information about the relevant block.
* (T99926) list=random has higher limits, in line with other API modules.
* list=random's rnredirect parameter is deprecated in favor of a new
rnfilterredir parameter that also allows for listing both redirects and
non-redirects.
* list=random now supports continuation.
* API responses to GET requests may now include ETag and Last-Modified headers,
and will honor corresponding If-None-Match and If-Modified-Since on such
requests.
=== Action API internal changes in 1.26 ===
* New metadata item ApiResult::META_KVP_MERGE to allow for merging the KVP key
into the value when the value is an assoc.
* API action modules may now provide values for the RFC 7232 ETag and
Last-Modified headers. The API will check these against If-None-Match and
If-Modified-Since request headers on GET requests and avoid executing the
module when appropriate.
=== Languages updated in 1.26 ===
MediaWiki supports over 350 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* Languages added:
** ase (American sign language), thanks to translator Icemandeaf
** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
मेश सिंह बोहरा, and राम प्रसाद जोशी
** luz (لئری دوٙمینی / Southern Luri)
** olo (Livvinкarjala / Livvi-Karelian), thanks to translators Denö, Hiloin Natoi,
Ilja.mos, and Mashoi7
=== Other changes in 1.26 ===
* ChangeTags::tagDescription() will return false if the interface message
for the tag is disabled.
* Added PageHistoryPager::doBatchLookups hook.
* Added $wikiId parameter to FormatAutocomments hook.
* Added ParserCacheSaveComplete to ParserCache
* supportsDirectEditing and supportsDirectApiEditing methods added to
ContentHandler, to provide a way for ApiEditPage and EditPage to check
if direct editing of content is allowed. These methods return false,
by default for the ContentHandler base class and true for TextContentHandler
and it's derivative classes (everything in core). For Content types that
do not support direct editing, an alternative mechanism should be provided
for editing, such as action overrides or specific api modules.
* mediaWiki.confirmCloseWindow now returns an object of functions, instead of
one function. The callback can't be called directly any more. The callback
function is replaced with confirmCloseWindow.release().
* BREAKING CHANGE: Added an optional ResouceLoaderContext parameter to
ResourceLoaderModule::getDependencies(). Extension classes that override that
method should be updated. If they aren't updated, PHP Strict standards
warnings will appear when E_STRICT error reporting is enabled. Note: in the
near future, this parameter will probably become non-optional.
* Removed maintenance script deleteImageMemcached.php.
* MWFunction::newObj() was removed (deprecated in 1.25).
ObjectFactory::getObjectFromSpec() should be used instead.
* The parser will no longer randomize the string it uses to mark the place of
items that were stripped during parsing. It will use a fixed string instead.
This causes the parser to re-use the regular expressions it uses to search
and replace markers rather than generate novel expressions on each parse.
Re-using regular expressions will improve performance on HHVM and the
forthcoming PHP 7. The interfaces changes accompanying this change are:
- Parser::getRandomString() and Parser::uniqPrefix() have been deprecated.
- The $uniq_prefix argument for Parser::extractTagsAndParams() and the
$prefix argument for StripState::_construct() are deprecated and their
value is ignored.
* wfSuppressWarnings() and wfRestoreWarnings() were split into a separate library,
mediawiki/at-ease, and are now deprecated. Callers should use
MediaWiki\suppressWarnings() and MediaWiki\restoreWarnings() directly.
* The Block class constructor now takes an associative array of parameters
instead of many optional positional arguments. Calling the constructor the old
way will issue a deprecation warning.
* The jquery.mwExtension module was deprecated.
* $wgSpecialPageGroups was removed (deprecated in 1.21).
* SpecialPageFactory::setGroup was removed (deprecated in 1.21).
* SpecialPageFactory::getGroup was removed (deprecated in 1.21).
* DatabaseBase::ignoreErrors() is now protected.
* BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
a lengthy deprecation period.
* The ScopedPHPTimeout class was removed.
* Removed maintenance script fixSlaveDesync.php.
* Watchlist tokens, SpecialResetTokens, and User::getTokenFromOption()
are deprecated. Applications using those can work via the OAuth
extension instead. New tokens types should not be added.
* DatabaseBase::errorCount() was removed (unused).
* $wgDeferredUpdateList was removed.
* DeferredUpdates::addHTMLCacheUpdate() was removed.
== Compatibility ==
MediaWiki 1.26 requires PHP 5.3.3 or later. There is experimental support for
HHVM 3.3.0.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.0.3 or later
* PostgreSQL 8.3 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.26 has several database changes since 1.25, and will not work without schema
updates. Note that due to changes to some very large tables like the revision
table, the schema update may take quite long (minutes on a medium sized site,
many hours on a large site).
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
new database fields are filled with data.
If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
with MediaWiki 1.21.
Don't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed upgrade instructions.
For notes on 1.25.x and older releases, see HISTORY.
== Online documentation ==
Documentation for both end-users and site administrators is available on
MediaWiki.org, and is covered under the GNU Free Documentation License (except
for pages that explicitly state that their contents are in the public domain):
https://www.mediawiki.org/wiki/Documentation
== Mailing list ==
A mailing list is available for MediaWiki user support and discussion:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
A low-traffic announcements-only list is also available:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
It's highly recommended that you sign up for one of these lists if you're
going to run a public MediaWiki, so you can be notified of security fixes.
== IRC help ==
There's usually someone online in #mediawiki on irc.freenode.net.

623
RELEASE-NOTES-1.27 Normal file
View File

@ -0,0 +1,623 @@
== MediaWiki 1.27.1 ==
This is a maintenance release of the MediaWiki 1.27 branch.
=== Changes since 1.27.0 ===
* BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
made by MediaWiki via a proxy. Relying on the http_proxy environment
variable is no longer supported.
* (T139565) SECURITY: API: Generate head items in the context of the given title
* (T137264) SECURITY: XSS in unclosed internal links
* (T133147) SECURITY: Escape '<' and ']]>' in inline <style> blocks
* (T133147) SECURITY: Require login to preview user CSS pages
* (T132926) SECURITY: Do not allow undeleting a revision deleted file if it is
the top file
* (T129738) SECURITY: Make $wgBlockDisablesLogin also restrict logged in
permissions
* (T129738) SECURITY: Make blocks log users out if $wgBlockDisablesLogin is true
* (T115333) SECURITY: Check read permission when loading page content in ApiParse
* (T57548) Remove support for $wgWellFormedXml = false, all output is now well formed
* (T139670) Move 'UserGetRights' call before application of Session::getAllowedUserRights()
== MediaWiki 1.27 ==
=== PHP version requirement ===
As of 1.27, MediaWiki now requires PHP 5.5.9 or higher (see Compatibility
section). Additionally, the following PHP extensions are required:
* ctype
* iconv
* json
* mbstring (new requirement in 1.27)
* xml
The following PHP extensions are strongly recommended:
* openssl
=== Configuration changes in 1.27 ===
* $wgAllowMicrodataAttributes and $wgAllowRdfaAttributes were removed,
now always enabled. If you use RDFa on your wiki, you now have to explicitly
set $wgHtml5Version to 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
* $wgUseLinkNamespaceDBFields was removed.
* Deprecated $wgResourceLoaderMinifierStatementsOnOwnLine and
$wgResourceLoaderMinifierMaxLineLength, because there was little value in
making the behavior configurable. The default values (`false` for the former,
1000 for the latter) are now hard-coded.
* $wgDebugDumpSqlLength was removed (deprecated in 1.24).
* $wgDebugDBTransactions was removed (deprecated in 1.20).
* $wgUseXVO has been removed, as it provides functionality only used by
custom Wikimedia patches against Squid 2.x that probably noone uses in
production anymore. There is now $wgUseKeyHeader that provides similar
functionality but instead of the MediaWiki-specific X-Vary-Options header,
uses the draft Key header standard.
* $wgScriptExtension (and support for '.php5' entry points) was removed. See the
deprecation notice in the release notes for version 1.25 for advice on how to
preserve support for '.php5' entry points via URL rewriting.
* Password handling via the User object has been deprecated and partially
removed, pending the future introduction of AuthManager. In particular:
** expirePassword(), getPasswordExpireDate(), resetPasswordExpiration(), and
getPasswordExpired() have been removed. They were unused outside of core.
** The mPassword, mNewpassword, mNewpassTime, and mPasswordExpires fields are
now private and will be removed in the future.
** The getPassword() and getTemporaryPassword() methods now throw
BadMethodCallException and will be removed in the future.
** The ability to pass 'password' and 'newpassword' to createNew() has been
removed. The only users of it seem to have been using it to set invalid
passwords, and so shouldn't be greatly affected.
** setPassword(), setInternalPassword(), and setNewpassword() have been
deprecated, pending the introduction of AuthManager.
** User::randomPassword() is deprecated in favor of a new method
PasswordFactory::generateRandomPasswordString()
** User::getPasswordFactory() is deprecated, callers should just create a
PasswordFactory themselves.
** A new constructor, User::newSystemUser(), has been added to simplify the
creation of passwordless "system" users for logged actions.
* $wgMaxSquidPurgeTitles was removed.
* $wgAjaxWatch was removed. This is now enabled by default.
* $wgUseInstantCommons now hotlinks Commons images by default instead of
downloading originals and thumbnailing them locally. This allows wikis to save
on CPU and bandwidth while reducing time to first byte for pages, even without
a thumbnail handler. See $wgForeignFileRepos documentation for tweaks.
* (T27397) WebP is enabled by default as an uploadable filetype.
* (T48998) $wgArticlePath must now be either a full url, or start with a "/".
* $wgRateLimitLog was removed; use $wgDebugLogGroups['ratelimit'] instead.
* Deprecated API formats dbg, txt, and yaml have been removed.
* CLDRPluralRule* classes have been replaced with
wikimedia/cldr-plural-rule-parser.
* Removed $wgProfilePerHost, $wgUDPProfilerHost, $wgUDPProfilerPort,
$wgUDPProfilerFormatString, $wgStatsMethod, $wgAggregateStatsID,
$wgStatsFormatString, and $wgProfileCallTree (deprecated since 1.20).
* For proper operation of LocalIdLookup with shared user tables, ensure that
$wgSharedDB and $wgSharedTables are properly set even on the "central" wiki
that all others are sharing from and that $wgLocalDatabases is set to the
full list of sharing wikis on all those wikis.
* Massive overhaul to session handling:
** $wgSessionsInObjectCache is no longer supported and must be true, due to
MediaWiki\Session\SessionManager. $wgSessionHandler is similarly no longer
used.
** ObjectCacheSessionHandler is removed, replaced with
MediaWiki\Session\PhpSessionHandler.
** PHP session handling in general ($_SESSION, session_id(), and so on) is
deprecated. Use MediaWiki\Session\SessionManager instead. A new config
variable, $wgPHPSessionHandling, is available to cause use of $_SESSION to
issue a deprecation warning or to cause most PHP session handling to throw
exceptions.
** Deprecated UserSetCookies hook. Session-handling extensions should generally
be creating a custom subclass of CookieSessionProvider. Other extensions
messing with cookies can no longer count on user data being saved in cookies
versus other methods.
** Deprecated UserLoadFromSession hook, extensions should create a
MediaWiki\Session\SessionProvider.
** The User cannot be loaded from session until after Setup.php completes.
Attempts to do so will be ignored and the User will remain unloaded.
** CSRF tokens may be fetched from the MediaWiki\Session\Session, which uses
the MediaWiki\Session\Token class.
* MediaWiki will now auto-create users as necessary, removing the need for
extensions to do so. An 'autocreateaccount' right is added to allow
auto-creation when 'createaccount' is not granted to all users.
* Deprecated AuthPluginAutoCreate hook in favor of LocalUserCreated.
* Most cookie-handling methods in User are deprecated.
* $wgAllowAsyncCopyUploads and $CopyUploadAsyncTimeout were removed. This was an
experimental feature that has never worked.
* Login and createaccount tokens now vary by timestamp.
* LoginForm::getLoginToken() and LoginForm::getCreateaccountToken()
return a MediaWiki\Session\Token, and tokens must be checked using that
class's methods.
* $wgEnotifUseJobQ was removed and the job queue is always used.
* The functionality of the ApiSandbox extension has been merged into core. The
extension should no longer be used.
* $wgPreloadJavaScriptMwUtil was removed (deprecated in 1.26).
Extensions, skins, gadgets and scripts that use the mediawiki.util module must
express a dependency on it.
* $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
module should express a dependency on it.
* Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
$wgFooterIcons['copyright']['copyright'] instead.
* If the openssl and mcrypt PHP extensions are both unavailable, secure
session storage (used for login) will raise an exception. This exception may
be bypassed by setting $wgSessionInsecureSecrets = true.
* Massive overhaul to authentication:
** AuthPlugin and AuthPluginUser are deprecated.
** LoginForm and associated templates are deprecated. Extensions which called
static LoginForm methods should be converted into authentication providers.
** The following hooks are deprecated:
*** AbortAutoAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AbortLogin (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AbortNewAccount (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** AddNewAccount (use LocalUserCreated instead)
*** AuthPluginSetup (create a MediaWiki\Auth\PrimaryAuthenticationProvider instead)
*** ChangePasswordForm (use AuthChangeFormFields instead, or security levels)
*** LoginUserMigrated (create a MediaWiki\Auth\PreAuthenticationProvider instead)
*** UserCreateForm (create a MediaWiki\Auth\AuthenticationProvider of some type instead)
*** UserLoginForm (create a MediaWiki\Auth\AuthenticationProvider of some type instead)
** The following hooks are removed:
*** AbortChangePassword
*** LoginPasswordResetMessage
*** PrefsPasswordAudit
** The UserLoginComplete hook will no longer be called for all logins, only for
those via the web UI. Use UserLoggedIn if you need to do something on all
logins.
** $wgRequirePasswordforEmailChange is removed.
* $wgWellFormedXml has been removed.
=== New features in 1.27 ===
* $wgDataCenterUpdateStickTTL was also added. This decides how long a user
sticks to the primary DC (via cookies) after they make changes to the site.
* Added a new hook, 'UserMailerTransformContent', to transform the contents
of an email. This is similar to the EmailUser hook but applies to all mail
sent via UserMailer.
* Added a new hook, 'UserMailerTransformMessage', to transform the contents
of an emai after MIME encoding.
* Added a new hook, 'UserMailerSplitTo', to control which users have to be
emailed separately (ie. there is a single address in the To: field) so
user-specific changes to the email can be applied safely.
* $wgCdnMaxageLagged was added, which limits the CDN cache TTL
when any load balancer uses a DB that is lagged beyond the 'max lag'
setting in the relevant section of $wgLBFactoryConf.
* User::newSystemUser() may be used to simplify the creation of passwordless
"system" users for logged actions from scripts and extensions.
* Extensions can now return detailed error information via the API when
preventing user actions using 'getUserPermissionsErrors' and similar hooks
by using ApiMessage instances instead of strings for the $result value.
* $wgAPIMaxLagThreshold was added to limit bot changes when databases lag
becomes too high.
* Skins and extensions can now use FlexBox mixins (.flex-display(@display: flex)
and .flex(@grow: 1, @shrink: 1, @width: auto, @order: 1)) in Less to create
cross-browser-compatible FlexBox rules. Users will still need to add fallback
float rules or the like for compatibility with IE9- separately.
* Added MWTimestamp::getTimezoneString() which returns the localized timezone
string, if available. To localize this string, see the comments of
$wgLocaltimezone in includes/DefaultSettings.php.
* Added CentralIdLookup, a service that allows extensions needing a concept of
"central" users to get that without having to know about specific central
authentication extensions.
* $wgMaxUserDBWriteDuration added to limit huge user-generated transactions.
Regular web request transactions that takes longer than this are aborted.
* Added a new hook, 'TitleMoveCompleting', which runs before a page move is
committed.
* $wgCdnReboundPurgeDelay was added to provide secondary delayed purges of URLs
from CDN to mitigate DB replication lag and WAN cache purge lag.
* (T49162) Installer will default to setting CACHE_ACCEL as the main cache type
if it is available.
* It is now possible to patrol file uploads (both for new files and new versions
of existing files). Special:NewFiles has gained an option to filter by patrol
status. This functionality can be disabled using $wgUseFilePatrol.
* MediaWiki\Session infrastructure allows for easier use of session mechanisms
other than the usual cookies.
** SessionMetadata and SessionCheckInfo hooks allow for setting and checking
custom session metadata.
* Added MWGrants and associated configuration settings $wgGrantPermissions and
$wgGrantPermissionGroups to hold configuration for authentication features
such as OAuth that want to allow restricting the user rights a user may make
use of.
** If you're already using the OAuth extension, these new variables are
identical to (and will replace) $wgMWOAuthGrantPermissions and
$wgMWOAuthGrantPermissionGroups.
* Added MWRestrictions as a class to check restrictions on a WebRequest, e.g.
to assert that the request comes from a particular IP range.
* Added bot passwords, a rights-restricted login mechanism for API-using bots.
* Whitelisted the following HTML attributes for all elements in wikitext:
aria-describedby, aria-flowto, aria-label, aria-labelledby, aria-owns.
* Removed "presentation" restriction on the HTML role attribute in wikitext.
All values are now allowed for the role attribute.
* $wgContentHandlers now also supports callbacks to create an instance of the
appropriate ContentHandler subclass.
* Added $wgAuthenticationTokenVersion, which if non-null prevents the
user_token database field from being exposed in cookies. Setting this would
be a good idea, but will log out all current sessions.
* $wgEventRelayerConfig was added, for managing PubSub event relay configuration,
specifically for reliable CDN url purges.
* Requests have unique IDs, equal to the UNIQUE_ID environment variable (when
MediaWiki is behind Apache+mod_unique_id or something similar) or a randomly-
generated 24-character string. This request ID is used to annotate log records
and error messages. It is available client-side via mw.config.get( 'wgRequestId' ).
The request ID supplants exception IDs. Accordingly, MWExceptionHandler::getLogId()
is deprecated.
* (T33313) Add a preference for watching uploads by default, also applies
to API-based upload tools.
* $wgJpegPixelFormat was added to override chroma subsampling for JPEG image
thumbnails created via ImageMagick. Defaults to 'yuv420', providing bandwidth
savings versus the previous behavior on many files.
* MediaWiki\Auth infrastructure (called "AuthManager") allows for more flexible
configuration of multiple authentication pieces that was possible with
AuthPlugin. For example, it's now easy to plug in second-factor
authentication, or add additional checks to the login process, or to support
multiple login methods at once, or to support non-password-based login methods.
** Providers are configured via the global setting $wgAuthManagerConfig.
** New hook, AuthChangeFormFields, to adjust the form fields on
AuthManager-related special pages.
** New hook, AuthManagerLoginAuthenticateAudit, for additional logging of
AuthManager-related authentication requests.
** New hook, ChangeAuthenticationDataAudit, for additional logging of
AuthManager-related authentication data changes.
** New hook, SecuritySensitiveOperationStatus, to work with the new mechanism
for requiring a recent login before taking security-sensitive operations
like changing a password.
** Two new globals, $wgChangeCredentialsBlacklist and $wgRemoveCredentialsBlacklist
can be used to prevent the web UI and the API changing certain authentication data.
* The file upload dialog (available if you install WikiEditor or VisualEditor)
can now be configured using $wgUploadDialog.
=== External library changes in 1.27 ===
==== Upgraded external libraries ====
* Updated oojs/oojs-ui from v0.12.12 to v0.13.3.
* Updated composer/semver from v1.0.0 to v1.2.0.
* Updated liuggio/statsd-php-client to 1.0.18.
* Updated QUnit from v1.18.0 to v1.22.0.
==== New external libraries ====
* Added wikimedia/base-convert v1.0.1.
* Added wikimedia/cldr-plural-rule-parser v1.0.0.
* Added wikimedia/relpath v1.0.3.
* Added wikimedia/running-stat v1.1.0.
* Added wikimedia/php-session-serializer v1.0.3.
==== Removed and replaced external libraries ====
=== Bug fixes in 1.27 ===
* Special:Upload will now display correct maximum allowed file size when running
under HHVM (T116347).
* (T54077) The APIEditBeforeSave hook will once again give only the content of
the section being edited, rather than the whole revision. This reverts the
change made in MediaWiki 1.22.
=== Action API changes in 1.27 ===
* Added list=allrevisions.
* generator=recentchanges now has the option to generate revids.
* ApiPageSet::setRedirectMergePolicy() was added. This allows generator
modules to define how generator data for a redirect source gets merged
into the redirect destination.
* prop=imageinfo&iiprop=uploadwarning will no longer include the possibility of
"was-deleted" warning.
* Added difftotextpst to query=revisions which preforms a pre-save transform on
the text before diffing it.
* Deprecated formats dbg, txt, and yaml have been removed.
* (T47988) The protect log event details now use new-style formatting.
* The following response properties from action=login are deprecated, and may
be removed in the future: lgtoken, cookieprefix, sessionid. Clients should
handle cookies to properly manage session state.
* action=login transparently allows login using bot passwords. Clients should
merely need to change the username and password used after setting up a bot
password.
* action=upload no longer understands statuskey, asyncdownload or leavemessage.
* action=login is deprecated for uses other than bot passwords.
* list=users can now indicate if a missing username is creatable.
* action=createaccount is changed in a non-backwards-compatible manner.
* Added action=query&meta=authmanagerinfo.
* Added action=clientlogin to be used to log into the main account instead of
action=login.
* Added action=linkaccount.
* Added action=unlinkaccount.
* Added action=changeauthenticationdata.
* Added action=removeauthenticationdata.
* Added action=resetpassword.
=== Action API internal changes in 1.27 ===
* ApiQueryORM removed.
* The following classes have been removed:
** ApiFormatDbg
** ApiFormatTxt
** ApiFormatYaml
* ApiBase::addTokenProperties() was removed (deprecated since 1.24).
* ApiBase::getFinalPossibleErrors() was removed (deprecated since 1.24).
* ApiBase::getFinalResultProperties() was removed (deprecated since 1.24).
* ApiBase::getRequireAtLeastOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getPossibleErrors() was removed (deprecated since 1.24).
* ApiBase::getRequireMaxOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getRequireOnlyOneParameterErrorMessages() was removed (deprecated since 1.24).
* ApiBase::getResultProperties() was removed (deprecated since 1.24).
* ApiBase::getTitleOrPageIdErrorMessage() was removed (deprecated since 1.24).
* ApiBase::parseErrors() was removed (deprecated since 1.24).
* ApiQueryBase::titleToKey(), ApiQueryBase::keyToTitle() and
ApiQueryBase::keyPartToTitle() all removed (deprecated since 1.24).
* ApiQueryBase::checkRowCount() was removed (deprecated since 1.24).
* ApiQueryBase::getDirectionDescription() was removed (deprecated since 1.25).
* ApiQuery::getGenerators() was removed (deprecated since 1.21).
* ApiQuery::getModules() was removed (deprecated since 1.21).
* ApiQuery::getModuleType() was removed (deprecated since 1.21).
* ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
* ApiMain::getModules() was removed (deprecated since 1.21).
* ApiBase::getVersion() was removed (deprecated since 1.21).
* ApiMain::getShowVersions() was removed (deprecated in 1.21).
* ApiMain::addModule() was removed (deprecated in 1.21).
* ApiMain::addFormat() was removed (deprecated in 1.21).
* ApiMain::getFormats() was removed (deprecated in 1.21).
* ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
* ApiCreateAccount is deprecated, and will be removed soon.
=== Languages updated in 1.27 ===
MediaWiki supports over 350 languages. Many localisations are updated
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Phabricator reports.
* (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
* (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
=== Other changes in 1.27 ===
* Added dependency injection (DI) infrastructure, see docs/injection.txt for details.
It is planned to incrementally move MediaWiki code towards using DI, using the
service locator (SL) pattern as a stepping stone.
* ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
* WikiPage::doDeleteArticleReal() and WikiPage::doDeleteArticle() now
ignore the 2nd and 3rd arguments (formerly $id and $commit).
* Removed "loaderScripts" option from ResourceLoaderFileModule class.
* Removed ORM-like wrapper added in 1.20.
* LinkCache::getGoodLinks and LinkCache::getBadLinks were removed
(deprecated in 1.26).
* WikiPage::doQuickEdit() was removed (deprecated since 1.21).
* Removed SiteObject and SiteArray classes (deprecated in 1.21).
* MessageBlobStore::getInstance() was removed (deprecated since 1.25).
* (T84937) Free external links ("autolinked" urls) will now be terminated
by &nbsp; and HTML entity encodings of &nbsp, <, and >.
* (T36948) The default file revert message's timestamp is now in
$wgLocaltimezone, instead of UTC.
* The default name of the 'suppress' group page has been changed from
'Project:Oversight' to 'Project:Suppress'.
* DatabaseBase::resultObject() is now protected (use outside Database classes
not necessary since 1.11).
* Calling ResourceLoaderFileModule::readStyleFiles() without a
ResourceLoaderContext instance is deprecated.
* ResourceLoader::getLessCompiler() now takes an optional parameter of
additional LESS variables to set for the compiler.
* wfBaseConvert() marked as deprecated, use Wikimedia\base_convert() directly
instead.
* Obsolete maintenance scripts clearCacheStats.php and showCacheStats.php
were removed. The underlying data is sent to StatsD (see $wgStatsdServer).
* Removed msg_resource_links database table and associated code.
* Removed msg_resource database table and associated code.
* Skin::getNamespaceNotice() was removed.
* wfIsConfiguredProxy() was removed (deprecated since 1.24).
* wfDebugTimer() was removed (deprecated since 1.25).
* wfIsTrustedProxy() was removed (deprecated since 1.24).
* wfGetIP() was removed (deprecated since 1.19).
* MWHookException was removed.
* OutputPage::appendSubtitle() was removed (deprecated since 1.19).
* OutputPage::loginToUse() was removed (deprecated since 1.19).
* Article::loadContent() was removed (deprecated since 1.19).
* User::editToken() was removed (deprecated since 1.19).
* Removed --force-normal option of dumpBackup.php, as it no longer served
any useful purpose since 1.22.
* The functions processOption() and processArgs() on the BackupDumper and
TextPassDumper classes have been removed.
* The maintenance/backupTextPass.inc file was deleted. You should include
maintenance/dumpTextPass.php instead.
* WikiPage::getUsedTemplates() was removed (deprecated since 1.19).
* wfEmptyMsg() was removed (deprecated since 1.18).
* OutputPage::permissionRequired() was removed (deprecated since 1.18).
* OutputPage::blockedPage() was removed (deprecated since 1.18).
* User::getSkin() was removed (deprecated since 1.18).
* OutputPage::includeJQuery() was removed (deprecated since 1.17).
* WikiPage::updateRestrictions() was removed (deprecated since 1.19).
* WikiPage::testPreSaveTransform() was removed (deprecated since 1.19).
* LogPage::logName() was removed (deprecated since 1.19).
* LogPage::logHeader() was removed (deprecated since 1.19).
* wfCheckLimits() was removed (deprecated since 1.24).
* Linker::makeKnownLinkObj() was removed (deprecated since 1.16).
* Linker::makeLinkObj() was removed (deprecated since 1.16).
* wfMsgForContentNoTrans() was removed (deprecated since 1.18).
* ChangesList::usePatrol was removed (deprecated since 1.22).
* wfMsgNoTrans() was removed (deprecated since 1.18).
* Linker::makeImageLink2 was removed (deprecated since 1.20).
* Title::userIsWatching() was removed (deprecated since 1.20).
* Removed WaitForSlave maintenance script; use SELECT MASTER_POS_WAIT()
database function directly instead.
* wfMsg() was removed (deprecated since 1.18).
* wfMsgForContent() was removed (deprecated since 1.18).
* wfMsgReal() was removed (deprecated since 1.18).
* wfMsgGetKey() was removed (deprecated since 1.18).
* wfMsgHtml() was removed (deprecated since 1.18).
* wfMsgWikiHtml() was removed (deprecated since 1.18).
* wfMsgExt() was removed (deprecated since 1.18).
* Language::armourMath() was removed (deprecated since 1.22).
* LanguageConverter::armourMath() was removed (deprecated since 1.22).
* FakeConverter::armourMath() was removed (deprecated since 1.22).
* The unused jquery.validate ResourceLoader module was removed.
* FileRepo::getRootUrl() was removed (deprecated since 1.20).
* User::generateToken() was removed (deprecated since 1.20).
* WikiPage::getRawText() was removed (deprecated since 1.21).
* ParserOutput::hasCustomDataUpdates() was removed (deprecated since 1.25).
* ParserOutput::addSecondaryDataUpdate() was removed (deprecated since 1.25).
* ParserOutput::getSecondaryDataUpdates() was removed (deprecated since 1.25).
* Gallery images with multiple caption pipes no longer concatenate them all
together but instead pick the final one, similar to image syntax.
* XML-like parser tags (such as <gallery>), when unclosed, will be left unparsed
rather than consume everything until the end of the page.
* New maintenance script resetUserEmail.php allows sysadmins to reset user emails in case
a user forgot password/account was stolen.
* wfCheckEntropy() was removed (deprecated in 1.27).
* Browser support for Internet Explorer 8 lowered from Grade A to Grade C.
* ContentHandler::supportsCategories method added. Default is true.
CategoryMembershipChangeJob updates are skipped for content that
does not support categories.
* wikidiff difference engine is no longer supported, anyone still using it are encouraged
to upgrade to wikidiff2 which is actively maintained and has better package availability.
* Database logic was removed from WatchedItem and a WatchedItemStore was created:
** WatchedItem::IGNORE_USER_RIGHTS and WatchedItem::CHECK_USER_RIGHTS were deprecated.
User::IGNORE_USER_RIGHTS and User::CHECK_USER_RIGHTS were introduced.
** WatchedItem::fromUserTitle was deprecated in favour of the constructor.
** WatchedItem::resetNotificationTimestamp was deprecated.
** WatchedItem::batchAddWatch was deprecated.
** WatchedItem::addWatch was deprecated.
** WatchedItem::removeWatch was deprecated.
** WatchedItem::isWatched was deprecated.
** WatchedItem::duplicateEntries was deprecated.
** EmailNotification::updateWatchlistTimestamp was deprecated.
** User::getWatchedItem was removed.
* Unit tests don't work with external PHPUnit anymore, Composer is now the only supported
way. Run `composer install` to install it and other dev dependencies to run unit tests.
* wl_id field added to the watchlist table.
* Revision::getRawText() was removed (deprecated since 1.21).
* WikiPage::replaceSection() was removed (deprecated since 1.21).
* Article::replaceSection() was removed (deprecated since 1.21).
* Language::getLangObj() was removed (deprecated since 1.24).
* Language::getLanguageName() was removed (deprecated since 1.20).
* Language::getLanguageNames() was removed (deprecated since 1.20).
* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
* Language::specialPage() was removed (deprecated since 1.24).
* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
* OutputPage::getHeadItems() was removed (deprecated since 1.24).
* OutputPage::getScript() was removed (deprecated since 1.24).
* OutputPage::out() was removed (deprecated since 1.22).
* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
* UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
* MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
* Title::newFromRedirect() was removed (deprecated since 1.21).
* Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
* Skin::getCommonStylePath() was removed (deprecated since 1.24).
* Skin::newFromKey() was removed (deprecated since 1.24).
* Skin::getUsableSkins() was removed (deprecated since 1.23).
* LoadBalancer::pickRandom() was removed (deprecated in 1.21).
* Article::getUndoText() and WikiPage::getUndoText were removed (deprecated since
1.21).
* DifferenceEngine::setText() was removed (deprecated in 1.21).
* Title::newFromRedirectArray() was removed (deprecated in 1.21).
* UserMailer::send() no longer accepts $replyto as the 5th argument and $contentType
as the 6th. These must be passed in the options array now.
* Title::newFromRedirectRecurse() was removed (deprecated in 1.21).
* Skin::accesskey was removed (deprecated since 1.21).
* Skin::blockLink was removed (deprecated since 1.21).
* Skin::buildRollbackLink was removed (deprecated since 1.21).
* Skin::emailLink was removed (deprecated since 1.21).
* Skin::formatComment was removed (deprecated since 1.21).
* Skin::formatHiddenCategories was removed (deprecated since 1.21).
* Skin::formatLinksInComment was removed (deprecated since 1.21).
* Skin::formatRevisionSize was removed (deprecated since 1.21).
* Skin::formatSize was removed (deprecated since 1.21).
* Skin::formatTemplates was removed (deprecated since 1.21).
* Skin::generateTOC was removed (deprecated since 1.21).
* Skin::getInternalLinkAttributes was removed (deprecated since 1.21).
* Skin::getInternalLinkAttributesObj was removed (deprecated since 1.21).
* Skin::getInterwikiLinkAttributes was removed (deprecated since 1.21).
* Skin::getInvalidTitleDescription was removed (deprecated since 1.21).
* Skin::getLinkColour was removed (deprecated since 1.21).
* Skin::getRevDeleteLink was removed (deprecated since 1.21).
* Skin::getRollbackEditCount was removed (deprecated since 1.21).
* Skin::makeBrokenImageLinkObj was removed (deprecated since 1.21).
* Skin::makeCommentLink was removed (deprecated since 1.21).
* Skin::makeExternalImage was removed (deprecated since 1.21).
* Skin::makeExternalLink was removed (deprecated since 1.21).
* Skin::makeHeadline was removed (deprecated since 1.21).
* Skin::makeImageLink was removed (deprecated since 1.21).
* Skin::makeMediaLinkFile was removed (deprecated since 1.21).
* Skin::makeMediaLinkObj was removed (deprecated since 1.21).
* Skin::makeSelfLinkObj was removed (deprecated since 1.21).
* Skin::makeThumbLink2 was removed (deprecated since 1.21).
* Skin::makeThumbLinkObj was removed (deprecated since 1.21).
* Skin::normaliseSpecialPage was removed (deprecated since 1.21).
* Skin::normalizeSubpageLink was removed (deprecated since 1.21).
* Skin::processResponsiveImages was removed (deprecated since 1.21).
* Skin::revComment was removed (deprecated since 1.21).
* Skin::revDeleteLink was removed (deprecated since 1.21).
* Skin::revDeleteLinkDisabled was removed (deprecated since 1.21).
* Skin::revUserLink was removed (deprecated since 1.21).
* Skin::revUserTools was removed (deprecated since 1.21).
* Skin::specialLink was removed (deprecated since 1.21).
* Skin::splitTrail was removed (deprecated since 1.21).
* Skin::titleAttrib was removed (deprecated since 1.21).
* Skin::tocIndent was removed (deprecated since 1.21).
* Skin::tocLine was removed (deprecated since 1.21).
* Skin::tocLineEnd was removed (deprecated since 1.21).
* Skin::tocList was removed (deprecated since 1.21).
* Skin::tocUnindent was removed (deprecated since 1.21).
* Skin::tooltip was removed (deprecated since 1.21).
* Skin::tooltipAndAccesskeyAttribs was removed (deprecated since 1.21).
* Skin::userTalkLink was removed (deprecated since 1.21).
* Skin::userToolLinksRedContribs was removed (deprecated since 1.21).
* wikidiff3 is now the default and only PHP diff engine. It provides improved diff
performance on complex changes. $wgExternalDiffEngine = 'wikidiff3' therefore
makes no difference now. Users are still recommended to use wikidiff2 if possible,
though.
* User::addNewUserLogEntry() was deprecated.
* User::addNewUserLogEntryAutoCreate() was deprecated.
* User::isPasswordReminderThrottled() was deprecated.
* Bot-oriented parameters to Special:UserLogin (wpCookieCheck, wpSkipCookieCheck)
were removed.
* Installer can now be customized without patching MediaWiki code, see
mw-config/overrides/README for details.
== Compatibility ==
MediaWiki 1.27 requires PHP 5.5.9 or later. There is experimental support for
HHVM 3.6.5 or later.
MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
support for them is somewhat less mature. There is experimental support for
Oracle and Microsoft SQL Server.
The supported versions are:
* MySQL 5.0.3 or later
* PostgreSQL 8.3 or later
* SQLite 3.3.7 or later
* Oracle 9.0.1 or later
* Microsoft SQL Server 2005 (9.00.1399)
== Upgrading ==
1.27 has several database changes since 1.26, and will not work without schema
updates. Note that due to changes to some very large tables like the revision
table, the schema update may take quite long (minutes on a medium sized site,
many hours on a large site).
If upgrading from before 1.11, and you are using a wiki as a commons
repository, make sure that it is updated as well. Otherwise, errors may arise
due to database schema changes.
If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
new database fields are filled with data.
If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
with MediaWiki 1.21.
Don't forget to always back up your database before upgrading!
See the file UPGRADE for more detailed upgrade instructions.
For notes on 1.26.x and older releases, see HISTORY.
== Online documentation ==
Documentation for both end-users and site administrators is available on
MediaWiki.org, and is covered under the GNU Free Documentation License (except
for pages that explicitly state that their contents are in the public domain):
https://www.mediawiki.org/wiki/Documentation
== Mailing list ==
A mailing list is available for MediaWiki user support and discussion:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
A low-traffic announcements-only list is also available:
https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
It's highly recommended that you sign up for one of these lists if you're
going to run a public MediaWiki, so you can be notified of security fixes.
== IRC help ==
There's usually someone online in #mediawiki on irc.freenode.net.

View File

@ -8,6 +8,9 @@ RuboCop::RakeTask.new(:rubocop) do |task|
task.options = ['-c', '.rubocop.yml']
end
require 'mediawiki_selenium/rake_task'
MediawikiSelenium::RakeTask.new(site_tag: false)
task default: [:test]
desc 'Run all build/tests commands (CI entry point)'

View File

@ -5,7 +5,7 @@ specific problems, check
* the documentation at https://www.mediawiki.org
* the mediawiki-l mailing list archive at
http://lists.wikimedia.org/pipermail/mediawiki-l/
* the bug tracker at https://bugzilla.wikimedia.org
* the bug tracker at https://phabricator.wikimedia.org
for information and workarounds to common issues.

11
api.php
View File

@ -35,11 +35,6 @@ use MediaWiki\Logger\LegacyLogger;
// So extensions (and other code) can check whether they're running in API mode
define( 'MW_API', true );
// Bail on old versions of PHP, or if composer has not been run yet to install
// dependencies. Using dirname( __FILE__ ) here because __DIR__ is PHP5.3+.
require_once dirname( __FILE__ ) . '/includes/PHPVersionCheck.php';
wfEntryPointCheck( 'api.php' );
require __DIR__ . '/includes/WebStart.php';
$starttime = microtime( true );
@ -73,7 +68,7 @@ try {
$processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI );
// Last chance hook before executing the API
Hooks::run( 'ApiBeforeMain', array( &$processor ) );
Hooks::run( 'ApiBeforeMain', [ &$processor ] );
if ( !$processor instanceof ApiMain ) {
throw new MWException( 'ApiBeforeMain hook set $processor to a non-ApiMain class' );
}
@ -93,12 +88,12 @@ $endtime = microtime( true );
// Log the request
if ( $wgAPIRequestLog ) {
$items = array(
$items = [
wfTimestamp( TS_MW ),
$endtime - $starttime,
$wgRequest->getIP(),
$wgRequest->getHeader( 'User-agent' )
);
];
$items[] = $wgRequest->wasPosted() ? 'POST' : 'GET';
if ( $processor ) {
try {

View File

@ -1,26 +0,0 @@
<?php
/**
* Version of api.php to be used in web servers that require the .php5
* extension to execute scripts with the PHP5 engine.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
define( 'MW_ENTRY_PHP5', true );
require './api.php';

View File

@ -3,27 +3,30 @@
// @codingStandardsIgnoreFile
global $wgAutoloadLocalClasses;
$wgAutoloadLocalClasses = array(
$wgAutoloadLocalClasses = [
'APCBagOStuff' => __DIR__ . '/includes/libs/objectcache/APCBagOStuff.php',
'AbstractContent' => __DIR__ . '/includes/content/AbstractContent.php',
'Action' => __DIR__ . '/includes/actions/Action.php',
'ActiveUsersPager' => __DIR__ . '/includes/specials/SpecialActiveusers.php',
'ActiveUsersPager' => __DIR__ . '/includes/specials/pagers/ActiveUsersPager.php',
'ActivityUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/ActivityUpdateJob.php',
'AjaxDispatcher' => __DIR__ . '/includes/AjaxDispatcher.php',
'AjaxResponse' => __DIR__ . '/includes/AjaxResponse.php',
'AllMessagesTablePager' => __DIR__ . '/includes/specials/SpecialAllMessages.php',
'AllMessagesTablePager' => __DIR__ . '/includes/specials/pagers/AllMessagesTablePager.php',
'AllTrans' => __DIR__ . '/maintenance/language/alltrans.php',
'AlphabeticPager' => __DIR__ . '/includes/pager/AlphabeticPager.php',
'AlterSharedConstraints' => __DIR__ . '/maintenance/oracle/alterSharedConstraints.php',
'AncientPagesPage' => __DIR__ . '/includes/specials/SpecialAncientpages.php',
'AnsiTermColorer' => __DIR__ . '/maintenance/term/MWTerm.php',
'ApiAMCreateAccount' => __DIR__ . '/includes/api/ApiAMCreateAccount.php',
'ApiAuthManagerHelper' => __DIR__ . '/includes/api/ApiAuthManagerHelper.php',
'ApiBase' => __DIR__ . '/includes/api/ApiBase.php',
'ApiBlock' => __DIR__ . '/includes/api/ApiBlock.php',
'ApiChangeAuthenticationData' => __DIR__ . '/includes/api/ApiChangeAuthenticationData.php',
'ApiCheckToken' => __DIR__ . '/includes/api/ApiCheckToken.php',
'ApiClearHasMsg' => __DIR__ . '/includes/api/ApiClearHasMsg.php',
'ApiClientLogin' => __DIR__ . '/includes/api/ApiClientLogin.php',
'ApiComparePages' => __DIR__ . '/includes/api/ApiComparePages.php',
'ApiContinuationManager' => __DIR__ . '/includes/api/ApiContinuationManager.php',
'ApiCreateAccount' => __DIR__ . '/includes/api/ApiCreateAccount.php',
'ApiDelete' => __DIR__ . '/includes/api/ApiDelete.php',
'ApiDisabled' => __DIR__ . '/includes/api/ApiDisabled.php',
'ApiEditPage' => __DIR__ . '/includes/api/ApiEditPage.php',
@ -36,26 +39,26 @@ $wgAutoloadLocalClasses = array(
'ApiFeedWatchlist' => __DIR__ . '/includes/api/ApiFeedWatchlist.php',
'ApiFileRevert' => __DIR__ . '/includes/api/ApiFileRevert.php',
'ApiFormatBase' => __DIR__ . '/includes/api/ApiFormatBase.php',
'ApiFormatDbg' => __DIR__ . '/includes/api/ApiFormatDbg.php',
'ApiFormatFeedWrapper' => __DIR__ . '/includes/api/ApiFormatFeedWrapper.php',
'ApiFormatJson' => __DIR__ . '/includes/api/ApiFormatJson.php',
'ApiFormatNone' => __DIR__ . '/includes/api/ApiFormatNone.php',
'ApiFormatPhp' => __DIR__ . '/includes/api/ApiFormatPhp.php',
'ApiFormatRaw' => __DIR__ . '/includes/api/ApiFormatRaw.php',
'ApiFormatTxt' => __DIR__ . '/includes/api/ApiFormatTxt.php',
'ApiFormatXml' => __DIR__ . '/includes/api/ApiFormatXml.php',
'ApiFormatXmlRsd' => __DIR__ . '/includes/api/ApiRsd.php',
'ApiFormatYaml' => __DIR__ . '/includes/api/ApiFormatYaml.php',
'ApiHelp' => __DIR__ . '/includes/api/ApiHelp.php',
'ApiHelpParamValueMessage' => __DIR__ . '/includes/api/ApiHelpParamValueMessage.php',
'ApiImageRotate' => __DIR__ . '/includes/api/ApiImageRotate.php',
'ApiImport' => __DIR__ . '/includes/api/ApiImport.php',
'ApiImportReporter' => __DIR__ . '/includes/api/ApiImport.php',
'ApiLinkAccount' => __DIR__ . '/includes/api/ApiLinkAccount.php',
'ApiLogin' => __DIR__ . '/includes/api/ApiLogin.php',
'ApiLogout' => __DIR__ . '/includes/api/ApiLogout.php',
'ApiMain' => __DIR__ . '/includes/api/ApiMain.php',
'ApiManageTags' => __DIR__ . '/includes/api/ApiManageTags.php',
'ApiMergeHistory' => __DIR__ . '/includes/api/ApiMergeHistory.php',
'ApiMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiMessageTrait' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiModuleManager' => __DIR__ . '/includes/api/ApiModuleManager.php',
'ApiMove' => __DIR__ . '/includes/api/ApiMove.php',
'ApiOpenSearch' => __DIR__ . '/includes/api/ApiOpenSearch.php',
@ -74,7 +77,9 @@ $wgAutoloadLocalClasses = array(
'ApiQueryAllLinks' => __DIR__ . '/includes/api/ApiQueryAllLinks.php',
'ApiQueryAllMessages' => __DIR__ . '/includes/api/ApiQueryAllMessages.php',
'ApiQueryAllPages' => __DIR__ . '/includes/api/ApiQueryAllPages.php',
'ApiQueryAllRevisions' => __DIR__ . '/includes/api/ApiQueryAllRevisions.php',
'ApiQueryAllUsers' => __DIR__ . '/includes/api/ApiQueryAllUsers.php',
'ApiQueryAuthManagerInfo' => __DIR__ . '/includes/api/ApiQueryAuthManagerInfo.php',
'ApiQueryBacklinks' => __DIR__ . '/includes/api/ApiQueryBacklinks.php',
'ApiQueryBacklinksprop' => __DIR__ . '/includes/api/ApiQueryBacklinksprop.php',
'ApiQueryBase' => __DIR__ . '/includes/api/ApiQueryBase.php',
@ -92,7 +97,7 @@ $wgAutoloadLocalClasses = array(
'ApiQueryExternalLinks' => __DIR__ . '/includes/api/ApiQueryExternalLinks.php',
'ApiQueryFileRepoInfo' => __DIR__ . '/includes/api/ApiQueryFileRepoInfo.php',
'ApiQueryFilearchive' => __DIR__ . '/includes/api/ApiQueryFilearchive.php',
'ApiQueryGeneratorBase' => __DIR__ . '/includes/api/ApiQueryBase.php',
'ApiQueryGeneratorBase' => __DIR__ . '/includes/api/ApiQueryGeneratorBase.php',
'ApiQueryIWBacklinks' => __DIR__ . '/includes/api/ApiQueryIWBacklinks.php',
'ApiQueryIWLinks' => __DIR__ . '/includes/api/ApiQueryIWLinks.php',
'ApiQueryImageInfo' => __DIR__ . '/includes/api/ApiQueryImageInfo.php',
@ -102,7 +107,7 @@ $wgAutoloadLocalClasses = array(
'ApiQueryLangLinks' => __DIR__ . '/includes/api/ApiQueryLangLinks.php',
'ApiQueryLinks' => __DIR__ . '/includes/api/ApiQueryLinks.php',
'ApiQueryLogEvents' => __DIR__ . '/includes/api/ApiQueryLogEvents.php',
'ApiQueryORM' => __DIR__ . '/includes/api/ApiQueryORM.php',
'ApiQueryMyStashedFiles' => __DIR__ . '/includes/api/ApiQueryMyStashedFiles.php',
'ApiQueryPagePropNames' => __DIR__ . '/includes/api/ApiQueryPagePropNames.php',
'ApiQueryPageProps' => __DIR__ . '/includes/api/ApiQueryPageProps.php',
'ApiQueryPagesWithProp' => __DIR__ . '/includes/api/ApiQueryPagesWithProp.php',
@ -123,6 +128,8 @@ $wgAutoloadLocalClasses = array(
'ApiQueryWatchlist' => __DIR__ . '/includes/api/ApiQueryWatchlist.php',
'ApiQueryWatchlistRaw' => __DIR__ . '/includes/api/ApiQueryWatchlistRaw.php',
'ApiRawMessage' => __DIR__ . '/includes/api/ApiMessage.php',
'ApiRemoveAuthenticationData' => __DIR__ . '/includes/api/ApiRemoveAuthenticationData.php',
'ApiResetPassword' => __DIR__ . '/includes/api/ApiResetPassword.php',
'ApiResult' => __DIR__ . '/includes/api/ApiResult.php',
'ApiRevisionDelete' => __DIR__ . '/includes/api/ApiRevisionDelete.php',
'ApiRollback' => __DIR__ . '/includes/api/ApiRollback.php',
@ -143,7 +150,9 @@ $wgAutoloadLocalClasses = array(
'Article' => __DIR__ . '/includes/page/Article.php',
'AssembleUploadChunksJob' => __DIR__ . '/includes/jobqueue/jobs/AssembleUploadChunksJob.php',
'AtomFeed' => __DIR__ . '/includes/Feed.php',
'AtomicSectionUpdate' => __DIR__ . '/includes/deferred/AtomicSectionUpdate.php',
'AttachLatest' => __DIR__ . '/maintenance/attachLatest.php',
'AuthManagerSpecialPage' => __DIR__ . '/includes/specialpage/AuthManagerSpecialPage.php',
'AuthPlugin' => __DIR__ . '/includes/AuthPlugin.php',
'AuthPluginUser' => __DIR__ . '/includes/AuthPlugin.php',
'AutoLoader' => __DIR__ . '/includes/AutoLoader.php',
@ -167,8 +176,8 @@ $wgAutoloadLocalClasses = array(
'BenchIfSwitch' => __DIR__ . '/maintenance/benchmarks/bench_if_switch.php',
'BenchStrtrStrReplace' => __DIR__ . '/maintenance/benchmarks/bench_strtr_str_replace.php',
'BenchUtf8TitleCheck' => __DIR__ . '/maintenance/benchmarks/bench_utf8_title_check.php',
'BenchWfBaseConvert' => __DIR__ . '/maintenance/benchmarks/bench_wfBaseConvert.php',
'BenchWfIsWindows' => __DIR__ . '/maintenance/benchmarks/bench_wfIsWindows.php',
'BenchWikimediaBaseConvert' => __DIR__ . '/maintenance/benchmarks/bench_Wikimedia_base_convert.php',
'BenchmarkDeleteTruncate' => __DIR__ . '/maintenance/benchmarks/bench_delete_truncate.php',
'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php',
'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php',
@ -179,34 +188,34 @@ $wgAutoloadLocalClasses = array(
'BitmapMetadataHandler' => __DIR__ . '/includes/media/BitmapMetadataHandler.php',
'Blob' => __DIR__ . '/includes/db/DatabaseUtility.php',
'Block' => __DIR__ . '/includes/Block.php',
'BlockListPager' => __DIR__ . '/includes/specials/SpecialBlockList.php',
'BlockListPager' => __DIR__ . '/includes/specials/pagers/BlockListPager.php',
'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
'BrokenRedirectsPage' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/BufferingStatsdDataFactory.php',
'CLDRPluralRuleConverter' => __DIR__ . '/languages/utils/CLDRPluralRuleConverter.php',
'CLDRPluralRuleConverterExpression' => __DIR__ . '/languages/utils/CLDRPluralRuleConverterExpression.php',
'CLDRPluralRuleConverterFragment' => __DIR__ . '/languages/utils/CLDRPluralRuleConverterFragment.php',
'CLDRPluralRuleConverterOperator' => __DIR__ . '/languages/utils/CLDRPluralRuleConverterOperator.php',
'CLDRPluralRuleError' => __DIR__ . '/languages/utils/CLDRPluralRuleError.php',
'CLDRPluralRuleEvaluator' => __DIR__ . '/languages/utils/CLDRPluralRuleEvaluator.php',
'CLDRPluralRuleEvaluatorRange' => __DIR__ . '/languages/utils/CLDRPluralRuleEvaluatorRange.php',
'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
'CLIParser' => __DIR__ . '/maintenance/parse.php',
'CSSMin' => __DIR__ . '/includes/libs/CSSMin.php',
'CacheDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'CacheHelper' => __DIR__ . '/includes/cache/CacheHelper.php',
'CacheTime' => __DIR__ . '/includes/parser/CacheTime.php',
'CachedAction' => __DIR__ . '/includes/actions/CachedAction.php',
'CachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/CachedBagOStuff.php',
'CachingSiteStore' => __DIR__ . '/includes/site/CachingSiteStore.php',
'CapsCleanup' => __DIR__ . '/maintenance/cleanupCaps.php',
'Category' => __DIR__ . '/includes/Category.php',
'CategoryFinder' => __DIR__ . '/includes/CategoryFinder.php',
'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php',
'CategoryMembershipChangeJob' => __DIR__ . '/includes/jobqueue/jobs/CategoryMembershipChangeJob.php',
'CategoryPage' => __DIR__ . '/includes/page/CategoryPage.php',
'CategoryPager' => __DIR__ . '/includes/specials/SpecialCategories.php',
'CategoryPager' => __DIR__ . '/includes/specials/pagers/CategoryPager.php',
'CategoryViewer' => __DIR__ . '/includes/CategoryViewer.php',
'CdbException' => __DIR__ . '/includes/compat/CdbCompat.php',
'CdbReader' => __DIR__ . '/includes/compat/CdbCompat.php',
'CdbWriter' => __DIR__ . '/includes/compat/CdbCompat.php',
'CdnCacheUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php',
'CdnPurgeJob' => __DIR__ . '/includes/jobqueue/jobs/CdnPurgeJob.php',
'CentralIdLookup' => __DIR__ . '/includes/user/CentralIdLookup.php',
'CgzCopyTransaction' => __DIR__ . '/maintenance/storage/recompressTracked.php',
'ChangePassword' => __DIR__ . '/maintenance/changePassword.php',
'ChangeTags' => __DIR__ . '/includes/changetags/ChangeTags.php',
@ -235,19 +244,19 @@ $wgAutoloadLocalClasses = array(
'CleanupPreferences' => __DIR__ . '/maintenance/cleanupPreferences.php',
'CleanupRemovedModules' => __DIR__ . '/maintenance/cleanupRemovedModules.php',
'CleanupSpam' => __DIR__ . '/maintenance/cleanupSpam.php',
'ClearCacheStats' => __DIR__ . '/maintenance/clearCacheStats.php',
'ClearInterwikiCache' => __DIR__ . '/maintenance/clearInterwikiCache.php',
'CliInstaller' => __DIR__ . '/includes/installer/CliInstaller.php',
'CloneDatabase' => __DIR__ . '/includes/db/CloneDatabase.php',
'CodeContentHandler' => __DIR__ . '/includes/content/CodeContentHandler.php',
'Collation' => __DIR__ . '/includes/Collation.php',
'CollationCkb' => __DIR__ . '/includes/Collation.php',
'CollationEt' => __DIR__ . '/includes/Collation.php',
'Collation' => __DIR__ . '/includes/collation/Collation.php',
'CollationCkb' => __DIR__ . '/includes/collation/CollationCkb.php',
'CollationEt' => __DIR__ . '/includes/collation/CollationEt.php',
'CommandLineInc' => __DIR__ . '/maintenance/commandLine.inc',
'CommandLineInstaller' => __DIR__ . '/maintenance/install.php',
'CompareParserCache' => __DIR__ . '/maintenance/compareParserCache.php',
'CompareParsers' => __DIR__ . '/maintenance/compareParsers.php',
'ComposerHookHandler' => __DIR__ . '/includes/composer/ComposerHookHandler.php',
'ComposerInstalled' => __DIR__ . '/includes/libs/composer/ComposerInstalled.php',
'ComposerJson' => __DIR__ . '/includes/libs/composer/ComposerJson.php',
'ComposerLock' => __DIR__ . '/includes/libs/composer/ComposerLock.php',
'ComposerPackageModifier' => __DIR__ . '/includes/composer/ComposerPackageModifier.php',
@ -262,13 +271,13 @@ $wgAutoloadLocalClasses = array(
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php',
'ContextSource' => __DIR__ . '/includes/context/ContextSource.php',
'ContribsPager' => __DIR__ . '/includes/specials/SpecialContributions.php',
'ContribsPager' => __DIR__ . '/includes/specials/pagers/ContribsPager.php',
'ConvertExtensionToRegistration' => __DIR__ . '/maintenance/convertExtensionToRegistration.php',
'ConvertLinks' => __DIR__ . '/maintenance/convertLinks.php',
'ConvertUserOptions' => __DIR__ . '/maintenance/convertUserOptions.php',
'ConverterRule' => __DIR__ . '/languages/ConverterRule.php',
'Cookie' => __DIR__ . '/includes/libs/Cookie.php',
'CookieJar' => __DIR__ . '/includes/libs/Cookie.php',
'CookieJar' => __DIR__ . '/includes/libs/CookieJar.php',
'CopyFileBackend' => __DIR__ . '/maintenance/copyFileBackend.php',
'CopyFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'CopyJobQueue' => __DIR__ . '/maintenance/copyJobQueue.php',
@ -283,7 +292,7 @@ $wgAutoloadLocalClasses = array(
'CsvStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'CurlHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
'DBAccessBase' => __DIR__ . '/includes/dao/DBAccessBase.php',
'DBAccessError' => __DIR__ . '/includes/db/LBFactory.php',
'DBAccessError' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
'DBAccessObjectUtils' => __DIR__ . '/includes/dao/DBAccessObjectUtils.php',
'DBConnRef' => __DIR__ . '/includes/db/DBConnRef.php',
'DBConnectionError' => __DIR__ . '/includes/db/DatabaseError.php',
@ -293,9 +302,13 @@ $wgAutoloadLocalClasses = array(
'DBLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
'DBMasterPos' => __DIR__ . '/includes/db/DatabaseUtility.php',
'DBQueryError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBReadOnlyError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBReplicationWaitError' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
'DBSiteStore' => __DIR__ . '/includes/site/DBSiteStore.php',
'DBTransactionError' => __DIR__ . '/includes/db/DatabaseError.php',
'DBUnexpectedError' => __DIR__ . '/includes/db/DatabaseError.php',
'DataUpdate' => __DIR__ . '/includes/deferred/DataUpdate.php',
'Database' => __DIR__ . '/includes/db/Database.php',
'DatabaseBase' => __DIR__ . '/includes/db/Database.php',
'DatabaseInstaller' => __DIR__ . '/includes/installer/DatabaseInstaller.php',
'DatabaseLag' => __DIR__ . '/maintenance/lag.php',
@ -311,7 +324,7 @@ $wgAutoloadLocalClasses = array(
'DateFormats' => __DIR__ . '/maintenance/language/date-formats.php',
'DateFormatter' => __DIR__ . '/includes/parser/DateFormatter.php',
'DeadendPagesPage' => __DIR__ . '/includes/specials/SpecialDeadendpages.php',
'DeferrableUpdate' => __DIR__ . '/includes/deferred/DeferredUpdates.php',
'DeferrableUpdate' => __DIR__ . '/includes/deferred/DeferrableUpdate.php',
'DeferredStringifier' => __DIR__ . '/includes/libs/DeferredStringifier.php',
'DeferredUpdates' => __DIR__ . '/includes/deferred/DeferredUpdates.php',
'DeleteAction' => __DIR__ . '/includes/actions/DeleteAction.php',
@ -321,17 +334,19 @@ $wgAutoloadLocalClasses = array(
'DeleteDefaultMessages' => __DIR__ . '/maintenance/deleteDefaultMessages.php',
'DeleteEqualMessages' => __DIR__ . '/maintenance/deleteEqualMessages.php',
'DeleteFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'DeleteLinksJob' => __DIR__ . '/includes/jobqueue/jobs/DeleteLinksJob.php',
'DeleteLogFormatter' => __DIR__ . '/includes/logging/DeleteLogFormatter.php',
'DeleteOldRevisions' => __DIR__ . '/maintenance/deleteOldRevisions.php',
'DeleteOrphanedRevisions' => __DIR__ . '/maintenance/deleteOrphanedRevisions.php',
'DeleteRevision' => __DIR__ . '/maintenance/deleteRevision.php',
'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php',
'DeletedContribsPager' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php',
'DeletedContributionsPage' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
'DependencyWrapper' => __DIR__ . '/includes/cache/CacheDependency.php',
'DeprecatedGlobal' => __DIR__ . '/includes/DeprecatedGlobal.php',
'DeprecatedInterfaceFinder' => __DIR__ . '/maintenance/findDeprecated.php',
'DerivativeContext' => __DIR__ . '/includes/context/DerivativeContext.php',
'DerivativeRequest' => __DIR__ . '/includes/WebRequest.php',
'DerivativeRequest' => __DIR__ . '/includes/DerivativeRequest.php',
'DerivativeResourceLoaderContext' => __DIR__ . '/includes/resourceloader/DerivativeResourceLoaderContext.php',
'DescribeFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
'Diff' => __DIR__ . '/includes/diff/DairikiDiff.php',
@ -350,23 +365,24 @@ $wgAutoloadLocalClasses = array(
'DoubleRedirectJob' => __DIR__ . '/includes/jobqueue/jobs/DoubleRedirectJob.php',
'DoubleRedirectsPage' => __DIR__ . '/includes/specials/SpecialDoubleRedirects.php',
'DoubleReplacer' => __DIR__ . '/includes/libs/replacers/DoubleReplacer.php',
'DummyLinker' => __DIR__ . '/includes/Linker.php',
'DummyLinker' => __DIR__ . '/includes/DummyLinker.php',
'DummyTermColorer' => __DIR__ . '/maintenance/term/MWTerm.php',
'Dump7ZipOutput' => __DIR__ . '/includes/Export.php',
'DumpBZip2Output' => __DIR__ . '/includes/Export.php',
'DumpDBZip2Output' => __DIR__ . '/maintenance/backup.inc',
'DumpFileOutput' => __DIR__ . '/includes/Export.php',
'DumpFilter' => __DIR__ . '/includes/Export.php',
'DumpGZipOutput' => __DIR__ . '/includes/Export.php',
'Dump7ZipOutput' => __DIR__ . '/includes/export/Dump7ZipOutput.php',
'DumpBZip2Output' => __DIR__ . '/includes/export/DumpBZip2Output.php',
'DumpBackup' => __DIR__ . '/maintenance/dumpBackup.php',
'DumpDBZip2Output' => __DIR__ . '/includes/export/DumpDBZip2Output.php',
'DumpFileOutput' => __DIR__ . '/includes/export/DumpFileOutput.php',
'DumpFilter' => __DIR__ . '/includes/export/DumpFilter.php',
'DumpGZipOutput' => __DIR__ . '/includes/export/DumpGZipOutput.php',
'DumpIterator' => __DIR__ . '/maintenance/dumpIterator.php',
'DumpLatestFilter' => __DIR__ . '/includes/Export.php',
'DumpLatestFilter' => __DIR__ . '/includes/export/DumpLatestFilter.php',
'DumpLinks' => __DIR__ . '/maintenance/dumpLinks.php',
'DumpMessages' => __DIR__ . '/maintenance/language/dumpMessages.php',
'DumpMultiWriter' => __DIR__ . '/includes/Export.php',
'DumpNamespaceFilter' => __DIR__ . '/includes/Export.php',
'DumpNotalkFilter' => __DIR__ . '/includes/Export.php',
'DumpOutput' => __DIR__ . '/includes/Export.php',
'DumpPipeOutput' => __DIR__ . '/includes/Export.php',
'DumpMultiWriter' => __DIR__ . '/includes/export/DumpMultiWriter.php',
'DumpNamespaceFilter' => __DIR__ . '/includes/export/DumpNamespaceFilter.php',
'DumpNotalkFilter' => __DIR__ . '/includes/export/DumpNotalkFilter.php',
'DumpOutput' => __DIR__ . '/includes/export/DumpOutput.php',
'DumpPipeOutput' => __DIR__ . '/includes/export/DumpPipeOutput.php',
'DumpRenderer' => __DIR__ . '/maintenance/renderDump.php',
'DumpRev' => __DIR__ . '/maintenance/storage/dumpRev.php',
'DuplicateJob' => __DIR__ . '/includes/jobqueue/jobs/DuplicateJob.php',
@ -376,7 +392,7 @@ $wgAutoloadLocalClasses = array(
'EditWatchlistCheckboxSeriesField' => __DIR__ . '/includes/specials/SpecialEditWatchlist.php',
'EditWatchlistNormalHTMLForm' => __DIR__ . '/includes/specials/SpecialEditWatchlist.php',
'EmailConfirmation' => __DIR__ . '/includes/specials/SpecialConfirmemail.php',
'EmailInvalidation' => __DIR__ . '/includes/specials/SpecialConfirmemail.php',
'EmailInvalidation' => __DIR__ . '/includes/specials/SpecialEmailInvalidate.php',
'EmailNotification' => __DIR__ . '/includes/mail/EmailNotification.php',
'EmaillingJob' => __DIR__ . '/includes/jobqueue/jobs/EmaillingJob.php',
'EmptyBagOStuff' => __DIR__ . '/includes/libs/objectcache/EmptyBagOStuff.php',
@ -384,11 +400,13 @@ $wgAutoloadLocalClasses = array(
'EnhancedChangesList' => __DIR__ . '/includes/changes/EnhancedChangesList.php',
'EnotifNotifyJob' => __DIR__ . '/includes/jobqueue/jobs/EnotifNotifyJob.php',
'EnqueueJob' => __DIR__ . '/includes/jobqueue/jobs/EnqueueJob.php',
'EnqueueableDataUpdate' => __DIR__ . '/includes/deferred/DataUpdate.php',
'EraseArchivedFile' => __DIR__ . '/maintenance/eraseArchivedFile.php',
'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php',
'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
'EventRelayerMCRD' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerMCRD.php',
'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php',
'EventRelayerGroup' => __DIR__ . '/includes/EventRelayerGroup.php',
'EventRelayerKafka' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerKafka.php',
'EventRelayerNull' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerNull.php',
'Exif' => __DIR__ . '/includes/media/Exif.php',
'ExifBitmapHandler' => __DIR__ . '/includes/media/ExifBitmap.php',
'ExplodeIterator' => __DIR__ . '/includes/libs/ExplodeIterator.php',
@ -410,12 +428,12 @@ $wgAutoloadLocalClasses = array(
'FSFileOpHandle' => __DIR__ . '/includes/filebackend/FSFileBackend.php',
'FSLockManager' => __DIR__ . '/includes/filebackend/lockmanager/FSLockManager.php',
'FSRepo' => __DIR__ . '/includes/filerepo/FSRepo.php',
'FakeAuthTemplate' => __DIR__ . '/includes/specialpage/LoginSignupSpecialPage.php',
'FakeConverter' => __DIR__ . '/languages/FakeConverter.php',
'FakeMaintenance' => __DIR__ . '/maintenance/Maintenance.php',
'FakeResultWrapper' => __DIR__ . '/includes/db/DatabaseUtility.php',
'Fallback' => __DIR__ . '/includes/Fallback.php',
'FatalError' => __DIR__ . '/includes/exception/FatalError.php',
'FauxRequest' => __DIR__ . '/includes/WebRequest.php',
'FauxRequest' => __DIR__ . '/includes/FauxRequest.php',
'FauxResponse' => __DIR__ . '/includes/WebResponse.php',
'FeedItem' => __DIR__ . '/includes/Feed.php',
'FeedUtils' => __DIR__ . '/includes/FeedUtils.php',
@ -423,6 +441,7 @@ $wgAutoloadLocalClasses = array(
'FewestrevisionsPage' => __DIR__ . '/includes/specials/SpecialFewestrevisions.php',
'Field' => __DIR__ . '/includes/db/DatabaseUtility.php',
'File' => __DIR__ . '/includes/filerepo/file/File.php',
'FileAwareNodeVisitor' => __DIR__ . '/maintenance/findDeprecated.php',
'FileBackend' => __DIR__ . '/includes/filebackend/FileBackend.php',
'FileBackendDBRepoWrapper' => __DIR__ . '/includes/filerepo/FileBackendDBRepoWrapper.php',
'FileBackendError' => __DIR__ . '/includes/filebackend/FileBackend.php',
@ -436,6 +455,7 @@ $wgAutoloadLocalClasses = array(
'FileBackendStoreShardListIterator' => __DIR__ . '/includes/filebackend/FileBackendStore.php',
'FileBasedSiteLookup' => __DIR__ . '/includes/site/FileBasedSiteLookup.php',
'FileCacheBase' => __DIR__ . '/includes/cache/FileCacheBase.php',
'FileContentsHasher' => __DIR__ . '/includes/utils/FileContentsHasher.php',
'FileDeleteForm' => __DIR__ . '/includes/FileDeleteForm.php',
'FileDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
'FileDuplicateSearchPage' => __DIR__ . '/includes/specials/SpecialFileDuplicateSearch.php',
@ -444,8 +464,10 @@ $wgAutoloadLocalClasses = array(
'FileOpBatch' => __DIR__ . '/includes/filebackend/FileOpBatch.php',
'FileRepo' => __DIR__ . '/includes/filerepo/FileRepo.php',
'FileRepoStatus' => __DIR__ . '/includes/filerepo/FileRepoStatus.php',
'FindDeprecated' => __DIR__ . '/maintenance/findDeprecated.php',
'FindHooks' => __DIR__ . '/maintenance/findHooks.php',
'FindMissingFiles' => __DIR__ . '/maintenance/findMissingFiles.php',
'FindOrphanedFiles' => __DIR__ . '/maintenance/findOrphanedFiles.php',
'FixBug20757' => __DIR__ . '/maintenance/storage/fixBug20757.php',
'FixDefaultJsonContentPages' => __DIR__ . '/maintenance/fixDefaultJsonContentPages.php',
'FixDoubleRedirects' => __DIR__ . '/maintenance/fixDoubleRedirects.php',
@ -471,11 +493,11 @@ $wgAutoloadLocalClasses = array(
'GanConverter' => __DIR__ . '/languages/classes/LanguageGan.php',
'GenderCache' => __DIR__ . '/includes/cache/GenderCache.php',
'GenerateCollationData' => __DIR__ . '/maintenance/language/generateCollationData.php',
'GenerateCommonPassword' => __DIR__ . '/maintenance/createCommonPasswordCdb.php',
'GenerateJsonI18n' => __DIR__ . '/maintenance/generateJsonI18n.php',
'GenerateNormalizerDataAr' => __DIR__ . '/maintenance/language/generateNormalizerDataAr.php',
'GenerateNormalizerDataMl' => __DIR__ . '/maintenance/language/generateNormalizerDataMl.php',
'GenerateSitemap' => __DIR__ . '/maintenance/generateSitemap.php',
'GenerateUtf8Case' => __DIR__ . '/maintenance/language/generateUtf8Case.php',
'GenericArrayObject' => __DIR__ . '/includes/libs/GenericArrayObject.php',
'GetConfiguration' => __DIR__ . '/maintenance/getConfiguration.php',
'GetLagTimes' => __DIR__ . '/maintenance/getLagTimes.php',
@ -491,6 +513,7 @@ $wgAutoloadLocalClasses = array(
'HTMLCacheUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/HTMLCacheUpdateJob.php',
'HTMLCheckField' => __DIR__ . '/includes/htmlform/HTMLCheckField.php',
'HTMLCheckMatrix' => __DIR__ . '/includes/htmlform/HTMLCheckMatrix.php',
'HTMLComboboxField' => __DIR__ . '/includes/htmlform/HTMLComboboxField.php',
'HTMLEditTools' => __DIR__ . '/includes/htmlform/HTMLEditTools.php',
'HTMLFileCache' => __DIR__ . '/includes/cache/HTMLFileCache.php',
'HTMLFloatField' => __DIR__ . '/includes/htmlform/HTMLFloatField.php',
@ -542,31 +565,32 @@ $wgAutoloadLocalClasses = array(
'IDatabase' => __DIR__ . '/includes/db/IDatabase.php',
'IEContentAnalyzer' => __DIR__ . '/includes/libs/IEContentAnalyzer.php',
'IEUrlExtension' => __DIR__ . '/includes/libs/IEUrlExtension.php',
'IExpiringStore' => __DIR__ . '/includes/libs/objectcache/IExpiringStore.php',
'IJobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
'IORMRow' => __DIR__ . '/includes/db/IORMRow.php',
'IORMTable' => __DIR__ . '/includes/db/IORMTable.php',
'IP' => __DIR__ . '/includes/utils/IP.php',
'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php',
'IPTC' => __DIR__ . '/includes/media/IPTC.php',
'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php',
'IcuCollation' => __DIR__ . '/includes/Collation.php',
'IdentityCollation' => __DIR__ . '/includes/Collation.php',
'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php',
'IdentityCollation' => __DIR__ . '/includes/collation/IdentityCollation.php',
'ImageBuilder' => __DIR__ . '/maintenance/rebuildImages.php',
'ImageCleanup' => __DIR__ . '/maintenance/cleanupImages.php',
'ImageGallery' => __DIR__ . '/includes/gallery/TraditionalImageGallery.php',
'ImageGalleryBase' => __DIR__ . '/includes/gallery/ImageGalleryBase.php',
'ImageHandler' => __DIR__ . '/includes/media/ImageHandler.php',
'ImageHistoryList' => __DIR__ . '/includes/page/ImagePage.php',
'ImageHistoryPseudoPager' => __DIR__ . '/includes/page/ImagePage.php',
'ImageListPager' => __DIR__ . '/includes/specials/SpecialListfiles.php',
'ImageHistoryList' => __DIR__ . '/includes/page/ImageHistoryList.php',
'ImageHistoryPseudoPager' => __DIR__ . '/includes/page/ImageHistoryPseudoPager.php',
'ImageListPager' => __DIR__ . '/includes/specials/pagers/ImageListPager.php',
'ImagePage' => __DIR__ . '/includes/page/ImagePage.php',
'ImageQueryPage' => __DIR__ . '/includes/specialpage/ImageQueryPage.php',
'ImportLogFormatter' => __DIR__ . '/includes/logging/ImportLogFormatter.php',
'ImportReporter' => __DIR__ . '/includes/specials/SpecialImport.php',
'ImportSiteScripts' => __DIR__ . '/maintenance/importSiteScripts.php',
'ImportSites' => __DIR__ . '/maintenance/importSites.php',
'ImportSource' => __DIR__ . '/includes/Import.php',
'ImportStreamSource' => __DIR__ . '/includes/Import.php',
'ImportStringSource' => __DIR__ . '/includes/Import.php',
'ImportSource' => __DIR__ . '/includes/import/ImportSource.php',
'ImportStreamSource' => __DIR__ . '/includes/import/ImportStreamSource.php',
'ImportStringSource' => __DIR__ . '/includes/import/ImportStringSource.php',
'ImportTextFiles' => __DIR__ . '/maintenance/importTextFiles.php',
'ImportTitleFactory' => __DIR__ . '/includes/title/ImportTitleFactory.php',
'IncludableSpecialPage' => __DIR__ . '/includes/specialpage/IncludableSpecialPage.php',
'IndexPager' => __DIR__ . '/includes/pager/IndexPager.php',
@ -575,7 +599,8 @@ $wgAutoloadLocalClasses = array(
'InitSiteStats' => __DIR__ . '/maintenance/initSiteStats.php',
'InstallDocFormatter' => __DIR__ . '/includes/installer/InstallDocFormatter.php',
'Installer' => __DIR__ . '/includes/installer/Installer.php',
'InstallerOverrides' => __DIR__ . '/mw-config/overrides.php',
'InstallerOverrides' => __DIR__ . '/includes/installer/InstallerOverrides.php',
'InstallerSessionProvider' => __DIR__ . '/includes/installer/InstallerSessionProvider.php',
'Interwiki' => __DIR__ . '/includes/interwiki/Interwiki.php',
'InvalidPassword' => __DIR__ . '/includes/password/InvalidPassword.php',
'IteratorDecorator' => __DIR__ . '/includes/utils/iterators/IteratorDecorator.php',
@ -601,6 +626,8 @@ $wgAutoloadLocalClasses = array(
'JobQueueError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueFederated' => __DIR__ . '/includes/jobqueue/JobQueueFederated.php',
'JobQueueGroup' => __DIR__ . '/includes/jobqueue/JobQueueGroup.php',
'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php',
'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/JobQueue.php',
'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php',
'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php',
'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php',
@ -610,16 +637,16 @@ $wgAutoloadLocalClasses = array(
'JsonContentHandler' => __DIR__ . '/includes/content/JsonContentHandler.php',
'KkConverter' => __DIR__ . '/languages/classes/LanguageKk.php',
'KuConverter' => __DIR__ . '/languages/classes/LanguageKu.php',
'LBFactory' => __DIR__ . '/includes/db/LBFactory.php',
'LBFactoryFake' => __DIR__ . '/includes/db/LBFactory.php',
'LBFactoryMulti' => __DIR__ . '/includes/db/LBFactoryMulti.php',
'LBFactorySimple' => __DIR__ . '/includes/db/LBFactory.php',
'LBFactorySingle' => __DIR__ . '/includes/db/LBFactorySingle.php',
'LCStore' => __DIR__ . '/includes/cache/LocalisationCache.php',
'LCStoreCDB' => __DIR__ . '/includes/cache/LocalisationCache.php',
'LCStoreDB' => __DIR__ . '/includes/cache/LocalisationCache.php',
'LCStoreNull' => __DIR__ . '/includes/cache/LocalisationCache.php',
'LCStoreStaticArray' => __DIR__ . '/includes/cache/LCStoreStaticArray.php',
'LBFactory' => __DIR__ . '/includes/db/loadbalancer/LBFactory.php',
'LBFactoryFake' => __DIR__ . '/includes/db/loadbalancer/LBFactoryFake.php',
'LBFactoryMulti' => __DIR__ . '/includes/db/loadbalancer/LBFactoryMulti.php',
'LBFactorySimple' => __DIR__ . '/includes/db/loadbalancer/LBFactorySimple.php',
'LBFactorySingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php',
'LCStore' => __DIR__ . '/includes/cache/localisation/LCStore.php',
'LCStoreCDB' => __DIR__ . '/includes/cache/localisation/LCStoreCDB.php',
'LCStoreDB' => __DIR__ . '/includes/cache/localisation/LCStoreDB.php',
'LCStoreNull' => __DIR__ . '/includes/cache/localisation/LCStoreNull.php',
'LCStoreStaticArray' => __DIR__ . '/includes/cache/localisation/LCStoreStaticArray.php',
'LangMemUsage' => __DIR__ . '/maintenance/language/langmemusage.php',
'Language' => __DIR__ . '/languages/Language.php',
'LanguageAr' => __DIR__ . '/languages/classes/LanguageAr.php',
@ -683,21 +710,24 @@ $wgAutoloadLocalClasses = array(
'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksDeletionUpdate.php',
'LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate.php',
'ListDuplicatedFilesPage' => __DIR__ . '/includes/specials/SpecialListDuplicatedFiles.php',
'ListToggle' => __DIR__ . '/includes/ListToggle.php',
'ListVariants' => __DIR__ . '/maintenance/language/listVariants.php',
'ListredirectsPage' => __DIR__ . '/includes/specials/SpecialListredirects.php',
'LoadBalancer' => __DIR__ . '/includes/db/LoadBalancer.php',
'LoadBalancerSingle' => __DIR__ . '/includes/db/LBFactorySingle.php',
'LoadMonitor' => __DIR__ . '/includes/db/LoadMonitor.php',
'LoadMonitorMySQL' => __DIR__ . '/includes/db/LoadMonitorMySQL.php',
'LoadMonitorNull' => __DIR__ . '/includes/db/LoadMonitor.php',
'LoadBalancer' => __DIR__ . '/includes/db/loadbalancer/LoadBalancer.php',
'LoadBalancerSingle' => __DIR__ . '/includes/db/loadbalancer/LBFactorySingle.php',
'LoadMonitor' => __DIR__ . '/includes/db/loadbalancer/LoadMonitor.php',
'LoadMonitorMySQL' => __DIR__ . '/includes/db/loadbalancer/LoadMonitorMySQL.php',
'LoadMonitorNull' => __DIR__ . '/includes/db/loadbalancer/LoadMonitor.php',
'LocalFile' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileDeleteBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileLockError' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileMoveBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalFileRestoreBatch' => __DIR__ . '/includes/filerepo/file/LocalFile.php',
'LocalIdLookup' => __DIR__ . '/includes/user/LocalIdLookup.php',
'LocalRepo' => __DIR__ . '/includes/filerepo/LocalRepo.php',
'LocalSettingsGenerator' => __DIR__ . '/includes/installer/LocalSettingsGenerator.php',
'LocalisationCache' => __DIR__ . '/includes/cache/LocalisationCache.php',
'LocalisationCacheBulkLoad' => __DIR__ . '/includes/cache/LocalisationCache.php',
'LocalisationCache' => __DIR__ . '/includes/cache/localisation/LocalisationCache.php',
'LocalisationCacheBulkLoad' => __DIR__ . '/includes/cache/localisation/LocalisationCacheBulkLoad.php',
'LockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'LockManagerGroup' => __DIR__ . '/includes/filebackend/lockmanager/LockManagerGroup.php',
'LogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
@ -706,34 +736,41 @@ $wgAutoloadLocalClasses = array(
'LogFormatter' => __DIR__ . '/includes/logging/LogFormatter.php',
'LogPage' => __DIR__ . '/includes/logging/LogPage.php',
'LogPager' => __DIR__ . '/includes/logging/LogPager.php',
'LoggedOutEditToken' => __DIR__ . '/includes/user/LoggedOutEditToken.php',
'LoggedUpdateMaintenance' => __DIR__ . '/maintenance/Maintenance.php',
'LoginForm' => __DIR__ . '/includes/specials/SpecialUserlogin.php',
'LoginForm' => __DIR__ . '/includes/specialpage/LoginSignupSpecialPage.php',
'LoginHelper' => __DIR__ . '/includes/specials/helpers/LoginHelper.php',
'LoginSignupSpecialPage' => __DIR__ . '/includes/specialpage/LoginSignupSpecialPage.php',
'LonelyPagesPage' => __DIR__ . '/includes/specials/SpecialLonelypages.php',
'LongPagesPage' => __DIR__ . '/includes/specials/SpecialLongpages.php',
'MIMEsearchPage' => __DIR__ . '/includes/specials/SpecialMIMEsearch.php',
'MWCallableUpdate' => __DIR__ . '/includes/deferred/CallableUpdate.php',
'MWContentSerializationException' => __DIR__ . '/includes/content/ContentHandler.php',
'MWCryptHKDF' => __DIR__ . '/includes/utils/MWCryptHKDF.php',
'MWCryptHash' => __DIR__ . '/includes/utils/MWCryptHash.php',
'MWCryptRand' => __DIR__ . '/includes/utils/MWCryptRand.php',
'MWDebug' => __DIR__ . '/includes/debug/MWDebug.php',
'MWDocGen' => __DIR__ . '/maintenance/mwdocgen.php',
'MWException' => __DIR__ . '/includes/exception/MWException.php',
'MWExceptionHandler' => __DIR__ . '/includes/exception/MWExceptionHandler.php',
'MWHookException' => __DIR__ . '/includes/Hooks.php',
'MWGrants' => __DIR__ . '/includes/utils/MWGrants.php',
'MWHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
'MWMemcached' => __DIR__ . '/includes/objectcache/MemcachedClient.php',
'MWMemcached' => __DIR__ . '/includes/compat/MemcachedClientCompat.php',
'MWMessagePack' => __DIR__ . '/includes/libs/MWMessagePack.php',
'MWNamespace' => __DIR__ . '/includes/MWNamespace.php',
'MWOldPassword' => __DIR__ . '/includes/password/MWOldPassword.php',
'MWRestrictions' => __DIR__ . '/includes/utils/MWRestrictions.php',
'MWSaltedPassword' => __DIR__ . '/includes/password/MWSaltedPassword.php',
'MWTidy' => __DIR__ . '/includes/parser/MWTidy.php',
'MWTimestamp' => __DIR__ . '/includes/MWTimestamp.php',
'MWUnknownContentModelException' => __DIR__ . '/includes/content/ContentHandler.php',
'MachineReadableRCFeedFormatter' => __DIR__ . '/includes/rcfeed/MachineReadableRCFeedFormatter.php',
'MagicWord' => __DIR__ . '/includes/MagicWord.php',
'MagicWordArray' => __DIR__ . '/includes/MagicWord.php',
'MagicWordArray' => __DIR__ . '/includes/MagicWordArray.php',
'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php',
'Maintenance' => __DIR__ . '/maintenance/Maintenance.php',
'MaintenanceFormatInstallDoc' => __DIR__ . '/maintenance/formatInstallDoc.php',
'MakeTestEdits' => __DIR__ . '/maintenance/makeTestEdits.php',
'MalformedTitleException' => __DIR__ . '/includes/title/MalformedTitleException.php',
'ManualLogEntry' => __DIR__ . '/includes/logging/LogEntry.php',
'MapCacheLRU' => __DIR__ . '/includes/libs/MapCacheLRU.php',
@ -752,6 +789,44 @@ $wgAutoloadLocalClasses = array(
'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
'MediaWikiVersionFetcher' => __DIR__ . '/includes/MediaWikiVersionFetcher.php',
'MediaWiki\\Auth\\AbstractAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPreAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPreAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AbstractSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/AbstractSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AuthManager' => __DIR__ . '/includes/auth/AuthManager.php',
'MediaWiki\\Auth\\AuthManagerAuthPlugin' => __DIR__ . '/includes/auth/AuthManagerAuthPlugin.php',
'MediaWiki\\Auth\\AuthManagerAuthPluginUser' => __DIR__ . '/includes/auth/AuthManagerAuthPlugin.php',
'MediaWiki\\Auth\\AuthPluginPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/AuthPluginPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\AuthenticationProvider' => __DIR__ . '/includes/auth/AuthenticationProvider.php',
'MediaWiki\\Auth\\AuthenticationRequest' => __DIR__ . '/includes/auth/AuthenticationRequest.php',
'MediaWiki\\Auth\\AuthenticationResponse' => __DIR__ . '/includes/auth/AuthenticationResponse.php',
'MediaWiki\\Auth\\ButtonAuthenticationRequest' => __DIR__ . '/includes/auth/ButtonAuthenticationRequest.php',
'MediaWiki\\Auth\\CheckBlocksSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/CheckBlocksSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\ConfirmLinkAuthenticationRequest' => __DIR__ . '/includes/auth/ConfirmLinkAuthenticationRequest.php',
'MediaWiki\\Auth\\ConfirmLinkSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/ConfirmLinkSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\CreateFromLoginAuthenticationRequest' => __DIR__ . '/includes/auth/CreateFromLoginAuthenticationRequest.php',
'MediaWiki\\Auth\\CreatedAccountAuthenticationRequest' => __DIR__ . '/includes/auth/CreatedAccountAuthenticationRequest.php',
'MediaWiki\\Auth\\CreationReasonAuthenticationRequest' => __DIR__ . '/includes/auth/CreationReasonAuthenticationRequest.php',
'MediaWiki\\Auth\\EmailNotificationSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/EmailNotificationSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\LegacyHookPreAuthenticationProvider' => __DIR__ . '/includes/auth/LegacyHookPreAuthenticationProvider.php',
'MediaWiki\\Auth\\LocalPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/LocalPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\PasswordAuthenticationRequest' => __DIR__ . '/includes/auth/PasswordAuthenticationRequest.php',
'MediaWiki\\Auth\\PasswordDomainAuthenticationRequest' => __DIR__ . '/includes/auth/PasswordDomainAuthenticationRequest.php',
'MediaWiki\\Auth\\PreAuthenticationProvider' => __DIR__ . '/includes/auth/PreAuthenticationProvider.php',
'MediaWiki\\Auth\\PrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/PrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\RememberMeAuthenticationRequest' => __DIR__ . '/includes/auth/RememberMeAuthenticationRequest.php',
'MediaWiki\\Auth\\ResetPasswordSecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/ResetPasswordSecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\SecondaryAuthenticationProvider' => __DIR__ . '/includes/auth/SecondaryAuthenticationProvider.php',
'MediaWiki\\Auth\\TemporaryPasswordAuthenticationRequest' => __DIR__ . '/includes/auth/TemporaryPasswordAuthenticationRequest.php',
'MediaWiki\\Auth\\TemporaryPasswordPrimaryAuthenticationProvider' => __DIR__ . '/includes/auth/TemporaryPasswordPrimaryAuthenticationProvider.php',
'MediaWiki\\Auth\\ThrottlePreAuthenticationProvider' => __DIR__ . '/includes/auth/ThrottlePreAuthenticationProvider.php',
'MediaWiki\\Auth\\Throttler' => __DIR__ . '/includes/auth/Throttler.php',
'MediaWiki\\Auth\\UserDataAuthenticationRequest' => __DIR__ . '/includes/auth/UserDataAuthenticationRequest.php',
'MediaWiki\\Auth\\UsernameAuthenticationRequest' => __DIR__ . '/includes/auth/UsernameAuthenticationRequest.php',
'MediaWiki\\Languages\\Data\\Names' => __DIR__ . '/languages/data/Names.php',
'MediaWiki\\Languages\\Data\\ZhConversion' => __DIR__ . '/languages/data/ZhConversion.php',
'MediaWiki\\Linker\\LinkTarget' => __DIR__ . '/includes/linker/LinkTarget.php',
'MediaWiki\\Logger\\LegacyLogger' => __DIR__ . '/includes/debug/logger/LegacyLogger.php',
'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
@ -766,6 +841,24 @@ $wgAutoloadLocalClasses = array(
'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php',
'MediaWiki\\Services\\ServiceContainer' => __DIR__ . '/includes/Services/ServiceContainer.php',
'MediaWiki\\Session\\BotPasswordSessionProvider' => __DIR__ . '/includes/session/BotPasswordSessionProvider.php',
'MediaWiki\\Session\\CookieSessionProvider' => __DIR__ . '/includes/session/CookieSessionProvider.php',
'MediaWiki\\Session\\ImmutableSessionProviderWithCookie' => __DIR__ . '/includes/session/ImmutableSessionProviderWithCookie.php',
'MediaWiki\\Session\\MetadataMergeException' => __DIR__ . '/includes/session/MetadataMergeException.php',
'MediaWiki\\Session\\PHPSessionHandler' => __DIR__ . '/includes/session/PHPSessionHandler.php',
'MediaWiki\\Session\\Session' => __DIR__ . '/includes/session/Session.php',
'MediaWiki\\Session\\SessionBackend' => __DIR__ . '/includes/session/SessionBackend.php',
'MediaWiki\\Session\\SessionId' => __DIR__ . '/includes/session/SessionId.php',
'MediaWiki\\Session\\SessionInfo' => __DIR__ . '/includes/session/SessionInfo.php',
'MediaWiki\\Session\\SessionManager' => __DIR__ . '/includes/session/SessionManager.php',
'MediaWiki\\Session\\SessionManagerInterface' => __DIR__ . '/includes/session/SessionManagerInterface.php',
'MediaWiki\\Session\\SessionProvider' => __DIR__ . '/includes/session/SessionProvider.php',
'MediaWiki\\Session\\SessionProviderInterface' => __DIR__ . '/includes/session/SessionProviderInterface.php',
'MediaWiki\\Session\\Token' => __DIR__ . '/includes/session/Token.php',
'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php',
'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
'MediaWiki\\Tidy\\Html5Depurate' => __DIR__ . '/includes/tidy/Html5Depurate.php',
'MediaWiki\\Tidy\\RaggettBase' => __DIR__ . '/includes/tidy/RaggettBase.php',
'MediaWiki\\Tidy\\RaggettExternal' => __DIR__ . '/includes/tidy/RaggettExternal.php',
@ -776,17 +869,22 @@ $wgAutoloadLocalClasses = array(
'MediaWiki\\Widget\\ComplexNamespaceInputWidget' => __DIR__ . '/includes/widget/ComplexNamespaceInputWidget.php',
'MediaWiki\\Widget\\ComplexTitleInputWidget' => __DIR__ . '/includes/widget/ComplexTitleInputWidget.php',
'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
'MediaWiki\\Widget\\SearchInputWidget' => __DIR__ . '/includes/widget/SearchInputWidget.php',
'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
'MemCachedClientforWiki' => __DIR__ . '/includes/objectcache/MemcachedClient.php',
'MemCachedClientforWiki' => __DIR__ . '/includes/compat/MemcachedClientCompat.php',
'MemcLockManager' => __DIR__ . '/includes/filebackend/lockmanager/MemcLockManager.php',
'MemcachedBagOStuff' => __DIR__ . '/includes/objectcache/MemcachedBagOStuff.php',
'MemcachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedBagOStuff.php',
'MemcachedClient' => __DIR__ . '/includes/libs/objectcache/MemcachedClient.php',
'MemcachedPeclBagOStuff' => __DIR__ . '/includes/objectcache/MemcachedPeclBagOStuff.php',
'MemcachedPhpBagOStuff' => __DIR__ . '/includes/objectcache/MemcachedPhpBagOStuff.php',
'MemcachedPhpBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedPhpBagOStuff.php',
'MemoizedCallable' => __DIR__ . '/includes/libs/MemoizedCallable.php',
'MemoryFileBackend' => __DIR__ . '/includes/filebackend/MemoryFileBackend.php',
'MergeHistoryPager' => __DIR__ . '/includes/specials/SpecialMergeHistory.php',
'MergeHistory' => __DIR__ . '/includes/MergeHistory.php',
'MergeHistoryPager' => __DIR__ . '/includes/specials/pagers/MergeHistoryPager.php',
'MergeLogFormatter' => __DIR__ . '/includes/logging/MergeLogFormatter.php',
'MergeMessageFileList' => __DIR__ . '/maintenance/mergeMessageFileList.php',
'MergeableUpdate' => __DIR__ . '/includes/deferred/MergeableUpdate.php',
'Message' => __DIR__ . '/includes/Message.php',
'MessageBlobStore' => __DIR__ . '/includes/cache/MessageBlobStore.php',
'MessageCache' => __DIR__ . '/includes/cache/MessageCache.php',
@ -815,11 +913,10 @@ $wgAutoloadLocalClasses = array(
'MssqlUpdater' => __DIR__ . '/includes/installer/MssqlUpdater.php',
'MultiConfig' => __DIR__ . '/includes/config/MultiConfig.php',
'MultiHttpClient' => __DIR__ . '/includes/libs/MultiHttpClient.php',
'MultiWriteBagOStuff' => __DIR__ . '/includes/objectcache/MultiWriteBagOStuff.php',
'MultiWriteBagOStuff' => __DIR__ . '/includes/libs/objectcache/MultiWriteBagOStuff.php',
'MutableConfig' => __DIR__ . '/includes/config/MutableConfig.php',
'MutableContext' => __DIR__ . '/includes/context/MutableContext.php',
'MwSql' => __DIR__ . '/maintenance/sql.php',
'MyLocalSettingsGenerator' => __DIR__ . '/mw-config/overrides.php',
'MySQLField' => __DIR__ . '/includes/db/DatabaseMysqlBase.php',
'MySQLMasterPos' => __DIR__ . '/includes/db/DatabaseMysqlBase.php',
'MySqlLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
@ -830,8 +927,8 @@ $wgAutoloadLocalClasses = array(
'NamespaceAwareForeignTitleFactory' => __DIR__ . '/includes/title/NamespaceAwareForeignTitleFactory.php',
'NamespaceConflictChecker' => __DIR__ . '/maintenance/namespaceDupes.php',
'NamespaceImportTitleFactory' => __DIR__ . '/includes/title/NamespaceImportTitleFactory.php',
'NewFilesPager' => __DIR__ . '/includes/specials/SpecialNewimages.php',
'NewPagesPager' => __DIR__ . '/includes/specials/SpecialNewpages.php',
'NewFilesPager' => __DIR__ . '/includes/specials/pagers/NewFilesPager.php',
'NewPagesPager' => __DIR__ . '/includes/specials/pagers/NewPagesPager.php',
'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
'NolinesImageGallery' => __DIR__ . '/includes/gallery/NolinesImageGallery.php',
'NotRecursiveIterator' => __DIR__ . '/includes/utils/iterators/NotRecursiveIterator.php',
@ -842,15 +939,11 @@ $wgAutoloadLocalClasses = array(
'NullJob' => __DIR__ . '/includes/jobqueue/jobs/NullJob.php',
'NullLockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
'NullRepo' => __DIR__ . '/includes/filerepo/NullRepo.php',
'NullStatsdDataFactory' => __DIR__ . '/includes/libs/stats/NullStatsdDataFactory.php',
'OOUIHTMLForm' => __DIR__ . '/includes/htmlform/OOUIHTMLForm.php',
'ORAField' => __DIR__ . '/includes/db/DatabaseOracle.php',
'ORAResult' => __DIR__ . '/includes/db/DatabaseOracle.php',
'ORMIterator' => __DIR__ . '/includes/db/ORMIterator.php',
'ORMResult' => __DIR__ . '/includes/db/ORMResult.php',
'ORMRow' => __DIR__ . '/includes/db/ORMRow.php',
'ORMTable' => __DIR__ . '/includes/db/ORMTable.php',
'ObjectCache' => __DIR__ . '/includes/objectcache/ObjectCache.php',
'ObjectCacheSessionHandler' => __DIR__ . '/includes/objectcache/ObjectCacheSessionHandler.php',
'ObjectFactory' => __DIR__ . '/includes/libs/ObjectFactory.php',
'ObjectFileCache' => __DIR__ . '/includes/cache/ObjectFileCache.php',
'OldChangesList' => __DIR__ . '/includes/changes/OldChangesList.php',
@ -888,11 +981,12 @@ $wgAutoloadLocalClasses = array(
'PackedHoverImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
'PackedImageGallery' => __DIR__ . '/includes/gallery/PackedImageGallery.php',
'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
'Page' => __DIR__ . '/includes/page/WikiPage.php',
'Page' => __DIR__ . '/includes/page/Page.php',
'PageArchive' => __DIR__ . '/includes/specials/SpecialUndelete.php',
'PageExists' => __DIR__ . '/maintenance/pageExists.php',
'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
'PageLinkRenderer' => __DIR__ . '/includes/title/PageLinkRenderer.php',
'PageProps' => __DIR__ . '/includes/PageProps.php',
'PageQueryPage' => __DIR__ . '/includes/specialpage/PageQueryPage.php',
'Pager' => __DIR__ . '/includes/pager/Pager.php',
'ParameterizedPassword' => __DIR__ . '/includes/password/ParameterizedPassword.php',
@ -906,6 +1000,7 @@ $wgAutoloadLocalClasses = array(
'PasswordError' => __DIR__ . '/includes/password/PasswordError.php',
'PasswordFactory' => __DIR__ . '/includes/password/PasswordFactory.php',
'PasswordPolicyChecks' => __DIR__ . '/includes/password/PasswordPolicyChecks.php',
'PasswordReset' => __DIR__ . '/includes/user/PasswordReset.php',
'PatchSql' => __DIR__ . '/maintenance/patchSql.php',
'PathRouter' => __DIR__ . '/includes/PathRouter.php',
'PathRouterPatternReplacer' => __DIR__ . '/includes/PathRouter.php',
@ -936,7 +1031,6 @@ $wgAutoloadLocalClasses = array(
'PostgresBlob' => __DIR__ . '/includes/db/DatabasePostgres.php',
'PostgresField' => __DIR__ . '/includes/db/DatabasePostgres.php',
'PostgresInstaller' => __DIR__ . '/includes/installer/PostgresInstaller.php',
'PostgresTransactionState' => __DIR__ . '/includes/db/DatabasePostgres.php',
'PostgresUpdater' => __DIR__ . '/includes/installer/PostgresUpdater.php',
'Preferences' => __DIR__ . '/includes/Preferences.php',
'PreferencesForm' => __DIR__ . '/includes/Preferences.php',
@ -954,7 +1048,6 @@ $wgAutoloadLocalClasses = array(
'ProfilerOutputDump' => __DIR__ . '/includes/profiler/output/ProfilerOutputDump.php',
'ProfilerOutputStats' => __DIR__ . '/includes/profiler/output/ProfilerOutputStats.php',
'ProfilerOutputText' => __DIR__ . '/includes/profiler/output/ProfilerOutputText.php',
'ProfilerOutputUdp' => __DIR__ . '/includes/profiler/output/ProfilerOutputUdp.php',
'ProfilerSectionOnly' => __DIR__ . '/includes/profiler/ProfilerSectionOnly.php',
'ProfilerStub' => __DIR__ . '/includes/profiler/ProfilerStub.php',
'ProfilerXhprof' => __DIR__ . '/includes/profiler/ProfilerXhprof.php',
@ -962,7 +1055,7 @@ $wgAutoloadLocalClasses = array(
'ProtectAction' => __DIR__ . '/includes/actions/ProtectAction.php',
'ProtectLogFormatter' => __DIR__ . '/includes/logging/ProtectLogFormatter.php',
'ProtectedPagesPager' => __DIR__ . '/includes/specials/SpecialProtectedpages.php',
'ProtectedTitlesPager' => __DIR__ . '/includes/specials/SpecialProtectedtitles.php',
'ProtectedTitlesPager' => __DIR__ . '/includes/specials/pagers/ProtectedTitlesPager.php',
'ProtectionForm' => __DIR__ . '/includes/ProtectionForm.php',
'PruneFileCache' => __DIR__ . '/maintenance/pruneFileCache.php',
'PublishStashedFileJob' => __DIR__ . '/includes/jobqueue/jobs/PublishStashedFileJob.php',
@ -1018,6 +1111,7 @@ $wgAutoloadLocalClasses = array(
'ReplicatedBagOStuff' => __DIR__ . '/includes/libs/objectcache/ReplicatedBagOStuff.php',
'RepoGroup' => __DIR__ . '/includes/filerepo/RepoGroup.php',
'RequestContext' => __DIR__ . '/includes/context/RequestContext.php',
'ResetUserEmail' => __DIR__ . '/maintenance/resetUserEmail.php',
'ResetUserTokens' => __DIR__ . '/maintenance/resetUserTokens.php',
'ResourceFileCache' => __DIR__ . '/includes/cache/ResourceFileCache.php',
'ResourceLoader' => __DIR__ . '/includes/resourceloader/ResourceLoader.php',
@ -1038,6 +1132,7 @@ $wgAutoloadLocalClasses = array(
'ResourceLoaderSkinModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSkinModule.php',
'ResourceLoaderSpecialCharacterDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSpecialCharacterDataModule.php',
'ResourceLoaderStartUpModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderStartUpModule.php',
'ResourceLoaderUploadDialogModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUploadDialogModule.php',
'ResourceLoaderUserCSSPrefsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php',
'ResourceLoaderUserDefaultsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserDefaultsModule.php',
'ResourceLoaderUserGroupsModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderUserGroupsModule.php',
@ -1076,7 +1171,7 @@ $wgAutoloadLocalClasses = array(
'RollbackEdits' => __DIR__ . '/maintenance/rollbackEdits.php',
'RowUpdateGenerator' => __DIR__ . '/includes/utils/RowUpdateGenerator.php',
'RunJobs' => __DIR__ . '/maintenance/runJobs.php',
'RunningStat' => __DIR__ . '/includes/libs/RunningStat.php',
'RunningStat' => __DIR__ . '/includes/compat/RunningStatCompat.php',
'SQLiteField' => __DIR__ . '/includes/db/DatabaseSqlite.php',
'SVGMetadataExtractor' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
'SVGReader' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
@ -1088,33 +1183,36 @@ $wgAutoloadLocalClasses = array(
'SearchDatabase' => __DIR__ . '/includes/search/SearchDatabase.php',
'SearchDump' => __DIR__ . '/maintenance/dumpIterator.php',
'SearchEngine' => __DIR__ . '/includes/search/SearchEngine.php',
'SearchEngineConfig' => __DIR__ . '/includes/search/SearchEngineConfig.php',
'SearchEngineDummy' => __DIR__ . '/includes/search/SearchEngine.php',
'SearchEngineFactory' => __DIR__ . '/includes/search/SearchEngineFactory.php',
'SearchExactMatchRescorer' => __DIR__ . '/includes/search/SearchExactMatchRescorer.php',
'SearchHighlighter' => __DIR__ . '/includes/search/SearchHighlighter.php',
'SearchMssql' => __DIR__ . '/includes/search/SearchMssql.php',
'SearchMySQL' => __DIR__ . '/includes/search/SearchMySQL.php',
'SearchNearMatchResultSet' => __DIR__ . '/includes/search/SearchResultSet.php',
'SearchNearMatchResultSet' => __DIR__ . '/includes/search/SearchNearMatchResultSet.php',
'SearchNearMatcher' => __DIR__ . '/includes/search/SearchNearMatcher.php',
'SearchOracle' => __DIR__ . '/includes/search/SearchOracle.php',
'SearchPostgres' => __DIR__ . '/includes/search/SearchPostgres.php',
'SearchResult' => __DIR__ . '/includes/search/SearchResult.php',
'SearchResultSet' => __DIR__ . '/includes/search/SearchResultSet.php',
'SearchSqlite' => __DIR__ . '/includes/search/SearchSqlite.php',
'SearchSuggestion' => __DIR__ . '/includes/search/SearchSuggestion.php',
'SearchSuggestionSet' => __DIR__ . '/includes/search/SearchSuggestionSet.php',
'SearchUpdate' => __DIR__ . '/includes/deferred/SearchUpdate.php',
'SectionProfileCallback' => __DIR__ . '/includes/profiler/SectionProfiler.php',
'SectionProfiler' => __DIR__ . '/includes/profiler/SectionProfiler.php',
'SevenZipStream' => __DIR__ . '/maintenance/7zip.inc',
'ShiConverter' => __DIR__ . '/languages/classes/LanguageShi.php',
'ShortPagesPage' => __DIR__ . '/includes/specials/SpecialShortpages.php',
'ShowCacheStats' => __DIR__ . '/maintenance/showCacheStats.php',
'ShowJobs' => __DIR__ . '/maintenance/showJobs.php',
'ShowSiteStats' => __DIR__ . '/maintenance/showSiteStats.php',
'Site' => __DIR__ . '/includes/site/Site.php',
'SiteArray' => __DIR__ . '/includes/site/SiteList.php',
'SiteConfiguration' => __DIR__ . '/includes/SiteConfiguration.php',
'SiteExporter' => __DIR__ . '/includes/site/SiteExporter.php',
'SiteImporter' => __DIR__ . '/includes/site/SiteImporter.php',
'SiteList' => __DIR__ . '/includes/site/SiteList.php',
'SiteLookup' => __DIR__ . '/includes/site/SiteLookup.php',
'SiteObject' => __DIR__ . '/includes/site/Site.php',
'SiteSQLStore' => __DIR__ . '/includes/site/SiteSQLStore.php',
'SiteStats' => __DIR__ . '/includes/SiteStats.php',
'SiteStatsInit' => __DIR__ . '/includes/SiteStats.php',
@ -1134,13 +1232,16 @@ $wgAutoloadLocalClasses = array(
'SpecialAllMyUploads' => __DIR__ . '/includes/specials/SpecialMyRedirectPages.php',
'SpecialAllPages' => __DIR__ . '/includes/specials/SpecialAllPages.php',
'SpecialApiHelp' => __DIR__ . '/includes/specials/SpecialApiHelp.php',
'SpecialApiSandbox' => __DIR__ . '/includes/specials/SpecialApiSandbox.php',
'SpecialBlankpage' => __DIR__ . '/includes/specials/SpecialBlankpage.php',
'SpecialBlock' => __DIR__ . '/includes/specials/SpecialBlock.php',
'SpecialBlockList' => __DIR__ . '/includes/specials/SpecialBlockList.php',
'SpecialBookSources' => __DIR__ . '/includes/specials/SpecialBooksources.php',
'SpecialBotPasswords' => __DIR__ . '/includes/specials/SpecialBotPasswords.php',
'SpecialCachedPage' => __DIR__ . '/includes/specials/SpecialCachedPage.php',
'SpecialCategories' => __DIR__ . '/includes/specials/SpecialCategories.php',
'SpecialChangeContentModel' => __DIR__ . '/includes/specials/SpecialChangeContentModel.php',
'SpecialChangeCredentials' => __DIR__ . '/includes/specials/SpecialChangeCredentials.php',
'SpecialChangeEmail' => __DIR__ . '/includes/specials/SpecialChangeEmail.php',
'SpecialChangePassword' => __DIR__ . '/includes/specials/SpecialChangePassword.php',
'SpecialComparePages' => __DIR__ . '/includes/specials/SpecialComparePages.php',
@ -1155,9 +1256,11 @@ $wgAutoloadLocalClasses = array(
'SpecialFilepath' => __DIR__ . '/includes/specials/SpecialFilepath.php',
'SpecialImport' => __DIR__ . '/includes/specials/SpecialImport.php',
'SpecialJavaScriptTest' => __DIR__ . '/includes/specials/SpecialJavaScriptTest.php',
'SpecialLinkAccounts' => __DIR__ . '/includes/specials/SpecialLinkAccounts.php',
'SpecialListAdmins' => __DIR__ . '/includes/specials/SpecialListusers.php',
'SpecialListBots' => __DIR__ . '/includes/specials/SpecialListusers.php',
'SpecialListFiles' => __DIR__ . '/includes/specials/SpecialListfiles.php',
'SpecialListGrants' => __DIR__ . '/includes/specials/SpecialListgrants.php',
'SpecialListGroupRights' => __DIR__ . '/includes/specials/SpecialListgrouprights.php',
'SpecialListUsers' => __DIR__ . '/includes/specials/SpecialListusers.php',
'SpecialLockdb' => __DIR__ . '/includes/specials/SpecialLockdb.php',
@ -1183,10 +1286,12 @@ $wgAutoloadLocalClasses = array(
'SpecialProtectedtitles' => __DIR__ . '/includes/specials/SpecialProtectedtitles.php',
'SpecialRandomInCategory' => __DIR__ . '/includes/specials/SpecialRandomInCategory.php',
'SpecialRandomredirect' => __DIR__ . '/includes/specials/SpecialRandomredirect.php',
'SpecialRandomrootpage' => __DIR__ . '/includes/specials/SpecialRandomrootpage.php',
'SpecialRecentChanges' => __DIR__ . '/includes/specials/SpecialRecentchanges.php',
'SpecialRecentChangesLinked' => __DIR__ . '/includes/specials/SpecialRecentchangeslinked.php',
'SpecialRedirect' => __DIR__ . '/includes/specials/SpecialRedirect.php',
'SpecialRedirectToSpecial' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php',
'SpecialRemoveCredentials' => __DIR__ . '/includes/specials/SpecialRemoveCredentials.php',
'SpecialResetTokens' => __DIR__ . '/includes/specials/SpecialResetTokens.php',
'SpecialRevisionDelete' => __DIR__ . '/includes/specials/SpecialRevisiondelete.php',
'SpecialRunJobs' => __DIR__ . '/includes/specials/SpecialRunJobs.php',
@ -1197,26 +1302,29 @@ $wgAutoloadLocalClasses = array(
'SpecialTrackingCategories' => __DIR__ . '/includes/specials/SpecialTrackingCategories.php',
'SpecialUnblock' => __DIR__ . '/includes/specials/SpecialUnblock.php',
'SpecialUndelete' => __DIR__ . '/includes/specials/SpecialUndelete.php',
'SpecialUnlinkAccounts' => __DIR__ . '/includes/specials/SpecialUnlinkAccounts.php',
'SpecialUnlockdb' => __DIR__ . '/includes/specials/SpecialUnlockdb.php',
'SpecialUpload' => __DIR__ . '/includes/specials/SpecialUpload.php',
'SpecialUploadStash' => __DIR__ . '/includes/specials/SpecialUploadStash.php',
'SpecialUploadStashTooLargeException' => __DIR__ . '/includes/specials/SpecialUploadStash.php',
'SpecialUserlogout' => __DIR__ . '/includes/specials/SpecialUserlogout.php',
'SpecialUserLogin' => __DIR__ . '/includes/specials/SpecialUserLogin.php',
'SpecialUserLogout' => __DIR__ . '/includes/specials/SpecialUserLogout.php',
'SpecialVersion' => __DIR__ . '/includes/specials/SpecialVersion.php',
'SpecialWatchlist' => __DIR__ . '/includes/specials/SpecialWatchlist.php',
'SpecialWhatLinksHere' => __DIR__ . '/includes/specials/SpecialWhatlinkshere.php',
'SqlBagOStuff' => __DIR__ . '/includes/objectcache/SqlBagOStuff.php',
'SqlDataUpdate' => __DIR__ . '/includes/deferred/SqlDataUpdate.php',
'SqlSearchResultSet' => __DIR__ . '/includes/search/SearchResultSet.php',
'SqlSearchResultSet' => __DIR__ . '/includes/search/SqlSearchResultSet.php',
'Sqlite' => __DIR__ . '/maintenance/sqlite.inc',
'SqliteInstaller' => __DIR__ . '/includes/installer/SqliteInstaller.php',
'SqliteMaintenance' => __DIR__ . '/maintenance/sqlite.php',
'SqliteUpdater' => __DIR__ . '/includes/installer/SqliteUpdater.php',
'SquidPurgeClient' => __DIR__ . '/includes/SquidPurgeClient.php',
'SquidPurgeClientPool' => __DIR__ . '/includes/SquidPurgeClient.php',
'SquidUpdate' => __DIR__ . '/includes/deferred/SquidUpdate.php',
'SquidPurgeClient' => __DIR__ . '/includes/clientpool/SquidPurgeClient.php',
'SquidPurgeClientPool' => __DIR__ . '/includes/clientpool/SquidPurgeClientPool.php',
'SquidUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php',
'SrConverter' => __DIR__ . '/languages/classes/LanguageSr.php',
'StatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'StatsdAwareInterface' => __DIR__ . '/includes/libs/stats/StatsdAwareInterface.php',
'Status' => __DIR__ . '/includes/Status.php',
'StatusValue' => __DIR__ . '/includes/libs/StatusValue.php',
'StorageTypeStats' => __DIR__ . '/maintenance/storage/storageTypeStats.php',
@ -1238,7 +1346,6 @@ $wgAutoloadLocalClasses = array(
'SwiftVirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/SwiftVirtualRESTService.php',
'SyncFileBackend' => __DIR__ . '/maintenance/syncFileBackend.php',
'TableCleanup' => __DIR__ . '/maintenance/cleanupTable.inc',
'TableCleanupTest' => __DIR__ . '/maintenance/cleanupTable.inc',
'TableDiffFormatter' => __DIR__ . '/includes/diff/TableDiffFormatter.php',
'TablePager' => __DIR__ . '/includes/pager/TablePager.php',
'TagLogFormatter' => __DIR__ . '/includes/logging/TagLogFormatter.php',
@ -1248,7 +1355,7 @@ $wgAutoloadLocalClasses = array(
'TestFileOpPerformance' => __DIR__ . '/maintenance/fileOpPerfTest.php',
'TextContent' => __DIR__ . '/includes/content/TextContent.php',
'TextContentHandler' => __DIR__ . '/includes/content/TextContentHandler.php',
'TextPassDumper' => __DIR__ . '/maintenance/backupTextPass.inc',
'TextPassDumper' => __DIR__ . '/maintenance/dumpTextPass.php',
'TextStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'TgConverter' => __DIR__ . '/languages/classes/LanguageTg.php',
'ThrottledError' => __DIR__ . '/includes/exception/ThrottledError.php',
@ -1257,6 +1364,7 @@ $wgAutoloadLocalClasses = array(
'TidyUpBug37714' => __DIR__ . '/maintenance/tidyUpBug37714.php',
'TiffHandler' => __DIR__ . '/includes/media/Tiff.php',
'TimestampException' => __DIR__ . '/includes/exception/TimestampException.php',
'Timing' => __DIR__ . '/includes/libs/Timing.php',
'Title' => __DIR__ . '/includes/Title.php',
'TitleArray' => __DIR__ . '/includes/TitleArray.php',
'TitleArrayFromResult' => __DIR__ . '/includes/TitleArrayFromResult.php',
@ -1307,9 +1415,8 @@ $wgAutoloadLocalClasses = array(
'UploadFromFile' => __DIR__ . '/includes/upload/UploadFromFile.php',
'UploadFromStash' => __DIR__ . '/includes/upload/UploadFromStash.php',
'UploadFromUrl' => __DIR__ . '/includes/upload/UploadFromUrl.php',
'UploadFromUrlJob' => __DIR__ . '/includes/jobqueue/jobs/UploadFromUrlJob.php',
'UploadLogFormatter' => __DIR__ . '/includes/logging/UploadLogFormatter.php',
'UploadSourceAdapter' => __DIR__ . '/includes/Import.php',
'UploadSourceAdapter' => __DIR__ . '/includes/import/UploadSourceAdapter.php',
'UploadSourceField' => __DIR__ . '/includes/specials/SpecialUpload.php',
'UploadStash' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashBadPathException' => __DIR__ . '/includes/upload/UploadStash.php',
@ -1322,23 +1429,22 @@ $wgAutoloadLocalClasses = array(
'UploadStashNotLoggedInException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashWrongOwnerException' => __DIR__ . '/includes/upload/UploadStash.php',
'UploadStashZeroLengthFileException' => __DIR__ . '/includes/upload/UploadStash.php',
'UppercaseCollation' => __DIR__ . '/includes/Collation.php',
'UppercaseCollation' => __DIR__ . '/includes/collation/UppercaseCollation.php',
'UsageException' => __DIR__ . '/includes/api/ApiMain.php',
'User' => __DIR__ . '/includes/User.php',
'UserArray' => __DIR__ . '/includes/UserArray.php',
'UserArrayFromResult' => __DIR__ . '/includes/UserArrayFromResult.php',
'User' => __DIR__ . '/includes/user/User.php',
'UserArray' => __DIR__ . '/includes/user/UserArray.php',
'UserArrayFromResult' => __DIR__ . '/includes/user/UserArrayFromResult.php',
'UserBlockedError' => __DIR__ . '/includes/exception/UserBlockedError.php',
'UserCache' => __DIR__ . '/includes/cache/UserCache.php',
'UserDupes' => __DIR__ . '/maintenance/userDupes.inc',
'UserMailer' => __DIR__ . '/includes/mail/UserMailer.php',
'UserNamePrefixSearch' => __DIR__ . '/includes/user/UserNamePrefixSearch.php',
'UserNotLoggedIn' => __DIR__ . '/includes/exception/UserNotLoggedIn.php',
'UserOptions' => __DIR__ . '/maintenance/userOptions.inc',
'UserPasswordPolicy' => __DIR__ . '/includes/password/UserPasswordPolicy.php',
'UserRightsProxy' => __DIR__ . '/includes/UserRightsProxy.php',
'UsercreateTemplate' => __DIR__ . '/includes/templates/Usercreate.php',
'UserloginTemplate' => __DIR__ . '/includes/templates/Userlogin.php',
'UserRightsProxy' => __DIR__ . '/includes/user/UserRightsProxy.php',
'UserrightsPage' => __DIR__ . '/includes/specials/SpecialUserrights.php',
'UsersPager' => __DIR__ . '/includes/specials/SpecialListusers.php',
'UsersPager' => __DIR__ . '/includes/specials/pagers/UsersPager.php',
'UtfNormal' => __DIR__ . '/includes/compat/normal/UtfNormal.php',
'UzConverter' => __DIR__ . '/languages/classes/LanguageUz.php',
'VFormHTMLForm' => __DIR__ . '/includes/htmlform/VFormHTMLForm.php',
@ -1347,7 +1453,6 @@ $wgAutoloadLocalClasses = array(
'VirtualRESTService' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTService.php',
'VirtualRESTServiceClient' => __DIR__ . '/includes/libs/virtualrest/VirtualRESTServiceClient.php',
'WANObjectCache' => __DIR__ . '/includes/libs/objectcache/WANObjectCache.php',
'WaitForSlave' => __DIR__ . '/maintenance/waitForSlave.php',
'WantedCategoriesPage' => __DIR__ . '/includes/specials/SpecialWantedcategories.php',
'WantedFilesPage' => __DIR__ . '/includes/specials/SpecialWantedfiles.php',
'WantedPagesPage' => __DIR__ . '/includes/specials/SpecialWantedpages.php',
@ -1355,39 +1460,40 @@ $wgAutoloadLocalClasses = array(
'WantedTemplatesPage' => __DIR__ . '/includes/specials/SpecialWantedtemplates.php',
'WatchAction' => __DIR__ . '/includes/actions/WatchAction.php',
'WatchedItem' => __DIR__ . '/includes/WatchedItem.php',
'WatchedItemStore' => __DIR__ . '/includes/WatchedItemStore.php',
'WatchlistCleanup' => __DIR__ . '/maintenance/cleanupWatchlist.php',
'WebInstaller' => __DIR__ . '/includes/installer/WebInstaller.php',
'WebInstallerComplete' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerCopying' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerDBConnect' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerDBSettings' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerDocument' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerExistingWiki' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerInstall' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerLanguage' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerName' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerOptions' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerComplete' => __DIR__ . '/includes/installer/WebInstallerComplete.php',
'WebInstallerCopying' => __DIR__ . '/includes/installer/WebInstallerCopying.php',
'WebInstallerDBConnect' => __DIR__ . '/includes/installer/WebInstallerDBConnect.php',
'WebInstallerDBSettings' => __DIR__ . '/includes/installer/WebInstallerDBSettings.php',
'WebInstallerDocument' => __DIR__ . '/includes/installer/WebInstallerDocument.php',
'WebInstallerExistingWiki' => __DIR__ . '/includes/installer/WebInstallerExistingWiki.php',
'WebInstallerInstall' => __DIR__ . '/includes/installer/WebInstallerInstall.php',
'WebInstallerLanguage' => __DIR__ . '/includes/installer/WebInstallerLanguage.php',
'WebInstallerName' => __DIR__ . '/includes/installer/WebInstallerName.php',
'WebInstallerOptions' => __DIR__ . '/includes/installer/WebInstallerOptions.php',
'WebInstallerOutput' => __DIR__ . '/includes/installer/WebInstallerOutput.php',
'WebInstallerPage' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerReadme' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerReleaseNotes' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerRestart' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerUpgrade' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerUpgradeDoc' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerWelcome' => __DIR__ . '/includes/installer/WebInstallerPage.php',
'WebInstallerReadme' => __DIR__ . '/includes/installer/WebInstallerReadme.php',
'WebInstallerReleaseNotes' => __DIR__ . '/includes/installer/WebInstallerReleaseNotes.php',
'WebInstallerRestart' => __DIR__ . '/includes/installer/WebInstallerRestart.php',
'WebInstallerUpgrade' => __DIR__ . '/includes/installer/WebInstallerUpgrade.php',
'WebInstallerUpgradeDoc' => __DIR__ . '/includes/installer/WebInstallerUpgradeDoc.php',
'WebInstallerWelcome' => __DIR__ . '/includes/installer/WebInstallerWelcome.php',
'WebPHandler' => __DIR__ . '/includes/media/WebP.php',
'WebRequest' => __DIR__ . '/includes/WebRequest.php',
'WebRequestUpload' => __DIR__ . '/includes/WebRequest.php',
'WebRequestUpload' => __DIR__ . '/includes/WebRequestUpload.php',
'WebResponse' => __DIR__ . '/includes/WebResponse.php',
'WikiCategoryPage' => __DIR__ . '/includes/page/WikiCategoryPage.php',
'WikiDiff3' => __DIR__ . '/includes/diff/WikiDiff3.php',
'WikiExporter' => __DIR__ . '/includes/Export.php',
'WikiExporter' => __DIR__ . '/includes/export/WikiExporter.php',
'WikiFilePage' => __DIR__ . '/includes/page/WikiFilePage.php',
'WikiImporter' => __DIR__ . '/includes/Import.php',
'WikiImporter' => __DIR__ . '/includes/import/WikiImporter.php',
'WikiMap' => __DIR__ . '/includes/WikiMap.php',
'WikiPage' => __DIR__ . '/includes/page/WikiPage.php',
'WikiReference' => __DIR__ . '/includes/WikiMap.php',
'WikiRevision' => __DIR__ . '/includes/Import.php',
'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
'WikitextContent' => __DIR__ . '/includes/content/WikitextContent.php',
'WikitextContentHandler' => __DIR__ . '/includes/content/WikitextContentHandler.php',
@ -1403,7 +1509,7 @@ $wgAutoloadLocalClasses = array(
'XMPValidate' => __DIR__ . '/includes/media/XMPValidate.php',
'Xhprof' => __DIR__ . '/includes/libs/Xhprof.php',
'Xml' => __DIR__ . '/includes/Xml.php',
'XmlDumpWriter' => __DIR__ . '/includes/Export.php',
'XmlDumpWriter' => __DIR__ . '/includes/export/XmlDumpWriter.php',
'XmlJsCode' => __DIR__ . '/includes/Xml.php',
'XmlSelect' => __DIR__ . '/includes/XmlSelect.php',
'XmlTypeCheck' => __DIR__ . '/includes/libs/XmlTypeCheck.php',
@ -1411,4 +1517,4 @@ $wgAutoloadLocalClasses = array(
'ZipDirectoryReader' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',
'ZipDirectoryReaderError' => __DIR__ . '/includes/utils/ZipDirectoryReader.php',
'profile_point' => __DIR__ . '/profileinfo.php',
);
];

View File

@ -16,38 +16,48 @@
"wiki": "https://www.mediawiki.org/"
},
"require": {
"composer/semver": "1.0.0",
"cssjanus/cssjanus": "1.1.1",
"composer/semver": "1.4.0",
"cssjanus/cssjanus": "1.1.2",
"ext-ctype": "*",
"ext-iconv": "*",
"liuggio/statsd-php-client": "1.0.16",
"oyejorge/less.php": "1.7.0.9",
"ext-json": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"liuggio/statsd-php-client": "1.0.18",
"mediawiki/at-ease": "1.1.0",
"oojs/oojs-ui": "0.12.12",
"php": ">=5.3.3",
"oojs/oojs-ui": "0.17.1",
"oyejorge/less.php": "1.7.0.10",
"php": ">=5.5.9",
"psr/log": "1.0.0",
"wikimedia/assert": "0.2.2",
"wikimedia/base-convert": "1.0.1",
"wikimedia/cdb": "1.3.0",
"wikimedia/composer-merge-plugin": "1.3.0",
"wikimedia/ip-set": "1.0.1",
"wikimedia/cldr-plural-rule-parser": "1.0.0",
"wikimedia/composer-merge-plugin": "1.3.1",
"wikimedia/html-formatter": "1.0.1",
"wikimedia/ip-set": "1.1.0",
"wikimedia/php-session-serializer": "1.0.3",
"wikimedia/relpath": "1.0.3",
"wikimedia/running-stat": "1.1.0",
"wikimedia/utfnormal": "1.0.3",
"wikimedia/wrappedstring": "2.0.0",
"zordius/lightncandy": "0.21"
"zordius/lightncandy": "0.23"
},
"require-dev": {
"jakub-onderka/php-parallel-lint": "0.9",
"jakub-onderka/php-parallel-lint": "0.9.2",
"justinrainbow/json-schema": "~1.3",
"phpunit/phpunit": "3.7.37",
"mediawiki/mediawiki-codesniffer": "0.3.0",
"wikimedia/avro": "1.7.7",
"nmred/kafka-php": "0.1.4",
"monolog/monolog": "1.14.0"
"mediawiki/mediawiki-codesniffer": "0.7.2",
"monolog/monolog": "~1.18.2",
"nikic/php-parser": "1.4.1",
"nmred/kafka-php": "0.1.5",
"phpunit/phpunit": "4.8.24",
"wikimedia/avro": "1.7.7"
},
"suggest": {
"ext-apc": "Local data and opcode cache",
"ext-fileinfo": "Improved mime magic detection",
"ext-intl": "ICU integration",
"ext-mbstring": "Multibyte string support",
"ext-wikidiff2": "Diff accelerator",
"ext-apc": "Local data and opcode cache",
"monolog/monolog": "Flexible debug logging system",
"nmred/kafka-php": "Send debug log events to kafka",
"pear/mail": "Mail sending support",
@ -62,24 +72,25 @@
},
"scripts": {
"lint": "parallel-lint --exclude vendor",
"phpcs": "phpcs -p $PHPCS_ARGS",
"phpcs": "phpcs -p -s",
"fix": "phpcbf",
"pre-install-cmd": "ComposerHookHandler::onPreInstall",
"pre-update-cmd": "ComposerHookHandler::onPreUpdate",
"test": [
"composer lint",
"composer phpcs"
],
"pre-update-cmd": "ComposerHookHandler::onPreUpdate",
"pre-install-cmd": "ComposerHookHandler::onPreInstall"
]
},
"config": {
"prepend-autoloader": false,
"optimize-autoloader": true
"optimize-autoloader": true,
"prepend-autoloader": false
},
"extra": {
"merge-plugin": {
"include": [
"composer.local.json"
],
"merge-dev": false
"merge-dev": false
}
}
}

View File

@ -0,0 +1,9 @@
{
"extra": {
"merge-plugin": {
"include": [
"extensions/example/composer.json"
]
}
}
}

View File

@ -96,7 +96,7 @@ used.
Most importantly, the following functions have been deprecated:
* Revisions::getText() and Revisions::getRawText() is deprecated in favor Revisions::getContent()
* Revisions::getText() is deprecated in favor Revisions::getContent()
* WikiPage::getText() is deprecated in favor WikiPage::getContent()
Also, the old Article::getContent() (which returns text) is superceded by Article::getContentObject(). However, both
@ -148,7 +148,8 @@ using a model or format different from the default will result in an error.
There are some new globals that can be used to control the behavior of the ContentHandler facility:
* $wgContentHandlers associates content model IDs with the names of the appropriate ContentHandler subclasses.
* $wgContentHandlers associates content model IDs with the names of the appropriate ContentHandler subclasses
or callbacks that create an instance of the appropriate ContentHandler subclass.
* $wgNamespaceContentModels maps namespace IDs to a content model that should be the default for that namespace.

View File

@ -33,4 +33,4 @@ Currently there are a few different types of jobs:
Each job clears $wgUpdateRowsPerJob pages (500 by default).
enotifNotify
Used when $wgEnotifUseJobQ is true to send mail using the job queue.
Used to send mail using the job queue.

View File

@ -302,128 +302,189 @@
"ResourceModules": {
"type": "object",
"description": "ResourceLoader modules to register",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9-\\.]+$": {
"type": "object",
"description": "A single ResourceLoader module descriptor",
"properties": {
"localBasePath": {
"type": "string",
"description": "Base path to prepend to all local paths in $options. Defaults to $IP"
},
"remoteBasePath": {
"type": "string",
"description": "Base path to prepend to all remote paths in $options. Defaults to $wgScriptPath"
},
"remoteExtPath": {
"type": "string",
"description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
},
"scripts": {
"type": ["string", "array"],
"description": "Scripts to always include (array of file paths)",
"items": {
"type": "string"
}
},
"languageScripts": {
"type": "object",
"description": "Scripts to include in specific language contexts (mapping of language code to file path(s))",
"patternProperties": {
"^[a-zA-Z0-9-]{2,}$": {
"type": [
"string",
"array"
],
"anyOf": [
{
"description": "A ResourceLoaderFileModule definition",
"additionalProperties": false,
"properties": {
"localBasePath": {
"type": "string",
"description": "Base path to prepend to all local paths in $options. Defaults to $IP"
},
"remoteBasePath": {
"type": "string",
"description": "Base path to prepend to all remote paths in $options. Defaults to $wgScriptPath"
},
"remoteExtPath": {
"type": "string",
"description": "Equivalent of remoteBasePath, but relative to $wgExtensionAssetsPath"
},
"skipFunction": {
"type": "string",
"description": "Path to a file containing a JavaScript \"skip function\", if desired."
},
"scripts": {
"type": ["string", "array"],
"description": "Scripts to always include (array of file paths)",
"items": {
"type": "string"
}
},
"languageScripts": {
"type": "object",
"description": "Scripts to include in specific language contexts (mapping of language code to file path(s))",
"patternProperties": {
"^[a-zA-Z0-9-]{2,}$": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
}
}
},
"skinScripts": {
"type": "object",
"description": "Scripts to include in specific skin contexts (mapping of skin name to script(s)",
"patternProperties": {
".+": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
}
}
},
"debugScripts": {
"type": ["string", "array"],
"description": "Scripts to include in debug contexts",
"items": {
"type": "string"
}
},
"loaderScripts": {
"type": ["string", "array"],
"description": "Scripts to include in the startup module",
"items": {
"type": "string"
}
},
"dependencies": {
"type": ["string", "array"],
"description": "Modules which must be loaded before this module",
"items": {
"type": "string"
}
},
"styles": {
"type": ["string", "array", "object"],
"description": "Styles to always load",
"items": {
"type": "string"
}
},
"skinStyles": {
"type": "object",
"description": "Styles to include in specific skin contexts (mapping of skin name to style(s))",
"patternProperties": {
".+": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
}
}
},
"messages": {
"type": ["string", "array"],
"description": "Messages to always load",
"items": {
"type": "string"
}
},
"group": {
"type": "string",
"description": "Group which this module should be loaded together with"
},
"position": {
"type": "string",
"description": "Position on the page to load this module at",
"enum": [
"bottom",
"top"
]
},
"templates": {
"type": ["object", "array"],
"description": "Templates to be loaded for client-side usage"
},
"targets": {
"type": ["string", "array"],
"description": "ResourceLoader target the module can run on",
"items": {
"type": "string"
}
}
}
},
"skinScripts": {
"type": "object",
"description": "Scripts to include in specific skin contexts (mapping of skin name to script(s)",
"patternProperties": {
".+": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
{
"description": "A ResourceLoaderImageModule definition",
"additionalProperties": false,
"properties": {
"class": {
"enum": ["ResourceLoaderImageModule"]
},
"data": {
"type": "string"
},
"prefix": {
"type": "string"
},
"selector": {
"type": "string"
},
"selectorWithoutVariant": {
"type": "string"
},
"selectorWithVariant": {
"type": "string"
},
"variants": {
"type": "object"
},
"images": {
"type": "object"
},
"position": {
"enum": [
"top",
"bottom"
]
}
}
},
"debugScripts": {
"type": ["string", "array"],
"description": "Scripts to include in debug contexts",
"items": {
"type": "string"
}
},
"loaderScripts": {
"type": ["string", "array"],
"description": "Scripts to include in the startup module",
"items": {
"type": "string"
}
},
"dependencies": {
"type": ["string", "array"],
"description": "Modules which must be loaded before this module",
"items": {
"type": "string"
}
},
"styles": {
"type": ["string", "array", "object"],
"description": "Styles to always load",
"items": {
"type": "string"
}
},
"skinStyles": {
"type": "object",
"description": "Styles to include in specific skin contexts (mapping of skin name to style(s))",
"patternProperties": {
".+": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
{
"description": "An arbitrary ResourceLoaderModule definition",
"properties": {
"class": {
"type": "string",
"pattern": "^((?!ResourceLoader(File|Image)Module).)*$"
}
}
},
"messages": {
"type": ["string", "array"],
"description": "Messages to always load",
"items": {
"type": "string"
}
},
"group": {
"type": "string",
"description": "Group which this module should be loaded together with"
},
"position": {
"type": "string",
"description": "Position on the page to load this module at",
"enum": [
"bottom",
"top"
]
},
"templates": {
"type": "object",
"description": "Templates to be loaded for client-side usage"
},
"required": ["class"]
}
}
]
}
}
},
@ -447,6 +508,33 @@
"type": "object",
"description": "Registry of factory functions to create Config objects"
},
"SessionProviders": {
"type": "object",
"description": "Session providers"
},
"AuthManagerAutoConfig": {
"type": "object",
"description": "AuthManager auto-configuration",
"additionalProperties": false,
"properties": {
"preauth": {
"type": "object",
"description": "Pre-authentication providers"
},
"primaryauth": {
"type": "object",
"description": "Primary authentication providers"
},
"secondaryauth": {
"type": "object",
"description": "Secondary authentication providers"
}
}
},
"CentralIdLookupProviders": {
"type": "object",
"description": "Central ID lookup providers"
},
"namespaces": {
"type": "array",
"description": "Method to add extra namespaces",
@ -498,7 +586,10 @@
},
"TrackingCategories": {
"type": "array",
"description": "Tracking category message keys"
"description": "Tracking category message keys",
"items": {
"type": "string"
}
},
"DefaultUserOptions": {
"type": "object",
@ -506,15 +597,38 @@
},
"HiddenPrefs": {
"type": "array",
"description": "Preferences users cannot set"
"description": "Preferences users cannot set",
"items": {
"type": "string"
}
},
"GroupPermissions": {
"type": "object",
"description": "Default permissions to give to user groups"
"description": "Default permissions to give to user groups",
"patternProperties": {
"^[a-z]+$": {
"type": "object",
"patternProperties": {
"^[a-z]+$": {
"type": "boolean"
}
}
}
}
},
"RevokePermissions": {
"type": "object",
"description": "Default permissions to revoke from user groups"
"description": "Default permissions to revoke from user groups",
"patternProperties": {
"^[a-z]+$": {
"type": "object",
"patternProperties": {
"^[a-z]+$": {
"type": "boolean"
}
}
}
}
},
"ImplicitGroups": {
"type": "array",
@ -538,11 +652,19 @@
},
"AvailableRights": {
"type": "array",
"description": "User rights added by the extension"
"description": "User rights added by the extension",
"items": {
"type": "string"
}
},
"ContentHandlers": {
"type": "object",
"description": "Mapping of model ID to class name"
"description": "Mapping of model ID to class name",
"patternProperties": {
"^[A-Za-z]+$": {
"type": "string"
}
}
},
"RateLimits": {
"type": "object",
@ -561,7 +683,10 @@
"array",
"string"
],
"description": "Function to call after setup has finished"
"description": "Function to call after setup has finished",
"items": {
"type": "string"
}
},
"ExtensionMessagesFiles": {
"type": "object",
@ -582,7 +707,7 @@
"type": "object"
},
"Hooks": {
"type": "object",
"type": [ "string", "object" ],
"description": "Hooks this extension uses (mapping of hook name to callback)"
},
"JobClasses": {
@ -599,6 +724,23 @@
"FilterLogTypes": {
"type": "object"
},
"ActionFilteredLogs": {
"type": "object",
"description": "List of log types which can be filtered by log actions",
"patternProperties": {
"^[a-z-]+$": {
"type": "object",
"patternProperties": {
"^[a-z-]+$": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},
"LogNames": {
"type": "object"
},
@ -632,6 +774,10 @@
"ValidSkinNames": {
"type": "object"
},
"FeedClasses": {
"type": "object",
"description": "Available feeds objects"
},
"SkinOOUIThemes": {
"type": "object"
},
@ -654,7 +800,6 @@
},
"patternProperties": {
"^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
"type": ["object", "array", "string", "integer", "null", "boolean"],
"properties": {
"_merge_strategy": {
"type": "string",
@ -673,6 +818,10 @@
"ParserTestFiles": {
"type": "array",
"description": "Parser test suite files to be run by parserTests.php when no specific filename is passed to it"
},
"load_composer_autoloader": {
"type": "boolean",
"description": "Load the composer autoloader for this extension, if one is present"
}
}
}

File diff suppressed because it is too large Load Diff

248
docs/injection.txt Normal file
View File

@ -0,0 +1,248 @@
injection.txt
This is an overview of how MediaWiki makes use of dependency injection.
The design described here grew from the discussion of RFC T384.
The term "dependency injection" (DI) refers to a pattern on object oriented
programming that tries to improve modularity by reducing strong coupling
between classes. In practical terms, this means that anything an object needs
to operate should be injected from the outside, the object itself should only
know narrow interfaces, no concrete implementation of the logic it relies on.
The requirement to inject everything typically results in an architecture that
based on two main types of objects: simple value objects with no business logic
(and often immutable), and essentially stateless service objects that use
other service objects to operate on the value objects.
As of the beginning of 2016 (MW version 1.27), MediaWiki is only starting to
use the DI approach. Much of the code still relies on global state or direct
instantiation, resulting in a highly cyclical dependency graph.
== Overview ==
The heart of the DI in MediaWiki is the central service locator,
MediaWikiServices, which acts as the top level factory for services in
MediaWiki. MediaWikiServices::getInstance() returns the default service
locator instance, which can be used to gain access to default instances of
various services. MediaWikiServices however also allows new services to be
defined and default services to be redefined. Services are defined or
redefined by providing a callback function, the "instantiator" function,
that will return a new instance of the service.
When MediaWikiServices::getInstance() is first called, it will create an
instance of MediaWikiServices and populate it with the services defined
in the files listed by $wgServiceWiringFiles, thereby "bootstrapping" the
DI framework. Per default, $wgServiceWiringFiles lists
includes/ServiceWiring.php, which defines all default service
implementations, and specifies how they depend on each other ("wiring").
When a new service is added to MediaWiki core, an instantiator function
that will create the appropriate default instance for that service must
be added to ServiceWiring.php. This makes the service available through
the generic getService() method on the service locator returned by
MediaWikiServices::getInstance().
Extensions can add their own wiring files to $wgServiceWiringFiles, in order
to define their own service. Extensions may also use the 'MediaWikiServices'
hook to define or redefined services by calling methods on the default
MediaWikiServices instance.
It should be noted that the term "service locator" is often used to refer to a
top level factory that is accessed directly, throughout the code, to avoid
explicit dependency injection. In contrast, the term "DI container" is often
used to describe a top level factory that is only accessed when services
are created. We use the term "service locator" for the top level factory
because it is more descriptive than "DI container", even though application
logic is strongly discouraged from accessing MediaWikiServices directly.
MediaWikiServices::getInstance() should ideally be accessed only in "static
entry points" such as hook handler functions. See "Migration" below.
== Configuration ==
When the default MediaWikiServices instance is created, a Config object is
provided to the constructor. This Config object represents the "bootstrap"
configuration which will become available as the 'BootstrapConfig' service.
As of MW 1.27, the bootstrap config is a GlobalVarConfig object providing
access to the $wgXxx configuration variables.
The bootstrap config is then used to construct a 'ConfigFactory' service,
which in turn is used to construct the 'MainConfig' service. Application
logic should use the 'MainConfig' service (or a more specific configuration
object). 'BootstrapConfig' should only be used for bootstrapping basic
services that are needed to load the 'MainConfig'.
Note: Several well known services in MediaWiki core act as factories
themselves, e.g. ApiModuleManager, ObjectCache, SpecialPageFactory, etc.
The registries these factories are based on are currently managed as part of
the configuration. This may however change in the future.
== Migration ==
This section provides some recipes for improving code modularity by reducing
strong coupling. The dependency injection mechanism described above is an
essential tool in this effort.
Migrate access to global service instances and config variables:
Assume Foo is a class that uses the $wgScriptPath global and calls
wfGetDB() to get a database connection, in non-static methods.
* Add $scriptPath as a constructor parameter and use $this->scriptPath
instead of $wgScriptPath.
* Add LoadBalancer $dbLoadBalancer as a constructor parameter. Use
$this->dbLoadBalancer->getConnection() instead of wfGetDB().
* Any code that calls Foo's constructor would now need to provide the
$scriptPath and $dbLoadBalancer. To avoid this, avoid direct instantiation
of services all together - see below.
Migrate class-level singleton getters:
Assume class Foo has mostly non-static methods, and provides a static
getInstance() method that returns a singleton (or default instance).
* Add an instantiator function for Foo into ServiceWiring.php. The instantiator
would do exactly what Foo::getInstance() did. However, it should
replace any access to global state with calls to $services->getXxx() to get a
service, or $services->getMainConfig()->get() to get a configuration setting.
* Add a getFoo() method to MediaWikiServices. Don't forget to add the
appropriate test cases in MediaWikiServicesTest.
* Turn Foo::getInstance() into a deprecated alias for
MediaWikiServices::getInstance()->getFoo(). Change all calls to
Foo::getInstance() to use injection (see above).
Migrate direct service instantiation:
Assume class Bar calls new Foo().
* Add an instantiator function for Foo into ServiceWiring.php and add a getFoo()
method to MediaWikiServices. Don't forget to add the appropriate test cases
in MediaWikiServicesTest.
* In the instantiator, replace any access to global state with calls
to $services->getXxx() to get a service, or $services->getMainConfig()->get()
to get a configuration setting.
* The code in Bar that calls Foo's constructor should be changed to have a Foo
instance injected; Eventually, the only code that instantiates Foo is the
instantiator in ServiceWiring.php.
* As an intermediate step, Bar's constructor could initialize the $foo member
variable by calling MediaWikiServices::getInstance()->getFoo(). This is
acceptable as a stepping stone, but should be replaced by proper injection
via a constructor argument. Do not however inject the MediaWikiServices
object!
Migrate parameterized helper instantiation:
Assume class Bar creates some helper object by calling new Foo( $x ),
and Foo uses a global singleton of the Xyzzy service.
* Define a FooFactory class (or a FooFactory interface along with a MyFooFactory
implementation). FooFactory defines the method newFoo( $x ) or getFoo( $x ),
depending on the desired semantics (newFoo would guarantee a fresh instance).
When Foo gets refactored to have Xyzzy injected, FooFactory will need a
Xyzzy instance, so newFoo() can pass it to new Foo().
* Add an instantiator function for FooFactory into ServiceWiring.php and add a
getFooFactory() method to MediaWikiServices. Don't forget to add the
appropriate test cases in MediaWikiServicesTest.
* The code in Bar that calls Foo's constructor should be changed to have a
FooFactory instance injected; Eventually, the only code that instantiates
Foo are implementations of FooFactory, and the only code that instantiates
FooFactory is the instantiator in ServiceWiring.php.
* As an intermediate step, Bar's constructor could initialize the $fooFactory
member variable by calling MediaWikiServices::getInstance()->getFooFactory().
This is acceptable as a stepping stone, but should be replaced by proper
injection via a constructor argument. Do not however inject the
MediaWikiServices object!
Migrate a handler registry:
Assume class Bar calls FooRegistry::getFoo( $x ) to get a specialized Foo
instance for handling $x.
* Turn getFoo into a non-static method.
* Add an instantiator function for FooRegistry into ServiceWiring.php and add
a getFooRegistry() method to MediaWikiServices. Don't forget to add the
appropriate test cases in MediaWikiServicesTest.
* Change all code that calls FooRegistry::getFoo() statically to call this
method on a FooRegistry instance. That is, Bar would have a $fooRegistry
member, initialized from a constructor parameter.
* As an intermediate step, Bar's constructor could initialize the $fooRegistry
member variable by calling MediaWikiServices::getInstance()->
getFooRegistry(). This is acceptable as a stepping stone, but should be
replaced by proper injection via a constructor argument. Do not however
inject the MediaWikiServices object!
Migrate deferred service instantiation:
Assume class Bar calls new Foo(), but only when needed, to avoid the cost of
instantiating Foo().
* Define a FooFactory interface and a MyFooFactory implementation of that
interface. FooFactory defines the method getFoo() with no parameters.
* Precede as for the "parameterized helper instantiation" case described above.
Migrate a class with only static methods:
Assume Foo is a class with only static methods, such as frob(), which
interacts with global state or system resources.
* Introduce a FooService interface and a DefaultFoo implementation of that
interface. FooService contains the public methods defined by Foo.
* Add an instantiator function for FooService into ServiceWiring.php and
add a getFooService() method to MediaWikiServices. Don't forget to
add the appropriate test cases in MediaWikiServicesTest.
* Add a private static getFooService() method to Foo. That method just
calls MediaWikiServices::getInstance()->getFooService().
* Make all methods in Foo delegate to the FooService returned by
getFooService(). That is, Foo::frob() would do self::getFooService()->frob().
* Deprecate Foo. Inject a FooService into all code that calls methods
on Foo, and change any calls to static methods in foo to the methods
provided by the FooService interface.
Migrate static hook handler functions (to allow unit testing):
Assume MyExtHooks::onFoo is a static hook handler function that is called with
the parameter $x; Further assume MyExt::onFoo needs service Bar, which is
already known to MediaWikiServices (if not, see above).
* Create a non-static doFoo( $x ) method in MyExtHooks that has the same
signature as onFoo( $x ). Move the code from onFoo() into doFoo(), replacing
any access to global or static variables with access to instance member
variables.
* Add a constructor to MyExtHooks that takes a Bar service as a parameter.
* Add a static method called newFromGlobalState() with no parameters. It should
just return new MyExtHooks( MediaWikiServices::getBar() ).
* The original static handler method onFoo( $x ) is then implemented as
self::newFromGlobalState()->doFoo( $x ).
Migrate a "smart record":
Assume Thingy is a "smart record" that "knows" how to load and store itself.
For this purpose, Thingy uses wfGetDB().
* Create a "dumb" value class ThingyRecord that contains all the information
that Thingy represents (e.g. the information from a database row). The value
object should not know about any service.
* Create a DAO-style service for loading and storing ThingyRecords, called
ThingyStore. It may be useful to split the interfaces for reading and
writing, with a single class implementing both interfaces, so we in the
end have the ThingyLookup and ThingyStore interfaces, and a SqlThingyStore
implementation.
* Add instantiator functions for ThingyLookup and ThingyStore in
ServiceWiring.php. Since we want to use the same instance for both service
interfaces, the instantiator for ThingyLookup would return
$services->getThingyStore().
* Add getThingyLookup() and getThingyStore methods to MediaWikiServices.
Don't forget to add the appropriate test cases in MediaWikiServicesTest.
* In the old Thingy class, replace all member variables that represent the
record's data with a single ThingyRecord object.
* In the old Thingy class, replace all calls to static methods or functions,
such as wfGetDB(), with calls to the appropriate services, such as
LoadBalancer::getConnection().
* In Thingy's constructor, pull in any services needed, such as the
LoadBalancer, by using MediaWikiServices::getInstance(). These services
cannot be injected without changing the constructor signature, which
is often impractical for "smart records" that get instantiated directly
in many places in the code base.
* Deprecate the old Thingy class. Replace all usages of it with one of the
three new classes: loading needs a ThingyLookup, storing needs a ThingyStore,
and reading data needs a ThingyRecord.
Migrate lazy loading:
Assume Thingy is a "smart record" as described above, but requires lazy loading
of some or all the data it represents.
* Instead of a plain object, define ThingyRecord to be an interface. Provide a
"simple" and "lazy" implementations, called SimpleThingyRecord and
LazyThingyRecord. LazyThingyRecord knows about some lower level storage
interface, like a LoadBalancer, and uses it to load information on demand.
* Any direct instantiation of a ThingyRecord would use the SimpleThingyRecord
implementation.
* SqlThingyStore however creates instances of LazyThingyRecord, and injects
whatever storage layer service LazyThingyRecord needs to perform lazy loading.

View File

@ -122,7 +122,7 @@ Lag time of the databases:
key: $wgDBname:lag_times
ex: wikidb:lag_times
stores: array mapping the database id to its lag time
expriy: 5 secondes
expiry: 5 secondes
cleared by: nothing
Localisation:
@ -139,7 +139,7 @@ Message Cache:
ex: wikidb:messages, wikidb:messages-hash, wikidb:messages-status
stores: an array where the keys are DB keys and the values are messages
set in: wfMessage(), Article::editUpdates() and Title::moveTo()
expriy: $wgMsgCacheExpiry
expiry: $wgMsgCacheExpiry
cleared by: nothing
Newtalk:
@ -194,14 +194,14 @@ Revision text:
ex: wikidb:revisiontext:textid:1012
stores: text of a revision
cleared by: nothing
expriry: $wgRevisionCacheExpiry
expiry: $wgRevisionCacheExpiry
Sessions:
controlled by: $wgSessionsInObjectCache
key: $wgBDname:session:$id
ex: wikidb:session:38d7c5b8d3bfc51egf40c69bc40f8be3
stores: $SESSION, useful when using a multi-sever wiki
expriy: one hour
expiry: one hour
cleared by: session_destroy()
Sidebar:
@ -210,7 +210,7 @@ Sidebar:
key: $wgDBname:sidebar
ex: wikidb:sidebar
stores: the html output of the sidebar
expriy: $wgSidebarCacheExpiry
expiry: $wgSidebarCacheExpiry
cleared by: MessageCache::replace()
Special:Allpages:
@ -232,19 +232,4 @@ Special:Recentchanges (feed):
Special:Recentchanges?action=purge&feed=atom,
but note need $wgGroupPermissions[...]['purge'] permission.
Statistics:
controlled by: $wgStatsMethod
key: $wgDBname:stats:$key
ex: wikibd:stats:request_with_session
stores: counter for statistics (see maintenance/showCacheStats.php script)
expiry: none (?)
cleared by: maintenance/clearCacheStats.php script
User:
key: $wgDBname:user:id:$sId
ex: wikidb:user:id:51
stores: instance of class User
set in: User::saveToCache()
cleared by: User::saveSettings(), User::clearSharedCache()
... more to come ...

View File

@ -3,8 +3,10 @@ Principal Authors (major contributors, alphabetically)
Ævar Arnfjörð Bjarmason
Andrew Garrett
Brion Vibber
Ed Sanders
Marius Hoch
Steve Sanbeg
Trevor Parscal
Yair rand
Patch Contributors (minor contributors, alphabetically)
@ -13,28 +15,31 @@ Aaron Schulz
Alex Monk
Alex Z.
Alexandre Emsenhuber
Amir E. Aharoni
Antoine Musso
Aryeh Gregor
Bartosz Dziewoński
Brad Jorsch
Chad Horohoe
Daniel Cannon
Danny B.
Derk-Jan Hartman
Ed Sanders
Erick Guan
Fomafix
Gabriel Wicke
Happy-melon
Alexander Emsenhuber
Ivan Lanin
Jackmcbarn
James D. Forrester
Jan Paul Posma
Jens Frank
Jon Robson
Kaity Hammerstein
Kevin Brown
Kevin Israel
Kunal Mehta
Marc Ordinas i Llopis
Mark A. Hershberger
Bartosz Dziewoński
Max Semenik
Meno25
Moriel Schottlender
@ -52,16 +57,19 @@ Raimond Spekking
Remember the dot
Roan Kattouw
Rob Church
Rob Moen
Robert Rohde
Robin Pepermans
Ryan Kaldari
Sam Reed
Shinjiman
Siebrand Mazeland
Thalia Chan
Thomas Dalton
ThomasV
Tim Starling
Tim Weyer
Timo Tijhof
Tobias
eranroz
kghbln

View File

@ -0,0 +1,108 @@
<?php
/**
* Expose reference information for a page via prop=references API.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @see https://www.mediawiki.org/wiki/Extension:Cite#API
*/
class ApiQueryReferences extends ApiQueryBase {
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rf' );
}
public function getAllowedParams() {
return [
'continue' => [
ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
],
];
}
public function execute() {
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'cite' );
if ( !$config->get( 'CiteStoreReferencesData' ) ) {
$this->dieUsage( 'Cite extension reference storage is not enabled', 'citestoragedisabled' );
}
$params = $this->extractRequestParams();
$titles = $this->getPageSet()->getGoodTitles();
ksort( $titles );
if ( !is_null( $params['continue'] ) ) {
$startId = (int)$params['continue'];
// check it is definitely an int
$this->dieContinueUsageIf( strval( $startId ) !== $params['continue'] );
} else {
$startId = false;
}
foreach ( $titles as $pageId => $title ) {
// Skip until you have the correct starting point
if ( $startId !== false && $startId !== $pageId ) {
continue;
} else {
$startId = false;
}
$storedRefs = Cite::getStoredReferences( $title );
$allReferences = array();
// some pages may not have references stored
if ( $storedRefs !== false ) {
// a page can have multiple <references> tags but they all have unique keys
foreach ( $storedRefs['refs'] as $index => $grouping ) {
foreach ( $grouping as $group => $members ) {
foreach ( $members as $name => $ref ) {
$ref['name'] = $name;
$key = $ref['key'];
if ( is_string( $name ) ) {
$id = Cite::getReferencesKey( $name . '-' . $key );
} else {
$id = Cite::getReferencesKey( $key );
}
$ref['group'] = $group;
$ref['reflist'] = $index;
$allReferences[$id] = $ref;
}
}
}
}
// set some metadata since its an assoc data structure
ApiResult::setArrayType( $allReferences, 'kvp', 'id' );
// Ship a data representation of the combined references.
$fit = $this->addPageSubItems( $pageId, $allReferences );
if ( !$fit ) {
$this->setContinueEnumParameter( 'continue', $pageId );
break;
}
}
}
public function getCacheMode( $params ) {
return 'public';
}
/**
* @see ApiBase::getExamplesMessages()
*/
protected function getExamplesMessages() {
return array(
'action=query&prop=references&titles=Albert%20Einstein' =>
'apihelp-query+references-example-1',
);
}
}

View File

@ -4,7 +4,7 @@
*
* @file
* @ingroup Extensions
* @copyright 2011-2015 Editing Team and others; see AUTHORS.txt
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/

View File

@ -0,0 +1,63 @@
<?php
/**
* Resource loader module providing extra data from the server to Cite.
*
* Temporary hack for T93800
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see MIT-LICENSE.txt
*/
class CiteDataModule extends ResourceLoaderModule {
/* Protected Members */
protected $origin = self::ORIGIN_USER_SITEWIDE;
protected $targets = array( 'desktop', 'mobile' );
/* Methods */
public function getScript( ResourceLoaderContext $context ) {
$citationDefinition = json_decode(
$context->msg( 'visualeditor-cite-tool-definition.json' )
->inContentLanguage()
->plain()
);
$citationTools = array();
if ( is_array( $citationDefinition ) ) {
foreach ( $citationDefinition as $tool ) {
if ( !isset( $tool->title ) ) {
$tool->title = $context->msg( 'visualeditor-cite-tool-name-' . $tool->name )
->text();
}
$citationTools[] = $tool;
}
}
return
've.init.platform.addMessages(' . FormatJson::encode(
array(
'visualeditor-cite-tool-definition.json' => json_encode( $citationTools )
),
ResourceLoader::inDebugMode()
) . ');';
}
public function getDependencies( ResourceLoaderContext $context = null ) {
return array(
'ext.visualEditor.base',
'ext.visualEditor.mediawiki',
);
}
public function getDefinitionSummary( ResourceLoaderContext $context ) {
$summary = parent::getDefinitionSummary( $context );
$summary[] = array(
'script' => $this->getScript( $context ),
);
return $summary;
}
}

View File

@ -0,0 +1,135 @@
<?php
/**
* Cite extension hooks
*
* @file
* @ingroup Extensions
* @copyright 2011-2016 Cite VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see MIT-LICENSE.txt
*/
class CiteHooks {
/**
* Convert the content model of a message that is actually JSON to JSON. This
* only affects validation and UI when saving and editing, not loading the
* content.
*
* @param Title $title
* @param string $model
* @return bool
*/
public static function onContentHandlerDefaultModelFor( Title $title, &$model ) {
if (
$title->inNamespace( NS_MEDIAWIKI ) &&
$title->getText() == 'Visualeditor-cite-tool-definition.json'
) {
$model = CONTENT_MODEL_JSON;
}
return true;
}
/**
* Conditionally register the unit testing module for the ext.cite.visualEditor module
* only if that module is loaded
*
* @param array $testModules The array of registered test modules
* @param ResourceLoader $resourceLoader The reference to the resource loader
* @return true
*/
public static function onResourceLoaderTestModules(
array &$testModules,
ResourceLoader &$resourceLoader
) {
$resourceModules = $resourceLoader->getConfig()->get( 'ResourceModules' );
if (
isset( $resourceModules[ 'ext.visualEditor.mediawiki' ] ) ||
$resourceLoader->isModuleRegistered( 'ext.visualEditor.mediawiki' )
) {
$testModules['qunit']['ext.cite.visualEditor.test'] = array(
'scripts' => array(
'modules/ve-cite/tests/ve.dm.citeExample.js',
'modules/ve-cite/tests/ve.dm.Converter.test.js',
'modules/ve-cite/tests/ve.dm.InternalList.test.js',
'modules/ve-cite/tests/ve.dm.Transaction.test.js',
),
'dependencies' => array(
'ext.cite.visualEditor',
'ext.visualEditor.test'
),
'localBasePath' => __DIR__,
'remoteExtPath' => 'Cite',
);
}
return true;
}
/**
* Callback for LinksUpdate hook
* Post-output processing of references property, for proper db storage
* Deferred to avoid performance overhead when outputting the page
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdate( LinksUpdate &$linksUpdate ) {
global $wgCiteStoreReferencesData, $wgCiteCacheRawReferencesOnParse;
if ( !$wgCiteStoreReferencesData ) {
return;
}
$refData = $linksUpdate->getParserOutput()->getExtensionData( Cite::EXT_DATA_KEY );
if ( $refData === null ) {
return;
}
if ( $wgCiteCacheRawReferencesOnParse ) {
// caching
$cache = ObjectCache::getMainWANInstance();
$articleID = $linksUpdate->getTitle()->getArticleID();
$key = $cache->makeKey( Cite::EXT_DATA_KEY, $articleID );
$cache->set( $key, $refData, Cite::CACHE_DURATION_ONPARSE );
}
// JSON encode
$ppValue = FormatJson::encode( $refData, false, FormatJson::ALL_OK );
// GZIP encode references data at maximum compression
$ppValue = gzencode( $ppValue, 9 );
// split the string in smaller parts that can fit into a db blob
$ppValues = str_split( $ppValue, Cite::MAX_STORAGE_LENGTH );
foreach ( $ppValues as $num => $ppValue ) {
$key = 'references-' . intval( $num + 1 );
$linksUpdate->mProperties[$key] = $ppValue;
}
$linksUpdate->getParserOutput()->setExtensionData( Cite::EXT_DATA_KEY, null );
}
/**
* Callback for LinksUpdateComplete hook
* If $wgCiteCacheRawReferencesOnParse is set to false, purges the cache
* when references are modified
*
* @param LinksUpdate $linksUpdate
*/
public static function onLinksUpdateComplete( LinksUpdate &$linksUpdate ) {
global $wgCiteStoreReferencesData, $wgCiteCacheRawReferencesOnParse;
if ( !$wgCiteStoreReferencesData || $wgCiteCacheRawReferencesOnParse ) {
return;
}
// if we can, avoid clearing the cache when references were not changed
if ( method_exists( $linksUpdate, 'getAddedProperties' )
&& method_exists( $linksUpdate, 'getRemovedProperties' )
) {
$addedProps = $linksUpdate->getAddedProperties();
$removedProps = $linksUpdate->getRemovedProperties();
if ( !isset( $addedProps['references-1'] )
&& !isset( $removedProps['references-1'] )
) {
return;
}
}
$cache = ObjectCache::getMainWANInstance();
$articleID = $linksUpdate->getTitle()->getArticleID();
$key = $cache->makeKey( Cite::EXT_DATA_KEY, $articleID );
// delete with reduced hold off period (LinksUpdate uses a master connection)
$cache->delete( $key, WANObjectCache::MAX_COMMIT_DELAY );
}
}

View File

@ -1,5 +1,6 @@
<?php
// @codingStandardsIgnoreStart
/**#@+
* A parser extension that adds two tags, <ref> and <references> for adding
* citations to pages
@ -16,6 +17,7 @@
* @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
*/
// @codingStandardsIgnoreEnd
/**
* WARNING: MediaWiki core hardcodes this class name to check if the
@ -28,6 +30,32 @@ class Cite {
*/
const DEFAULT_GROUP = '';
/**
* Maximum storage capacity for pp_value field of page_props table
* @todo Find a way to retrieve this information from the DBAL
*/
const MAX_STORAGE_LENGTH = 65535; // Size of MySQL 'blob' field
/**
* Key used for storage in parser output's ExtensionData and ObjectCache
*/
const EXT_DATA_KEY = 'Cite:References';
/**
* Version number in case we change the data structure in the future
*/
const DATA_VERSION_NUMBER = 1;
/**
* Cache duration set when parsing a page with references
*/
const CACHE_DURATION_ONPARSE = 3600; // 1 hour
/**
* Cache duration set when fetching references from db
*/
const CACHE_DURATION_ONFETCH = 18000; // 5 hours
/**#@+
* @access private
*/
@ -147,6 +175,11 @@ class Cite {
*/
public $mRefCallStack = array();
/**
* @var bool
*/
private $mBumpRefData = false;
/**
* Did we install us into $wgHooks yet?
* @var Boolean
@ -158,14 +191,14 @@ class Cite {
/**
* Callback function for <ref>
*
* @param $str string Input
* @param $argv array Arguments
* @param $parser Parser
* @param $frame PPFrame
* @param string|null $str Raw content of the <ref> tag.
* @param string[] $argv Arguments
* @param Parser $parser
* @param PPFrame $frame
*
* @return string
*/
function ref( $str, $argv, $parser, $frame ) {
function ref( $str, array $argv, Parser $parser, PPFrame $frame ) {
if ( $this->mInCite ) {
return htmlspecialchars( "<ref>$str</ref>" );
}
@ -185,17 +218,23 @@ class Cite {
$frame->setVolatile();
}
// new <ref> tag, we may need to bump the ref data counter
// to avoid overwriting a previous group
$this->mBumpRefData = true;
return $ret;
}
/**
* @param $str string Input
* @param $argv array Arguments
* @param $parser Parser
* @param $default_group string
* @param string|null $str Raw content of the <ref> tag.
* @param string[] $argv Arguments
* @param Parser $parser
* @param string $default_group
*
* @throws Exception
* @return string
*/
function guardedRef( $str, $argv, $parser, $default_group = self::DEFAULT_GROUP ) {
function guardedRef( $str, array $argv, Parser $parser, $default_group = self::DEFAULT_GROUP ) {
$this->mParser = $parser;
# The key here is the "name" attribute.
@ -210,19 +249,21 @@ class Cite {
}
}
# This section deals with constructions of the form
#
# <references>
# <ref name="foo"> BAR </ref>
# </references>
#
/*
* This section deals with constructions of the form
*
* <references>
* <ref name="foo"> BAR </ref>
* </references>
*/
if ( $this->mInReferences ) {
$isSectionPreview = $parser->getOptions()->getIsSectionPreview();
if ( $group != $this->mReferencesGroup ) {
# <ref> and <references> have conflicting group attributes.
$this->mReferencesErrors[] =
$this->error( 'cite_error_references_group_mismatch', htmlspecialchars( $group ) );
} elseif ( $str !== '' ) {
if ( !isset( $this->mRefs[$group] ) ) {
if ( !$isSectionPreview && !isset( $this->mRefs[$group] ) ) {
# Called with group attribute not defined in text.
$this->mReferencesErrors[] =
$this->error( 'cite_error_references_missing_group', htmlspecialchars( $group ) );
@ -230,13 +271,24 @@ class Cite {
# <ref> calls inside <references> must be named
$this->mReferencesErrors[] =
$this->error( 'cite_error_references_no_key' );
} elseif ( !isset( $this->mRefs[$group][$key] ) ) {
} elseif ( !$isSectionPreview && !isset( $this->mRefs[$group][$key] ) ) {
# Called with name attribute not defined in text.
$this->mReferencesErrors[] =
$this->error( 'cite_error_references_missing_key', $key );
} else {
# Assign the text to corresponding ref
$this->mRefs[$group][$key]['text'] = $str;
if (
isset( $this->mRefs[$group][$key]['text'] ) &&
$str !== $this->mRefs[$group][$key]['text']
) {
// two refs with same key and different content
// add error message to the original ref
$this->mRefs[$group][$key]['text'] .= ' ' . $this->error(
'cite_error_references_duplicate_key', $key, 'noparse'
);
} else {
# Assign the text to corresponding ref
$this->mRefs[$group][$key]['text'] = $str;
}
}
} else {
# <ref> called in <references> has no content.
@ -250,11 +302,12 @@ class Cite {
# <ref ...></ref>. This construct is invalid if
# it's a contentful ref, but OK if it's a named duplicate and should
# be equivalent <ref ... />, for compatability with #tag.
if ( $key == false ) {
$this->mRefCallStack[] = false;
return $this->error( 'cite_error_ref_no_input' );
} else {
if ( is_string( $key ) && $key !== '' ) {
$str = null;
} else {
$this->mRefCallStack[] = false;
return $this->error( 'cite_error_ref_no_input' );
}
}
@ -284,13 +337,13 @@ class Cite {
'/<ref\b[^<]*?>/',
preg_replace( '#<([^ ]+?).*?>.*?</\\1 *>|<!--.*?-->#', '', $str )
) ) {
# (bug 6199) This most likely implies that someone left off the
# (bug T8199) This most likely implies that someone left off the
# closing </ref> tag, which will cause the entire article to be
# eaten up until the next <ref>. So we bail out early instead.
# The fancy regex above first tries chopping out anything that
# looks like a comment or SGML tag, which is a crude way to avoid
# false alarms for <nowiki>, <pre>, etc.
#
# Possible improvement: print the warning, followed by the contents
# of the <ref> tag. This way no part of the article will be eaten
# even temporarily.
@ -322,11 +375,11 @@ class Cite {
* "follow" : If the current reference is the continuation of another, key of that reference.
*
*
* @param $argv array The argument vector
* @param string[] $argv The argument vector
* @return mixed false on invalid input, a string on valid
* input and null on no input
*/
function refArg( $argv ) {
function refArg( array $argv ) {
global $wgAllowCiteGroups;
$cnt = count( $argv );
$group = null;
@ -379,15 +432,16 @@ class Cite {
/**
* Populate $this->mRefs based on input and arguments to <ref>
*
* @param $str string Input from the <ref> tag
* @param $key mixed Argument to the <ref> tag as returned by $this->refArg()
* @param $group
* @param $follow
* @param $call
* @param string $str Input from the <ref> tag
* @param string|null $key Argument to the <ref> tag as returned by $this->refArg()
* @param string $group
* @param string|null $follow
* @param string[] $call
*
* @throws Exception
* @return string
*/
function stack( $str, $key = null, $group, $follow, $call ) {
function stack( $str, $key = null, $group, $follow, array $call ) {
if ( !isset( $this->mRefs[$group] ) ) {
$this->mRefs[$group] = array();
}
@ -397,7 +451,7 @@ class Cite {
if ( $follow != null ) {
if ( isset( $this->mRefs[$group][$follow] ) && is_array( $this->mRefs[$group][$follow] ) ) {
// add text to the note that is being followed
$this->mRefs[$group][$follow]['text'] = $this->mRefs[$group][$follow]['text'] . ' ' . $str;
$this->mRefs[$group][$follow]['text'] .= ' ' . $str;
} else {
// insert part of note at the beginning of the group
$groupsCount = count( $this->mRefs[$group] );
@ -406,11 +460,12 @@ class Cite {
break;
}
}
array_splice( $this->mRefs[$group], $k, 0,
array( array( 'count' => - 1,
'text' => $str,
'key' => ++$this->mOutCnt ,
'follow' => $follow ) ) );
array_splice( $this->mRefs[$group], $k, 0, array( array(
'count' => -1,
'text' => $str,
'key' => ++$this->mOutCnt,
'follow' => $follow
) ) );
array_splice( $this->mRefCallStack, $k, 0,
array( array( 'new', $call, $str, $key, $group, $this->mOutCnt ) ) );
}
@ -421,7 +476,11 @@ class Cite {
if ( $key === null ) {
// No key
// $this->mRefs[$group][] = $str;
$this->mRefs[$group][] = array( 'count' => - 1, 'text' => $str, 'key' => ++$this->mOutCnt );
$this->mRefs[$group][] = array(
'count' => -1,
'text' => $str,
'key' => ++$this->mOutCnt
);
$this->mRefCallStack[] = array( 'new', $call, $str, $key, $group, $this->mOutCnt );
return $this->linkRef( $group, $this->mOutCnt );
@ -457,6 +516,13 @@ class Cite {
$this->mRefCallStack[] = array( 'assign', $call, $str, $key, $group,
$this->mRefs[$group][$key]['key'] );
} else {
if ( $str != null && $str !== '' && $str !== $this->mRefs[$group][$key]['text'] ) {
// two refs with same key and different content
// add error message to the original ref
$this->mRefs[$group][$key]['text'] .= ' ' . $this->error(
'cite_error_references_duplicate_key', $key, 'noparse'
);
}
$this->mRefCallStack[] = array( 'increment', $call, $str, $key, $group,
$this->mRefs[$group][$key]['key'] );
}
@ -485,10 +551,10 @@ class Cite {
* counters remain incremented. Doing so prevents accidentally
* corrupting certain links.
*
* @param $type
* @param $key
* @param $group
* @param $index
* @param string $type
* @param string|null $key
* @param string $group
* @param int $index
*/
function rollbackRef( $type, $key, $group, $index ) {
if ( !isset( $this->mRefs[$group] ) ) {
@ -519,7 +585,7 @@ class Cite {
case 'new':
# Rollback the addition of new elements to the stack.
unset( $this->mRefs[$group][$key] );
if ( count( $this->mRefs[$group] ) === 0 ) {
if ( $this->mRefs[$group] === array() ) {
unset( $this->mRefs[$group] );
unset( $this->mGroupCnt[$group] );
}
@ -538,14 +604,14 @@ class Cite {
/**
* Callback function for <references>
*
* @param $str string Input
* @param $argv array Arguments
* @param $parser Parser
* @param $frame PPFrame
* @param string|null $str Raw content of the <references> tag.
* @param string[] $argv Arguments
* @param Parser $parser
* @param PPFrame $frame
*
* @return string
*/
function references( $str, $argv, $parser, $frame ) {
function references( $str, array $argv, Parser $parser, PPFrame $frame ) {
if ( $this->mInCite || $this->mInReferences ) {
if ( is_null( $str ) ) {
return htmlspecialchars( "<references/>" );
@ -563,13 +629,14 @@ class Cite {
}
/**
* @param $str string
* @param $argv array
* @param $parser Parser
* @param $group string
* @param string|null $str Raw content of the <references> tag.
* @param string[] $argv
* @param Parser $parser
* @param string $group
*
* @return string
*/
function guardedReferences( $str, $argv, $parser, $group = self::DEFAULT_GROUP ) {
function guardedReferences( $str, array $argv, Parser $parser, $group = self::DEFAULT_GROUP ) {
global $wgAllowCiteGroups;
$this->mParser = $parser;
@ -582,30 +649,39 @@ class Cite {
if ( strval( $str ) !== '' ) {
$this->mReferencesGroup = $group;
# Detect whether we were sent already rendered <ref>s
# Mostly a side effect of using #tag to call references
# Detect whether we were sent already rendered <ref>s.
# Mostly a side effect of using #tag to call references.
# The following assumes that the parsed <ref>s sent within
# the <references> block were the most recent calls to
# <ref>. This assumption is true for all known use cases,
# but not strictly enforced by the parser. It is possible
# that some unusual combination of #tag, <references> and
# conditional parser functions could be created that would
# lead to malformed references here.
$count = substr_count( $str, Parser::MARKER_PREFIX . "-ref-" );
$redoStack = array();
# Undo effects of calling <ref> while unaware of containing <references>
for ( $i = 1; $i <= $count; $i++ ) {
if ( count( $this->mRefCallStack ) < 1 ) {
if ( !$this->mRefCallStack ) {
break;
}
# The following assumes that the parsed <ref>s sent within
# the <references> block were the most recent calls to
# <ref>. This assumption is true for all known use cases,
# but not strictly enforced by the parser. It is possible
# that some unusual combination of #tag, <references> and
# conditional parser functions could be created that would
# lead to malformed references here.
$call = array_pop( $this->mRefCallStack );
$redoStack[] = $call;
if ( $call !== false ) {
list( $type, $ref_argv, $ref_str,
$ref_key, $ref_group, $ref_index ) = $call;
# Undo effects of calling <ref> while unaware of containing <references>
$this->rollbackRef( $type, $ref_key, $ref_group, $ref_index );
}
}
# Rerun <ref> call now that mInReferences is set.
# Rerun <ref> call now that mInReferences is set.
for ( $i = count( $redoStack ) - 1; $i >= 0; $i-- ) {
$call = $redoStack[$i];
if ( $call !== false ) {
list( $type, $ref_argv, $ref_str,
$ref_key, $ref_group, $ref_index ) = $call;
$this->guardedRef( $ref_str, $ref_argv, $parser );
}
}
@ -617,20 +693,17 @@ class Cite {
$this->mRefCallStack = array();
}
if ( count( $argv ) && $wgAllowCiteGroups ) {
if ( $argv && $wgAllowCiteGroups ) {
return $this->error( 'cite_error_references_invalid_parameters_group' );
}
if ( count( $argv ) ) {
if ( $argv ) {
return $this->error( 'cite_error_references_invalid_parameters' );
}
$s = $this->referencesFormat( $group );
if ( $parser->getOptions()->getIsSectionPreview() ) {
return $s;
}
# Append errors generated while processing <references>
if ( count( $this->mReferencesErrors ) > 0 ) {
if ( $this->mReferencesErrors ) {
$s .= "\n" . implode( "<br />\n", $this->mReferencesErrors );
$this->mReferencesErrors = array();
}
@ -640,12 +713,12 @@ class Cite {
/**
* Make output to be returned from the references() function
*
* @param $group
* @param string $group
*
* @return string XHTML ready for output
*/
function referencesFormat( $group ) {
if ( ( count( $this->mRefs ) === 0 ) || ( empty( $this->mRefs[$group] ) ) ) {
if ( !$this->mRefs || !isset( $this->mRefs[$group] ) ) {
return '';
}
@ -663,15 +736,17 @@ class Cite {
// We add new lines between the pieces to avoid a confused tidy (bug 13073).
$parserInput = $prefix . "\n" . $content . "\n" . $suffix;
// Let's try to cache it.
global $wgMemc;
$cacheKey = wfMemcKey( 'citeref', md5( $parserInput ), $this->mParser->Title()->getArticleID() );
wfProfileOut( __METHOD__ . '-entries' );
global $wgCiteCacheReferences;
// Let's try to cache it.
global $wgCiteCacheReferences, $wgMemc;
$data = false;
if ( $wgCiteCacheReferences ) {
$cacheKey = wfMemcKey(
'citeref',
md5( $parserInput ),
$this->mParser->Title()->getArticleID()
);
wfProfileIn( __METHOD__ . '-cache-get' );
$data = $wgMemc->get( $cacheKey );
wfProfileOut( __METHOD__ . '-cache-get' );
@ -693,6 +768,11 @@ class Cite {
$ret = $this->mParser->unserializeHalfParsedText( $data );
}
if ( !$this->mParser->getOptions()->getIsPreview() ) {
// save references data for later use by LinksUpdate hooks
$this->saveReferencesData( $group );
}
// done, clean up so we can reuse the group
unset( $this->mRefs[$group] );
unset( $this->mGroupCnt[$group] );
@ -713,7 +793,7 @@ class Cite {
if ( !is_array( $val ) ) {
return wfMessage(
'cite_references_link_one',
$this->referencesKey( $key ),
self::getReferencesKey( $key ),
$this->refKey( $key ),
$this->referenceText( $key, $val )
)->inContentLanguage()->plain();
@ -722,22 +802,15 @@ class Cite {
if ( isset( $val['follow'] ) ) {
return wfMessage(
'cite_references_no_link',
$this->referencesKey( $val['follow'] ),
self::getReferencesKey( $val['follow'] ),
$text
)->inContentLanguage()->plain();
} elseif ( !isset( $val['text'] ) ) {
return wfMessage(
'cite_references_link_one',
$this->referencesKey( $key ),
$this->refKey( $key, $val['count'] ),
$text
)->inContentLanguage()->plain();
}
if ( $val['count'] < 0 ) {
return wfMessage(
'cite_references_link_one',
$this->referencesKey( $val['key'] ),
self::getReferencesKey( $val['key'] ),
# $this->refKey( $val['key'], $val['count'] ),
$this->refKey( $val['key'] ),
$text
@ -746,35 +819,43 @@ class Cite {
// anonymous reference because displaying "1. 1.1 Ref text" is
// overkill and users frequently use named references when they
// don't need them for convenience
} elseif ( $val['count'] === 0 ) {
}
if ( $val['count'] === 0 ) {
return wfMessage(
'cite_references_link_one',
$this->referencesKey( $key . "-" . $val['key'] ),
self::getReferencesKey( $key . "-" . $val['key'] ),
# $this->refKey( $key, $val['count'] ),
$this->refKey( $key, $val['key'] . "-" . $val['count'] ),
$text
)->inContentLanguage()->plain();
// Named references with >1 occurrences
} else {
$links = array();
// for group handling, we have an extra key here.
for ( $i = 0; $i <= $val['count']; ++$i ) {
$links[] = wfMessage(
'cite_references_link_many_format',
$this->refKey( $key, $val['key'] . "-$i" ),
$this->referencesFormatEntryNumericBacklinkLabel( $val['number'], $i, $val['count'] ),
$this->referencesFormatEntryAlternateBacklinkLabel( $i )
)->inContentLanguage()->plain();
}
$list = $this->listToText( $links );
}
if ( !isset( $val['count'] ) ) {
// this handles the case of section preview for list-defined references
return wfMessage( 'cite_references_link_many',
$this->referencesKey( $key . "-" . $val['key'] ),
$list,
self::getReferencesKey( $key . "-" . $val['key'] ),
'',
$text
)->inContentLanguage()->plain();
}
$links = array();
// for group handling, we have an extra key here.
for ( $i = 0; $i <= $val['count']; ++$i ) {
$links[] = wfMessage(
'cite_references_link_many_format',
$this->refKey( $key, $val['key'] . "-$i" ),
$this->referencesFormatEntryNumericBacklinkLabel( $val['number'], $i, $val['count'] ),
$this->referencesFormatEntryAlternateBacklinkLabel( $i )
)->inContentLanguage()->plain();
}
$list = $this->listToText( $links );
return wfMessage( 'cite_references_link_many',
self::getReferencesKey( $key . "-" . $val['key'] ),
$list,
$text
)->inContentLanguage()->plain();
}
/**
@ -785,6 +866,9 @@ class Cite {
*/
function referenceText( $key, $text ) {
if ( !isset( $text ) || $text === '' ) {
if ( $this->mParser->getOptions()->getIsSectionPreview() ) {
return $this->warning( 'cite_warning_sectionpreview_no_text', $key, 'noparse' );
}
return $this->error( 'cite_error_references_no_text', $key, 'noparse' );
}
return '<span class="reference-text">' . rtrim( $text, "\n" ) . "</span>\n";
@ -893,16 +977,11 @@ class Cite {
* @static
*
* @param string $key The key
* @param int $num The number of the key
* @return string A key for use in wikitext
*/
function referencesKey( $key, $num = null ) {
public static function getReferencesKey( $key ) {
$prefix = wfMessage( 'cite_references_link_prefix' )->inContentLanguage()->text();
$suffix = wfMessage( 'cite_references_link_suffix' )->inContentLanguage()->text();
if ( isset( $num ) ) {
$key = wfMessage( 'cite_reference_link_key_with_num', $key, $num )
->inContentLanguage()->plain();
}
return "$prefix$key$suffix";
}
@ -911,14 +990,14 @@ class Cite {
* Generate a link (<sup ...) for the <ref> element from a key
* and return XHTML ready for output
*
* @param $group
* @param $key string The key for the link
* @param $count int The index of the key, used for distinguishing
* @param string $group
* @param string $key The key for the link
* @param int $count The index of the key, used for distinguishing
* multiple occurrences of the same key
* @param $label int The label to use for the link, I want to
* @param int $label The label to use for the link, I want to
* use the same label for all occourances of
* the same named reference.
* @param $subkey string
* @param string $subkey
*
* @return string
*/
@ -931,7 +1010,7 @@ class Cite {
wfMessage(
'cite_reference_link',
$this->refKey( $key, $count ),
$this->referencesKey( $key . $subkey ),
self::getReferencesKey( $key . $subkey ),
$this->getLinkLabel( $label, $group,
( ( $group === self::DEFAULT_GROUP ) ? '' : "$group " ) . $wgContLang->formatNum( $label ) )
)->inContentLanguage()->plain()
@ -981,8 +1060,8 @@ class Cite {
* 'cite_reference_link' message instead of numbers, the format is an
* arbitrary number of tokens separated by [\t\n ]
*
* @param $group
* @param $message
* @param string $group
* @param string $message
*/
function genLinkLabels( $group, $message ) {
$text = false;
@ -997,11 +1076,11 @@ class Cite {
* Gets run when Parser::clearState() gets run, since we don't
* want the counts to transcend pages and other instances
*
* @param $parser Parser
* @param Parser $parser
*
* @return bool
*/
function clearState( &$parser ) {
function clearState( Parser &$parser ) {
if ( $parser->extCite !== $this ) {
return $parser->extCite->clearState( $parser );
}
@ -1025,11 +1104,11 @@ class Cite {
/**
* Gets run when the parser is cloned.
*
* @param $parser Parser
* @param Parser $parser
*
* @return bool
*/
function cloneState( $parser ) {
function cloneState( Parser $parser ) {
if ( $parser->extCite !== $this ) {
return $parser->extCite->cloneState( $parser );
}
@ -1051,10 +1130,12 @@ class Cite {
* section, if refs were used without a main references tag. If there are references
* in a custom group, and there is no references tag for it, show an error
* message for that group.
* If we are processing a section preview, this adds the missing
* references tags and does not add the errors.
*
* @param $afterParse bool true if called from the ParserAfterParse hook
* @param $parser Parser
* @param $text string
* @param bool $afterParse True if called from the ParserAfterParse hook
* @param Parser $parser
* @param string $text
*
* @return bool
*/
@ -1072,24 +1153,78 @@ class Cite {
return true;
}
if ( $parser->getOptions()->getIsSectionPreview() ) {
return true;
if ( !$parser->getOptions()->getIsPreview() ) {
// save references data for later use by LinksUpdate hooks
if ( $this->mRefs && isset( $this->mRefs[self::DEFAULT_GROUP] ) ) {
$this->saveReferencesData();
}
$isSectionPreview = false;
} else {
$isSectionPreview = $parser->getOptions()->getIsSectionPreview();
}
$s = '';
foreach ( $this->mRefs as $group => $refs ) {
if ( count( $refs ) === 0 ) {
if ( !$refs ) {
continue;
}
if ( $group === self::DEFAULT_GROUP ) {
$text .= $this->referencesFormat( $group, '', '' );
if ( $group === self::DEFAULT_GROUP || $isSectionPreview ) {
$s .= $this->referencesFormat( $group );
} else {
$text .= "\n<br />" .
$s .= "\n<br />" .
$this->error( 'cite_error_group_refs_without_references', htmlspecialchars( $group ) );
}
}
if ( $isSectionPreview && $s !== '' ) {
// provide a preview of references in its own section
$text .= "\n" . '<div class="mw-ext-cite-cite_section_preview_references" >';
$headerMsg = wfMessage( 'cite_section_preview_references' );
if ( !$headerMsg->isDisabled() ) {
$text .= '<h2 id="mw-ext-cite-cite_section_preview_references_header" >'
. $headerMsg->escaped()
. '</h2>';
}
$text .= $s . '</div>';
} else {
$text .= $s;
}
return true;
}
/**
* Saves references in parser extension data
* This is called by each <references/> tag, and by checkRefsNoReferences
* Assumes $this->mRefs[$group] is set
*
* @param $group
*/
private function saveReferencesData( $group = self::DEFAULT_GROUP ) {
global $wgCiteStoreReferencesData;
if ( !$wgCiteStoreReferencesData ) {
return;
}
$savedRefs = $this->mParser->getOutput()->getExtensionData( self::EXT_DATA_KEY );
if ( $savedRefs === null ) {
// Initialize array structure
$savedRefs = array(
'refs' => array(),
'version' => self::DATA_VERSION_NUMBER,
);
}
if ( $this->mBumpRefData ) {
// This handles pages with multiple <references/> tags with <ref> tags in between.
// On those, a group can appear several times, so we need to avoid overwriting
// a previous appearance.
$savedRefs['refs'][] = array();
$this->mBumpRefData = false;
}
$n = count( $savedRefs['refs'] ) - 1;
// save group
$savedRefs['refs'][$n][$group] = $this->mRefs[$group];
$this->mParser->getOutput()->setExtensionData( self::EXT_DATA_KEY, $savedRefs );
}
/**
* Hook for the InlineEditor extension.
* If any ref or reference reference tag is in the text,
@ -1108,11 +1243,11 @@ class Cite {
/**
* Initialize the parser hooks
*
* @param $parser Parser
* @param Parser $parser
*
* @return bool
*/
static function setHooks( $parser ) {
static function setHooks( Parser $parser ) {
global $wgHooks;
$parser->extCite = new self();
@ -1135,19 +1270,37 @@ class Cite {
* Return an error message based on an error ID
*
* @param string $key Message name for the error
* @param string $param Parameter to pass to the message
* @param string|null $param Parameter to pass to the message
* @param string $parse Whether to parse the message ('parse') or not ('noparse')
* @return string XHTML or wikitext ready for output
*/
function error( $key, $param = null, $parse = 'parse' ) {
# For ease of debugging and because errors are rare, we
# use the user language and split the parser cache.
$lang = $this->mParser->getOptions()->getUserLangObj();
$dir = $lang->getDir();
# We rely on the fact that PHP is okay with passing unused argu-
# ments to functions. If $1 is not used in the message, wfMessage will
# just ignore the extra parameter.
$msg = wfMessage( 'cite_error', wfMessage( $key, $param )->inContentLanguage()->plain() )
->inContentLanguage()
$msg = wfMessage(
'cite_error',
wfMessage( $key, $param )->inLanguage( $lang )->plain()
)
->inLanguage( $lang )
->plain();
$ret = '<strong class="error mw-ext-cite-error">' . $msg . '</strong>';
$this->mParser->addTrackingCategory( 'cite-tracking-category-cite-error' );
$ret = Html::rawElement(
'span',
array(
'class' => 'error mw-ext-cite-error',
'lang' => $lang->getHtmlCode(),
'dir' => $dir,
),
$msg
);
if ( $parse === 'parse' ) {
$ret = $this->mParser->recursiveTagParse( $ret );
@ -1156,5 +1309,125 @@ class Cite {
return $ret;
}
/**
* Return a warning message based on a warning ID
*
* @param string $key Message name for the warning. Name should start with cite_warning_
* @param string|null $param Parameter to pass to the message
* @param string $parse Whether to parse the message ('parse') or not ('noparse')
* @return string XHTML or wikitext ready for output
*/
function warning( $key, $param = null, $parse = 'parse' ) {
# For ease of debugging and because errors are rare, we
# use the user language and split the parser cache.
$lang = $this->mParser->getOptions()->getUserLangObj();
$dir = $lang->getDir();
# We rely on the fact that PHP is okay with passing unused argu-
# ments to functions. If $1 is not used in the message, wfMessage will
# just ignore the extra parameter.
$msg = wfMessage(
'cite_warning',
wfMessage( $key, $param )->inLanguage( $lang )->plain()
)
->inLanguage( $lang )
->plain();
$key = preg_replace( '/^cite_warning_/', '', $key ) . '';
$ret = Html::rawElement(
'span',
array(
'class' => 'warning mw-ext-cite-warning mw-ext-cite-warning-' .
Sanitizer::escapeClass( $key ),
'lang' => $lang->getHtmlCode(),
'dir' => $dir,
),
$msg
);
if ( $parse === 'parse' ) {
$ret = $this->mParser->recursiveTagParse( $ret );
}
return $ret;
}
/**
* Fetch references stored for the given title in page_props
* For performance, results are cached
*
* @param Title $title
* @return array|false
*/
public static function getStoredReferences( Title $title ) {
global $wgCiteStoreReferencesData;
if ( !$wgCiteStoreReferencesData ) {
return false;
}
$cache = ObjectCache::getMainWANInstance();
$key = $cache->makeKey( self::EXT_DATA_KEY, $title->getArticleID() );
return $cache->getWithSetCallback(
$key,
self::CACHE_DURATION_ONFETCH,
function ( $oldValue, &$ttl, array &$setOpts ) use ( $title ) {
$dbr = wfGetDB( DB_SLAVE );
$setOpts += Database::getCacheSetOptions( $dbr );
return self::recursiveFetchRefsFromDB( $title, $dbr );
},
array(
'checkKeys' => array( $key ),
'lockTSE' => 30,
)
);
}
/**
* Reconstructs compressed json by successively retrieving the properties references-1, -2, etc
* It attempts the next step when a decoding error occurs.
* Returns json_decoded uncompressed string, with validation of json
*
* @param Title $title
* @param DatabaseBase $dbr
* @param string $string
* @param int $i
* @return array|false
*/
private static function recursiveFetchRefsFromDB( Title $title, DatabaseBase $dbr,
$string = '', $i = 1 ) {
$id = $title->getArticleID();
$result = $dbr->selectField(
'page_props',
'pp_value',
array(
'pp_page' => $id,
'pp_propname' => 'references-' . $i
),
__METHOD__
);
if ( $result !== false ) {
$string .= $result;
$decodedString = gzdecode( $string );
if ( $decodedString !== false ) {
$json = json_decode( $decodedString, true );
if ( json_last_error() === JSON_ERROR_NONE ) {
return $json;
}
// corrupted json ?
// shouldn't happen since when string is truncated, gzdecode should fail
wfDebug( "Corrupted json detected when retrieving stored references for title id $id" );
}
// if gzdecode fails, try to fetch next references- property value
return self::recursiveFetchRefsFromDB( $title, $dbr, $string, ++$i );
} else {
// no refs stored in page_props at this index
if ( $i > 1 ) {
// shouldn't happen
wfDebug( "Failed to retrieve stored references for title id $id" );
}
return false;
}
}
/**#@-*/
}

View File

@ -7,11 +7,36 @@
/*jshint node:true */
module.exports = function ( grunt ) {
'use strict';
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-jscs' );
grunt.loadNpmTasks( 'grunt-jsonlint' );
grunt.loadNpmTasks( 'grunt-banana-checker' );
grunt.initConfig( {
jshint: {
options: {
jshintrc: true
},
all: [
'**/*.js',
'{.jsduck,build}/**/*.js',
'modules/**/*.js',
'!node_modules/**'
]
},
banana: {
all: ['i18n/']
core: [ 'i18n/' ],
ve: [ 'modules/ve-cite/i18n/' ]
},
jscs: {
fix: {
options: {
fix: true
},
src: '<%= jshint.all %>'
},
main: {
src: '<%= jshint.all %>'
}
},
jsonlint: {
all: [
@ -21,6 +46,6 @@ module.exports = function ( grunt ) {
}
} );
grunt.registerTask( 'test', [ 'jsonlint', 'banana' ] );
grunt.registerTask( 'test', [ 'jshint', 'jscs:main', 'jsonlint', 'banana' ] );
grunt.registerTask( 'default', 'test' );
};

View File

@ -0,0 +1,25 @@
Copyright (c) 2011-2016 Cite VisualEditor Team and others under the terms
of The MIT License (MIT), as follows:
This software consists of voluntary contributions made by many
individuals (AUTHORS.txt) For exact contribution history, see the
revision history and logs, available at https://gerrit.wikimedia.org
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

14
extensions/Cite/README.md Normal file
View File

@ -0,0 +1,14 @@
Cite
=============
The Cite extension provides a way for users to create references as footnotes to articles.
See https://www.mediawiki.org/wiki/Extension:Cite for detailed documentation.
Configuration
-------------
* `$wgCiteStoreReferencesData`: If set to true, references are saved in the database so that
other extensions can retrieve them independently of the main article content.
* `$wgCiteCacheReferencesDataOnParse`: (`$wgCiteStoreReferencesData` required) By default,
references are cached only on database access. If set to true, references are also cached
whenever pages are parsed.

View File

@ -9,7 +9,7 @@ Simple <ref>, no <references/>
!! input
Wikipedia rocks!<ref>Proceeds of Rockology, vol. XXI</ref>
!! result
Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup><ol class="references">
Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span>
</li>
</ol>
@ -23,7 +23,7 @@ Wikipedia rocks!<ref>Proceeds of Rockology, vol. XXI</ref>
<references/>
!! result
<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span>
@ -47,7 +47,7 @@ Templating<ref>{{simple template}}</ref>
<references/>
!! result
<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">A <i>simple</i> template.</span>
@ -63,7 +63,7 @@ Templating<ref><nowiki>{{simple template}}</nowiki></ref>
<references/>
!! result
<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">{{simple template}}</span>
@ -104,7 +104,7 @@ Templating<ref>Text<!--comment--></ref>
<references/>
!! result
<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
<p>Templating<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Text</span>
@ -122,7 +122,7 @@ Templating<ref>Text<!--comment--></ref>
<references/>
!! result
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<ul class="gallery mw-gallery-traditional">
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
@ -143,7 +143,7 @@ Templating<ref>Text<!--comment--></ref>
!! input
{{REVISIONID}}<ref>elite</ref>
!! result
1337<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup><ol class="references">
1337<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">elite</span>
</li>
</ol>
@ -159,6 +159,25 @@ Templating<ref>Text<!--comment--></ref>
</p>
!! end
!! test
Ref with content followed by blank ref
!! input
<ref name="blank">content</ref>
<ref name="blank"/>
<references/>
!! result
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">content</span>
</li>
</ol>
!! end
!! test
Blank ref followed by ref with content
!! input
@ -168,8 +187,8 @@ Blank ref followed by ref with content
<references/>
!! result
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup>
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">content</span>
@ -187,11 +206,11 @@ Regression: non-blank ref "0" followed by ref with content
<references/>
!! result
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup>
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">0</span>
<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">0 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "blank" defined multiple times with different content</span></span>
</li>
</ol>
@ -206,11 +225,11 @@ Regression sanity check: non-blank ref "1" followed by ref with content
<references/>
!! result
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">[1]</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">[1]</a></sup>
<p><sup id="cite_ref-blank_1-0" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p><p><sup id="cite_ref-blank_1-1" class="reference"><a href="#cite_note-blank-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">1</span>
<li id="cite_note-blank-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-blank_1-0">1.0</a></sup> <sup><a href="#cite_ref-blank_1-1">1.1</a></sup></span> <span class="reference-text">1 <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "blank" defined multiple times with different content</span></span>
</li>
</ol>
@ -225,9 +244,9 @@ Ref names containing a number
<references />
!! result
<p><sup id="cite_ref-test123test_1-0" class="reference"><a href="#cite_note-test123test-1">[1]</a></sup>
<sup id="cite_ref-123test_2-0" class="reference"><a href="#cite_note-123test-2">[2]</a></sup>
<sup id="cite_ref-test123_3-0" class="reference"><a href="#cite_note-test123-3">[3]</a></sup>
<p><sup id="cite_ref-test123test_1-0" class="reference"><a href="#cite_note-test123test-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-123test_2-0" class="reference"><a href="#cite_note-123test-2">&#91;2&#93;</a></sup>
<sup id="cite_ref-test123_3-0" class="reference"><a href="#cite_note-test123-3">&#91;3&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-test123test-1"><span class="mw-cite-backlink"><a href="#cite_ref-test123test_1-0">↑</a></span> <span class="reference-text">One</span>
@ -257,24 +276,23 @@ Erroneous refs
<references />
!! result
<p><strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
name cannot be a simple integer. Use a descriptive title</strong>
</p><p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
</p><p><strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
refs with no content must have a name</strong>
</p><p><sup id="cite_ref-bar_2-0" class="reference"><a href="#cite_note-bar-2">[2]</a></sup>
</p><p><sup id="cite_ref-blankwithnoreference_3-0" class="reference"><a href="#cite_note-blankwithnoreference-3">[3]</a></sup>
</p><p><strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;references&gt;</code> tag;
<p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
name cannot be a simple integer. Use a descriptive title</span>
</p><p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p><p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: The opening <code>&lt;ref&gt;</code> tag is malformed or has a bad name</span>
</p><p><sup id="cite_ref-bar_2-0" class="reference"><a href="#cite_note-bar-2">&#91;2&#93;</a></sup>
</p><p><sup id="cite_ref-blankwithnoreference_3-0" class="reference"><a href="#cite_note-blankwithnoreference-3">&#91;3&#93;</a></sup>
</p><p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;references&gt;</code> tag;
parameter "group" is allowed only.
Use <code>&lt;references /&gt;</code>, or <code>&lt;references group="..." /&gt;</code></strong>
Use <code>&lt;references /&gt;</code>, or <code>&lt;references group="..." /&gt;</code></span>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Also zero, but differently! (Normal ref)</span>
</li>
<li id="cite_note-bar"><span class="mw-cite-backlink"><a href="#cite_ref-bar_0">↑</a></span> <strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>bar</code></strong></li>
<li id="cite_note-blankwithnoreference"><span class="mw-cite-backlink"><a href="#cite_ref-blankwithnoreference_0">↑</a></span> <strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>blankwithnoreference</code></strong></li>
<li id="cite_note-bar-2"><span class="mw-cite-backlink"><a href="#cite_ref-bar_2-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>bar</code></span></li>
<li id="cite_note-blankwithnoreference-3"><span class="mw-cite-backlink"><a href="#cite_ref-blankwithnoreference_3-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>blankwithnoreference</code></span></li>
</ol>
!! end
@ -289,8 +307,8 @@ Wikipedia rocks!<ref group=note>Proceeds of Rockology, vol. XXI</ref>
<references/>
<references group=note/>
!! result
<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
Wikipedia rocks!<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[note 1]</a></sup>
<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
Wikipedia rocks!<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;note 1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span>
@ -313,7 +331,7 @@ AAA<ref group="参">ref a</ref>BBB<ref group="注">note b</ref>CCC<ref group="
;notes
<references group="注" />
!! result
<p>AAA<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[参 1]</a></sup>BBB<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[注 1]</a></sup>CCC<sup id="cite_ref-3" class="reference"><a href="#cite_note-3">[参 2]</a></sup>
<p>AAA<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;参 1&#93;</a></sup>BBB<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;注 1&#93;</a></sup>CCC<sup id="cite_ref-3" class="reference"><a href="#cite_note-3">&#91;参 2&#93;</a></sup>
</p>
<dl><dt>refs</dt></dl>
<ol class="references">
@ -339,7 +357,7 @@ AAA<ref group="参">ref a</ref>BBB<ref group="注">note b</ref>CCC<ref group="
<ref name="foo">BAR</ref>
</references>
!! result
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">[1]</a></sup>
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-foo-1"><span class="mw-cite-backlink"><a href="#cite_ref-foo_1-0">↑</a></span> <span class="reference-text">BAR</span>
@ -357,7 +375,7 @@ AAA<ref group="参">ref a</ref>BBB<ref group="注">note b</ref>CCC<ref group="
<ref name="foo">BAR</ref>
}}
!! result
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">[1]</a></sup>
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-foo-1"><span class="mw-cite-backlink"><a href="#cite_ref-foo_1-0">↑</a></span> <span class="reference-text">BAR</span>
@ -378,15 +396,15 @@ AAA<ref group="参">ref a</ref>BBB<ref group="注">note b</ref>CCC<ref group="
<ref>BAR BAR</ref>
</references>
!! result
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">[2 1]</a></sup>
<p><sup id="cite_ref-foo_1-0" class="reference"><a href="#cite_note-foo-1">&#91;2 1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-foo"><span class="mw-cite-backlink"><a href="#cite_ref-foo_0">↑</a></span> <strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>foo</code></strong></li>
<li id="cite_note-foo-1"><span class="mw-cite-backlink"><a href="#cite_ref-foo_1-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>foo</code></span></li>
</ol>
<p><strong class="error mw-ext-cite-error">Cite error: <code>&lt;ref&gt;</code> tag with name "unused" defined in <code>&lt;references&gt;</code> is not used in prior text.</strong><br />
<strong class="error mw-ext-cite-error">Cite error: <code>&lt;ref&gt;</code> tag in <code>&lt;references&gt;</code> has conflicting group attribute "1".</strong><br />
<strong class="error mw-ext-cite-error">Cite error: <code>&lt;ref&gt;</code> tag defined in <code>&lt;references&gt;</code> has no name attribute.</strong>
<p><span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code>&lt;ref&gt;</code> tag with name "unused" defined in <code>&lt;references&gt;</code> is not used in prior text.</span><br />
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code>&lt;ref&gt;</code> tag in <code>&lt;references&gt;</code> has conflicting group attribute "1".</span><br />
<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: <code>&lt;ref&gt;</code> tag defined in <code>&lt;references&gt;</code> has no name attribute.</span>
</p>
!! end
@ -403,7 +421,7 @@ Wikipedia rocks!<ref group="klingon">Proceeds of Rockology, vol. XXI</ref>
<references group="klingon"/>
!! result
<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[wa']</a></sup>
<p>Wikipedia rocks!<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;wa'&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">Proceeds of Rockology, vol. XXI</span>
@ -419,10 +437,10 @@ Bug 31374 regression check: nested strip items
<references group=Note />
<references />
!! result
<p><sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[Note 1]</a></sup>
<p><sup id="cite_ref-2" class="reference"><a href="#cite_note-2">&#91;Note 1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">note<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup></span>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">note<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup></span>
</li>
</ol>
<ol class="references">
@ -440,7 +458,7 @@ foo
</ref>
<div><references /></div>
!! result
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>
<p><sup id="cite_ref-1" class="reference"><a href="#cite_note-1">&#91;1&#93;</a></sup>
</p>
<div><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">
@ -455,8 +473,8 @@ foo</span>
!! input
Bla.<ref></ref>
!! result
<p>Bla.<strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
refs with no name must have content</strong>
<p>Bla.<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
refs with no name must have content</span>
</p>
!! end
@ -465,8 +483,8 @@ refs with no name must have content</strong>
!! input
Bla.<ref name=""></ref>
!! result
<p>Bla.<strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
refs with no name must have content</strong>
<p>Bla.<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
refs with no name must have content</span>
</p>
!! end
@ -475,9 +493,111 @@ refs with no name must have content</strong>
!! input
Bla.<ref name="void"></ref>
!! result
Bla.<sup id="cite_ref-void_1-0" class="reference"><a href="#cite_note-void-1">[1]</a></sup><ol class="references">
<li id="cite_note-void"><span class="mw-cite-backlink"><a href="#cite_ref-void_0">↑</a></span> <strong class="error mw-ext-cite-error">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>void</code></strong></li>
Bla.<sup id="cite_ref-void_1-0" class="reference"><a href="#cite_note-void-1">&#91;1&#93;</a></sup><ol class="references">
<li id="cite_note-void-1"><span class="mw-cite-backlink"><a href="#cite_ref-void_1-0">↑</a></span> <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
no text was provided for refs named <code>void</code></span></li>
</ol>
!! end
!! test
<ref>s with the follow parameter
!! input
Page one.<ref name="beginning">First page footnote text.</ref>
Page two.<ref follow="beginning">Second page footnote text.</ref>
== References ==
<references />
!! result
<p>Page one.<sup id="cite_ref-beginning_1-0" class="reference"><a href="#cite_note-beginning-1">&#91;1&#93;</a></sup>
</p><p>Page two.
</p>
<h2><span class="mw-headline" id="References">References</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: References">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
<ol class="references">
<li id="cite_note-beginning-1"><span class="mw-cite-backlink"><a href="#cite_ref-beginning_1-0">↑</a></span> <span class="reference-text">First page footnote text. Second page footnote text.</span>
</li>
</ol>
!! end
!! test
<ref> with both name and follow parameters - invalid
!! input
Page one.<ref name="the-name" follow="the-name">This ref is invalid.</ref>
<references />
!! result
<p>Page one.<span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag;
invalid names, e.g. too many</span>
</p>
!! end
!! test
Multiple definition (outside <references/>)
!! input
<ref name=a>abc</ref>
<ref name=a>def</ref>
<references />
!! result
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
<sup id="cite_ref-a_1-1" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-a-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-a_1-0">1.0</a></sup> <sup><a href="#cite_ref-a_1-1">1.1</a></sup></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "a" defined multiple times with different content</span></span>
</li>
</ol>
!! end
!! test
Multiple definition (inside <references/>)
!! input
<ref name=a />
<references>
<ref name=a>abc</ref>
<ref name=a>def</ref>
</references>
!! result
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-a-1"><span class="mw-cite-backlink"><a href="#cite_ref-a_1-0">↑</a></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "a" defined multiple times with different content</span></span>
</li>
</ol>
!! end
!! test
Multiple definition (mixed outside/inside)
!! input
<ref name=a>abc</ref>
<references>
<ref name=a>def</ref>
</references>
!! result
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-a-1"><span class="mw-cite-backlink"><a href="#cite_ref-a_1-0">↑</a></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "a" defined multiple times with different content</span></span>
</li>
</ol>
!! end
!! test
Multiple definition (inside {{#tag:references}})
!! input
<ref name=a />
{{#tag:references|
<ref name=a>abc</ref>
<ref name=a>def</ref>
}}
!! result
<p><sup id="cite_ref-a_1-0" class="reference"><a href="#cite_note-a-1">&#91;1&#93;</a></sup>
</p>
<ol class="references">
<li id="cite_note-a-1"><span class="mw-cite-backlink"><a href="#cite_ref-a_1-0">↑</a></span> <span class="reference-text">abc <span class="error mw-ext-cite-error" lang="en" dir="ltr">Cite error: Invalid <code>&lt;ref&gt;</code> tag; name "a" defined multiple times with different content</span></span>
</li>
</ol>
!! end

View File

@ -1,10 +1,12 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "0.9"
},
"scripts": {
"test": [
"parallel-lint . --exclude node_modules --exclude vendor"
]
}
"require-dev": {
"jakub-onderka/php-parallel-lint": "0.9.2",
"mediawiki/mediawiki-codesniffer": "0.5.1"
},
"scripts": {
"test": [
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s"
]
}
}

View File

@ -4,21 +4,40 @@
"Ævar Arnfjörð Bjarmason",
"Andrew Garrett",
"Brion Vibber",
"Ed Sanders",
"Marius Hoch",
"Steve Sanbeg"
"Steve Sanbeg",
"Trevor Parscal",
"..."
],
"url": "https://www.mediawiki.org/wiki/Extension:Cite",
"descriptionmsg": "cite-desc",
"license-name": "GPL-2.0+",
"type": "parserhook",
"MessagesDirs": {
"Cite": [
"i18n"
]
"cite": "i18n",
"ve-cite": "modules/ve-cite/i18n"
},
"APIPropModules": {
"references": {
"class": "ApiQueryReferences"
}
},
"Hooks": {
"ParserFirstCallInit": [
"Cite::setHooks"
],
"ContentHandlerDefaultModelFor": [
"CiteHooks::onContentHandlerDefaultModelFor"
],
"ResourceLoaderTestModules": [
"CiteHooks::onResourceLoaderTestModules"
],
"LinksUpdate": [
"CiteHooks::onLinksUpdate"
],
"LinksUpdateComplete": [
"CiteHooks::onLinksUpdateComplete"
]
},
"ResourceModules": {
@ -48,22 +67,123 @@
"desktop",
"mobile"
]
},
"ext.cite.visualEditor.core": {
"scripts": [
"ve-cite/ve.dm.MWReferenceModel.js",
"ve-cite/ve.dm.MWReferencesListNode.js",
"ve-cite/ve.dm.MWReferenceNode.js",
"ve-cite/ve.ce.MWReferencesListNode.js",
"ve-cite/ve.ce.MWReferenceNode.js",
"ve-cite/ve.ui.MWReferencesListCommand.js"
],
"styles": [
"ve-cite/ve.ce.MWReferencesListNode.css",
"ve-cite/ve.ce.MWReferenceNode.css"
],
"dependencies": [
"ext.visualEditor.mwcore"
],
"messages": [
"cite-ve-referenceslist-isempty",
"cite-ve-referenceslist-isempty-default",
"cite-ve-referenceslist-missingref"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.cite.visualEditor.data": {
"class": "CiteDataModule"
},
"ext.cite.visualEditor": {
"scripts": [
"ve-cite/ve.ui.MWReferenceGroupInputWidget.js",
"ve-cite/ve.ui.MWReferenceSearchWidget.js",
"ve-cite/ve.ui.MWReferenceResultWidget.js",
"ve-cite/ve.ui.MWUseExistingReferenceCommand.js",
"ve-cite/ve.ui.MWCitationDialog.js",
"ve-cite/ve.ui.MWReferencesListDialog.js",
"ve-cite/ve.ui.MWReferenceDialog.js",
"ve-cite/ve.ui.MWReferenceDialogTool.js",
"ve-cite/ve.ui.MWCitationDialogTool.js",
"ve-cite/ve.ui.MWReferenceContextItem.js",
"ve-cite/ve.ui.MWReferencesListContextItem.js",
"ve-cite/ve.ui.MWCitationContextItem.js",
"ve-cite/ve.ui.MWCitationAction.js",
"ve-cite/ve.ui.MWReference.init.js"
],
"styles": [
"ve-cite/ve.ui.MWReferenceContextItem.css",
"ve-cite/ve.ui.MWReferenceGroupInputWidget.css",
"ve-cite/ve.ui.MWReferenceIcons.css",
"ve-cite/ve.ui.MWReferenceResultWidget.css",
"ve-cite/ve.ui.MWReferenceSearchWidget.css"
],
"dependencies": [
"ext.cite.visualEditor.core",
"ext.cite.visualEditor.data",
"ext.cite.style",
"ext.visualEditor.mwtransclusion",
"ext.visualEditor.mediawiki"
],
"messages": [
"cite-ve-dialog-reference-editing-reused",
"cite-ve-dialog-reference-options-group-label",
"cite-ve-dialog-reference-options-group-placeholder",
"cite-ve-dialog-reference-options-name-label",
"cite-ve-dialog-reference-options-section",
"cite-ve-dialog-reference-title",
"cite-ve-dialog-reference-useexisting-full-label",
"cite-ve-dialog-reference-useexisting-label",
"cite-ve-dialog-reference-useexisting-tool",
"cite-ve-dialog-referenceslist-contextitem-description-general",
"cite-ve-dialog-referenceslist-contextitem-description-named",
"cite-ve-dialog-referenceslist-title",
"cite-ve-dialogbutton-citation-educationpopup-title",
"cite-ve-dialogbutton-citation-educationpopup-text",
"cite-ve-dialogbutton-reference-full-label",
"cite-ve-dialogbutton-reference-tooltip",
"cite-ve-dialogbutton-reference-title",
"cite-ve-dialogbutton-referenceslist-tooltip",
"cite-ve-reference-input-placeholder",
"cite-ve-toolbar-group-label"
],
"targets": [
"desktop",
"mobile"
]
}
},
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "Cite/modules"
},
"VisualEditorPluginModules": [
"ext.cite.visualEditor"
],
"ConfigRegistry": {
"cite": "GlobalVarConfig::newInstance"
},
"config": {
"AllowCiteGroups": true,
"CiteCacheReferences": false
"CiteCacheReferences": false,
"CiteStoreReferencesData": false,
"CiteCacheReferencesDataOnParse": false
},
"AutoloadClasses": {
"ApiQueryReferences": "ApiQueryReferences.php",
"Cite": "Cite_body.php",
"CiteHooks": "CiteHooks.php",
"CiteDataModule": "CiteDataModule.php",
"CiteCSSFileModule": "CiteCSSFileModule.php"
},
"ParserTestFiles": [
"citeParserTests.txt"
],
"TrackingCategories": [
"cite-tracking-category-cite-error"
],
"manifest_version": 1
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Si Gam Acèh"
]
},
"cite_error": "Salah kutip: $1"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Angpradesh"
]
},
"cite_error": "सन्दर्भ त्रुटि: $1"
}

View File

@ -5,7 +5,8 @@
"Asaifm",
"Meno25",
"OsamaK",
"زكريا"
"زكريا",
"محمد أحمد عبد الفتاح"
]
},
"cite-desc": "يضيف وسوم <nowiki><ref[ name=id]></nowiki> و <nowiki><references/></nowiki> ، للاستشهادات",
@ -14,6 +15,7 @@
"cite_error_ref_no_key": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nالمراجع غير ذات المحتوى يجب أن تمتلك اسما",
"cite_error_ref_too_many_keys": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nأسماء غير صحيحة، على سبيل المثال كثيرة جدا",
"cite_error_ref_no_input": "وسم <code>&lt;ref&gt;</code> غير صحيح؛\nالمراجع غير ذات الاسم يجب أن تمتلك محتوى",
"cite_error_references_duplicate_key": "وسم <code>&lt;ref&gt;</code> غير صالح؛ الاسم \"$1\" معرف أكثر من مرة بمحتويات مختلفة.",
"cite_error_references_invalid_parameters": "وسم <code>&lt;references&gt;</code> غير صحيح؛\nلا محددات مسموح بها.\nاستخدم <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "وسم <code>&lt;references&gt;</code> غير صحيح؛\nالمحدد \"group\" فقط مسموح به.\nاستخدم <code>&lt;references /&gt;</code>، أو <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "نفدت علامات الوصلات الراجعة المخصصة.\nعرف المزيد في رسالة <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -26,8 +28,13 @@
"cite_error_references_missing_key": "الوسم <code>&lt;ref&gt;</code> ذو الاسم \"$1\" المُعرّف في <code>&lt;references&gt;</code> غير مستخدم في النص السابق.",
"cite_error_references_no_key": "الوسم <code>&lt;ref&gt;</code> المعرف في <code>&lt;references&gt;</code> ليس له خاصة اسم.",
"cite_error_empty_references_define": "الوسم <code>&lt;ref&gt;</code> المُعرّف في <code>&lt;references&gt;</code> بالاسم \"$1\" ليس له محتوى.",
"cite-tracking-category-cite-error": "صفحات بأخطاء في المراجع",
"cite-tracking-category-cite-error-desc": "الصفحات في هذا التصنيف بها أخطاء في استخدام وسوم المراجع.",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\"><b>^</b> $2</span> $3</li>",
"cite_references_link_many_format_backlink_labels": "أ ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي أأ أب أت أث أج أح أخ أد أذ أر أز أس أش أص أض أط أظ أع أغ أف أق أك أل أم أن أه أو أي بأ بب بت بث بج بح بخ بد بذ بر بز بس بش بص بض بط بظ بع بغ بف بق بك بل بم بن به بو بي تأ تب تت تث تج تح تخ تد تذ تر تز تس تش تص تض تط تظ تع تغ تف تق تك تل تم تن ته تو تي ثأ ثب ثت ثث ثج ثح ثخ ثد ثذ ثر ثز ثس ثش ثص ثض ثط ثظ ثع ثغ ثف ثق ثك ثل ثم ثن ثه ثو ثي جأ جب جت جث جج جح جخ جد جذ جر جز جس جش جص جض جط جظ جع جغ جف جق جك جل جم جن جه جو جي حأ حب حت حث حج حح حخ حد حذ حر حز حس حش حص حض حط حظ حع حغ حف حق حك حل حم حن حه حو حي خأ خب خت خث خج خح خخ خد خذ خر خز خس خش خص خض خط خظ خع خغ خف خق خك خل خم خن خه خو خي دأ دب دت دث دج دح دخ دد دذ در دز دس دش دص دض دط دظ دع دغ دف دق دك دل دم دن ده دو دي ذأ ذب ذت ذث ذج ذح ذخ ذد ذذ ذر ذز ذس ذش ذص ذض ذط ذظ ذع ذغ ذف ذق ذك ذل ذم ذن ذه ذو ذي رأ رب رت رث رج رح رخ رد رذ رر رز رس رش رص رض رط رظ رع رغ رف رق رك رل رم رن ره رو ري زأ زب زت زث زج زح زخ زد زذ زر زز زس زش زص زض زط زظ زع زغ زف زق زك زل زم زن زه زو زي سأ سب ست سث سج سح سخ سد سذ سر سز سس سش سص سض سط سظ سع سغ سف سق سك سل سم سن سه سو سي شأ شب شت شث شج شح شخ شد شذ شر شز شس شش شص شض شط شظ شع شغ شف شق شك شل شم شن شه شو شي صأ صب صت صث صج صح صخ صد صذ صر صز صس صش صص صض صط صظ صع صغ صف صق صك صل صم صن صه صو صي ضأ ضب ضت ضث ضج ضح ضخ ضد ضذ ضر ضز ضس ضش ضص ضض ضط ضظ ضع ضغ ضف ضق ضك ضل ضم ضن ضه ضو ضي طأ طب طت طث طج طح طخ طد طذ طر طز طس طش طص طض طط طظ طع طغ طف طق طك طل طم طن طه طو طي ظأ ظب ظت ظث ظج ظح ظخ ظد ظذ ظر ظز ظس ظش ظص ظض ظط ظظ ظع ظغ ظف ظق ظك ظل ظم ظن ظه ظو ظي عأ عب عت عث عج عح عخ عد عذ عر عز عس عش عص عض عط عظ عع عغ عف عق عك عل عم عن عه عو عي غأ غب غت غث غج غح غخ غد غذ غر غز غس غش غص غض غط غظ غع غغ غف غق غك غل غم غن غه غو غي فأ فب فت فث فج فح فخ فد فذ فر فز فس فش فص فض فط فظ فع فغ فف فق فك فل فم فن فه فو في قأ قب قت قث قج قح قخ قد قذ قر قز قس قش قص قض قط قظ قع قغ قف قق قك قل قم قن قه قو قي كأ كب كت كث كج كح كخ كد كذ كر كز كس كش كص كض كط كظ كع كغ كف كق كك كل كم كن كه كو كي لأ لب لت لث لج لح لخ لد لذ لر لز لس لش لص لض لط لظ لع لغ لف لق لك لل لم لن له لو لي مأ مب مت مث مج مح مخ مد مذ مر مز مس مش مص مض مط مظ مع مغ مف مق مك مل مم من مه مو مي نأ نب نت نث نج نح نخ ند نذ نر نز نس نش نص نض نط نظ نع نغ نف نق نك نل نم نن نه نو ني هأ هب هت هث هج هح هخ هد هذ هر هز هس هش هص هض هط هظ هع هغ هف هق هك هل هم هن هه هو هي وأ وب وت وث وج وح وخ ود وذ ور وز وس وش وص وض وط وظ وع وغ وف وق وك ول وم ون وه وو وي يأ يب يت يث يج يح يخ يد يذ ير يز يس يش يص يض يط يظ يع يغ يف يق يك يل يم ين يه يو يي",
"cite_references_link_accessibility_label": "تعدى المحتوى الحالي إلى أعلى الصفحة",
"cite_references_link_many_accessibility_label": "تعدى إلى الأعلى ل:"
"cite_references_link_many_accessibility_label": "تعدى إلى الأعلى ل:",
"cite_section_preview_references": "معاينة المراجع",
"cite_warning": "تحذير استشهاد: $1",
"cite_warning_sectionpreview_no_text": "لا يمكن معاينة الوسم <code>&lt;ref&gt;</code> الذي يحمل اسم <code>$1</code> لأنه معرف خارج القسم الحالي أو غير معرف على الإطلاق."
}

View File

@ -3,7 +3,8 @@
"authors": [
"Bishnu Saikia",
"Gitartha.bordoloi",
"Reedy"
"Reedy",
"Dibya Dutta"
]
},
"cite-desc": "উদ্ধৃতিৰ বাবে <nowiki><ref[ name=id]></nowiki> আৰু <nowiki><references/></nowiki> টেগ্‌সমূহ যোগ কৰে",
@ -23,5 +24,7 @@
"cite_error_references_missing_group": "<code>&lt;references&gt;</code>ত দিয়া <code>&lt;ref&gt;</code> টেগৰ \"$1\" গোট এট্ট্ৰিবিউট আছে, যিটো পূৰ্বৰ পাঠ্যত ওলোৱা নাই।",
"cite_error_references_missing_key": "<code>&lt;references&gt;</code>ত দিয়া \"$1\" নামৰ <code>&lt;ref&gt;</code> টেগ্‌টো পূৰ্বৰ পাঠ্যত ব্যৱহাৰ কৰা নাই।",
"cite_error_references_no_key": "<code>&lt;references&gt;</code>ত দিয়া <code>&lt;ref&gt;</code> টেগৰ কোনো নাম আবণ্টন নাই।",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code>ত দিয়া \"$1\" নামৰ <code>&lt;ref&gt;</code> টেগৰ কোনো সমল নাই।"
"cite_error_empty_references_define": "<code>&lt;references&gt;</code>ত দিয়া \"$1\" নামৰ <code>&lt;ref&gt;</code> টেগৰ কোনো সমল নাই।",
"cite_references_link_accessibility_label": "যাওক",
"cite_references_link_many_accessibility_label": "ইয়ালৈ যাওক:"
}

View File

@ -5,12 +5,15 @@
"Xuacu"
]
},
"apihelp-query+references-description": "Devolver una representación de datos de les referencies asociaes coles páxines indicaes.",
"apihelp-query+references-example-1": "Referencies asociaes con <kbd>Albert Einstein</kbd>.",
"cite-desc": "Añade les etiquetes <nowiki><ref[ name=id]></nowiki> y <nowiki><references/></nowiki> pa les cites",
"cite_error": "Error de cita: $1",
"cite_error_ref_numeric_key": "Etiqueta <code>&lt;ref&gt;</code> non válida; el nome nun pue ser un enteru simple, usa un títulu descriptivu",
"cite_error_ref_no_key": "Etiqueta <code>&lt;ref&gt;</code> non válida; les referencies ensin conteníu han tener un nome",
"cite_error_ref_no_key": "La etiqueta d'apertura <code>&lt;ref&gt;</code> ta mal formada o tien un mal nome",
"cite_error_ref_too_many_keys": "Etiqueta <code>&lt;ref&gt;</code> non válida; nomes non válidos (p.ex. demasiaos)",
"cite_error_ref_no_input": "Etiqueta <code>&lt;ref&gt;</code> non válida; les referencies ensin nome han tener conteníu",
"cite_error_references_duplicate_key": "La etiqueta <code>&lt;ref&gt;</code> ye inválida; el nome «$1» ta definíu delles vegaes con distintu conteníu",
"cite_error_references_invalid_parameters": "Etiqueta <code>&lt;references&gt;</code> non válida; nun se permiten parámetros, usa <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Etiqueta <code>&lt;references&gt;</code> non válida;\nnamái se permite'l parámetru \"group\".\nUsa <code>&lt;references /&gt;</code>, o bien <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Etiquetes personalizaes agotaes.\nDefini más nel mensaxe <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -23,6 +26,11 @@
"cite_error_references_missing_key": "La etiqueta <code>&lt;ref&gt;</code> col nome \"$1\" definida en <code>&lt;references&gt;</code> nun s'utiliza nel testu anterior.",
"cite_error_references_no_key": "La etiqueta <code>&lt;ref&gt;</code> definida en <code>&lt;references&gt;</code> nun tien dengún atributu de nome.",
"cite_error_empty_references_define": "La etiqueta <code>&lt;ref&gt;</code> definida en <code>&lt;references&gt;</code> col nome \"$1\" nun tien conteníu.",
"cite-tracking-category-cite-error": "Páxines con errores de referencies",
"cite-tracking-category-cite-error-desc": "Les páxines d'esta categoría tienen errores nel usu de les etiquetes de referencies.",
"cite_references_link_accessibility_label": "Saltar arriba",
"cite_references_link_many_accessibility_label": "Saltar a:"
"cite_references_link_many_accessibility_label": "Saltar a:",
"cite_section_preview_references": "Vista previa de les referencies",
"cite_warning": "Alvertencia de cita: $1",
"cite_warning_sectionpreview_no_text": "La etiqueta <code>&lt;ref&gt;</code> con nome <code>$1</code> nun puede entevese porque ta definida fora de la sección actual o nun ta definida n'absoluto."
}

View File

@ -2,14 +2,15 @@
"@metadata": {
"authors": [
"Vago",
"Wertuose"
"Wertuose",
"Serkanland"
]
},
"cite_error": "Sitat səhvi: $1",
"cite-tracking-category-cite-error": "İstinad xətası olan səhifələr",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "sitat_istinad-",
"cite_references_link_prefix": "sitat_qeyd-",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup>",
"cite_references_link_many_format": "<sup>[[#$1|$2]]</sup>",
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;"

View File

@ -1,15 +1,21 @@
{
"@metadata": {
"authors": [
"Assele"
"Assele",
"Вильданова Гюзель",
"Янмурза Баки",
"Лилиә"
]
},
"apihelp-query+references-description": "Был бит менән бәйле һылтанмаларҙың мәғлүмәттәрен сағылдыра.",
"apihelp-query+references-example-1": "<kbd>Albert Einstein</kbd> менән бәйле һылтанмалар.",
"cite-desc": "Төшөрмәләр өсөн <nowiki><ref[ name=id]></nowiki> һәм <nowiki><references/></nowiki> билдәләрен өҫтәй",
"cite_error": "Өҙөмтә хатаһы: $1",
"cite_error_ref_numeric_key": "<code>&lt;ref&gt;</code> билдәһе дөрөҫ түгел;\nисем бөтөн һан була алмай. Тасуирларлыҡ исем ҡулланығыҙ.",
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> билдәһе дөрөҫ түгел;\nэстәлекһеҙ төшөрмәнең исеме булырға тейеш.",
"cite_error_ref_no_key": "Асыусы тег <code>&lt;ref&gt;</code> билдәһе- дөрөҫ түгел йәки мәғәнәһеҙ исем йөрөтә.",
"cite_error_ref_too_many_keys": "<code>&lt;ref&gt;</code> билдәһе дөрөҫ түгел;\nисемдәр дөрөҫ түгел, бәлки, бигерәк күп",
"cite_error_ref_no_input": "<code>&lt;ref&gt;</code> билдәһе дөрөҫ түгел;\nисемһеҙ төшөрмәнең эстәлеге булырға тейеш.",
"cite_error_references_duplicate_key": "<code>&lt;ref&gt;</code> тег дөрөҫ түгел: «$1» исеме бер нисә тапҡыр, икенсе йөкмәткегә билдәләнгән",
"cite_error_references_invalid_parameters": "<code>&lt;references&gt;</code> билдәһе дөрөҫ түгел;\nпараметрҙар рөхсәт ителмәй.\n<code>&lt;references /&gt;</code> ҡулланығыҙ.",
"cite_error_references_invalid_parameters_group": "<code>&lt;references&gt;</code> билдәһе дөрөҫ түгел;\n\"group\" параметры ғына рөхсәт ителә.\n<code>&lt;references /&gt;</code> йәки <code>&lt;references group=\"...\" /&gt;</code> ҡулланығыҙ.",
"cite_error_references_no_backlink_label": "Кире ҡайтарыу һылтанмалары өсөн хәрефтәр етмәй.\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> система хәбәрен киңәйтергә кәрәк.",
@ -21,5 +27,12 @@
"cite_error_references_missing_group": "<code>&lt;references&gt;</code> билдәһенең <code>&lt;ref&gt;</code> билдәһендә \"$1\" төркөмө атрибуты үрҙәге текста осрамай.",
"cite_error_references_missing_key": "<code>&lt;references&gt;</code> билдәһенең \"$1\" исемле <code>&lt;ref&gt;</code> билдәһе үрҙәге текста ҡулланылмай.",
"cite_error_references_no_key": "<code>&lt;references&gt;</code> билдәһенең <code>&lt;ref&gt;</code> билдәһендә исем атрибуты юҡ.",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code> билдәһенең \"$1\" исемле <code>&lt;ref&gt;</code> билдәһенең эстәлеге юҡ."
"cite_error_empty_references_define": "<code>&lt;references&gt;</code> билдәһенең \"$1\" исемле <code>&lt;ref&gt;</code> билдәһенең эстәлеге юҡ.",
"cite-tracking-category-cite-error": "Иҫкәрмәләрендә хаталы биттәр",
"cite-tracking-category-cite-error-desc": "Страницы в данной категории содержат ошибки в использовании тегов примечаний.\nБыл категориялағы биттәрҙә иҫкәрмәләр тегын файҙаланғанда хата ебәрелгән.",
"cite_references_link_accessibility_label": "Өҫкә һикереү",
"cite_references_link_many_accessibility_label": "Шунда өҫкә күсергә",
"cite_section_preview_references": "Иҫкәрмәләрҙе алдан тикшереү",
"cite_warning": "Өҙөмтә яҙғанды иҫкәртергә: $1",
"cite_warning_sectionpreview_no_text": "<code>$1</code> исемле <code>&lt;ref&gt;</code> теген алдан ҡарап булмай, сөнки ул икенсе бүлектә билдәләнгән йәки бөтөнләй билдәләнмәгән."
}

View File

@ -7,12 +7,15 @@
"Wizardist"
]
},
"apihelp-query+references-description": "Вяртае прадстаўленьне зьвестак крыніц, злучаных з пададзенымі старонкамі.",
"apihelp-query+references-example-1": "Крыніцы, зьвязаныя з старонкай <kbd>Albert Einstein</kbd>.",
"cite-desc": "Дадае тэгі <nowiki><ref[ name=id]></nowiki> і <nowiki><references/></nowiki> для зносак",
"cite_error": "Памылка цытаваньня: $1",
"cite_error_ref_numeric_key": "Няслушны тэг <code>&lt;ref&gt;</code>;\nназва ня можа быць проста лікам, ужывайце апісальную назву",
"cite_error_ref_no_key": "Няслушны тэг <code>&lt;ref&gt;</code>;\nпустыя тэгі <code>ref</code> мусяць мець назву",
"cite_error_ref_no_key": "Пачатковы тэг <code>&lt;ref&gt;</code> зьяўляецца няслушным або мае кепскую назву",
"cite_error_ref_too_many_keys": "Няслушны тэг <code>&lt;ref&gt;</code>;\nняслушныя назвы, ці іх было зашмат",
"cite_error_ref_no_input": "Няслушны тэг <code>&lt;ref&gt;</code>;\nкрыніцы бяз назваў мусяць мець зьмест",
"cite_error_references_duplicate_key": "Няслушны тэг <code>&lt;ref&gt;</code>; назва «$1» вызначаная некалькі разоў з розным зьместам",
"cite_error_references_invalid_parameters": "Няслушны тэг <code>&lt;references&gt;</code>;\nнедазволеныя парамэтры.\nКарыстайцеся <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Няслушны тэг <code>&lt;references&gt;</code>;\nдазволена карыстацца толькі парамэтрам «group».\nКарыстайцеся <code>&lt;references /&gt;</code>, ці <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Не хапае сымбаляў для адваротных спасылак.\nНеабходна пашырыць сыстэмнае паведамленьне <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -25,6 +28,11 @@
"cite_error_references_missing_key": "Тэг <code>&lt;ref&gt;</code> з назвай «$1» вызначаны ў <code>&lt;references&gt;</code> не выкарыстоўваўся ў папярэднім тэксьце.",
"cite_error_references_no_key": "Тэг <code>&lt;ref&gt;</code> вызначаны ў <code>&lt;references&gt;</code> ня мае атрыбуту назвы.",
"cite_error_empty_references_define": "Тэг <code>&lt;ref&gt;</code> вызначаны ў <code>&lt;references&gt;</code> з назвай «$1» ня мае зьместу.",
"cite-tracking-category-cite-error": "Старонкі з памылкамі ў крыніцах",
"cite-tracking-category-cite-error-desc": "Старонкі ў гэтай катэгорыі маюць памылкі ў спасылках на крыніцы.",
"cite_references_link_accessibility_label": "Угару",
"cite_references_link_many_accessibility_label": "Угару да:"
"cite_references_link_many_accessibility_label": "Угару да:",
"cite_section_preview_references": "Папярэдні прагляд спасылак на крыніцы",
"cite_warning": "Папярэджаньне ў крыніцах: $1",
"cite_warning_sectionpreview_no_text": "Тэг <code>&lt;ref&gt;</code> з назвай <code>$1</code> ня можа быць паказаны ў папярэднім праглядзе, бо ён вызначаны па-за межамі гэтага разьдзелу або ня вызначаны наогул."
}

View File

@ -3,7 +3,8 @@
"authors": [
"Borislav",
"DCLXVI",
"Spiritia"
"Spiritia",
"Termininja"
]
},
"cite-desc": "Добавя етикетите <nowiki><ref[ name=id]></nowiki> и <nowiki><references/></nowiki>, подходящи за цитиране",
@ -17,5 +18,6 @@
"cite_error_references_no_backlink_label": "Изчерпани са специалните етикети за обратна референция.\nОще етикети могат да се дефинират в системното съобщение <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
"cite_error_references_no_text": "'''Грешка в етикет <code>&lt;ref&gt;</code>:''' не е подаден текст за бележките на име <code>$1</code>",
"cite_error_included_ref": "Липсва затварящ етикет <code>&lt;/ref&gt;</code> след отварящия етикет <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "Присъстват етикети <code>&lt;ref&gt;</code> за групата \"$1\"; но липсва съответният етикет <code>&lt;references group=\"$1\"/&gt;</code>"
"cite_error_group_refs_without_references": "Присъстват етикети <code>&lt;ref&gt;</code> за групата \"$1\"; но липсва съответният етикет <code>&lt;references group=\"$1\"/&gt;</code>",
"cite-tracking-category-cite-error": "Страници с грешка в източник"
}

View File

@ -1,8 +1,9 @@
{
"@metadata": {
"authors": [
"Baloch Afghanistan"
"Baloch Afghanistan",
"Ibrahim khashrowdi"
]
},
"cite_error": "یات کورت ئی ختا: $1"
"cite_error": "$1: یات کورت‌ئی خطا"
}

View File

@ -4,21 +4,35 @@
"Aftab1995",
"Bellayet",
"Nasir8891",
"Zaheen"
"Zaheen",
"Aftabuzzaman"
]
},
"cite-desc": "উদ্ধৃতির জন্য, <nowiki><ref[ name=id]></nowiki> এবং <nowiki><references/></nowiki> ট্যাগসমূহ যোগ করুন",
"cite_error": "উদ্ধৃতি ত্রুটি: $1",
"cite_error_ref_numeric_key": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; নাম কোন সরল পূর্ণসংখ্যা হতে পারবেনা, একটি বিবরণমূলক শিরোনাম ব্যবহার করুন",
"cite_error_ref_no_key": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; বিষয়বস্তুহীন ref সমূহের অবশ্যই নাম থাকতে হবে",
"cite_error_ref_numeric_key": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; নাম কোন সরল পূর্ণসংখ্যা হতে পারবে না। একটি বিবরণমূলক শিরোনাম ব্যবহার করুন",
"cite_error_ref_no_key": "শুরুর <code>&lt;ref&gt;</code> ট্যাগ সঠিক নয় বা ভুল নামে রয়েছে",
"cite_error_ref_too_many_keys": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; অবৈধ নাম (যেমন- সংখ্যাতিরিক্ত)",
"cite_error_ref_no_input": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; নামবিহীন ref সমূহের অবশ্যই বিষয়বস্তু থাকতে হবে",
"cite_error_references_invalid_parameters": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; কোন প্যারামিটার অনুমোদিত নয়, <code>&lt;references /&gt;</code> ব্যবহার করুন",
"cite_error_references_duplicate_key": "<code>&lt;ref&gt;</code> ট্যাগ অবৈধ; আলাদা বিষয়বস্তুর সঙ্গে \"$1\" নাম একাধিক বার সংজ্ঞায়িত করা হয়েছে",
"cite_error_references_invalid_parameters": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; কোন প্যারামিটার অনুমোদিত নয়। <code>&lt;references /&gt;</code> ব্যবহার করুন",
"cite_error_references_invalid_parameters_group": "ত্রুটিপূর্ণ <code>&lt;references&gt;</code> ট্যাগ;\nকেবলমাত্র \"group\" প্যারামিটার ব্যবহার কর যাবে।\n<code>&lt;references /&gt;</code>, অথবা <code>&lt;references group=\"...\" /&gt;</code> ব্যবহার করুন",
"cite_error_references_no_backlink_label": "পছন্দমাফিক ব্যাকলিংক লেবেলের সংখ্যা ফুরিয়ে গেছে।\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> বার্তায় আরও সংজ্ঞায়িত করুন",
"cite_error_no_link_label_group": "গ্রুপ \"$1\" এর জন্য কাস্টম লিংক ব্যবহারের সীমানা পেরিয়েছে।\n<nowiki>[[MediaWiki:$2]]</nowiki> বার্তায় আরও সজ্ঞায়িত করুন।",
"cite_error_references_no_backlink_label": "স্বনির্ধারিত ব্যাকলিংক লেবেলের সংখ্যা শেষ হয়ে গেছে।\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> বার্তায় আরও সংজ্ঞায়িত করুন",
"cite_error_no_link_label_group": "\"$1\" গ্রুপের জন্য স্বনির্ধারিত লিংক ব্যবহারের সীমানা পেরিয়েছে।\n<nowiki>[[MediaWiki:$2]]</nowiki> বার্তায় আরও সজ্ঞায়িত করুন।",
"cite_error_references_no_text": "অবৈধ <code>&lt;ref&gt;</code> ট্যাগ; <code>$1</code> নামের ref গুলির জন্য কোন টেক্সট প্রদান করা হয়নি",
"cite_error_included_ref": "<code>&lt;ref&gt;</code> ট্যাগের ক্ষেত্রে <code>&lt;/ref&gt;</code> ট্যাগ যোগ করা হয়নি",
"cite_error_group_refs_without_references": "\"$1\" নামের গ্রুপের <code>&lt;ref&gt;</code> ট্যাগ রয়েছে, কিন্তু এর জন্য <code>&lt;references group=\"$1\"/&gt;</code> ট্যাগ দেয়া হয়নি",
"cite_error_references_group_mismatch": "\"$1\" গ্রুপের ক্ষেত্রে <code>&lt;ref&gt;</code> ট্যাগ <code>&lt;references&gt;</code> ট্যাগের অংশে ব্যবহারে সমস্যা সৃষ্টি হয়েছে।"
"cite_error_group_refs_without_references": "\"$1\" নামক গ্রুপের জন্য <code>&lt;ref&gt;</code> ট্যাগ রয়েছে, কিন্তু এর জন্য কোন সঙ্গতিপূর্ণ <code>&lt;references group=\"$1\"/&gt;</code> ট্যাগ পাওয়া যায়নি, বা বন্ধকরণ <code>&lt;/ref&gt;</code> দেয়া হয়নি",
"cite_error_references_group_mismatch": "\"$1\" গ্রুপের ক্ষেত্রে <code>&lt;ref&gt;</code> ট্যাগ <code>&lt;references&gt;</code> ট্যাগের অংশে ব্যবহারে সমস্যা সৃষ্টি হয়েছে।",
"cite_error_references_missing_group": "<code>&lt;references&gt;</code>-এ সংজ্ঞায়িত <code>&lt;ref&gt;</code> ট্যাগে আরোপ গ্রুপ \"$1\" রয়েছে যা পূর্ববর্তী লেখায় প্রদর্শিত হয়নি।",
"cite_error_references_missing_key": "<code>&lt;references&gt;</code>-এ সংজ্ঞায়িত \"$1\" নামসহ <code>&lt;ref&gt;</code> ট্যাগ পূর্ববর্তী লেখায় ব্যবহৃত হয়নি।",
"cite_error_references_no_key": "<code>&lt;references&gt;</code>-এ সংজ্ঞায়িত <code>&lt;ref&gt;</code> ট্যাগে কোন নাম আরোপ করা হয়নি।",
"cite_error_empty_references_define": "\"$1\" নামসহ <code>&lt;references&gt;</code>-এ সংজ্ঞায়িত <code>&lt;ref&gt;</code> ট্যাগে কোন বিষয়বস্তু নেই।",
"cite-tracking-category-cite-error": "তথ্যসূত্র ত্রুটিসহ পাতা",
"cite-tracking-category-cite-error-desc": "এই বিষয়শ্রেণীতে অন্তর্ভুক্ত নিবন্ধসমূহে তথ্যসূত্র ট্যাগ ব্যবহারে ত্রুটি আছে।",
"cite_references_link_many_format_backlink_labels": "অ আ ই ঈ উ ঊ ঋ এ ঐ ও ঔ ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল শ ষ স হ ড় ঢ় য় ৎ অঅ অআ অই অঈ অউ অঊ অঋ অএ অঐ অও অঔ অক অখ অগ অঘ অঙ অচ অছ অজ অঝ অঞ অট অঠ অড অঢ অণ অত অথ অদ অধ অন অপ অফ অব অভ অম অয অর অল অশ অষ অস অহ অড় অঢ় অয় অৎ আঅ আআ আই আঈ আউ আঊ আঋ আএ আঐ আও আঔ আক আখ আগ আঘ আঙ আচ আছ আজ আঝ আঞ আট আঠ আড আঢ আণ আত আথ আদ আধ আন আপ আফ আব আভ আম আয আর আল আশ আষ আস আহ আড় আঢ় আয় আৎ ইঅ ইআ ইই ইঈ ইউ ইঊ ইঋ ইএ ইঐ ইও ইঔ ইক ইখ ইগ ইঘ ইঙ ইচ ইছ ইজ ইঝ ইঞ ইট ইঠ ইড ইঢ ইণ ইত ইথ ইদ ইধ ইন ইপ ইফ ইব ইভ ইম ইয ইর ইল ইশ ইষ ইস ইহ ইড় ইঢ় ইয় ইৎ ঈঅ ঈআ ঈই ঈঈ ঈউ ঈঊ ঈঋ ঈএ ঈঐ ঈও ঈঔ ঈক ঈখ ঈগ ঈঘ ঈঙ ঈচ ঈছ ঈজ ঈঝ ঈঞ ঈট ঈঠ ঈড ঈঢ ঈণ ঈত ঈথ ঈদ ঈধ ঈন ঈপ ঈফ ঈব ঈভ ঈম ঈয ঈর ঈল ঈশ ঈষ ঈস ঈহ ঈড় ঈঢ় ঈয় ঈৎ উঅ উআ উই উঈ উউ উঊ উঋ উএ উঐ উও উঔ উক উখ উগ উঘ উঙ উচ উছ উজ উঝ উঞ উট উঠ উড উঢ উণ উত উথ উদ উধ উন উপ উফ উব উভ উম উয উর উল উশ উষ উস উহ উড় উঢ় উয় উৎ",
"cite_references_link_accessibility_label": "ঝাঁপ দাও",
"cite_references_link_many_accessibility_label": "ঝাঁপ দাও:",
"cite_section_preview_references": "তথ্যসূত্রের প্রাকদর্শন",
"cite_warning": "উদ্ধৃতি সতর্কবার্তা: $1",
"cite_warning_sectionpreview_no_text": "<code>$1</code> নামসহ <code>&lt;ref&gt;</code> ট্যাগের প্রাকদর্শন দেখা যাবে না কারণ এটি বর্তমান অনুচ্ছেদের বাইরে সংজ্ঞায়িত করা হয়েছে বা একেবারেই সংজ্ঞায়িত করা হয়নি।"
}

View File

@ -11,7 +11,7 @@
"cite-desc": "Dodaje oznake <nowiki><ref[ name=id]></nowiki> i <nowiki><references/></nowiki> za citiranje",
"cite_error": "Greška kod citiranja: $1",
"cite_error_ref_numeric_key": "Nevaljana oznaka <code>&lt;ref&gt;</code>;\nnaslov ne može biti jednostavni cijeli broj. Koristite opisni naslov",
"cite_error_ref_no_key": "Nevaljana oznaka <code>&lt;ref&gt;</code>;\nreference bez sadržaja moraju imati naziv",
"cite_error_ref_no_key": "Početna oznaka <code>&lt;ref&gt;</code> nije ispravno oblikovana ili sadrži neispravan naziv",
"cite_error_ref_too_many_keys": "Nevaljana oznaka <code>&lt;ref&gt;</code>;\nnevaljani nazivi, npr. možda ih je previše",
"cite_error_ref_no_input": "Nevaljana oznaka <code>&lt;ref&gt;</code>;\nreference bez naziva moraju imati sadržaj",
"cite_error_references_invalid_parameters": "Nevaljana oznaka <code>&lt;references&gt;</code>;\nnisu dozvoljeni parametri.\nKoristite <code>&lt;references /&gt;</code>",
@ -26,6 +26,8 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> oznaka s imenom \"$1\" definirana u <code>&lt;references&gt;</code> nije korištena u ranijem tekstu.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> oznaka definisana u <code>&lt;references&gt;</code> nema imenski atribut.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> oznaka definirana u <code>&lt;references&gt;</code> s imenom \"$1\" nema nikakvog sadržaja.",
"cite-tracking-category-cite-error": "Stranice s greškama u referencama",
"cite_references_link_accessibility_label": "Vrati se na vrh",
"cite_references_link_many_accessibility_label": "Vrati se na:"
"cite_references_link_many_accessibility_label": "Vrati se na:",
"cite_section_preview_references": "Pregled referenci"
}

View File

@ -4,7 +4,8 @@
"Davidpar",
"Jordi Roqué",
"SMP",
"Vriullop"
"Vriullop",
"Pere prlpz"
]
},
"cite-desc": "Afegeix les etiquetes <nowiki><ref[ name=id]></nowiki> i <nowiki><references/></nowiki>, per a cites",
@ -24,5 +25,7 @@
"cite_error_references_missing_group": "L'etiqueta <code>&lt;ref&gt;</code> definida a <code>&lt;references&gt;</code> té l'atribut de grup \"$1\" que no apareix en el text anterior.",
"cite_error_references_missing_key": "L'etiqueta <code>&lt;ref&gt;</code> amb el nom \"$1\" definida a <code>&lt;references&gt;</code> no s'utilitza en el text anterior.",
"cite_error_references_no_key": "L'etiqueta <code>&lt;ref&gt;</code> definida a <code>&lt;references&gt;</code> no té cap atribut de nom.",
"cite_error_empty_references_define": "L'etiqueta <code>&lt;ref&gt;</code> definida a <code>&lt;references&gt;</code> amb el nom \"$1\" no té contingut."
"cite_error_empty_references_define": "L'etiqueta <code>&lt;ref&gt;</code> definida a <code>&lt;references&gt;</code> amb el nom \"$1\" no té contingut.",
"cite-tracking-category-cite-error": "Pàgines amb errors a les referències",
"cite_section_preview_references": "Previsualització de les referències"
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Asoxor"
]
},
"cite_error_ref_too_many_keys": "تاگی <code>&lt;ref&gt;</code>ی ڕێگەپێنەدراو؛\nبۆ نموونە، ناوە ھەڵەیەکان یان لە ڕادە بەدەر"
}

View File

@ -6,15 +6,17 @@
"Littledogboy",
"Matěj Grabovský",
"Mormegil",
"Sp5uhe"
"Sp5uhe",
"Matěj Suchánek"
]
},
"cite-desc": "Přidává značky <nowiki><ref[ name=\"id\"]></nowiki> a&nbsp;<nowiki><references /></nowiki> na označení citací",
"cite_error": "Chybná citace: $1",
"cite_error_ref_numeric_key": "Chyba v tagu <code>&lt;ref&gt;</code>; názvem nesmí být prosté číslo, použijte popisné označení",
"cite_error_ref_no_key": "Chyba v tagu <code>&lt;ref&gt;</code>; prázdné citace musí obsahovat název",
"cite_error_ref_no_key": "Otvírací značka <code>&lt;ref&gt;</code> je chybná nebo má špatný název",
"cite_error_ref_too_many_keys": "Chyba v tagu <code>&lt;ref&gt;</code>; chybné názvy, např. je jich příliš mnoho",
"cite_error_ref_no_input": "Chyba v tagu <code>&lt;ref&gt;</code>; citace bez názvu musí mít vlastní obsah",
"cite_error_references_duplicate_key": "Neplatná značka <code>&lt;ref&gt;</code>; název „$1“ použit vícekrát s různým obsahem",
"cite_error_references_invalid_parameters": "Chyba v tagu <code>&lt;references&gt;</code>; zde není dovolen parametr, použijte <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Neplatná značka <tt>&lt;references&gt;</tt>;\nje povolen pouze parametr „group“.\nPoužijte <tt>&lt;references /&gt;</tt> nebo <tt>&lt;references group=\"...\" /&gt;</tt>.",
"cite_error_references_no_backlink_label": "Došla označení zpětných odkazů, přidejte jich několik do zprávy <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -27,6 +29,11 @@
"cite_error_references_missing_key": "Na <code>&lt;ref&gt;</code> se jménem „$1“ definovaný uvnitř <code>&lt;references&gt;</code> nejsou v předchozím textu žádné odkazy.",
"cite_error_references_no_key": "U značky <code>&lt;ref&gt;</code> definované uvnitř <code>&lt;references&gt;</code> chybí atribut <code>name</code>.",
"cite_error_empty_references_define": "U značky <code>&lt;ref&gt;</code> s názvem „$1“ definované uvnitř <code>&lt;references&gt;</code> chybí obsah.",
"cite-tracking-category-cite-error": "Stránky s chybami v referencích",
"cite-tracking-category-cite-error-desc": "Stránky v této kategorii obsahují chyby v použití značek pro reference.",
"cite_references_link_accessibility_label": "Skočit nahoru",
"cite_references_link_many_accessibility_label": "Skočit nahoru k:"
"cite_references_link_many_accessibility_label": "Skočit nahoru k:",
"cite_section_preview_references": "Náhled referencí",
"cite_warning": "Upozornění k citaci: $1",
"cite_warning_sectionpreview_no_text": "Nelze zobrazit náhled značky <code>&lt;ref&gt;</code> se jménem <code>$1</code>, protože je definována mimo aktuální sekci nebo není definována vůbec."
}

View File

@ -2,15 +2,17 @@
"@metadata": {
"authors": [
"Lloffiwr",
"Xxglennxx"
"Xxglennxx",
"Robin Owain"
]
},
"cite-desc": "Yn ychwanegu tagiau <nowiki><ref[ name=id]></nowiki> a <nowiki><references/></nowiki>, ar gyfer cyfeiriadau",
"cite_error": "Gwall cyfeirio: $1",
"cite_error_ref_numeric_key": "Tag <code>&lt;ref&gt;</code> annilys;\nni all enw fod yn rif yn unig. Defnyddiwch deitl disgrifiadol.",
"cite_error_ref_no_key": "Tag <code>&lt;ref&gt;</code> annilys;\nrhaid i dagiau ref sydd heb gynnwys iddynt gael enw",
"cite_error_ref_no_key": "Mae'r <code>&lt;ref&gt;</code> tag yn annilys neu rhoddwyd iddo enw annilys",
"cite_error_ref_too_many_keys": "Tag <code>&lt;ref&gt;</code> annilys;\nenwau annilys; e.e. gormod ohonynt",
"cite_error_ref_no_input": "Tag <code>&lt;ref&gt;</code> annilys;\nrhaid i dagiau ref heb enw iddynt gynnwys rhywbeth",
"cite_error_references_duplicate_key": "Tag <code>&lt;ref&gt;</code> annilys; mae'r enw \"$1\" wedi'i ddiffinio droeon gyda chynnwys gwahanol",
"cite_error_references_invalid_parameters": "Tag <code>&lt;references&gt;</code> annilys;\nni chaniateir paramedrau.\nDefnyddiwch <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Tag <code>&lt;references&gt;</code> annilys;\ndim ond y paramedr \"group\" a ganiateir.\nDefnyddiwch <code>&lt;references /&gt;</code>, neu <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Dim rhagor o labeli ôl-gyswllt ar gael.\nDiffiniwch ragor ohonynt yn y neges <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -23,6 +25,8 @@
"cite_error_references_missing_key": "Ni ddefnyddir y tag <code>&lt;ref&gt;</code> o'r enw \"$1\", a ddiffinir yn <code>&lt;references&gt;</code>, yn y testun blaenorol.",
"cite_error_references_no_key": "Nid oes dim priodoledd o enw gan y tag <code>&lt;ref&gt;</code> a ddiffinir yn <code>&lt;references&gt;</code>",
"cite_error_empty_references_define": "Does dim byd yn y tag <code>&lt;ref&gt;</code> a'r enw \"$1\" arno, sydd wedi ei ddiffinio oddi mewn i dagiau <code>&lt;references&gt;</code>.",
"cite-tracking-category-cite-error": "Dalennau gyda gwallau yn y cyfeiriadau",
"cite-tracking-category-cite-error-desc": "Mae gan dalennau'r categori hwn wallau yn y modd maen nhw'n defnyddio tagiau cyfeirio.",
"cite_references_link_accessibility_label": "Neidio am lan",
"cite_references_link_many_accessibility_label": "Neidio lan i:"
}

View File

@ -14,6 +14,7 @@
"cite_error_ref_no_key": "Ugyldigt <code>&lt;ref&gt;</code>-tag: Et <code>&lt;ref&gt;</code>-tag uden indhold skal have et navn",
"cite_error_ref_too_many_keys": "Ugyldigt <code>&lt;ref&gt;</code>-tag: Ugyldige navne, fx for mange",
"cite_error_ref_no_input": "Ugyldigt <code>&lt;ref&gt;</code>-tag: Et <code>&lt;ref&gt;</code>-tag uden navn skal have indhold",
"cite_error_references_duplicate_key": "Ugyldigt <code>&lt;ref&gt;</code> tag; navnet \"$1\" er defineret flere gange med forskelligt indhold",
"cite_error_references_invalid_parameters": "Ugyldigt <code>&lt;references&gt;</code>-tag: Parametre er ikke tilladt, brug i stedet <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Ugyldigt <code>&lt;references&gt;</code>-tag; den eneste tilladte parameter er \"group\".\nBrug <code>&lt;references /&gt;</code> eller <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Løb tør for backlink-etiketter.\nDefiner flere i beskeden <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
@ -26,6 +27,10 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code>-tag med navn \"$1\" defineret inden i <code>&lt;references&gt;</code> anvendes ikke i den ovenstående tekst.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code>-tag defineret inden i <code>&lt;references&gt;</code> har ikke en navne-attribut.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code>-tag defineret inden i <code>&lt;references&gt;</code> med navnet \"$1\" har ikke noget indhold.",
"cite-tracking-category-cite-error": "Sider med fejl i referencer",
"cite-tracking-category-cite-error-desc": "Sider i denne kategori har fejl i brugen af reference-tags.",
"cite_references_link_accessibility_label": "Hoppe op",
"cite_references_link_many_accessibility_label": "Hoppe op til:"
"cite_references_link_many_accessibility_label": "Hoppe op til:",
"cite_warning": "Citeringsadvarsel: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code> tag med navnet <code>$1</code> kan ikke ses, fordi den er defineret uden for det aktuelle afsnit eller ikke defineret overhovedet."
}

View File

@ -1,9 +1,12 @@
{
"@metadata": {
"authors": [
"Geitost"
"Geitost",
"Umherirrender"
]
},
"cite_error_references_invalid_parameters": "Ungültige <tt>&lt;references&gt;</tt>-Verwendung: Es sind keine zusätzlichen Parameter erlaubt, verwende ausschliesslich <tt><nowiki><references /></nowiki></tt>.",
"cite_error_included_ref": "Es fehlt ein schliessendes <code>&lt;/ref&gt;</code>"
"cite_error_included_ref": "Es fehlt ein schliessendes <code>&lt;/ref&gt;</code>",
"cite_error_references_missing_group": "Das in <code>&lt;references&gt;</code> definierte <code>&lt;ref&gt;</code>-Tag hat das Gruppenattribut «$1», das nicht im vorausgehenden Text verwendet wird.",
"cite_error_references_missing_key": "Das in <code>&lt;references&gt;</code> definierte <code>&lt;ref&gt;</code>-Tag mit dem Namen «$1» wird im vorausgehenden Text nicht verwendet."
}

View File

@ -10,12 +10,15 @@
"TMg"
]
},
"cite-desc": "Ergänzt die Tags <code><nowiki><ref[&nbsp;name=id]></nowiki></code> und <code><nowiki><references&nbsp;/></nowiki></code> für Referenzierungen",
"apihelp-query+references-description": "Gibt eine Datendarstellung von Referenzen zurück, die mit den angegebenen Seiten verbunden sind.",
"apihelp-query+references-example-1": "Referenzen, die mit <kbd>Albert Einstein</kbd> verbunden sind.",
"cite-desc": "Ermöglicht Referenzierungen mittels <code><nowiki><ref[&nbsp;name=id]></nowiki></code> und <code><nowiki><references&nbsp;/></nowiki></code>",
"cite_error": "Referenzfehler: $1",
"cite_error_ref_numeric_key": "Ungültige Verwendung von <code>&lt;ref&gt;</code>: Der Parameter „name“ darf kein reiner Zahlenwert sein. Benutze einen beschreibenden Namen.",
"cite_error_ref_no_key": "Ungültige Verwendung von <code>&lt;ref&gt;</code>: Der Parameter „ref“ ohne Inhalt muss einen Namen haben.",
"cite_error_ref_no_key": "Das öffnende <code>&lt;ref&gt;</code>-Tag ist beschädigt oder hat einen ungültigen Namen",
"cite_error_ref_too_many_keys": "Ungültige Verwendung von <code>&lt;ref&gt;</code>: Der Parameter „name“ ist ungültig oder zu lang.",
"cite_error_ref_no_input": "Ungültige Verwendung von <code>&lt;ref&gt;</code>: Der Parameter „ref“ ohne Namen muss einen Inhalt haben.",
"cite_error_references_duplicate_key": "Ungültiges <code>&lt;ref&gt;</code>-Tag. Der Name „$1“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert.",
"cite_error_references_invalid_parameters": "Ungültige Verwendung von <code>&lt;references&gt;</code>: Es sind keine Parameter möglich. Verwende ausschließlich <code><nowiki><references /></nowiki></code>.",
"cite_error_references_invalid_parameters_group": "Ungültige Verwendung von <code>&lt;references&gt;</code>: Nur der Parameter „group“ ist möglich. Verwende entweder <code>&lt;references /&gt;</code> oder <code>&lt;references group=\"…\" /&gt;</code>.",
"cite_error_references_no_backlink_label": "Eine Referenz der Form <code>&lt;ref name=\"…\" /&gt;</code> wird öfter benutzt als Buchstaben vorhanden sind. Ein Administrator muss die Systemnachricht <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> um weitere Buchstaben/Zeichen ergänzen.",
@ -28,6 +31,11 @@
"cite_error_references_missing_key": "Das in <code>&lt;references&gt;</code> definierte <code>&lt;ref&gt;</code>-Tag mit dem Namen „$1“ wird im vorausgehenden Text nicht verwendet.",
"cite_error_references_no_key": "Das in <code>&lt;references&gt;</code> definierte <code>&lt;ref&gt;</code>-Tag hat kein Namensattribut.",
"cite_error_empty_references_define": "Das in <code>&lt;references&gt;</code> definierte <code>&lt;ref&gt;</code>-Tag mit dem Namen „$1“ weist keinen Inhalt auf.",
"cite-tracking-category-cite-error": "Seiten mit Referenzierungsfehlern",
"cite-tracking-category-cite-error-desc": "Seiten in dieser Kategorie haben Fehler in der Verwendung von Einzelnachweis-Tags.",
"cite_references_link_accessibility_label": "Hochspringen",
"cite_references_link_many_accessibility_label": "Hochspringen nach:"
"cite_references_link_many_accessibility_label": "Hochspringen nach:",
"cite_section_preview_references": "Vorschau von Einzelnachweisen",
"cite_warning": "Referenzwarnung: $1",
"cite_warning_sectionpreview_no_text": "Das Tag <code>&lt;ref&gt;</code> mit dem Namen <code>$1</code> kann nicht in der Vorschau angezeigt werden, da es außerhalb des aktuellen Abschnitts liegt oder überhaupt nicht definiert ist."
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Dinkawiki"
]
},
"cite_error": "Mɛɛlë awäc: $1"
}

View File

@ -28,7 +28,6 @@
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "sita_ref-",
"cite_references_link_prefix": "sita_not-",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup>",
"cite_references_link_one": "<li id=\"$1\"><span class=\"mw-cite-backlink\">[[#$2|↑]]</span> $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">↑ $2</span> $3</li>",
"cite_references_link_many_format": "<sup>[[#$1|$2]]</sup>",

View File

@ -11,15 +11,19 @@
"Steve Sanbeg",
"Marius Hoch",
"Brion Vibber",
"Amir E. Aharoni",
"Ævar Arnfjörð Bjarmason"
]
},
"apihelp-query+references-description": "Return a data representation of references associated with the given pages.",
"apihelp-query+references-example-1": "References associated with <kbd>Albert Einstein</kbd>.",
"cite-desc": "Adds <nowiki><ref[ name=id]></nowiki> and <nowiki><references/></nowiki> tags, for citations",
"cite_error": "Cite error: $1",
"cite_error_ref_numeric_key": "Invalid <code>&lt;ref&gt;</code> tag;\nname cannot be a simple integer. Use a descriptive title",
"cite_error_ref_no_key": "Invalid <code>&lt;ref&gt;</code> tag;\nrefs with no content must have a name",
"cite_error_ref_no_key": "The opening <code>&lt;ref&gt;</code> tag is malformed or has a bad name",
"cite_error_ref_too_many_keys": "Invalid <code>&lt;ref&gt;</code> tag;\ninvalid names, e.g. too many",
"cite_error_ref_no_input": "Invalid <code>&lt;ref&gt;</code> tag;\nrefs with no name must have content",
"cite_error_references_duplicate_key": "Invalid <code>&lt;ref&gt;</code> tag; name \"$1\" defined multiple times with different content",
"cite_error_references_invalid_parameters": "Invalid <code>&lt;references&gt;</code> tag;\nno parameters are allowed.\nUse <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Invalid <code>&lt;references&gt;</code> tag;\nparameter \"group\" is allowed only.\nUse <code>&lt;references /&gt;</code>, or <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Ran out of custom backlink labels.\nDefine more in the <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> message.",
@ -32,12 +36,14 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> tag with name \"$1\" defined in <code>&lt;references&gt;</code> is not used in prior text.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> tag defined in <code>&lt;references&gt;</code> has no name attribute.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> tag defined in <code>&lt;references&gt;</code> with name \"$1\" has no content.",
"cite-tracking-category-cite-error": "Pages with reference errors",
"cite-tracking-category-cite-error-desc": "Pages in this category have errors in the usage of references tags.",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "cite_ref-",
"cite_reference_link_suffix": "",
"cite_references_link_prefix": "cite_note-",
"cite_references_link_suffix": "",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup>",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|&#91;$3&#93;]]</sup>",
"cite_references_no_link": "<p id=\"$1\">$2</p>",
"cite_references_link_one": "<li id=\"$1\"><span class=\"mw-cite-backlink\">[[#$2|↑]]</span> $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">↑ $2</span> $3</li>",
@ -48,5 +54,8 @@
"cite_references_link_accessibility_label": "Jump up",
"cite_references_link_many_accessibility_label": "Jump up to:",
"cite_references_prefix": "<ol class=\"references\">",
"cite_references_suffix": "</ol>"
"cite_references_suffix": "</ol>",
"cite_section_preview_references": "Preview of references",
"cite_warning": "Cite warning: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code> tag with name <code>$1</code> cannot be previewed because it is defined outside the current section or not defined at all."
}

View File

@ -25,6 +25,7 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> etikedo kun la nomo \"$1\" difinita en <code>&lt;references&gt;</code> ne estas uzata en antaŭa teksto.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> etikedo difinita en <code>&lt;references&gt;</code> ne havas noman atributon.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> etikedo difinita en <code>&lt;references&gt;</code> kun nomo \"$1\" ne havas enhavon.",
"cite-tracking-category-cite-error": "Paĝoj kun problemoj pri referencoj",
"cite_references_link_accessibility_label": "Salti supren",
"cite_references_link_many_accessibility_label": "Salti supren al:"
}

View File

@ -17,15 +17,20 @@
"Remember the dot",
"Sanbec",
"Translationista",
"Macofe"
"Macofe",
"Joaquin1001",
"Peter Bowman"
]
},
"apihelp-query+references-description": "Devolver una representación de datos de referencias asociadas con las páginas especificadas.",
"apihelp-query+references-example-1": "Referencias asociadas con <kbd>Albert Einstein</kbd>.",
"cite-desc": "Añade las etiquetas <nowiki><ref[ name=id]></nowiki> y <nowiki><references/></nowiki> para citas.",
"cite_error": "Error en la cita: $1",
"cite_error_ref_numeric_key": "Etiqueta <code>&lt;ref&gt;</code> no válida;\nel nombre no puede ser un número entero. Use un título descriptivo",
"cite_error_ref_no_key": "Etiqueta <code>&lt;ref&gt;</code> no válida;\nlas referencias sin contenido deben tener un nombre",
"cite_error_ref_no_key": "La etiqueta de apertura <code>&lt;ref&gt;</code> es incorrecta o tiene un mal nombre",
"cite_error_ref_too_many_keys": "Etiqueta <code>&lt;ref&gt;</code> inválida;\ncontiene parámetros no reconocidos",
"cite_error_ref_no_input": "Etiqueta <code>&lt;ref&gt;</code> no válida;\nlas referencias sin nombre deben tener contenido",
"cite_error_references_duplicate_key": "Etiqueta <code>&lt;ref&gt;</code> no válida; el nombre \"$1\" está definido varias veces con contenidos diferentes",
"cite_error_references_invalid_parameters": "Etiqueta <code>&lt;references&gt;</code> no válida;\nno se admiten parámetros.\nUse <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Etiqueta <code>&lt;references&gt;</code> no válida;\nsólo se permite el parámetro «group».\nUse <code>&lt;references /&gt;</code>, o <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Se han acabado las etiquetas personalizadas de vínculos de retroceso.\nDefine más en <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
@ -38,7 +43,12 @@
"cite_error_references_missing_key": "La etiqueta <code>&lt;ref&gt;</code> con nombre \"$1\" definida en <code>&lt;references&gt;</code> no se utiliza en el texto precedente.",
"cite_error_references_no_key": "La etiqueta <code>&lt;ref&gt;</code> definida en <code>&lt;references&gt;</code> no tiene atributo de nombre.",
"cite_error_empty_references_define": "La etiqueta <code>&lt;ref&gt;</code> definida en <code>&lt;references&gt;</code> con nombre \"$1\" no tiene contenido.",
"cite-tracking-category-cite-error": "Páginas con errores de referencia",
"cite-tracking-category-cite-error-desc": "Las páginas en esta categoría tienen errores en el uso de las etiquetas de referencias.",
"cite_references_link_many_format_backlink_labels": "a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz",
"cite_references_link_accessibility_label": "Volver arriba",
"cite_references_link_many_accessibility_label": "Saltar a:"
"cite_references_link_many_accessibility_label": "Saltar a:",
"cite_section_preview_references": "Previsualización de referencias",
"cite_warning": "Advertencia de cita: $1",
"cite_warning_sectionpreview_no_text": "La etiqueta <code>&lt;ref&gt;</code> con nombre <code>$1</code> no puede previsualizarse porque está definida fuera de la sección actual o no está definida en absoluto."
}

View File

@ -10,6 +10,7 @@
"cite_error_ref_no_key": "Vigane <code>&lt;ref&gt;</code>-silt.\nSisuta viitamissiltidel peab olema nimi.",
"cite_error_ref_too_many_keys": "Vigane <code>&lt;ref&gt;</code>-silt;\n\"name\" on vigane või liiga pikk.",
"cite_error_ref_no_input": "Vigane <code>&lt;ref&gt;</code>-silt.\nNimeta viitamissiltidel peab olema sisu.",
"cite_error_references_duplicate_key": "Vigane <code>&lt;ref&gt;</code>-silt; nime \"$1\" on määratud mitu korda erineva sisuga.",
"cite_error_references_invalid_parameters": "Vigane <code>&lt;references&gt;</code>-silt.\nParameetrid pole lubatud.\nKasuta silti <code>&lt;references /&gt;</code>.",
"cite_error_references_invalid_parameters_group": "Vigane <code>&lt;references&gt;</code>-silt.\nLubatud on ainult parameeter \"group\".\nKasuta silti <code>&lt;references /&gt;</code> või <code>&lt;references group=\"...\" /&gt;</code>.",
"cite_error_references_no_backlink_label": "Kohandatud tagasilinkide sildid said otsa.\nLisa neid sõnumisse <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
@ -22,6 +23,8 @@
"cite_error_references_missing_key": "<code>&lt;references&gt;</code>-siltide vahel olevat <code>&lt;ref&gt;</code>-silti nimega \"$1\" ei kasutata eelnevas tekstis.",
"cite_error_references_no_key": "<code>&lt;references&gt;</code>-siltide vahel määratletud <code>&lt;ref&gt;</code>-sildil puudub ''name''-atribuut.",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code>-siltide vahel oleval <code>&lt;ref&gt;</code>-sildil nimega \"$1\" puudub sisu.",
"cite-tracking-category-cite-error": "Viitamistõrgetega leheküljed",
"cite-tracking-category-cite-error-desc": "Selles kategoorias on leheküljed, kus viitamissilte on kasutatud valesti.",
"cite_references_link_accessibility_label": "Siirdu üles",
"cite_references_link_many_accessibility_label": "Siirdu üles asukohta:"
}

View File

@ -5,15 +5,18 @@
"Huji",
"Wayiran",
"ZxxZxxZ",
"Reza1615"
"Reza1615",
"Dalba",
"Ladsgroup"
]
},
"cite-desc": "برچسب‌های <nowiki><ref[ name=id]></nowiki> و <nowiki><references/></nowiki> را برای یادکرد اضافه می‌کند",
"cite_error": "خطای یادکرد: $1",
"cite_error_ref_numeric_key": "برچسب <code><ref></code> نامجاز؛ نام نمی‌تواند یک عدد باشد. عنوان واضح‌تری را برگزینید",
"cite_error_ref_no_key": "برچسب <code><ref></code> نامجاز؛ یادکردهای بدون محتوا باید نام داشته باشند",
"cite_error_ref_no_key": "برچسب باز کننده <code><ref></code> نامجاز؛ یادکردهای بدون محتوا با نام بد",
"cite_error_ref_too_many_keys": "برچسب <code><ref></code> نامجاز؛ نام‌های نامجاز یا بیش از اندازه",
"cite_error_ref_no_input": "برچسب <code><ref></code> نامجاز؛ یادکردهای بدون نام باید محتوا داشته باشند",
"cite_error_references_duplicate_key": "برچسب <code>&lt;ref&gt;</code> نامعتبر؛ نام \"$1\" چندین بار با محتوی متفاوت تعریف شده‌است",
"cite_error_references_invalid_parameters": "برچسب <code><references></code> نامجاز؛ استفاده از پارامتر مجاز است. از <code><references /></code> استفاده کنید",
"cite_error_references_invalid_parameters_group": "برچسب <code>&lt;references&gt;</code> نامجاز؛ تنها پارامتر «group» قابل استفاده است.\nاز <code>&lt;references /&gt;</code> یا <code>&lt;references group=\"...\" /&gt;</code> استفاده کنید",
"cite_error_references_no_backlink_label": "برچسب‌های پیوند به انتها رسید.\nموارد جدیدی را در پیغام <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> تعریف کنید",
@ -26,8 +29,12 @@
"cite_error_references_missing_key": "پرچسپ <code>&lt;ref&gt;</code> که با نام «$1» درون <code>&lt;references&gt;</code> تعریف شده، در متن قبل از آن استفاده نشده‌است.",
"cite_error_references_no_key": "برچسپ <code>&lt;ref&gt;</code> درون <code>&lt;references&gt;</code> صفت نام را ندارد.",
"cite_error_empty_references_define": "برچسپ <code>&lt;ref&gt;</code> تعریف شده درون <code>&lt;references&gt;</code> با نام «$1» محتوایی ندارد.",
"cite-tracking-category-cite-error": "صفحات داری خطا در ارجاع",
"cite-tracking-category-cite-error-desc": "صفحات موجود در این رده دارای خطا در استفاده از برچسب ارجاع هستند.",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "cite_ref-",
"cite_references_link_accessibility_label": "پرش به بالا",
"cite_references_link_many_accessibility_label": "پرش به بالا به:"
"cite_references_link_many_accessibility_label": "پرش به بالا به:",
"cite_section_preview_references": "پیش‌نمایش ارجاع‌ها",
"cite_warning": "هشدار یادکرد: $1"
}

View File

@ -8,9 +8,12 @@
"Silvonen",
"Str4nd",
"Tarmo",
"Syreeni"
"Syreeni",
"Pxos",
"01miki10"
]
},
"apihelp-query+references-example-1": "Sivuun <kbd>Albert Einstein</kbd> liittyvät viitteet.",
"cite-desc": "Tarjoaa <nowiki><ref[ name=id]></nowiki>- ja <nowiki><references/></nowiki>-elementit viittauksien tekemiseen.",
"cite_error": "Viittausvirhe: $1",
"cite_error_ref_numeric_key": "Kelpaamaton <code>&lt;ref&gt;</code>-elementti: nimi ei voi olla numero käytä kuvaavampaa nimeä.",
@ -28,5 +31,9 @@
"cite_error_references_missing_group": "<code>&lt;references&gt;</code>-elementissä määritetty <code>&lt;ref&gt;</code>-elementti sisältää ryhmämääritteen ”$1”, jota ei mainita aiemmassa tekstissä.",
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code>-elementin nimeä ”$1”, johon viitataan elementissä <code>&lt;references&gt;</code> ei käytetä edeltävässä tekstissä.",
"cite_error_references_no_key": "<code>&lt;references&gt;</code>-elementissä määritetyllä <code>&lt;ref&gt;</code>-elementillä ei ole nimimääritettä.",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code>-elementissä määritetyllä <code>&lt;ref&gt;</code>-elementillä nimellä ”$1” ei ole sisältöä."
"cite_error_empty_references_define": "<code>&lt;references&gt;</code>-elementissä määritetyllä <code>&lt;ref&gt;</code>-elementillä nimellä ”$1” ei ole sisältöä.",
"cite-tracking-category-cite-error": "Sivut, joissa on viittausvirheitä",
"cite_section_preview_references": "Viitteiden esikatselu",
"cite_warning": "Viittausvaroitus: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code>-viitettä, jonka nimenä on <code>$1</code>, ei voida näyttää esikatselussa, koska se määritetään tämän osion ulkopuolella tai sitä ei ole määritetty lainkaan."
}

View File

@ -14,15 +14,19 @@
"Urhixidur",
"Verdy p",
"Orlodrim",
"Wyz"
"Wyz",
"Wladek92"
]
},
"apihelp-query+references-description": "Renvoyer une représentation des données des références associées avec les pages fournies.",
"apihelp-query+references-example-1": "Références associées avec <kbd>Albert Einstein</kbd>.",
"cite-desc": "Ajoute les balises <nowiki><ref[ name=\"id\"]></nowiki> et <nowiki><references/></nowiki> pour les références et notes de bas de page.",
"cite_error": "Erreur de référence : $1",
"cite_error_ref_numeric_key": "Balise <code>&lt;ref&gt;</code> incorrecte ;\nle nom ne peut être un entier simple. Utilisez un titre descriptif.",
"cite_error_ref_no_key": "Balise <code>&lt;ref&gt;</code> incorrecte ;\nles références sans contenu doivent avoir un nom.",
"cite_error_ref_no_key": "La balise ouvrante <code>&lt;ref&gt;</code> est mal formée ou a un mauvais nom.",
"cite_error_ref_too_many_keys": "Balise <code>&lt;ref&gt;</code> incorrecte ;\nnoms incorrects, par exemple trop nombreux.",
"cite_error_ref_no_input": "Balise <code>&lt;ref&gt;</code> incorrecte ;\nles références sans nom doivent avoir un contenu.",
"cite_error_references_duplicate_key": "Balise <code>&lt;ref&gt;</code> non valide; le nom « $1» est défini plusieurs fois avec des contenus différents",
"cite_error_references_invalid_parameters": "Balise <code>&lt;references&gt;</code> incorrecte ;\naucun paramètre nest permis.\nUtilisez simplement <code>&lt;references /&gt;</code>.",
"cite_error_references_invalid_parameters_group": "Balise <code>&lt;references&gt;</code> incorrecte ;\nseul lattribut « group » est autorisé.\nUtilisez <code>&lt;references /&gt;</code>, ou bien <code>&lt;references group=\"...\" /&gt;</code>.",
"cite_error_references_no_backlink_label": "Épuisement des étiquettes de liens personnalisées.\nDéfinissez-en un plus grand nombre dans le message <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
@ -35,9 +39,14 @@
"cite_error_references_missing_key": "La balise <code>&lt;ref&gt;</code> avec le nom « $1 » définie dans <code>&lt;references&gt;</code> nest pas utilisé dans le texte précédent.",
"cite_error_references_no_key": "La balise <code>&lt;ref&gt;</code> définie dans <code>&lt;references&gt;</code> na pas dattribut de nom.",
"cite_error_empty_references_define": "La balise <code>&lt;ref&gt;</code> défini dans <code>&lt;references&gt;</code> avec le nom « $1 » na pas de contenu.",
"cite-tracking-category-cite-error": "Pages avec des erreurs de référence",
"cite-tracking-category-cite-error-desc": "Les pages dans cette catégorie ont des erreurs dans lutilisation des balises de référence.",
"cite_references_link_many_format": "<sup style=\"margin-left:.2em;margin-right:.2em;\">[[#$1|$2]]</sup>",
"cite_references_link_many_sep": ",&#32;",
"cite_references_link_many_and": "&#32;et&#32;",
"cite_references_link_accessibility_label": "Aller",
"cite_references_link_many_accessibility_label": "Aller à :"
"cite_references_link_many_accessibility_label": "Aller à :",
"cite_section_preview_references": "Aperçu des références",
"cite_warning": "Avertissement de Cite : $1",
"cite_warning_sectionpreview_no_text": "La balise <code>&lt;ref&gt;</code> avec le nom <code>$1</code> ne peut pas être prévisualisée car elle est définie en dehors de la section actuelle, ou pas définie du tout."
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Hangmanwa7id"
]
},
"cite_error": "Erreur de référence: $1"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Tem"
]
},
"cite_error": "Earráid leis an lua: $1"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Akerbeltz"
]
},
"cite_error": "Mearachd leis an tùs: $1"
}

View File

@ -3,15 +3,20 @@
"authors": [
"Alma",
"Toliño",
"Xosé"
"Xosé",
"Elisardojm",
"Banjo"
]
},
"apihelp-query+references-description": "Devolve unha representación de datos das referencias asociadas coas páxinas indicadas.",
"apihelp-query+references-example-1": "Referencias asociadas con <kbd>Albert Einstein</kbd>.",
"cite-desc": "Engade as etiquetas <nowiki><ref[ name=id]></nowiki> e <nowiki><references/></nowiki> para as citas",
"cite_error": "Erro no código da cita: $1",
"cite_error_ref_numeric_key": "Etiqueta <code>&lt;ref&gt;</code> non válida;\no nome non pode ser un simple número enteiro. Use un título descritivo",
"cite_error_ref_no_key": "Etiqueta <code>&lt;ref&gt;</code> non válida;\nas referencias que non teñan contido deben ter un nome",
"cite_error_ref_no_key": "a etiqueta de apertura <code>&lt;ref&gt;</code> é incorrecta ou ten un nome incorrecto",
"cite_error_ref_too_many_keys": "Etiqueta <code>&lt;ref&gt;</code> non válida;\nnomes non válidos, por exemplo, demasiados",
"cite_error_ref_no_input": "Etiqueta <code>&lt;ref&gt;</code> non válida;\nas referencias que non teñan nome, deben ter contido",
"cite_error_references_duplicate_key": "Etiqueta <code>&lt;ref&gt;</code> non válida; o nome \"$1\" está definido varias veces con contidos diferentes",
"cite_error_references_invalid_parameters": "Etiqueta <code>&lt;references&gt;</code> non válida;\nnon están permitidos eses parámetros.\nUse <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Etiqueta <code>&lt;references&gt;</code> non válida;\nsó está permitido o parámetro \"group\" (\"grupo\").\nUse <code>&lt;references /&gt;</code> ou <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "As etiquetas personalizadas esgotáronse.\nDefina máis na mensaxe <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -24,6 +29,11 @@
"cite_error_references_missing_key": "A etiqueta <code>&lt;ref&gt;</code> co nome \"$1\" definida en <code>&lt;references&gt;</code> non se utiliza no texto anterior.",
"cite_error_references_no_key": "A etiqueta <code>&lt;ref&gt;</code> definida en <code>&lt;references&gt;</code> non ten nome de atributo.",
"cite_error_empty_references_define": "A etiqueta <code>&lt;ref&gt;</code> definida en <code>&lt;references&gt;</code> co nome \"$1\" non ten contido.",
"cite-tracking-category-cite-error": "Páxinas con erros de referencia",
"cite-tracking-category-cite-error-desc": "As páxinas nesta categoría teñen erros no uso das etiquetas de referencias.",
"cite_references_link_accessibility_label": "Saltar a",
"cite_references_link_many_accessibility_label": "Saltar a:"
"cite_references_link_many_accessibility_label": "Saltar a:",
"cite_section_preview_references": "Previsualización de referencias",
"cite_warning": "Advertencia de cita: $1",
"cite_warning_sectionpreview_no_text": "A etiqueta <code>&lt;ref&gt;</code> co nome <code>$1</code> non pode previsualizarse porque está definida fóra da sección actual ou non está definida en absoluto."
}

View File

@ -25,7 +25,6 @@
"cite_error_references_missing_key": "<code>&lt;references&gt;</code> માં વ્યાખ્યાયિત $1\" નામ સાથેનું <code>&lt;ref&gt;</code> ટેગ આગળના લેખનમાં વપરાયો નથી.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> ટેગની વ્યાખ્યા <code>&lt;references&gt;</code> ને કોઈ નામકરણ નથી.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> ટેગની વ્યાખ્યા <code>&lt;references&gt;</code> માં \"$1\" નામે છે તેને કોઈ content નથી.",
"cite_references_link_many_format_backlink_labels": "",
"cite_references_link_accessibility_label": "ઉપર જાઓ",
"cite_references_link_many_accessibility_label": "અહીં સુધી ઉપર જાઓ:"
}

View File

@ -4,19 +4,23 @@
"Amire80",
"Rotem Liss",
"Rotemliss",
"YaronSh"
"YaronSh",
"IKhitron"
]
},
"apihelp-query+references-description": "החזרת ייצוג נתונים של ציטוטים שמשויכים לדפים הנתונים.",
"apihelp-query+references-example-1": "ציטוטים שמשויכים ל־<kbd>Albert Einstein</kbd>.",
"cite-desc": "הוספת תגי <span dir=\"ltr\"><nowiki><ref[ name=id]></nowiki></span> ו־<span dir=\"ltr\"><nowiki><references/></nowiki></span> עבור הערות שוליים",
"cite_error": "שגיאת ציטוט: $1",
"cite_error_ref_numeric_key": "תג <code>&lt;ref&gt;</code> לא תקין;\nשם (name) לא יכול להיות מספר שלם פשוט. יש להשתמש בכותרת תיאורית",
"cite_error_ref_no_key": "תג <code>&lt;ref&gt;</code> לא תקין;\nלהערות שוליים ללא תוכן חייב להיות שם (name)",
"cite_error_ref_no_key": "תג ה־<code>&lt;ref&gt;</code> הפותח בלתי־תקין או בעל שם שגוי.",
"cite_error_ref_too_many_keys": "תג <code>&lt;ref&gt;</code> לא תקין;\nשמות שגויים, למשל, רבים מדי",
"cite_error_ref_no_input": "תג <code>&lt;ref&gt;</code> לא תקין;\nלהערות שוליים ללא שם חייב להיות תוכן",
"cite_error_references_invalid_parameters": "תג <code>&lt;references&gt;</code> לא תקין;\nלא ניתן להשתמש בפרמטרים.\nיש להשתמש בקוד <code dir=\"ltr\">&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "תג <code>&lt;references&gt;</code> לא תקין;\nרק הפרמטר \"group\" מותר לשימוש.\nאנא השתמשו בקוד <code dir=\"ltr\">&lt;references /&gt;</code>, או בקוד <code dir=\"ltr\">&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_duplicate_key": "תג <code>&lt;ref&gt;</code> בלתי־תקין; השם \"$1\" הוגדר מספר פעמים עם תוכן שונה",
"cite_error_references_invalid_parameters": "תג <code>&lt;references&gt;</code> בלתי־תקין;\nלא ניתן להשתמש בפרמטרים.\nיש להשתמש בקוד <code dir=\"ltr\">&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "תג <code>&lt;references&gt;</code> לא תקין;\nרק הפרמטר \"group\" מותר לשימוש.\nנא להשתמש בקוד <code dir=\"ltr\">&lt;references /&gt;</code>, או בקוד <code dir=\"ltr\">&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "אזלו תוויות הקישורים המותאמות אישית.\nאנא הגדירו עוד תוויות בהודעת המערכת <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
"cite_error_no_link_label_group": "אזלו תוויות קישורים מותאמות אישית לקבוצה \"$1\".\nהגדירו עוד תוויות בהודעת המערכת <nowiki>[[MediaWiki:$2]]</nowiki>.",
"cite_error_no_link_label_group": "אזלו תוויות קישורים מותאמות אישית לקבוצה \"$1\".\nיש להגדיר עוד תוויות בהודעת המערכת <nowiki>[[MediaWiki:$2]]</nowiki>.",
"cite_error_references_no_text": "תג <code>&lt;ref&gt;</code> לא תקין;\nלא נכתב טקסט עבור הערות השוליים בשם <code>$1</code>",
"cite_error_included_ref": "חסר תג <code>&lt;/ref&gt;</code> סוגר שמתאים לתג <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "קיימים תגי <code>&lt;ref&gt;</code> עבור קבוצה בשם \"$1\", אך לא נמצא תג <code dir=\"ltr\">&lt;references group=\"$1\"/&gt;</code> מתאים, או שחסר <code dir=\"ltr\">&lt;/ref&gt;</code> סוגר",
@ -25,6 +29,11 @@
"cite_error_references_missing_key": "התג <code>&lt;ref&gt;</code> בשם \"$1\" המוגדר בתוך <code>&lt;references&gt;</code> אינו נמצא בשימוש בטקסט שלפניו.",
"cite_error_references_no_key": "לתג <code>&lt;ref&gt;</code> המוגדר בתוך <code>&lt;references&gt;</code> אין מאפיין שם (name).",
"cite_error_empty_references_define": "התג <code>&lt;ref&gt;</code> בעל השם \"$1\" המוגדר בתוך <code>&lt;references&gt;</code> אינו מכיל תוכן.",
"cite-tracking-category-cite-error": "דפים עם שגיאות בהערה",
"cite-tracking-category-cite-error-desc": "דפים בקטגוריה הזאת כוללים שגיאות בשימוש בהערות.",
"cite_references_link_accessibility_label": "לקפוץ מעלה",
"cite_references_link_many_accessibility_label": "לקפוץ מעלה אל:"
"cite_references_link_many_accessibility_label": "לקפוץ מעלה אל:",
"cite_section_preview_references": "תצוגה מקדימה של הערות",
"cite_warning": "אזהרת Cite: $1",
"cite_warning_sectionpreview_no_text": "לא ניתן לעשות תצוגה מקדימה לתג <code>&lt;ref&gt;</code> בשם <code>$1</code> כי הוא מוגדר מחוץ לפסקה הנוכחית או שאינו מוגדר כלל."
}

File diff suppressed because one or more lines are too long

View File

@ -15,6 +15,7 @@
"cite_error_ref_no_key": "nevaljana <code>&lt;ref&gt;</code> oznaka; izvori bez sadržaja moraju imati naziv",
"cite_error_ref_too_many_keys": "nevaljana <code>&lt;ref&gt;</code> oznaka; loš naziv, npr. previše naziva",
"cite_error_ref_no_input": "nevaljana <code>&lt;ref&gt;</code> oznaka; izvori bez imena moraju imati sadržaj",
"cite_error_references_duplicate_key": "nevaljala <code>&lt;ref&gt;</code> oznaka; ime \"$1\" definirano više puta s različitim sadržajem",
"cite_error_references_invalid_parameters": "nevaljana <code>&lt;references&gt;</code> oznaka; parametri nisu dozvoljeni, koristite <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "neispravna <code>&lt;references&gt;</code> oznaka,\ndopuštena je samo opcija \"group\".\nKoristite <code>&lt;references /&gt;</code>, ili <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "potrošene sve posebne oznake za poveznice unatrag, definirajte više u poruci <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -26,5 +27,6 @@
"cite_error_references_missing_group": "<code>&lt;ref&gt;</code> oznaka definirana u <code>&lt;references&gt;</code> ima grupni atribut \"$1\" koji se ne pojavljuje u ranijem tekstu.",
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> oznaka s imenom \"$1\" definirana u <code>&lt;references&gt;</code> nije prethodno rabljena u tekstu.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> oznaka definirana u <code>&lt;references&gt;</code> nema parametar \"name\" (ime).",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> oznaka definirana u <code>&lt;references&gt;</code> s imenom \"$1\" nema sadržaja."
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> oznaka definirana u <code>&lt;references&gt;</code> s imenom \"$1\" nema sadržaja.",
"cite-tracking-category-cite-error-desc": "Stranice u ovoj kategoriji imaju pogrješno rabljene oznake izvora."
}

View File

@ -3,7 +3,9 @@
"authors": [
"Dani",
"Glanthor Reviol",
"KossuthRad"
"KossuthRad",
"Tacsipacsi",
"Nyuszika7H"
]
},
"cite-desc": "Lehetővé teszi idézések létrehozását <nowiki><ref[ name=id]></nowiki> és <nowiki><references/></nowiki> tagek segítségével",
@ -12,17 +14,25 @@
"cite_error_ref_no_key": "Érvénytelen <code>&lt;ref&gt;</code> tag; a tartalom nélküli ref-eknek kötelező nevet (name) adni",
"cite_error_ref_too_many_keys": "Érvénytelen <code>&lt;ref&gt;</code> tag; hibás nevek, pl. túl sok",
"cite_error_ref_no_input": "Érvénytelen <code>&lt;ref&gt;</code> tag; a név (name) nélküli ref-eknek adni kell valamilyen tartalmat",
"cite_error_references_duplicate_key": "Érvénytelen <code>&lt;ref&gt;</code> elem, „$1” nevű forráshivatkozás többször van definiálva eltérő tartalommal",
"cite_error_references_invalid_parameters": "Érvénytelen <code>&lt;references&gt;</code> tag; nincsenek paraméterei, használd a <code>&lt;references /&gt;</code> formát",
"cite_error_references_invalid_parameters_group": "Érvénytelen <code>&lt;references&gt;</code> tag; csak a „group” attribútum használható. Használd a <code>&lt;references /&gt;</code>, vagy a <code>&lt;references group=\"...\" /&gt;</code> formát.",
"cite_error_references_no_backlink_label": "Elfogytak a visszahivatkozásra használt címkék, adj meg többet a <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> üzenetben",
"cite_error_no_link_label_group": "Nincs több egyedi címke a következő csoport számára: „$1”.\nAdj meg többet a <nowiki>[[MediaWiki:$2]]</nowiki> lapon.",
"cite_error_references_no_text": "Érvénytelen <code>&lt;ref&gt;</code> tag; nincs megadva szöveg a(z) <code>$1</code> nevű ref-eknek",
"cite_error_included_ref": "Egy <code>&lt;ref&gt;</code> tag lezáró <code>&lt;/ref&gt;</code> része hiányzik",
"cite_error_group_refs_without_references": "<code>&lt;ref&gt;</code>-ek léteznek a(z) „$1” csoporthoz, de nincs hozzá <code>&lt;references group=\"$1\"/&gt;</code>",
"cite_error_group_refs_without_references": "<code>&lt;ref&gt;</code>-ek léteznek a(z) „$1” csoporthoz, de nincs hozzá <code>&lt;references group=\"$1\"/&gt;</code>, vagy egy lezáró <code>&lt;/ref&gt;</code> hiányzik.",
"cite_error_references_group_mismatch": "A <code>&lt;references&gt;</code> és a benne található <code>&lt;ref&gt;</code> tag csoport-attribútuma („$1”) nem egyezik meg.",
"cite_error_references_missing_group": "<code>&lt;ref&gt;</code> tag lett lett definiálva egy olyan <code>&lt;references&gt;</code> tagben, amely csoport-attribútuma („$1”) nem szerepel a szöveg korábbi részében.",
"cite_error_references_missing_key": "a <code>&lt;references&gt;</code> tagben definiált „$1” nevű <code>&lt;ref&gt;</code> tag nem szerepel a szöveg korábbi részében.",
"cite_error_references_no_key": "a <code>&lt;references&gt;</code> tagben definiált <code>&lt;ref&gt;</code> tagnek nincs név attribútuma.",
"cite_error_empty_references_define": "a <code>&lt;references&gt;</code> szakaszban definiált „$1” <code>&lt;ref&gt;</code> tagnek nincs tartalma.",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">^ $2</span> $3</li>"
"cite-tracking-category-cite-error": "Lapok forráshivatkozás-hibákkal",
"cite-tracking-category-cite-error-desc": "Az ebben a kategóriában található lapokon hibásan használt forráshivatkozás-elemek találhatók.",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">^ $2</span> $3</li>",
"cite_references_link_accessibility_label": "Ugrás fel",
"cite_references_link_many_accessibility_label": "Ugrás ehhez:",
"cite_section_preview_references": "Források előnézete",
"cite_warning": "Forráshivatkozás-figyelmeztetés: $1",
"cite_warning_sectionpreview_no_text": "A(z) <code>$1</code> nevű <code>&lt;ref&gt;</code> tag előnézete nem jeleníthető meg, mert a jelenlegi szakaszon kívül vagy egyáltalán nincs definiálva."
}

View File

@ -1,8 +1,10 @@
{
"@metadata": {
"authors": [
"Xelgen"
"Xelgen",
"Աշոտ1997"
]
},
"cite_error": "Քաղվածելու սխալ՝ $1"
"cite_error": "Քաղվածելու սխալ՝ $1",
"cite_section_preview_references": "Ծանոթագրությունների նախադիտում"
}

View File

@ -7,21 +7,24 @@
"cite-desc": "Aginayon kadagiti etiketa ti <nowiki><ref[ name=id]></nowiki> ken <nowiki><references/></nowiki>, para kadagiti panagdakamat",
"cite_error": "Biddut ti dakamat: $1",
"cite_error_ref_numeric_key": "Imbalido ti etiketa ti <code>&lt;ref&gt;</code>;\nti nagan ket saan a mabalin a nalaka a sibubukel. Agusar ti makaipalawag a titulo",
"cite_error_ref_no_key": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\ndagita ref nga awan nagyanna ket masapul nga adda naganna",
"cite_error_ref_too_many_keys": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\nimbalido a nag-nagan, a kas adu unay",
"cite_error_ref_no_input": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\ndagiti ref nga awan ti naganna ket masapul nga addaan ti nagyan",
"cite_error_ref_no_key": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\ndagiti ref nga awan linaon ket masapul nga adda naganna",
"cite_error_ref_too_many_keys": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\nimbalido a nagnagan, a kas adu unay",
"cite_error_ref_no_input": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\ndagiti ref nga awan ti naganna ket masapul nga addaan iti linaon",
"cite_error_references_duplicate_key": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code>; ti nagan ti \"$1\" ket naipalawag kadagiti namin adu a beses nga agraman iti sabali a linaon",
"cite_error_references_invalid_parameters": "Imbalido nga etiketa ti <code>&lt;references&gt;</code>;\nsaan a maipalubos dagiti parametro.\nUsaren ti <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Imbalido nga etiketa ti <code>&lt;references&gt;</code> ;\nmaipalubos laeng ti parametro ti \"grupo\" .\nUsaren ti <code>&lt;references /&gt;</code> , wenno<code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Naibusan kadagiti etiketa ti naisangayan a silpo ti likud.\nIpalawag pay ti adu idiay mensahe ti <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
"cite_error_no_link_label_group": "Naibusan kadagiti etiketa ti nangruna a silpo para iti grupo ti \"$1\".\nIpalawag pay ti adu idiay mensahe ti <nowiki>[[MediaWiki:$2]]</nowiki> .",
"cite_error_references_no_text": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\nawan ti testo a naited para kadagiti ref a nanaganan <code>$1</code>",
"cite_error_included_ref": "Irikepen ti <code>&lt;/ref&gt;</code> napukaw para iti etiketa ti <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "Adda dagiti etiketa ti <code>&lt;ref&gt;</code> para iti grupo a nanaganan ti \"$1\", ngem awan ti kapada nga etiketa ti <code>&lt;references group=\"$1\"/&gt;</code> a nabirukan, wenno awan ti pangrikep ti <code>&lt;/ref&gt;</code>",
"cite_error_references_group_mismatch": "Ti etiketa ti <code>&lt;ref&gt;</code> iday <code>&lt;references&gt;</code> ket addan ti kasinnungat a gupit ti grupo ti \"$1\".",
"cite_error_references_missing_group": "Ti etiketa ti <code>&lt;ref&gt;</code> a naipalawag idiay <code>&lt;references&gt;</code> ket addaan ti gupit ti grupo ti \"$1\" a saan nga agparang iti napalabas a testo.",
"cite_error_references_missing_key": "Ti etiketa ti <code>&lt;ref&gt;</code> nga addaan ti nagan ti \"$1\" a naipalawag idiay <code>&lt;references&gt;</code> ket saan a nausar iti napalabas a testo.",
"cite_error_references_no_key": "Ti etiketa ti <code>&lt;ref&gt;</code> a naipalawag idiay <code>&lt;references&gt;</code> ket awan ti nainagan a gupit.",
"cite_error_empty_references_define": "Ti etiketa ti <code>&lt;ref&gt;</code> a naipalawag idiay <code>&lt;references&gt;</code> nga addaan ti nagan a \"$1\" ket awan ti nagyanna.",
"cite_error_references_no_text": "Imbalido nga etiketa ti <code>&lt;ref&gt;</code> ;\nawan ti teksto a naited para kadagiti ref a nanaganan ti <code>$1</code>",
"cite_error_included_ref": "Awan ti pangrikep ti <code>&lt;/ref&gt;</code> para iti etiketa ti <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "Adda dagiti etiketa ti <code>&lt;ref&gt;</code> para iti grupo a nanaganan ti \"$1\", ngem awan ti nabirukan a kapada nga etiketa ti <code>&lt;references group=\"$1\"/&gt;</code>, wenno awan ti pangrikep ti <code>&lt;/ref&gt;</code>",
"cite_error_references_group_mismatch": "Ti etiketa ti <code>&lt;ref&gt;</code> iti <code>&lt;references&gt;</code> ket addaan iti agsinnungat a gupit ti grupo ti \"$1\".",
"cite_error_references_missing_group": "Ti etiketa ti <code>&lt;ref&gt;</code> a naipalawag iti <code>&lt;references&gt;</code> ket addaan iti gupit ti grupo ti \"$1\" a saan nga agparang iti dati a teksto.",
"cite_error_references_missing_key": "Ti etiketa ti <code>&lt;ref&gt;</code> nga addaan iti nagan ti \"$1\" a naipalawag iti <code>&lt;references&gt;</code> ket saan a nausar iti dati a teksto.",
"cite_error_references_no_key": "Ti etiketa ti <code>&lt;ref&gt;</code> a naipalawag iti <code>&lt;references&gt;</code> ket awan ti nainagan a gupit.",
"cite_error_empty_references_define": "Ti etiketa ti <code>&lt;ref&gt;</code> a naipalawag iti <code>&lt;references&gt;</code> nga addaan iti nagan a \"$1\" ket awan linaon.",
"cite-tracking-category-cite-error": "Pampanid nga agraman kadagiti biddut ti reperensia",
"cite-tracking-category-cite-error-desc": "Dagiti panid iti daytoy a kategoria ket addaan kadaggiti biddut iti panagusar kadagiti etiketa ti reperensia.",
"cite_references_link_accessibility_label": "Mapan iti ngato",
"cite_references_link_many_accessibility_label": "Mapan aginggana iti:"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Adam-Yourist"
]
},
"cite_error": "Дешаш белгалдахара гӀалат $1"
}

View File

@ -10,12 +10,15 @@
"Horcrux92"
]
},
"apihelp-query+references-description": "Restituisce una rappresentazione dati dei riferimenti associati con le pagine indicate.",
"apihelp-query+references-example-1": "Riferimenti associati con <kbd>Albert Einstein</kbd>.",
"cite-desc": "Aggiunge i tag <nowiki><ref[ name=id]></nowiki> e <nowiki><references/></nowiki> per gestire le citazioni",
"cite_error": "Errore nella funzione Cite: $1",
"cite_error": "Errore nelle note: $1",
"cite_error_ref_numeric_key": "Errore nell'uso del marcatore <code>&lt;ref&gt;</code>: il nome non può essere un numero intero. Usare un titolo esteso",
"cite_error_ref_no_key": "Errore nell'uso del marcatore <code>&lt;ref&gt;</code>: i ref vuoti non possono essere privi di nome",
"cite_error_ref_no_key": "L'apertura dell'etichetta <code>&lt;ref&gt;</code> non è corretta o ha un nome errato.",
"cite_error_ref_too_many_keys": "Errore nell'uso del marcatore <code>&lt;ref&gt;</code>: nomi non validi (ad es. numero troppo elevato)",
"cite_error_ref_no_input": "Errore nell'uso del marcatore <code>&lt;ref&gt;</code>: i ref privi di nome non possono essere vuoti",
"cite_error_references_duplicate_key": "Tag <code>&lt;ref&gt;</code> non valido; il nome \"$1\" è stato definito più volte con contenuti diversi",
"cite_error_references_invalid_parameters": "Errore nell'uso del marcatore <code>&lt;references&gt;</code>: parametri non ammessi, usare il marcatore <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Errore nell'uso del marcatore <code>&lt;references&gt;</code>;\nsolo il parametro \"group\" è permesso.\nUsare <code>&lt;references /&gt;</code> oppure <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Etichette di rimando personalizzate esaurite, aumentarne il numero nel messaggio <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -28,6 +31,11 @@
"cite_error_references_missing_key": "Il tag <code>&lt;ref&gt;</code> con nome \"$1\" definito in <code>&lt;references&gt;</code> non è usato nel testo precedente.",
"cite_error_references_no_key": "Il tag <code>&lt;ref&gt;</code> definito in <code>&lt;references&gt;</code> non ha un attributo nome.",
"cite_error_empty_references_define": "Il tag <code>&lt;ref&gt;</code> definito in <code>&lt;references&gt;</code> con nome \"$1\" non ha alcun contenuto.",
"cite-tracking-category-cite-error": "Pagine con errori nelle note",
"cite-tracking-category-cite-error-desc": "Le pagine in questa categoria hanno errori nell'uso dei tag per le note.",
"cite_references_link_accessibility_label": "Salta",
"cite_references_link_many_accessibility_label": "Salta a:"
"cite_references_link_many_accessibility_label": "Salta a:",
"cite_section_preview_references": "Anteprima dei riferimenti",
"cite_warning": "Attenzione nelle note: $1",
"cite_warning_sectionpreview_no_text": "Il tag <code>&lt;ref&gt;</code> con nome <code>$1</code> non può essere visualizzato in anteprima, perché è definito al di fuori della sezione attuale o non definito affatto."
}

View File

@ -5,15 +5,21 @@
"Ficell",
"Fryed-peach",
"JtFuruhata",
"Shirayuki"
"Shirayuki",
"Sujiniku",
"2nd-player",
"Otokoume"
]
},
"apihelp-query+references-description": "指定されたページに関連付けられた脚注のデータ表現を返す",
"apihelp-query+references-example-1": "<kbd>Albert Einstein</kbd> に関連付けられた脚注。",
"cite-desc": "引用のためのタグ <nowiki><ref[ name=id]></nowiki> および <nowiki><references/></nowiki> を追加する",
"cite_error": "引用エラー: $1",
"cite_error_ref_numeric_key": "無効な <code>&lt;ref&gt;</code> タグです。\n名前 (name 属性) に単なる整数は使用できません。説明的なものにしてください",
"cite_error_ref_no_key": "無効な <code>&lt;ref&gt;</code> タグです。\n引用句の内容がない場合は名前 (name 属性) が必要です",
"cite_error_ref_no_key": "冒頭の <code>&lt;ref&gt;</code> タグは正しくない形式であるか、不適切な名前です",
"cite_error_ref_too_many_keys": "無効な <code>&lt;ref&gt;</code> タグです。\n名前 (name 属性) が無効です (数が多すぎる、など)",
"cite_error_ref_no_input": "無効な <code>&lt;ref&gt;</code> タグです。\n名前 (name 属性) がない場合は引用句の内容が必要です",
"cite_error_references_duplicate_key": "無効な <code>&lt;ref&gt;</code> タグ; name \"$1\"が異なる内容で複数回定義されています",
"cite_error_references_invalid_parameters": "無効な <code>&lt;references&gt;</code> タグです。\n引数は指定できません。\n<code>&lt;references /&gt;</code> を使用してください",
"cite_error_references_invalid_parameters_group": "無効な <code>&lt;references&gt;</code> タグです。\n使用できる引数は「group」のみです。\n<code>&lt;references /&gt;</code> または <code>&lt;references group=\"...\" /&gt;</code> を使用してください",
"cite_error_references_no_backlink_label": "カスタム バックリンク ラベルを使い果たしました。\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> メッセージでの定義を増やしてください。",
@ -23,9 +29,14 @@
"cite_error_group_refs_without_references": "「$1」という名前のグループの <code>&lt;ref&gt;</code> タグがありますが、対応する <code>&lt;references group=\"$1\"/&gt;</code> タグが見つからない、または閉じる <code>&lt;/ref&gt;</code> タグがありません",
"cite_error_references_group_mismatch": "<code>&lt;references&gt;</code> の <code>&lt;ref&gt;</code> タグで、group 属性「$1」が重複しています。",
"cite_error_references_missing_group": "<code>&lt;references&gt;</code> で定義されている <code>&lt;ref&gt;</code> タグに、先行するテキスト内で使用されていない group 属性「$1」があります。",
"cite_error_references_missing_key": "<code>&lt;references&gt;</code> で定義されている <code>&lt;ref&gt;</code> タグ (name=\"$1\") は、先行するテキスト内で使用されていません。",
"cite_error_references_missing_key": "<code>&lt;references&gt;</code> で定義されている name \"$1\" の <code>&lt;ref&gt;</code> タグは、先行するテキスト内で使用されていません。",
"cite_error_references_no_key": "<code>&lt;references&gt;</code> で定義されている <code>&lt;ref&gt;</code> タグに name 属性がありません。",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code> で定義されている <code>&lt;ref&gt;</code> タグ (name=\"$1\") に内容がありません。",
"cite-tracking-category-cite-error": "参照エラーのあるページ",
"cite-tracking-category-cite-error-desc": "このカテゴリにあるページは、参照タグの使用にエラーがあります。",
"cite_references_link_accessibility_label": "元の位置に戻る",
"cite_references_link_many_accessibility_label": "以下の位置に戻る:"
"cite_references_link_many_accessibility_label": "以下の位置に戻る:",
"cite_section_preview_references": "脚注プレビュー",
"cite_warning": "引用に関する警告: $1",
"cite_warning_sectionpreview_no_text": "name が <code>$1</code> の <code>&lt;ref&gt;</code> タグは、現在の節の外で定義されているかまたはどこでも定義されていないため、プレビューできません。"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Katxis"
]
},
"cite_error": "Cite error: $1"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Olwe519"
]
},
"apihelp-query+references-example-1": "lo se sitna pe <kbd>la .albert. .ainstain.</kbd>"
}

View File

@ -9,7 +9,7 @@
]
},
"cite-desc": "Nambahaké tag <nowiki><ref[ name=id]></nowiki> lan <nowiki><references/></nowiki> kanggo kutipan (sitat)",
"cite_error": "Kaluputan sitat (pangutipan) $1",
"cite_error": "Cacad panyuplik: $1",
"cite_error_ref_numeric_key": "Tag <code>&lt;ref&gt;</code> ora absah;\njenengé ora bisa namung angka integer waé. Gunakna irah-irahan (judhul) dèskriptif",
"cite_error_ref_no_key": "Tag <code>&lt;ref&gt;</code> ora absah;\nrefs tanpa isi kudu duwé jeneng",
"cite_error_ref_too_many_keys": "Tag <code>&lt;ref&gt;</code> ora absah;\njeneng-jenengé ora absah, contoné kakèhan",
@ -29,7 +29,6 @@
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "cite_ref-",
"cite_references_link_prefix": "cite_note-",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup>",
"cite_references_link_one": "<li id=\"$1\">'''<span class=\"mw-cite-backlink\">[[#$2|^]]</span>''' $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">'''^''' $2</span> $3</li>",
"cite_references_link_many_format": "<sup>[[#$1|'''''$2''''']]</sup>",

View File

@ -26,10 +26,10 @@
"cite_error_references_no_key": "ტეგს <code>&lt;ref&gt;</code>, გარკვეულს <code>&lt;references&gt;</code>-ში, სახელის ატრიბუტი არ გააჩნია.",
"cite_error_empty_references_define": "ტეგს <code>&lt;ref&gt;</code>, გარკვეულს <code>&lt;references&gt;</code>-ში, სახელით „$1“ არ გააჩნია შინაარსი.",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup>",
"cite_references_link_one": "<li id=\"$1\"><span class=\"mw-cite-backlink\">[[#$2|↑]]</span> $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">↑ $2</span> $3</li>",
"cite_references_link_many_format": "<sup>[[#$1|$2]]</sup>",
"cite_references_link_many_sep": "&#32;",
"cite_references_link_many_and": "&#32;"
"cite_references_link_many_and": "&#32;",
"cite_references_link_accessibility_label": "ზემოთ ასვლა"
}

View File

@ -2,7 +2,8 @@
"@metadata": {
"authors": [
"Arystanbek",
"Kaztrans"
"Kaztrans",
"Нұрлан Рахымжанов"
]
},
"cite-desc": "Сілтемелер үшін <nowiki><ref[ name=id]></nowiki> және <nowiki><references/></nowiki> белгішелерін қолданыңыз",
@ -18,6 +19,7 @@
"cite_error_references_no_text": "Жарамсыз <code>&lt;ref&gt;</code> тегі;\nno text was provided for refs named <code>$1</code>",
"cite_error_included_ref": "<code>&lt;ref&gt;</code> тегін <code>&lt;/ref&gt;</code> тегімен жабуды қажет етеді",
"cite_error_group_refs_without_references": "\"$1\" деп аталған дереккөз тобында <code>&lt;ref&gt;</code> тегі бар, бірақ тиісті <code>&lt;references group=\"$1\"/&gt;</code> тегі табылмады, немесе <code>&lt;/ref&gt;</code> жабу тегін қажет етеді",
"cite-tracking-category-cite-error": "Қате сілтемелері бар беттер",
"cite_references_link_one": "<li id=\"$1\"><span class=\"mw-cite-backlink\">[[#$2|↑]]</span> $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">↑ $2</span> $3</li>",
"cite_references_link_accessibility_label": "Жоғарыға көтеріліңіз",

View File

@ -5,7 +5,10 @@
"Ilovesabbath",
"Kwj2772",
"ToePeu",
"아라"
"아라",
"Hwangjy9",
"Revi",
"Bluemersen"
]
},
"cite-desc": "인용에 쓰이는 <nowiki><ref[ name=id]></nowiki>와 <nowiki><references/></nowiki> 태그를 추가합니다",
@ -14,6 +17,7 @@
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n내용이 없는 주석은 이름이 있어야 합니다",
"cite_error_ref_too_many_keys": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n잘못된 이름입니다, 너무 많은 등",
"cite_error_ref_no_input": "<code>&lt;ref&gt;</code> 태그가 잘못되었습니다;\n이름이 없는 ref 태그는 반드시 내용이 있어야 합니다",
"cite_error_references_duplicate_key": "잘못된 <code>&lt;ref&gt;</code> 태그; \"$1\"이 다른 콘텐츠로 여러 번 정의되었습니다",
"cite_error_references_invalid_parameters": "<code>&lt;references&gt;</code> 태그가 잘못되었습니다;\n변수를 넣으면 안됩니다.\n<code>&lt;references /&gt;</code>를 사용하세요",
"cite_error_references_invalid_parameters_group": "<code>&lt;references&gt;</code> 태그가 잘못되었습니다;\n\"group\" 변수만 사용할 수 있습니다.\n<code>&lt;references /&gt;</code>나 <code>&lt;references group=\"...\" /&gt;</code>를 사용하세요",
"cite_error_references_no_backlink_label": "사용자 지정 백링크 라벨이 바닥이 났습니다.\n<nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>메시지에 더 정의하세요.",
@ -26,7 +30,12 @@
"cite_error_references_missing_key": "<code>&lt;references&gt;</code> 안에 정의된 \"$1\"이라는 이름을 가진 <code>&lt;ref&gt;</code> 태그가 위에서 사용되고 있지 않습니다.",
"cite_error_references_no_key": "<code>&lt;references&gt;</code> 안에 정의된 <code>&lt;ref&gt;</code> 태그에 이름 특성이 없습니다.",
"cite_error_empty_references_define": "<code>&lt;references&gt;</code> 태그 안에 정의된 \"$1\"이라는 이름을 가진 <code>&lt;ref&gt;</code> 태그에 내용이 없습니다.",
"cite-tracking-category-cite-error": "참조 오류가 있는 문서",
"cite-tracking-category-cite-error-desc": "이 분류가 있는 문서는 참조 태그 사용에 오류가 있습니다.",
"cite_references_link_many_format_backlink_labels": "가 나 다 라 마 바 사 아 자 차 카 타 파 하 거 너 더 러 머 버 서 어 저 처 커 터 퍼 허 고 노 도 로 모 보 소 오 조 초 코 토 포 호 구 누 두 루 무 부 수 우 주 추 쿠 투 푸 후 그 느 드 르 므 브 스 으 즈 츠 크 트 프 흐 기 니 디 리 미 비 시 이 지 치 키 티 피 히",
"cite_references_link_accessibility_label": "이동",
"cite_references_link_many_accessibility_label": "이동:"
"cite_references_link_many_accessibility_label": "이동:",
"cite_section_preview_references": "각주 미리보기",
"cite_warning": "인용 경고: $1",
"cite_warning_sectionpreview_no_text": "<code>$1</code>라는 이름의 <code>&lt;ref&gt;</code> 태그는 현재 부분 밖에서 정의되어 있거나 아예 정의되어 있지 않기 때문에 미리 볼 수 없습니다."
}

View File

@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
"Iltever"
"Iltever",
"Ernác"
]
},
"cite_error": "Цитата этиуде халат: $1"

View File

@ -5,12 +5,14 @@
"The Evil IP address"
]
},
"apihelp-query+references-example-1": "Bezösche em Zesammehang mem <kbd lang=\"de\" xml:lang=\"de\" dir=\"ltr\">Albert Einstein</kbd>.",
"cite-desc": "Erlaub Quelle un Referenze met <nowiki><ref[ name=\"id\"]></nowiki> un <nowiki><references /></nowiki> aanzejevve.",
"cite_error": "Fähler in <i lang=\"en\">cite</i> met Referenze: $1",
"cite_error_ref_numeric_key": "Fähler en <i lang=\"en\">cite</i>:\nEne <code>&lt;ref&gt;</code>-Name kann kei Zahl sin.\nNemm en Övverschreff , di jät säht.",
"cite_error_ref_no_key": "Fähler en <i lang=\"en\">cite</i>:\nE <code>&lt;ref&gt;</code> oohne Enhalt moß ene Nahme han.\nNemm en Övverschreff, di jät säht.",
"cite_error_ref_no_key": "Beim <code lang=\"en\" xml:lang=\"en\" dir=\"rtl\">cite</code>-Befähl singem Bejenn es enne kapodde Nahme jenannt, udder hä es söns wi kappott.",
"cite_error_ref_too_many_keys": "Fähler en <i lang=\"en\">cite</i>:\nZo fill <code>&lt;ref&gt;</code>-Name,\nudder kapodde ene Name.",
"cite_error_ref_no_input": "Fähler en <i lang=\"en\">cite</i>:\nE <code>&lt;ref&gt;</code> oohne Name moß ene Enhallt han.",
"cite_error_references_duplicate_key": "Dat es ene onjöllteje „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">&lt;ref&gt;</code>“-Befähl, Dä Nahme „$1“ es mih wi eijmohl med enem onejahle Ennhalld belähsch.",
"cite_error_references_invalid_parameters": "Fähler en <i lang=\"en\">cite</i>:\nE <code>&lt;references&gt;</code> moß oohne Parrametere sin.\nNemm eifach <code>&lt;references /&gt;</code> un söns nix.",
"cite_error_references_invalid_parameters_group": "Fähler en <i lang=\"en\">cite</i>:\nE <code>&lt;references&gt;</code> darf nur dä Parrameeter „<code>group</code>“ han.\nNemm eifach <code>&lt;references /&gt;</code> udder <code>&lt;references group=\"...\" /&gt;</code> un söns nix.",
"cite_error_references_no_backlink_label": "Fähler en <i lang=\"en\">cite</i>:\nNit jenoch Name för retuur-Lengks.\nDonn mieh en dä Sigg <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> enndrare.",
@ -23,6 +25,8 @@
"cite_error_references_missing_key": "Dä <code>&lt;ref&gt;</code> Befähl mem Nahme „$1“, aanjejovve em Befähl <code>&lt;references&gt;</code>, es em Täx doför nit vörjekumme.",
"cite_error_references_no_key": "Dä <code>&lt;ref&gt;</code> Befähl, aanjejoove em Befähl <code>&lt;references&gt;</code>, hät kei Eijeschaff <code>name=</code> aanjejovve.",
"cite_error_empty_references_define": "Dä <code>&lt;ref&gt;</code> Befähl mem Nahme „$1“, aanjejoove em Befähl <code>&lt;references&gt;</code> mem Nahme „$1“, hät keine Enhallt.",
"cite-tracking-category-cite-error": "Sigge met Fähler en Fohßnuhte",
"cite-tracking-category-cite-error-desc": "En Sigge en heh dä Saachjropp sin Fähler em Jebruch vun Fohßnuhte",
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "fohss_noht_betreck_",
"cite_references_link_prefix": "fohss_noht_nommer_",

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Laurentianus"
]
},
"cite_error": "Lapsus in citando: $1"
}

View File

@ -21,6 +21,8 @@
"cite_error_references_missing_key": "Deen am <code>&lt;references&gt;</code> definéierten <code>&lt;ref&gt;</code>-Tag mam Numm \"$1\" gëtt am Text virdrun net benotzt.",
"cite_error_references_no_key": "D'Markéierung <code>&lt;ref&gt;</code> déi an <code>&lt;references&gt;</code> definéiert ass huet keng Nummeegeschaft.",
"cite_error_empty_references_define": "D'Markéierung <code>&lt;ref&gt;</code> déi am <code>&lt;references&gt;</code> mat dem Numm « $1 » definéiert ass, ass eidel.",
"cite-tracking-category-cite-error": "Säite mat Referenzfeeler",
"cite_references_link_accessibility_label": "No uewe sprangen",
"cite_references_link_many_accessibility_label": "Eropsprangen op:"
"cite_references_link_many_accessibility_label": "Eropsprangen op:",
"cite_section_preview_references": "Referenze kucken ouni ze späicheren"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Giromin Cangiaxo"
]
},
"cite_error": "Errô inte notte: $1"
}

View File

@ -0,0 +1,25 @@
{
"@metadata": {
"authors": [
"Hosseinblue",
"Lakzon"
]
},
"cite-desc": "برچسب‌های <nowiki><ref[ name=id]></nowiki> و <nowiki><references/></nowiki> را برای یادکرد اضافه می‌کند",
"cite_error": "خطای یادکرد: $1",
"cite_error_ref_numeric_key": "برچسب <code><ref></code> نامجاز؛ نام نمی‌تواند یک عدد باشد. عنوان واضح‌تری را برگزینید",
"cite_error_ref_no_key": "برچسب <code><ref></code> نامجاز؛ یادکردهای بدون نۆم جِک(محتوا)باید نام داشته باشند",
"cite_error_ref_too_many_keys": "برچسب <code><ref></code> نامجاز؛ نام‌های نامجاز یا بیش از اندازه",
"cite_error_ref_no_input": "برچسب <code><ref></code> نامجاز؛ یادکردهای بدون نام باید نۆم جِک(محتوا) داشته باشند",
"cite_error_references_invalid_parameters": "برچسب <code><references></code> نامجاز؛ استفاده از پارامتر مجاز است. از <code><references /></code> استفاده کنید",
"cite_error_references_invalid_parameters_group": "برچسب <code>&lt;references&gt;</code> نامجاز؛ تنها پارامتر «group» قابل استفاده است.\nاز <code>&lt;references /&gt;</code> یا <code>&lt;references group=\"...\" /&gt;</code> استفاده کنید",
"cite_error_references_no_backlink_label": "برچسب‌های پیوند به انتها رسید.\nموارد جدیدی را در پیغام <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> تعریف کنید",
"cite_error_no_link_label_group": "از برچسب‌های پیوند سفارشی برای گروه «$1» خارج شد.\nدر پیغام <nowiki>[[MediaWiki:$2]]</nowiki> بیشتر تعریف کنید.",
"cite_error_references_no_text": "برچسب <code><ref></code> نامجاز؛ متنی برای یادکردهای با نام <code>$1</code> وارد نشده‌است",
"cite_error_included_ref": "برچسب تمام کنندهٔ <code>&lt;/ref&gt;</code> بدون برچسب <code>&lt;ref&gt;</code>",
"cite_error_group_refs_without_references": "برچسب <code>&lt;ref&gt;</code> برای گروهی به نام «$1» وجود دارد، اما برچسب متناظر با <code>&lt;references group=\"$1\"/&gt;</code> یافت نشد یا <code>&lt;/ref&gt;</code> بسته جا گذاشته شده‌است.",
"cite_error_references_no_key": "برچسپ <code>&lt;ref&gt;</code> درون <code>&lt;references&gt;</code> صفت نام را ندارد.",
"cite_error_empty_references_define": "برچسپ <code>&lt;ref&gt;</code> تعریف شده درون <code>&lt;references&gt;</code> با نام «$1» محتوایی ندارد.",
"cite_references_link_accessibility_label": "پرش به بالا",
"cite_references_link_many_accessibility_label": "پرش به بالا به:"
}

View File

@ -4,7 +4,8 @@
"Garas",
"Homo",
"Matasg",
"Albertas"
"Albertas",
"Zygimantus"
]
},
"cite-desc": "Prideda <nowiki><ref[ name=id]></nowiki> ir <nowiki><references/></nowiki> žymes citavimui",
@ -13,6 +14,7 @@
"cite_error_ref_no_key": "Neleistina <code>&lt;ref&gt;</code> gairė; nuorodos be turinio turi turėti vardą",
"cite_error_ref_too_many_keys": "Neleistina <code>&lt;ref&gt;</code> gairė; neleistini vardai, pvz., per daug",
"cite_error_ref_no_input": "Neleistina <code>&lt;ref&gt;</code> gairė; nuorodos be vardo turi turėti turinį",
"cite_error_references_duplicate_key": "Netinkama <code>&lt;ref&gt;</code> žymė; vardas \"$1\" apibrėžtas keletą kartų su skirtingu turiniu",
"cite_error_references_invalid_parameters": "Neleistina <code>&lt;references&gt;</code> gairė; neleidžiami jokie parametrai, naudokite <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Netinkama <code>&lt;references&gt;</code> žymė;\nleidžiama tik parametrų \"grupė\".\nNaudokite <code>&lt;references /&gt;</code> arba <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Baigėsi antraštės.\nNurodykite daugiau <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> sisteminiame tekste",
@ -25,6 +27,10 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> žymė vardu \"$1\", apibrėžta <code>&lt;references&gt;</code>, nėra naudojama ankstesniame tekste.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> žymė, apibrėžta <code>&lt;references&gt;</code>, neturi vardo atributo.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code> žymė, apibrėžta <code>&lt;references&gt;</code>, su vardu \"$1\", neturi turinio.",
"cite-tracking-category-cite-error": "Puslapiai su nuorodų klaidomis",
"cite-tracking-category-cite-error-desc": "Šios kategorijos puslapiai turi klaidų nuorodų žymių naudojime.",
"cite_references_link_accessibility_label": "Šokti aukštyn",
"cite_references_link_many_accessibility_label": "Šokti į:"
"cite_references_link_many_accessibility_label": "Šokti į:",
"cite_warning": "Cituoti įspėjimą: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code> žymė su vardu <code>$1</code> negali būti peržiūrėta, nes ji apibrėžta už dabartinės sekcijos ribų arba nėra apibrėžta apskritai."
}

View File

@ -3,9 +3,11 @@
"authors": [
"GreenZeb",
"Marozols",
"Xil"
"Xil",
"Papuass"
]
},
"cite-desc": "Pievieno <nowiki><ref[ name=id]></nowiki> un <nowiki><references/></nowiki> tagus, atsaucēm",
"cite_error": "Kļūda atsaucē: $1"
"cite_error": "Kļūda atsaucē: $1",
"cite_warning": "Atsauces brīdinājums: $1"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"SolidBlock"
]
},
"cite_error": "站誤:$1"
}

View File

@ -25,7 +25,6 @@
"cite_reference_link_key_with_num": "$1_$2",
"cite_reference_link_prefix": "cite_ref-",
"cite_references_link_prefix": "cite_note-",
"cite_reference_link": "<sup id=\"$1\" class=\"reference\">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup>",
"cite_references_link_one": "<li id=\"$1\">'''<span class=\"mw-cite-backlink\">[[#$2|^]]</span>''' $3</li>",
"cite_references_link_many": "<li id=\"$1\"><span class=\"mw-cite-backlink\">'''^''' $2</span> $3</li>",
"cite_references_link_many_format": "<sup>[[#$1|'''''$2''''']]</sup>",

View File

@ -5,12 +5,15 @@
"Brest"
]
},
"apihelp-query+references-description": "Дај податочно претставување на наводите поврзани со дадени страници.",
"apihelp-query+references-example-1": "Наводи поврзани со <kbd>Алберт Ајнштајн</kbd>.",
"cite-desc": "Додава ознаки <nowiki><ref[ name=id]></nowiki> и <nowiki><references/></nowiki>, за цитирања",
"cite_error": "Грешка во наводот: $1.",
"cite_error_ref_numeric_key": "Погрешна ознака <code>&lt;ref&gt;</code>;\nимето не може да биде број. Употребете описен наслов",
"cite_error_ref_no_key": "Погрешна ознака <code>&lt;ref&gt;</code>;\nнаводите без содржина мора да имаат име",
"cite_error_ref_no_key": "Отворачката ознака <code>&lt;ref&gt;</code> не е добро срочена или има погрешно име",
"cite_error_ref_too_many_keys": "Погрешна ознака<code>&lt;ref&gt;</code>;\nпогрешни имиња, т.е. ги има премногу",
"cite_error_ref_no_input": "Погрешна ознака <code>&lt;ref&gt;</code>;\nнаводите без име мораат да имаат содржина",
"cite_error_references_duplicate_key": "Неважечка ознака <code>&lt;ref&gt;</code>; називот „$1“ е зададен повеќепати со различна содржина",
"cite_error_references_invalid_parameters": "Погрешна ознака<code>&lt;references&gt;</code>;\nупотребата на параметри не е дозволена.\nУпотребете <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Погрешна ознака <code>&lt;references&gt;</code>;\nдопуштен само параметарот „group“.\nУпотребете <code>&lt;references /&gt;</code> или <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Нема доволно натписи за повратни врски.\nОпределете уште натписи во <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -23,7 +26,12 @@
"cite_error_references_missing_key": "Ознаката <code>&lt;ref&gt;</code> со име „$1“ определена во <code>&lt;references&gt;</code> не се користи во претходен текст.",
"cite_error_references_no_key": "Ознаката <code>&lt;ref&gt;</code> определена во <code>&lt;referencesgt;</code> нема именски атрибут.",
"cite_error_empty_references_define": "Ознаката <code>&lt;ref&gt;</code> определена во <code>&lt;references&gt;</code> со име „$1“ нема содржина.",
"cite-tracking-category-cite-error": "Страници со грешки во наводите",
"cite-tracking-category-cite-error-desc": "Страниците во оваа категориај имаат грешки во употребата на ознаки за наведување.",
"cite_references_link_many_format_backlink_labels": "а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш аа аб ав аг ад аѓ ае аж аз аѕ аи ај ак ал аљ ам ан ањ ао ап ар ас ат аќ ау аф ах ац ач аџ аш ба бб бв бг бд бѓ бе бж бз бѕ би бј бк бл бљ бм бн бњ бо бп бр бс бт бќ бу бф бх бц бч бџ бш ва вб вв вг вд вѓ ве вж вз бѕ ви вј вк вл вљ вм вн вњ во вп вр вс вт вќ ву вф вх вц вч вџ вш га гб гв гг гд гѓ ге гж гз гѕ ги гј гк гл гљ гм гн гњ го гп гр гс гт гќ гу гф гх гц гч гџ гш да дб дв дг дд дѓ де дж дз дѕ ди дј дк дл дљ дм дн дњ до дп др дс дт дќ ду дф дх дц дч дџ дш ѓа ѓб ѓв ѓг ѓд ѓе ѓж ѓз ѓѕ ѓи ѓј ѓк ѓл ѓљ ѓм ѓн ѓњ ѓо ѓп ѓр ѓс ѓт ѓќ ѓу ѓф ѓх ѓц ѓч ѓџ ѓш еа еб ев ег ед еѓ ее еж ез еѕ еи еј ек ел ељ ем ен ењ ео еп ер ес ет еќ еу еф ех ец еч еџ еш жа жб жв жг жд жѓ же жж жз жѕ жи жј жк жл жљ жм жн жњ жо жп жр жс жт жќ жу жф жх жц жч жџ жш за зб зв зг зд зѓ зе зж зз зѕ зи зј зк зл зљ зм зн зњ зо зп зр зс зт зќ зу зф зх зц зч зџ зш ѕа ѕб ѕв ѕг ѕд ѕѓ ѕе ѕж ѕз ѕѕ ѕи ѕј ѕк ѕл ѕљ ѕм ѕн ѕњ ѕо ѕп ѕр ѕс ѕт ѕќ ѕу ѕф ѕх ѕц ѕч ѕџ ѕш иа иб ив иг ид иѓ ие иж из иѕ ии иј ик ил иљ им ин ињ ио ип ир ис ит иќ иу иф их иц ич иџ иш ја јб јв јг јд јѓ је јж јз јѕ ји јј јк јл јљ јм јн јњ јо јп јр јс јт јќ ју јф јх јц јч јџ јш ка кб кв кг кд кѓ ке кж кз кѕ ки кј кк кл кљ км кн књ ко кп кр кс кт кќ ку кф кх кц кч кџ кш ла лб лв лг лд лѓ ле лж лз лѕ ли лј лк лл лљ лм лн лњ ло лп лр лс лт лќ лу лф лх лц лч лџ лш ља љб љв љг љд љѓ ље љж љз љѕ љи љј љк љл љљ љм љн љњ љо љп љр љс љт љќ љу љф љх љц љч љџ љш ма мб мв мг мд мѓ ме мж мз мѕ ми мј мк мл мљ мм мн мњ мо мп мр мс мт мќ му мф мх мц мч мџ мш на нб нв нг нд нѓ не нж нз нѕ ни нј нк нл нљ нм нн нњ но нп нр нс нт нќ ну нф нх нц нч нџ нш ња њб њв њг њд њѓ ње њж њз њѕ њи њј њк њл њљ њм њн њњ њо њп њр њс њт њќ њу њф њх њц њч њџ њш оа об ов ог од оѓ ое ож оз оѕ ои ој ок ол ољ ом он оњ оо оп ор ос от оќ оу оф ох оц оч оџ ош па пб пв пг пд пѓ пе пж пз пѕ пи пј пк пл пљ пм пн пњ по пп пр пс пт пќ пу пф пх пц пч пџ пш ра рб рв рг рд рѓ ре рж рз рѕ ри рј рк рл рљ рм рн рњ ро рп рр рс рт рќ ру рф рх рц рч рџ рш са сб св сг сд сѓ се сж сз сѕ си сј ск сл сљ см сн сњ со сп ср сс ст сќ су сф сх сц сч сџ сш та тб тв тг тд тѓ те тж тз тѕ ти тј тк тл тљ тм тн тњ то тп тр тс тт тќ ту тф тх тц тч тџ тш ќа ќб ќв ќг ќд ќѓ ќе ќж ќз ќѕ ќи ќј ќк ќл ќљ ќм ќн ќњ ќо ќп ќр ќс ќт ќќ ќу ќф ќх ќц ќч ќџ ќш уа уб ув уг уд уѓ уе уж уз уѕ уи уј ук ул уљ ум ун уњ уо уп ур ус ут уќ уу уф ух уц уч уџ уш фа фб фв фг фд фѓ фе фж фз фѕ фи фј фк фл фљ фм фн фњ фо фп фр фс фт фќ фу фф фх фц фч фџ фш ха хб хв хг хд хѓ хе хж хз хѕ хи хј хк хл хљ хм хн хњ хо хп хр хс хт хќ ху хф хх хц хч хџ хш ца цб цв цг цд цѓ це цж цз цѕ ци цј цк цл цљ цм цн цњ цо цп цр цс цт цќ цу цф цх цц цч цџ цш ча чб чв чг чд чѓ че чж чз чѕ чи чј чк чл чљ чм чн чњ чо чп чр чс чт чќ чу чф чх чц чч чџ чш џа џб џв џг џд џѓ џе џж џз џѕ џи џј џк џл џљ џм џн џњ џо џп џр џс џт џќ џу џф џх џц џч џџ џш ша шб шв шг шд шѓ ше шж шз шѕ ши шј шк шл шљ шм шн шњ шо шп шр шс шт шќ шу шф шх шц шч шџ шш",
"cite_references_link_accessibility_label": "Следно",
"cite_references_link_many_accessibility_label": "Отиди кај:"
"cite_references_link_many_accessibility_label": "Отиди кај:",
"cite_section_preview_references": "Преглед на наводите",
"cite_warning": "Предупредување за наводот: $1",
"cite_warning_sectionpreview_no_text": "Ознаката <code>&lt;ref&gt;</code> со назив <code>$1</code> не може да се прегледа бидејќи е определена вон тековниот оддел, или пак воопшто не е определена."
}

View File

@ -11,6 +11,7 @@
"cite_error_ref_no_key": "അസാധുവായ <code>&lt;ref&gt;</code> ടാഗ്;\nഉള്ളടക്കമൊന്നുമില്ലാത്ത അവലംബത്തിനും ഒരു പേരു വേണം.",
"cite_error_ref_too_many_keys": "അസാധുവായ <code>&lt;ref&gt;</code> ടാഗ്;\nഅസാധുവായ പേരുകൾ, ഉദാ: too many",
"cite_error_ref_no_input": "അസാധുവായ <code>&lt;ref&gt;</code> ടാഗ്;\nപേരില്ലാത്ത അവലംബത്തിനു ഉള്ളടക്കമുണ്ടായിരിക്കണം.",
"cite_error_references_duplicate_key": "അസാധുവായ <code>&lt;ref&gt;</code> ടാഗ്; \"$1\" എന്ന പേര് വ്യത്യസ്തമായ ഉള്ളടക്കത്തോടെ നിരവധി തവണ നിർവ്വചിച്ചിരിക്കുന്നു",
"cite_error_references_invalid_parameters": "അസാധുവായ <code>&lt;references&gt;</code> ടാഗ്;\nറെഫറൻസ് ടാഗിനകത്ത് ചരങ്ങൾ അനുവദനീയമല്ല. പകരം ഇങ്ങനെ <code>&lt;references /&gt;</code> ചെയ്യാവുന്നതാണ്.",
"cite_error_references_invalid_parameters_group": "അസാധുവായ <code>&lt;references&gt;</code> ടാഗ്;\nറെഫറൻസ് ടാഗിനകത്ത് \"group\" ചരം മാത്രമേ അനുവദനീയമായുള്ളൂ. പകരം <code>&lt;references /&gt;</code> എന്ന്, അല്ലെങ്കിൽ <code>&lt;references group=\"...\" /&gt;</code> എന്ന് ചെയ്യാവുന്നതാണ്.",
"cite_error_references_no_backlink_label": "പിൻകണ്ണികൾക്കായി നൽകുന്ന ഇച്ഛാനുസരണ കുറികൾ തീർന്നുപോയിരിക്കുന്നു.\nകൂടുതൽ [[MediaWiki:Cite references link many format backlink labels]] സന്ദേശത്തിൽ നിർവചിക്കുക.",
@ -23,6 +24,8 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code> റ്റാഗ് \"$1\" എന്ന പേരോടെ <code>&lt;references&gt;</code> എന്നതിൽ നിർവചിച്ചിട്ടുണ്ടെങ്കിലും ആദ്യ എഴുത്തിൽ ഉപയോഗിക്കുന്നില്ല.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code> റ്റാഗ് <code>&lt;references&gt;</code> എന്നതിൽ നിർവചിച്ചിട്ടുണ്ടെങ്കിലും നാമ ഘടകം നൽകിയിട്ടില്ല.",
"cite_error_empty_references_define": " <code>&lt;references&gt;</code> ആവശ്യത്തിനായി \"$1\" എന്ന പേരിൽ നിർ‌വചിക്കപ്പെട്ട <code>&lt;ref&gt;</code> റ്റാഗിന് ഉള്ളടക്കമൊന്നുമില്ല.",
"cite-tracking-category-cite-error": "അവലംബത്തിൽ പിഴവുകളുള്ള താളുകൾ",
"cite-tracking-category-cite-error-desc": "അവലംബം ടാഗുകൾ ഉപയോഗിച്ചതിൽ പിഴവുകളുള്ള താളുകളാണ് ഈ വർഗ്ഗത്തിൽ ഉള്ളത്.",
"cite_reference_link_prefix": "ഉദ്ധരിണി_അവല-",
"cite_references_link_prefix": "ഉദ്ധരിണി_കുറിപ്പ്-",
"cite_references_link_accessibility_label": "മുകളിലേയ്ക്ക്",

View File

@ -9,7 +9,7 @@
]
},
"cite-desc": "<nowiki><ref[ name=id]></nowiki> व <nowiki><references/></nowiki> हे दोन संदर्भ देण्यासाठी वापरण्यात येणारे शब्द जोडल्या जातील.",
"cite_error": "त्रटी उधृत करा: $1",
"cite_error": "त्रटी उधृत करा: $1",
"cite_error_ref_numeric_key": "<code>&lt;ref&gt;</code> चुकीचा कोड; नाव हे पूर्णांकी संख्या असू शकत नाही, कृपया माहितीपूर्ण शीर्षक द्या",
"cite_error_ref_no_key": "<code>&lt;ref&gt;</code> चुकीचा कोड; रिकाम्या संदर्भांना नाव असणे गरजेचे आहे",
"cite_error_ref_too_many_keys": "<code>&lt;ref&gt;</code> चुकीचा कोड; चुकीची नावे, उदा. खूप सारी",
@ -22,10 +22,12 @@
"cite_error_included_ref": "<code>&lt;ref&gt;</code> ला बंद करणारी <code>&lt;/ref&gt;</code> ही खूणपताका गायब आहे.",
"cite_error_group_refs_without_references": "\"$1\" नावाच्या गटाकरिता <code>&lt;ref&gt;</code>खूणपताका उपलब्ध आहेत, पण संबंधीत <code>&lt;references group=\"$1\"/&gt;</code> खूण मिळाली नाही.",
"cite_error_references_group_mismatch": "<code>&lt;references&gt;</code>मधील खूणपताकेस<code>&lt;ref&gt;</code> खूणांशी विसंवाद असणारे group attribute \"$1\" आहे.",
"cite_error_references_missing_group": "गट \"$1\" मधील <code>&lt;ref&gt;</code> खूणपताका <code>&lt;references&gt;</code> ह्या पूर्वी वापल्या गेलेल्या नाहीत.",
"cite_error_references_missing_group": "गट \"$1\" मधील <code>&lt;ref&gt;</code> खूणपताका <code>&lt;references&gt;</code> या पूर्वी वापल्या गेलेल्या नाहीत.",
"cite_error_references_missing_key": "<code>&lt;references&gt;</code> ह्या मध्ये टाकलेला <code>&lt;ref&gt;</code> \"$1\" ह्या नावाची खूणपताका ह्या पूर्वी वापरण्यात आलेली नाही.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code>खूणपताकेत नमूद गोष्टींना <code>&lt;references&gt;</code> ला नाम-गुणधर्म नाहीत.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code>खूणपताकेत नमूद गोष्टींना, <code>&lt;references&gt;</code> ज्या \"$1\" ह्या नावाने संबोधल्या आहेत, त्यात माहिती नाही.",
"cite-tracking-category-cite-error": "संदर्भ त्रुटी असणारी पाने",
"cite-tracking-category-cite-error-desc": "या वर्गात असणाऱ्या पानांत संदर्भ खूणपताकासंबंधी त्रुटी आहे.",
"cite_references_link_accessibility_label": "वर उडी मारा",
"cite_references_link_many_accessibility_label": "ला वर उडी मारा:"
}

View File

@ -0,0 +1,9 @@
{
"@metadata": {
"authors": [
"Ninjastrikers"
]
},
"cite_error": "ကိုးကား အမှား - $1",
"cite-tracking-category-cite-error": "ကိုးကားချက်အမှားများ ပါဝင်သော စာမျက်နှာများ"
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Luuva"
]
},
"cite_error": "Ín-iōng chhò-gō͘: $1"
}

View File

@ -4,12 +4,15 @@
"C.R."
]
},
"apihelp-query+references-description": "Tuorna na rappresentazione 'e date ch' 'e riferimiente ssuòccie a 'e paggene date.",
"apihelp-query+references-example-1": "Riferimiente suòccie a <kbd>Albert Einstein</kbd>.",
"cite-desc": "Azzecca 'e tag <nowiki><ref[ name=id]></nowiki> e <nowiki><references/></nowiki> p' 'e citaziune",
"cite_error": "Errore dint'a funzione Cite: $1",
"cite_error_ref_numeric_key": "Tag <code>&lt;ref&gt;</code> invalido;\n'o nomme nun ò essere surtanto n'intero. Ausate nu titolo descrittivo",
"cite_error_ref_no_key": "Codece 'e tag <code>&lt;ref&gt;</code> invalido;\n'e riferimente ch' 'e cuntenute abbacante hann'a tenè nu nomme",
"cite_error_ref_no_key": "Ll'eticheta p'arapì <code>&lt;ref&gt;</code> nun è bbona, fosse furmata malamente o puro téne nu nomme ca nun è buono",
"cite_error_ref_too_many_keys": "Tag <code>&lt;ref&gt;</code> invalido;\nnomme invalido, p'esembio troppo luongo",
"cite_error_ref_no_input": "Codece 'e tag <code>&lt;ref&gt;</code> invalido;\n'e riferimente c' 'o nomme abbacante hann'a tenè nu cuntenuto",
"cite_error_references_duplicate_key": "Tag <code>&lt;ref&gt;</code> nun valido; 'o nomme \"$1\" è stato definito cchiù vote cu cuntenute divierze",
"cite_error_references_invalid_parameters": "Tag <code>&lt;references&gt;</code> invalide;\nnun se pò mettere nisciuno parametro.\nAusate <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Codece 'e tag <code>&lt;references&gt;</code> invalido;\nsurtanto 'o parametro \"group\" è premmesso.\nAusate <code>&lt;references /&gt;</code>, o <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "L'etichette personalizzate p' 'e cullegamiente 'e rezza se so' fernute\nPe' piacere, definite nu poco 'e cchiu dint' 'a mmasciata <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
@ -22,6 +25,11 @@
"cite_error_references_missing_key": "'O tag <code>&lt;ref&gt;</code> c' 'o nomme \"$1\" definito int'a <code>&lt;references&gt;</code> nun è ausato dint' 'o testo 'e primma.",
"cite_error_references_no_key": "'O tag <code>&lt;ref&gt;</code> definito int'a <code>&lt;references&gt;</code> nun tene n'attribbuto 'e nomme.",
"cite_error_empty_references_define": "'O tag <code>&lt;ref&gt;</code> definito int'a <code>&lt;references&gt;</code> c' 'o nomme \"$1\" nun tene cuntenute.",
"cite-tracking-category-cite-error": "Paggene ch'errure 'e riferimiento",
"cite-tracking-category-cite-error-desc": "Paggene dint'a sta categuria teneno errure int'a l'uso 'e ll'etichette 'e riferimento.",
"cite_references_link_accessibility_label": "Zompa ncopp'a",
"cite_references_link_many_accessibility_label": "Zompa ncoppa nfin'a:"
"cite_references_link_many_accessibility_label": "Zompa ncoppa nfin'a:",
"cite_section_preview_references": "Anteprimma 'e riferimente.",
"cite_warning": "Attenzione dint' 'e note: $1",
"cite_warning_sectionpreview_no_text": "'O tag <code>&lt;ref&gt;</code> c' 'o nomme <code>$1</code> nun se pò mmustà n'anteprimma, pecché è definito a fore d' 'a seziona 'e mò o nun definito 'e nisciuna maniera."
}

View File

@ -4,15 +4,17 @@
"Audun",
"Danmichaelo",
"Laaknor",
"Chameleon222"
"Chameleon222",
"Cocu"
]
},
"cite-desc": "Legger til <nowiki><ref[ name=id]></nowiki> og <nowiki><references/></nowiki>-tagger for referanser",
"cite_error": "Siteringsfeil: $1",
"cite_error_ref_numeric_key": "Ugyldig <code>&lt;ref&gt;</code>-kode; navnet kan ikke være et enkelt heltall, bruk en beskrivende tittel",
"cite_error_ref_no_key": "Ugyldig <code>&lt;ref&gt;</code>-kode; referanser uten innhold må inneholde navn",
"cite_error_ref_no_key": "Åpningstaggen <code>&lt;ref&gt;</code> er ugyldig eller har et ugyldig navn",
"cite_error_ref_too_many_keys": "Ugyldig <code>&lt;ref&gt;</code>-kode; ugyldige navn, f.eks. for mange",
"cite_error_ref_no_input": "Ugyldig <code>&lt;ref&gt;</code>-kode; referanser uten navn må ha innhold",
"cite_error_references_duplicate_key": "Ugyldig <code>&lt;ref&gt;</code>-tagg; navnet «$1» er definert flere steder med ulikt innhold",
"cite_error_references_invalid_parameters": "Ugyldig <code>&lt;references&gt;</code>-kode; ingen parametere tillates, bruk <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Ugyldig <code>&lt;references&gt;</code>-tagg; kun parameteret «group» tillates. Bruk <code>&lt;references /&gt;</code> eller <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Gikk tom for egendefinerte tilbakelenketekster.\nDefiner flere i beskjeden <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>.",
@ -25,7 +27,12 @@
"cite_error_references_missing_key": "<code>&lt;ref&gt;</code>-taggen med navnet «$1» definert i <code>&lt;references&gt;</code> brukes ikke i teksten.",
"cite_error_references_no_key": "<code>&lt;ref&gt;</code>-tagg definert i <code>&lt;references&gt;</code> har ikke noe navneattributt.",
"cite_error_empty_references_define": "<code>&lt;ref&gt;</code>-taggen i <code>&lt;references&gt;</code> med navnet «$1» har ikke noe innhold.",
"cite-tracking-category-cite-error": "Sider med feil i referanser",
"cite-tracking-category-cite-error-desc": "Sider i denne kategorien har feil i bruk av referansetagger",
"cite_references_link_many_format_backlink_labels": "a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az aæ aø aå ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz bæ bø bå ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz cæ cø cå da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz dæ dø då ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez eæ eø eå fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz fæ fø få ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz gæ gø gå ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz hæ hø hå ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz iæ iø iå ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz jæ jø jå ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz kæ kø kå la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz læ lø lå ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz mæ mø må na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz næ nø nå oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz oæ oø oå pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz pæ pø på qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz qæ qø qå ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz ræ rø rå sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz sæ sø så ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz tæ tø tå ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz uæ uø uå va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz væ vø vå wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz wæ wø wå xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz xæ xø xå ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz yæ yø yå za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz zæ zø zå æa æb æc æd æe æf æg æh æi æj æk æl æm æn æo æp æq ær æs æt æu æv æw æx æy æz ææ æø æå øa øb øc ød øe øf øg øh øi øj øk øl øm øn øo øp øq ør øs øt øu øv øw øx øy øz øæ øø øå åa åb åc åd åe åf åg åh åi åj åk ål åm ån åo åp åq år ås åt åu åv åw åx åy åz åæ åø åå",
"cite_references_link_accessibility_label": "Hopp opp",
"cite_references_link_many_accessibility_label": "Hopp opp til:"
"cite_references_link_many_accessibility_label": "Hopp opp til:",
"cite_section_preview_references": "Forhåndsvisning av referanser",
"cite_warning": "Siteringsadvarsel: $1",
"cite_warning_sectionpreview_no_text": "<code>&lt;ref&gt;</code>-taggen med navn <code>$1</code> kan ikke forhåndsvises fordi den enten er definert utenfor det åpne avsnittet eller ikke definert i det hele tatt."
}

View File

@ -4,27 +4,33 @@
"Flightmare",
"Niels",
"Romaine",
"Siebrand"
"Siebrand",
"Dinosaur918"
]
},
"cite-desc": "Voegt <nowiki><ref[ name=id]></nowiki> en <nowiki><references/></nowiki> tags toe voor citaten",
"cite-desc": "Voegt <nowiki><ref[ name=id]></nowiki>- en <nowiki><references/></nowiki>-labels toe voor citaten",
"cite_error": "Citefout: $1",
"cite_error_ref_numeric_key": "Onjuiste tag <code>&lt;ref&gt;</code>;\nde naam kan geen eenvoudige integer zijn.\nGebruik een beschrijvende titel",
"cite_error_ref_no_key": "Onjuiste tag <code>&lt;ref&gt;</code>;\nrefs zonder inhoud moeten een naam hebben",
"cite_error_ref_too_many_keys": "Onjuiste tag <code>&lt;ref&gt;</code>;\nonjuiste namen, bijvoorbeeld te veel",
"cite_error_ref_no_input": "Onjuiste tag <code>&lt;ref&gt;</code>;\nrefs zonder naam moeten inhoud hebben",
"cite_error_references_invalid_parameters": "Onjuiste tag <code>&lt;references&gt;</code>;\nparameters zijn niet toegestaan.\nGebruik <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Ongeldige tag <code>&lt;references&gt;</code>;\nalleen de parameter \"group\" is toegestaan.\nGebruik <code>&lt;references /&gt;</code>, of <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_ref_numeric_key": "Onjuist label <code>&lt;ref&gt;</code>;\nde naam kan geen eenvoudige integer zijn.\nGebruik een beschrijvende titel",
"cite_error_ref_no_key": "Het openingslabel <code>&lt;ref&gt;</code> is onjuist opgemaakt of heeft een verkeerde naam.",
"cite_error_ref_too_many_keys": "Onjuist label <code>&lt;ref&gt;</code>;\nonjuiste namen, bijvoorbeeld te veel",
"cite_error_ref_no_input": "Onjuist label <code>&lt;ref&gt;</code>;\nrefs zonder naam moeten inhoud hebben",
"cite_error_references_duplicate_key": "Ongeldig label <code>&lt;ref&gt;</code>; de naam \"$1\" wordt meerdere keren met andere inhoud gedefinieerd.",
"cite_error_references_invalid_parameters": "Onjuist label <code>&lt;references&gt;</code>;\nparameters zijn niet toegestaan.\nGebruik <code>&lt;references /&gt;</code>",
"cite_error_references_invalid_parameters_group": "Ongeldig label <code>&lt;references&gt;</code>;\nalleen de parameter \"group\" is toegestaan.\nGebruik <code>&lt;references /&gt;</code>, of <code>&lt;references group=\"...\" /&gt;</code>",
"cite_error_references_no_backlink_label": "Het aantal beschikbare backlinklabels is opgebruikt.\nGeef meer labels op in het bericht <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki>",
"cite_error_no_link_label_group": "Het aantal aangepaste koppelinglabels voor de group \"$1\" is uitgeput.\nU kunt er meer instellen in het systeembericht <nowiki>[[MediaWiki:$2]]</nowiki>.",
"cite_error_references_no_text": "Onjuiste tag <code>&lt;ref&gt;</code>;\ner is geen tekst opgegeven voor refs met de naam <code>$1</code>",
"cite_error_references_no_text": "Onjuist label <code>&lt;ref&gt;</code>;\ner is geen tekst opgegeven voor referenties met de naam <code>$1</code>",
"cite_error_included_ref": "Na het label <code>&lt;ref&gt;</code> ontbreekt het afsluitende label <code>&lt;/ref&gt;</code>",
"cite_error_group_refs_without_references": "Er bestaat een tag <code>&lt;ref&gt;</code> voor de groep \"$1\", maar er is geen bijbehorende tag <code>&lt;references group=\"$1\"/&gt;</code> aangetroffen of een afsluitende <code>&lt;/ref&gt;</code> is niet aanwezig.",
"cite_error_group_refs_without_references": "Er bestaat een label <code>&lt;ref&gt;</code> voor de groep \"$1\", maar er is geen bijbehorend label <code>&lt;references group=\"$1\"/&gt;</code> aangetroffen of een afsluitende <code>&lt;/ref&gt;</code> is niet aanwezig.",
"cite_error_references_group_mismatch": "De tag <code>&lt;ref&gt;</code> in <code>&lt;references&gt;</code> conflicteert met groepseigenschap \"$1\".",
"cite_error_references_missing_group": "De tag <code>&lt;ref&gt;</code> die is gedefinieerd in <code>&lt;references&gt;</code> heeft de groepseigenschap \"$1\" niet niet eerder in te tekst voorkomt.",
"cite_error_references_missing_key": "De tag <code>&lt;ref&gt;</code> met de naam \"$1\" gedefinieerd in <code>&lt;references&gt;</code> wordt niet eerder in de tekst gebruikt.",
"cite_error_references_no_key": "De tag <code>&lt;ref&gt;</code> die is gedefinieerd in <code>&lt;references&gt;</code> heeft geen eigenschapsnaam.",
"cite_error_empty_references_define": "De tag <code>&lt;ref&gt;</code> die is gedefinieerd in <code>&lt;references&gt;</code> met de naam \"$1\" heeft geen inhoud.",
"cite_error_references_missing_group": "Het label <code>&lt;ref&gt;</code> die is gedefinieerd in <code>&lt;references&gt;</code> heeft de groepseigenschap \"$1\" niet niet eerder in te tekst voorkomt.",
"cite_error_references_missing_key": "Het label <code>&lt;ref&gt;</code> met de naam \"$1\" gedefinieerd in <code>&lt;references&gt;</code> wordt niet eerder in de tekst gebruikt.",
"cite_error_references_no_key": "Het label <code>&lt;ref&gt;</code> die is gedefinieerd in <code>&lt;references&gt;</code> heeft geen eigenschapsnaam.",
"cite_error_empty_references_define": "Het label <code>&lt;ref&gt;</code> die is gedefinieerd in <code>&lt;references&gt;</code> met de naam \"$1\" heeft geen inhoud.",
"cite-tracking-category-cite-error": "Pagina's met referentiefouten",
"cite_references_link_accessibility_label": "Omhoog",
"cite_references_link_many_accessibility_label": "Omhoog naar:"
"cite_references_link_many_accessibility_label": "Omhoog naar:",
"cite_section_preview_references": "Voorbeeldweergave van de referenties",
"cite_warning": "Referentiewaarschuwing: $1",
"cite_warning_sectionpreview_no_text": "Van <code>&lt;ref&gt;</code> met de naam <code>$1</code> kan geen voorvertoning gegeven worden, daar deze niet in de huidige sectie of in zijn geheel niet gedefinieerd wordt."
}

Some files were not shown because too many files have changed in this diff Show More