=== New features in 1.20 ===
* Added TitleIsAlwaysKnown hook which gets called when determining if a page exists.
+* Added NamespaceIsMovable hook which gets called when determining if pages in a
+ certain namespace can be moved.
* (bug 32341) Add upload by URL domain limitation.
* &useskin=default will now always display the default skin. Useful for users with a
preference for the non-default skin to look at something using the default skin.
* (bug 5445) Now remove autoblocks when a user is unblocked.
* Added $wgLogExceptionBacktrace, on by default, to allow logging of exception
backtraces.
+* Added device detection for determining device capabilities.
+* QUnit.newMwEnvironment now supports passing a custom setup and/or teardown function.
+ Arguments signature has changed. First arguments is now an options object of which
+ 'config' can be a property. Previously 'config' itself was the first and only argument.
+* New getCreator and getOldestRevision methods added to WikiPage class
=== Bug fixes in 1.20 ===
* (bug 30245) Use the correct way to construct a log page title.
* (bug 30410) Removed deprecated $wgFilterCallback and the 'filtered' API error.
* (bug 32604) Some messages needs escaping of wikitext inside username
* (bug 36537) Rename wfArrayToCGI to wfArrayToCgi for consistency with wfCgiToArray.
+ * (bug 25946) The message on the top of Special:RecentChanges is now displayed
+ in user language instead of content language
=== API changes in 1.20 ===
* (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
'mergelogpagetext' => 'Below is a list of the most recent merges of one page history into another.',
# Diffs
-'history-title' => 'Revision history of "$1"',
-'difference' => '(Difference between revisions)',
-'difference-multipage' => '(Difference between pages)',
-'lineno' => 'Line $1:',
-'compareselectedversions' => 'Compare selected revisions',
-'showhideselectedversions' => 'Show/hide selected revisions',
-'editundo' => 'undo',
-'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
-'diff-multi-manyusers' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by more than $2 {{PLURAL:$2|user|users}} not shown)',
+'history-title' => 'Revision history of "$1"',
+'difference-title' => 'Difference between revisions of "$1"',
+'difference-title-multipage' => 'Difference between pages "$1" and "$2"',
+'difference-multipage' => '(Difference between pages)',
+'lineno' => 'Line $1:',
+'compareselectedversions' => 'Compare selected revisions',
+'showhideselectedversions' => 'Show/hide selected revisions',
+'editundo' => 'undo',
+'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
+'diff-multi-manyusers' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by more than $2 {{PLURAL:$2|user|users}} not shown)',
# Search results
'search-summary' => '', # do not translate or duplicate this message to other languages
'recentchanges' => 'Recent changes',
'recentchanges-url' => 'Special:RecentChanges', # do not translate or duplicate this message to other languages
'recentchanges-legend' => 'Recent changes options',
- 'recentchangestext' => 'Track the most recent changes to the wiki on this page.',
+ 'recentchanges-summary' => 'Track the most recent changes to the wiki on this page.',
+ 'recentchangestext' => '-', # do not translate or duplicate this message to other languages
'recentchanges-feed-description' => 'Track the most recent changes to the wiki in this feed.',
'recentchanges-label-newpage' => 'This edit created a new page',
'recentchanges-label-minor' => 'This is a minor edit',
'backend-fail-writetemp' => 'Could not write to temporary file.',
'backend-fail-closetemp' => 'Could not close temporary file.',
'backend-fail-read' => 'Could not read file $1.',
-'backend-fail-create' => 'Could not create file $1.',
-'backend-fail-maxsize' => 'Could not create file $1 because it is larger than {{PLURAL:$2|one byte|$2 bytes}}.',
+'backend-fail-create' => 'Could not write file $1.',
+'backend-fail-maxsize' => 'Could not write file $1 because it is larger than {{PLURAL:$2|one byte|$2 bytes}}.',
+'backend-fail-usable' => 'Could not write file $1 due to insufficient permissions or missing directories/containers.',
'backend-fail-readonly' => 'The storage backend "$1" is currently read-only. The reason given is: "\'\'$2\'\'"',
'backend-fail-synced' => 'The file "$1" is in an inconsistent state within the internal storage backends',
'backend-fail-connect' => 'Could not connect to storage backend "$1".',
* @author Sherbrooke
* @author Shirayuki
* @author Shushruth
+ * @author Siddhartha Ghai
* @author Siebrand
* @author Singularity
* @author Sionnach
{{Identical|View source}}',
'editsectionhint' => "Tool tip shown when hovering the mouse over the link to '[{{MediaWiki:Editsection}}]' a section. Example: Edit section: Heading name",
-'toc' => 'Ini adalah judul "Daftar isi" yang terlihat pada halaman yang memiliki lebih dari 3 bagian
+'toc' => 'This is the title of the table of contents displayed in pages with more than 3 sections
{{Identical|Contents}}',
'showtoc' => 'This is the link used to show the table of contents
# Diffs
'history-title' => 'Displayed as page title when you click on the "history" tab. The parameter $1 is the normal page title.',
-'difference' => 'Displayed under the title when viewing the difference between two or more edits.',
+'difference-title' => 'Displayed as page title when viewing the difference between two edits of the same page. The parameter $1 is the page title of the two revisions.',
+'difference-title-multipage' => 'Displayed as page title when viewing the difference between two edits of different pages. The parameter $1 is the page title of the old revision and $2 is the page title of the new revision.',
'difference-multipage' => 'Displayed under the title when viewing the difference between two or more pages.
See also {{msg-mw|difference}}.',
'lineno' => 'Message used when comparing different versions of a page (diff). $1 is a line number.',
{{Identical|Recent changes}}',
'recentchanges-legend' => 'Legend of the fieldset of [[Special:RecentChanges]]',
- 'recentchangestext' => 'Text in recent changes',
+ 'recentchanges-summary' => 'Summary of [[Special:RecentChanges]].',
'recentchanges-label-newpage' => 'Tooltip for {{msg-mw|newpageletter}}',
'recentchanges-label-minor' => 'Tooltip for {{msg-mw|newpageletter}}',
'recentchanges-label-bot' => 'Tooltip for {{msg-mw|boteditletter}}',
Parameters:
* $1 is the number of operations attempted at once in this case.
* $2 is the maximum number of operations that can be attempted at once.',
+'backend-fail-usable' => 'Parameters:
+* $1 is the file name, including the path, formatted for the storage backend used',
# File journal errors
'filejournal-fail-dbconnect' => 'Parameters:
{{Identical|Reason}}',
'revertmove' => '{{Identical|Revert}}',
+'delete_and_move' => 'Button text on the move page when the target page already exists.',
'delete_and_move_text' => 'Used when moving a page, but the destination page already exists and needs deletion. This message is to confirm that you really want to delete the page. See also {{msg|delete and move confirm}}.',
'delete_and_move_confirm' => 'Used when moving a page, but the destination page already exists and needs deletion. This message is for a checkbox to confirm that you really want to delete the page. See also {{msg|delete and move text}}.',
'delete_and_move_reason' => 'Shown as reason in content language in the deletion log. Parameter:
),
'diffs' => array(
'history-title',
- 'difference',
+ 'difference-title',
+ 'difference-title-multipage',
'difference-multipage',
'lineno',
'compareselectedversions',
'recentchanges',
'recentchanges-url',
'recentchanges-legend',
+ 'recentchanges-summary',
'recentchangestext',
'recentchanges-feed-description',
'recentchanges-label-newpage',
'backend-fail-connect',
'backend-fail-internal',
'backend-fail-contenttype',
- 'backend-fail-batchsize'
+ 'backend-fail-batchsize',
+ 'backend-fail-usable'
),
'filejournal-errors' => array(