Fix for bug 28235: IE6 looks for the file extension in the query string
[lhc/web/wiklou.git] / languages / messages / MessagesEn.php
index 2d2eef9..46f5faf 100644 (file)
@@ -112,16 +112,14 @@ $namespaceNames = array(
 $namespaceAliases = array();
 
 /**
- * Deprecated, use the message array
- */
-$mathNames = array(
-       MW_MATH_PNG => 'mw_math_png',
-       MW_MATH_SIMPLE => 'mw_math_simple',
-       MW_MATH_HTML => 'mw_math_html',
-       MW_MATH_SOURCE => 'mw_math_source',
-       MW_MATH_MODERN => 'mw_math_modern',
-       MW_MATH_MATHML => 'mw_math_mathml'
+ * Array of gender specific. namespace aliases.
+ * Mapping NS_xxx to array of GENDERKEY to alias.
+ * Example:
+$namespaceGenderAliases = array(
+       NS_USER => array( 'male' => 'Male_user', 'female' => 'Female_user' ),
 );
+ */
+$namespaceGenderAliases = array();
 
 /**
  * A list of date format preference keys which can be selected in user
@@ -368,102 +366,102 @@ $magicWords = array(
  * hook.
  */
 $specialPageAliases = array(
-       'DoubleRedirects'           => array( 'DoubleRedirects' ),
+       'Activeusers'               => array( 'ActiveUsers' ),
+       'Allmessages'               => array( 'AllMessages' ),
+       'Allpages'                  => array( 'AllPages' ),
+       'Ancientpages'              => array( 'AncientPages' ),
+       'Blankpage'                 => array( 'BlankPage' ),
+       'Block'                     => array( 'Block', 'BlockIP', 'BlockUser' ),
+       'Blockme'                   => array( 'BlockMe' ),
+       'Booksources'               => array( 'BookSources' ),
        'BrokenRedirects'           => array( 'BrokenRedirects' ),
-       'Disambiguations'           => array( 'Disambiguations' ),
-       'Userlogin'                 => array( 'UserLogin' ),
-       'Userlogout'                => array( 'UserLogout' ),
+       'Categories'                => array( 'Categories' ),
+       'ComparePages'              => array( 'ComparePages' ),
+       'Confirmemail'              => array( 'ConfirmEmail' ),
+       'Contributions'             => array( 'Contributions', 'Contribs' ),
        'CreateAccount'             => array( 'CreateAccount' ),
-       'Preferences'               => array( 'Preferences' ),
-       'Watchlist'                 => array( 'Watchlist' ),
-       'Recentchanges'             => array( 'RecentChanges' ),
-       'Upload'                    => array( 'Upload' ),
-       'UploadStash'               => array( 'UploadStash' ),
+       'Deadendpages'              => array( 'DeadendPages' ),
+       'DeletedContributions'      => array( 'DeletedContributions' ),
+       'DisableAccount'            => array( 'DisableAccount' ),
+       'Disambiguations'           => array( 'Disambiguations' ),
+       'DoubleRedirects'           => array( 'DoubleRedirects' ),
+       'EditWatchlist'             => array( 'EditWatchlist' ),
+       'Emailuser'                 => array( 'EmailUser' ),
+       'Export'                    => array( 'Export' ),
+       'Fewestrevisions'           => array( 'FewestRevisions' ),
+       'FileDuplicateSearch'       => array( 'FileDuplicateSearch' ),
+       'Filepath'                  => array( 'FilePath' ),
+       'Import'                    => array( 'Import' ),
+       'Invalidateemail'           => array( 'InvalidateEmail' ),
+       'BlockList'                 => array( 'BlockList', 'ListBlocks', 'IPBlockList' ),
+       'LinkSearch'                => array( 'LinkSearch' ),
+       'Listadmins'                => array( 'ListAdmins' ),
+       'Listbots'                  => array( 'ListBots' ),
        'Listfiles'                 => array( 'ListFiles', 'FileList', 'ImageList' ),
-       'Newimages'                 => array( 'NewFiles', 'NewImages' ),
-       'Listusers'                 => array( 'ListUsers', 'UserList' ),
        'Listgrouprights'           => array( 'ListGroupRights', 'UserGroupRights' ),
-       'Statistics'                => array( 'Statistics' ),
-       'Randompage'                => array( 'Random', 'RandomPage' ),
+       'Listredirects'             => array( 'ListRedirects' ),
+       'Listusers'                 => array( 'ListUsers', 'UserList' ),
+       'Lockdb'                    => array( 'LockDB' ),
+       'Log'                       => array( 'Log', 'Logs' ),
        'Lonelypages'               => array( 'LonelyPages', 'OrphanedPages' ),
-       'Uncategorizedpages'        => array( 'UncategorizedPages' ),
-       'Uncategorizedcategories'   => array( 'UncategorizedCategories' ),
-       'Uncategorizedimages'       => array( 'UncategorizedFiles', 'UncategorizedImages' ),
-       'Uncategorizedtemplates'    => array( 'UncategorizedTemplates' ),
-       'Unusedcategories'          => array( 'UnusedCategories' ),
-       'Unusedimages'              => array( 'UnusedFiles', 'UnusedImages' ),
-       'Wantedpages'               => array( 'WantedPages', 'BrokenLinks' ),
-       'Wantedcategories'          => array( 'WantedCategories' ),
-       'Wantedfiles'               => array( 'WantedFiles' ),
-       'Wantedtemplates'           => array( 'WantedTemplates' ),
+       'Longpages'                 => array( 'LongPages' ),
+       'MergeHistory'              => array( 'MergeHistory' ),
+       'MIMEsearch'                => array( 'MIMESearch' ),
+       'Mostcategories'            => array( 'MostCategories' ),
+       'Mostimages'                => array( 'MostLinkedFiles', 'MostFiles', 'MostImages' ),
        'Mostlinked'                => array( 'MostLinkedPages', 'MostLinked' ),
        'Mostlinkedcategories'      => array( 'MostLinkedCategories', 'MostUsedCategories' ),
        'Mostlinkedtemplates'       => array( 'MostLinkedTemplates', 'MostUsedTemplates' ),
-       'Mostimages'                => array( 'MostLinkedFiles', 'MostFiles', 'MostImages' ),
-       'Mostcategories'            => array( 'MostCategories' ),
        'Mostrevisions'             => array( 'MostRevisions' ),
-       'Fewestrevisions'           => array( 'FewestRevisions' ),
-       'Shortpages'                => array( 'ShortPages' ),
-       'Longpages'                 => array( 'LongPages' ),
-       'Newpages'                  => array( 'NewPages' ),
-       'Ancientpages'              => array( 'AncientPages' ),
-       'Deadendpages'              => array( 'DeadendPages' ),
-       'Protectedpages'            => array( 'ProtectedPages' ),
-       'Protectedtitles'           => array( 'ProtectedTitles' ),
-       'Allpages'                  => array( 'AllPages' ),
-       'Prefixindex'               => array( 'PrefixIndex' ) ,
-       'Ipblocklist'               => array( 'BlockList', 'ListBlocks', 'IPBlockList' ),
-       'Unblock'                   => array( 'Unblock' ),
-       'Specialpages'              => array( 'SpecialPages' ),
-       'Contributions'             => array( 'Contributions', 'Contribs' ),
-       'Emailuser'                 => array( 'EmailUser' ),
-       'Confirmemail'              => array( 'ConfirmEmail' ),
-       'Whatlinkshere'             => array( 'WhatLinksHere' ),
-       'Recentchangeslinked'       => array( 'RecentChangesLinked', 'RelatedChanges' ),
        'Movepage'                  => array( 'MovePage' ),
-       'Blockme'                   => array( 'BlockMe' ),
-       'Booksources'               => array( 'BookSources' ),
-       'Categories'                => array( 'Categories' ),
-       'Export'                    => array( 'Export' ),
-       'Version'                   => array( 'Version' ),
-       'Allmessages'               => array( 'AllMessages' ),
-       'Log'                       => array( 'Log', 'Logs' ),
-       'Blockip'                   => array( 'Block', 'BlockIP', 'BlockUser' ),
-       'Undelete'                  => array( 'Undelete' ),
-       'Import'                    => array( 'Import' ),
-       'Lockdb'                    => array( 'LockDB' ),
-       'Unlockdb'                  => array( 'UnlockDB' ),
-       'Userrights'                => array( 'UserRights', 'MakeSysop', 'MakeBot' ),
-       'MIMEsearch'                => array( 'MIMESearch' ),
-       'FileDuplicateSearch'       => array( 'FileDuplicateSearch' ),
-       'Unwatchedpages'            => array( 'UnwatchedPages' ),
-       'Listredirects'             => array( 'ListRedirects' ),
-       'Revisiondelete'            => array( 'RevisionDelete' ),
-       'Unusedtemplates'           => array( 'UnusedTemplates' ),
-       'Randomredirect'            => array( 'RandomRedirect' ),
+       'Mycontributions'           => array( 'MyContributions' ),
        'Mypage'                    => array( 'MyPage' ),
        'Mytalk'                    => array( 'MyTalk' ),
-       'Mycontributions'           => array( 'MyContributions' ),
        'Myuploads'                 => array( 'MyUploads' ),
+       'Newimages'                 => array( 'NewFiles', 'NewImages' ),
+       'Newpages'                  => array( 'NewPages' ),
        'PermanentLink'             => array( 'PermanentLink', 'PermaLink' ),
-       'Listadmins'                => array( 'ListAdmins' ),
-       'Listbots'                  => array( 'ListBots' ),
        'Popularpages'              => array( 'PopularPages' ),
-       'Search'                    => array( 'Search' ),
+       'Preferences'               => array( 'Preferences' ),
+       'Prefixindex'               => array( 'PrefixIndex' ) ,
+       'Protectedpages'            => array( 'ProtectedPages' ),
+       'Protectedtitles'           => array( 'ProtectedTitles' ),
+       'Randompage'                => array( 'Random', 'RandomPage' ),
+       'Randomredirect'            => array( 'RandomRedirect' ),
+       'Recentchanges'             => array( 'RecentChanges' ),
+       'Recentchangeslinked'       => array( 'RecentChangesLinked', 'RelatedChanges' ),
        'Resetpass'                 => array( 'ChangePassword', 'ResetPass', 'ResetPassword' ),
-       'Withoutinterwiki'          => array( 'WithoutInterwiki' ),
-       'MergeHistory'              => array( 'MergeHistory' ),
-       'Filepath'                  => array( 'FilePath' ),
-       'Invalidateemail'           => array( 'InvalidateEmail' ),
-       'Blankpage'                 => array( 'BlankPage' ),
-       'LinkSearch'                => array( 'LinkSearch' ),
-       'DeletedContributions'      => array( 'DeletedContributions' ),
-       'Tags'                      => array( 'Tags' ),
-       'Activeusers'               => array( 'ActiveUsers' ),
+       'Revisiondelete'            => array( 'RevisionDelete' ),
        'RevisionMove'              => array( 'RevisionMove' ),
-       'ComparePages'              => array( 'ComparePages' ),
-       'Badtitle'                  => array( 'Badtitle' ),
-       'DisableAccount'            => array( 'DisableAccount' ),
+       'Search'                    => array( 'Search' ),
+       'Shortpages'                => array( 'ShortPages' ),
+       'Specialpages'              => array( 'SpecialPages' ),
+       'Statistics'                => array( 'Statistics' ),
+       'Tags'                      => array( 'Tags' ),
+       'Unblock'                   => array( 'Unblock' ),
+       'Uncategorizedcategories'   => array( 'UncategorizedCategories' ),
+       'Uncategorizedimages'       => array( 'UncategorizedFiles', 'UncategorizedImages' ),
+       'Uncategorizedpages'        => array( 'UncategorizedPages' ),
+       'Uncategorizedtemplates'    => array( 'UncategorizedTemplates' ),
+       'Undelete'                  => array( 'Undelete' ),
+       'Unlockdb'                  => array( 'UnlockDB' ),
+       'Unusedcategories'          => array( 'UnusedCategories' ),
+       'Unusedimages'              => array( 'UnusedFiles', 'UnusedImages' ),
+       'Unusedtemplates'           => array( 'UnusedTemplates' ),
+       'Unwatchedpages'            => array( 'UnwatchedPages' ),
+       'Upload'                    => array( 'Upload' ),
+       'UploadStash'               => array( 'UploadStash' ),
+       'Userlogin'                 => array( 'UserLogin' ),
+       'Userlogout'                => array( 'UserLogout' ),
+       'Userrights'                => array( 'UserRights', 'MakeSysop', 'MakeBot' ),
+       'Version'                   => array( 'Version' ),
+       'Wantedcategories'          => array( 'WantedCategories' ),
+       'Wantedfiles'               => array( 'WantedFiles' ),
+       'Wantedpages'               => array( 'WantedPages', 'BrokenLinks' ),
+       'Wantedtemplates'           => array( 'WantedTemplates' ),
+       'Watchlist'                 => array( 'Watchlist' ),
+       'Whatlinkshere'             => array( 'WhatLinksHere' ),
+       'Withoutinterwiki'          => array( 'WithoutInterwiki' ),
 );
 
 /**
@@ -652,8 +650,8 @@ XHTML id names.
 'tog-shownumberswatching'     => 'Show the number of watching users',
 'tog-oldsig'                  => 'Preview of existing signature:',
 'tog-fancysig'                => 'Treat signature as wikitext (without an automatic link)',
-'tog-externaleditor'          => 'Use external editor by default (for experts only, needs special settings on your computer)',
-'tog-externaldiff'            => 'Use external diff by default (for experts only, needs special settings on your computer)',
+'tog-externaleditor'          => 'Use external editor by default (for experts only, needs special settings on your computer. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff'            => 'Use external diff by default (for experts only, needs special settings on your computer. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
 'tog-showjumplinks'           => 'Enable "jump to" accessibility links',
 'tog-uselivepreview'          => 'Use live preview (requires JavaScript) (experimental)',
 'tog-forceeditsummary'        => 'Prompt me when entering a blank edit summary',
@@ -946,6 +944,7 @@ See [[Special:Version|version page]].',
 'nstab-template'  => 'Template',
 'nstab-help'      => 'Help page',
 'nstab-category'  => 'Category',
+'mainpage-nstab'  => '', # do not translate or duplicate this message to other languages
 
 # Main script and global functions
 'nosuchaction'      => 'No such action',
@@ -1142,6 +1141,7 @@ You may ignore this message, if this account was created in error.',
 'usernamehasherror'          => 'Username cannot contain hash characters',
 'login-throttled'            => 'You have made too many recent login attempts.
 Please wait before trying again.',
+'login-abort-generic'        => 'Your login was unsuccessful - Aborted',
 'loginlanguagelabel'         => 'Language: $1',
 'loginlanguagelinks'         => '* Deutsch|de
 * English|en
@@ -1197,8 +1197,6 @@ You may have already successfully changed your password or requested a new tempo
 'extlink_tip'     => 'External link (remember http:// prefix)',
 'headline_sample' => 'Headline text',
 'headline_tip'    => 'Level 2 headline',
-'math_sample'     => 'Insert formula here',
-'math_tip'        => 'Mathematical formula (LaTeX)',
 'nowiki_sample'   => 'Insert non-formatted text here',
 'nowiki_tip'      => 'Ignore wiki formatting',
 'image_sample'    => 'Example.jpg', # only translate this message to other languages if you have to change it
@@ -1331,6 +1329,7 @@ If it still does not work, try [[Special:UserLogout|logging out]] and logging ba
 'token_suffix_mismatch'            => "'''Your edit has been rejected because your client mangled the punctuation characters in the edit token.'''
 The edit has been rejected to prevent corruption of the page text.
 This sometimes happens when you are using a buggy web-based anonymous proxy service.",
+'edit_form_incomplete'             => "'''Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.'''",
 'editing'                          => 'Editing $1',
 'editingsection'                   => 'Editing $1 (section)',
 'editingcomment'                   => 'Editing $1 (new section)',
@@ -1377,6 +1376,7 @@ The latest log entry is provided below for reference:",
 'template-semiprotected'           => '(semi-protected)',
 'hiddencategories'                 => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:',
 'edittools'                        => '<!-- Text here will be shown below edit and upload forms. -->', # only translate this message to other languages if you have to change it
+'edittools-upload'                 => '-', # only translate this message to other languages if you have to change it
 'nocreatetitle'                    => 'Page creation limited',
 'nocreatetext'                     => '{{SITENAME}} has restricted the ability to create new pages.
 You can go back and edit an existing page, or [[Special:UserLogin|log in or create an account]].',
@@ -1468,7 +1468,7 @@ It may have been deleted from the wiki, or renamed.
 Try [[Special:Search|searching on the wiki]] for relevant new pages.',
 
 # Revision deletion
-'rev-deleted-comment'         => '(comment removed)',
+'rev-deleted-comment'         => '(edit summary removed)',
 'rev-deleted-user'            => '(username removed)',
 'rev-deleted-event'           => '(log action removed)',
 'rev-deleted-user-contribs'   => '[username or IP address removed - edit hidden from contributions]',
@@ -1578,7 +1578,7 @@ Please check the logs.',
 # Suppression log
 'suppressionlog'     => 'Suppression log',
 'suppressionlogtext' => 'Below is a list of deletions and blocks involving content hidden from administrators.
-See the [[Special:IPBlockList|IP block list]] for the list of currently operational bans and blocks.',
+See the [[Special:BlockList|IP block list]] for the list of currently operational bans and blocks.',
 
 # Revision move
 'moverevlogentry'              => 'moved {{PLURAL:$3|one revision|$3 revisions}} from $1 to $2',
@@ -1664,7 +1664,7 @@ Note that using the navigation links will reset this column.',
 'searchmenu-legend'                => 'Search options',
 'searchmenu-exists'                => "'''There is a page named \"[[:\$1]]\" on this wiki.'''",
 'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!'''",
-'searchmenu-new-nocreate'          => '', # do not translate or duplicate this message to other languages
+'searchmenu-new-nocreate'          => '"$1" is an invalid page name or cannot be created by you.',
 'searchhelp-url'                   => 'Help:Contents',
 'searchmenu-prefix'                => '[[Special:PrefixIndex/$1|Browse pages with this prefix]]',
 'searchmenu-help'                  => '[[{{MediaWiki:Searchhelp-url}}|{{int:help}}]]?', # do not translate or duplicate this message to other languages
@@ -1748,7 +1748,6 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 'changepassword'                => 'Change password',
 'prefs-skin'                    => 'Skin',
 'skin-preview'                  => 'Preview',
-'prefs-math'                    => 'Math',
 'datedefault'                   => 'No preference',
 'prefs-datetime'                => 'Date and time',
 'prefs-personal'                => 'User profile',
@@ -1839,8 +1838,8 @@ This information will be public.',
 'email'                         => 'E-mail',
 'prefs-help-realname'           => 'Real name is optional.
 If you choose to provide it, this will be used for giving you attribution for your work.',
-'prefs-help-email'              => 'E-mail address is optional, but is needed for password resets, should you forget your password.
-You can also choose to let others contact you through your user or talk page without needing to reveal your identity.',
+'prefs-help-email'              => 'E-mail address is optional, but is needed for password resets, should you forget your password.',
+'prefs-help-email-others'       => 'You can also choose to let others contact you through your user or talk page without needing to reveal your identity.',
 'prefs-help-email-required'     => 'E-mail address is required.',
 'prefs-info'                    => 'Basic information',
 'prefs-i18n'                    => 'Internationalisation',
@@ -1857,6 +1856,10 @@ You can also choose to let others contact you through your user or talk page wit
 'prefs-displaywatchlist'        => 'Display options',
 'prefs-diffs'                   => 'Diffs',
 
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid'   => 'E-mail address appears valid',
+'email-address-validity-invalid' => 'Enter a valid e-mail address',
+
 # User rights
 'userrights'                     => 'User rights management',
 'userrights-summary'             => '', # do not translate or duplicate this message to other languages
@@ -2105,13 +2108,13 @@ See the [[Special:NewFiles|gallery of new files]] for a more visual overview.',
 'illegalfilename'             => 'The filename "$1" contains characters that are not allowed in page titles.
 Please rename the file and try uploading it again.',
 'badfilename'                 => 'File name has been changed to "$1".',
-'filetype-mime-mismatch'      => 'File extension does not match MIME type.',
+'filetype-mime-mismatch'      => 'File extension ".$1" does not match the detected MIME type of the file ($2).',
 'filetype-badmime'            => 'Files of the MIME type "$1" are not allowed to be uploaded.',
 'filetype-bad-ie-mime'        => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
 'filetype-unwanted-type'      => "'''\".\$1\"''' is an unwanted file type.
 Preferred {{PLURAL:\$3|file type is|file types are}} \$2.",
-'filetype-banned-type'        => "'''\".\$1\"''' is not a permitted file type.
-Permitted {{PLURAL:\$3|file type is|file types are}} \$2.",
+'filetype-banned-type'        => '\'\'\'".$1"\'\'\' {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
+Permitted {{PLURAL:$3|file type is|file types are}} $2.',
 'filetype-missing'            => 'The file has no extension (like ".jpg").',
 'empty-file'                  => 'The file you submitted was empty.',
 'file-too-large'              => 'The file you submitted was too large.',
@@ -2154,7 +2157,7 @@ If you still want to upload your file, please go back and use a new name.
 If you still want to upload your file, please go back and use a new name.
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate'       => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
-'file-deleted-duplicate'      => "A file identical to this file ([[$1]]) has previously been deleted.
+'file-deleted-duplicate'      => "A file identical to this file ([[:$1]]) has previously been deleted.
 You should check that file's deletion history before proceeding to re-upload it.",
 'uploadwarning'               => 'Upload warning',
 'uploadwarning-text'          => 'Please modify the file description below and try again.',
@@ -2170,6 +2173,8 @@ Please check the file_uploads setting.',
 'uploadscripted'              => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
 'uploadvirus'                 => 'The file contains a virus!
 Details: $1',
+'uploadjava'                  => 'The file is a ZIP file which contains a Java .class file.
+Uploading Java files is not allowed, because they can cause security restrictions to be bypassed.',
 'upload-source'               => 'Source file',
 'sourcefilename'              => 'Source filename:',
 'sourceurl'                   => 'Source URL:',
@@ -2222,6 +2227,14 @@ If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
 'upload-unknown-size'       => 'Unknown size',
 'upload-http-error'         => 'An HTTP error occured: $1',
 
+# ZipDirectoryReader
+'zip-file-open-error' => 'An error was encountered when opening the file for ZIP checks.',
+'zip-wrong-format'    => 'The specified file was not a ZIP file.',
+'zip-bad'             => 'The file is a corrupt or otherwise unreadable ZIP file.
+It cannot be properly checked for security.',
+'zip-unsupported'     => 'The file is a ZIP file which uses ZIP features not supported by MediaWiki.
+It cannot be properly checked for security.',
+
 # Special:UploadStash
 'uploadstash'          => 'Upload stash',
 'uploadstash-summary'  => 'This page provides access to files which are uploaded (or in the process of uploading) but are not yet published to the wiki. These files are not visible to anyone but the user who uploaded them.',
@@ -2248,6 +2261,7 @@ Only file access is allowed.',
 This wiki is configured as a public wiki.
 For optimal security, img_auth.php is disabled.',
 'img-auth-noread'       => 'User does not have access to read "$1".',
+'img-auth-bad-query-string' => 'The URL has an invalid query string.',
 
 # HTTP errors
 'http-invalid-url'      => 'Invalid URL: $1',
@@ -2423,14 +2437,15 @@ Remember to check for other links to the templates before deleting them.',
 They should link to the appropriate topic instead.<br />
 A page is treated as disambiguation page if it uses a template which is linked from [[MediaWiki:Disambiguationspage]]",
 
-'doubleredirects'            => 'Double redirects',
-'doubleredirects-summary'    => '', # do not translate or duplicate this message to other languages
-'doubleredirectstext'        => 'This page lists pages which redirect to other redirect pages.
+'doubleredirects'                   => 'Double redirects',
+'doubleredirects-summary'           => '', # do not translate or duplicate this message to other languages
+'doubleredirectstext'               => 'This page lists pages which redirect to other redirect pages.
 Each row contains links to the first and second redirect, as well as the target of the second redirect, which is usually the "real" target page, which the first redirect should point to.
 <del>Crossed out</del> entries have been solved.',
-'double-redirect-fixed-move' => '[[$1]] has been moved.
+'double-redirect-fixed-move'        => '[[$1]] has been moved.
 It now redirects to [[$2]].',
-'double-redirect-fixer'      => 'Redirect fixer',
+'double-redirect-fixed-maintenance' => 'Fixing double redirect from [[$1]] to [[$2]].',
+'double-redirect-fixer'             => 'Redirect fixer',
 
 'brokenredirects'         => 'Broken redirects',
 'brokenredirects-summary' => '', # do not translate or duplicate this message to other languages
@@ -2934,9 +2949,10 @@ $1',
 'undelete-show-file-submit'    => 'Yes',
 
 # Namespace form on various pages
-'namespace'      => 'Namespace:',
-'invert'         => 'Invert selection',
-'blanknamespace' => '(Main)',
+'namespace'             => 'Namespace:',
+'invert'                => 'Invert selection',
+'namespace_association' => 'Associated namespace',
+'blanknamespace'        => '(Main)',
 
 # Contributions
 'contributions'       => 'User contributions',
@@ -2991,13 +3007,15 @@ The latest block log entry is provided below for reference:',
 'whatlinkshere-filters'    => 'Filters',
 
 # Block/unblock
+'autoblockid'                     => 'Autoblock #$1',
+'block'                           => 'Block user',
+'unblock'                         => 'Unblock user',
 'blockip'                         => 'Block user',
 'blockip-title'                   => 'Block user',
 'blockip-legend'                  => 'Block user',
 'blockiptext'                     => 'Use the form below to block write access from a specific IP address or username.
 This should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].
 Fill in a specific reason below (for example, citing particular pages that were vandalized).',
-'ipaddress'                       => 'IP address:',
 'ipadressorusername'              => 'IP address or username:',
 'ipbexpiry'                       => 'Expiry:',
 'ipbreason'                       => 'Reason:',
@@ -3010,23 +3028,26 @@ Fill in a specific reason below (for example, citing particular pages that were
 ** Intimidating behaviour/harassment
 ** Abusing multiple accounts
 ** Unacceptable username',
-'ipbanononly'                     => 'Block anonymous users only',
+'ipb-hardblock'                   => 'Prevent logged-in users from editing from this IP address',
 'ipbcreateaccount'                => 'Prevent account creation',
 'ipbemailban'                     => 'Prevent user from sending e-mail',
 'ipbenableautoblock'              => 'Automatically block the last IP address used by this user, and any subsequent IP addresses they try to edit from',
 'ipbsubmit'                       => 'Block this user',
 'ipbother'                        => 'Other time:',
-'ipboptions'                      => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
+'ipboptions'                      => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,indefinite:infinite',
 'ipbotheroption'                  => 'other',
 'ipbotherreason'                  => 'Other/additional reason:',
 'ipbhidename'                     => 'Hide username from edits and lists',
 'ipbwatchuser'                    => "Watch this user's user and talk pages",
-'ipballowusertalk'                => 'Allow this user to edit own talk page while blocked',
+'ipb-disableusertalk'             => 'Prevent this user from editing their own talk page while blocked',
 'ipb-change-block'                => 'Re-block the user with these settings',
+'ipb-confirm'                     => 'Confirm block',
 'badipaddress'                    => 'Invalid IP address',
 'blockipsuccesssub'               => 'Block succeeded',
 'blockipsuccesstext'              => '[[Special:Contributions/$1|$1]] has been blocked.<br />
 See [[Special:IPBlockList|IP block list]] to review blocks.',
+'ipb-blockingself'                => 'You are about to block yourself!  Are you sure you want to do that?',
+'ipb-confirmhideuser'             => 'You are about to block a user with "hide user" enabled.  This will suppress the user\'s name in all lists and log entries.  Are you sure you want to do that?',
 'ipb-edit-dropdown'               => 'Edit block reasons',
 'ipb-unblock-addr'                => 'Unblock $1',
 'ipb-unblock'                     => 'Unblock a username or IP address',
@@ -3036,18 +3057,24 @@ See [[Special:IPBlockList|IP block list]] to review blocks.',
 'unblockiptext'                   => 'Use the form below to restore write access to a previously blocked IP address or username.',
 'ipusubmit'                       => 'Remove this block',
 'unblocked'                       => '[[User:$1|$1]] has been unblocked',
+'unblocked-range'                 => '$1 has been unblocked',
 'unblocked-id'                    => 'Block $1 has been removed',
-'ipblocklist'                     => 'Blocked IP addresses and usernames',
+'blocklist'                       => 'Blocked users',
+'ipblocklist'                     => 'Blocked users',
 'ipblocklist-legend'              => 'Find a blocked user',
-'ipblocklist-username'            => 'Username or IP address:',
-'ipblocklist-sh-userblocks'       => '$1 account blocks',
-'ipblocklist-sh-tempblocks'       => '$1 temporary blocks',
-'ipblocklist-sh-addressblocks'    => '$1 single IP blocks',
-'ipblocklist-summary'             => '', # do not translate or duplicate this message to other languages
+'blocklist-userblocks'            => 'Hide account blocks',
+'blocklist-tempblocks'            => 'Hide temporary blocks',
+'blocklist-addressblocks'         => 'Hide single IP blocks',
+'blocklist-timestamp'             => 'Timestamp',
+'blocklist-target'                => 'Target',
+'blocklist-expiry'                => 'Expires',
+'blocklist-by'                    => 'Blocking admin',
+'blocklist-params'                => 'Block parameters',
+'blocklist-reason'                => 'Reason',
+'blocklist-summary'               => '', # do not translate or duplicate this message to other languages
 'ipblocklist-submit'              => 'Search',
 'ipblocklist-localblock'          => 'Local block',
 'ipblocklist-otherblocks'         => 'Other {{PLURAL:$1|block|blocks}}',
-'blocklistline'                   => '$1, $2 blocked $3 ($4)',
 'infiniteblock'                   => 'infinite',
 'expiringblock'                   => 'expires on $1 at $2',
 'anononlyblock'                   => 'anon. only',
@@ -3086,12 +3113,10 @@ See the [[Special:IPBlockList|IP block list]] for the list of currently operatio
 'ipb_expiry_temp'                 => 'Hidden username blocks must be permanent.',
 'ipb_hide_invalid'                => 'Unable to suppress this account; it may have too many edits.',
 'ipb_already_blocked'             => '"$1" is already blocked',
-'ipb-needreblock'                 => '== Already blocked ==
-$1 is already blocked.
-Do you want to change the settings?',
+'ipb-needreblock'                 => '$1 is already blocked. Do you want to change the settings?',
 'ipb-otherblocks-header'          => 'Other {{PLURAL:$1|block|blocks}}',
-'ipb_cant_unblock'                => 'Error: Block ID $1 not found.
-It may have been unblocked already.',
+'unblock-hideuser'                => 'You cannot unblock this user, as their username has been hidden.',
+'ipb_cant_unblock'                => 'Error: Block ID $1 not found. It may have been unblocked already.',
 'ipb_blocked_as_range'            => 'Error: The IP address $1 is not blocked directly and cannot be unblocked.
 It is, however, blocked as part of the range $2, which can be unblocked.',
 'ip_range_invalid'                => 'Invalid IP range.',
@@ -3467,30 +3492,39 @@ You can view its source',
 'tooltip-summary'                 => 'Enter a short summary',
 
 # Stylesheets
-'common.css'      => '/* CSS placed here will be applied to all skins */', # only translate this message to other languages if you have to change it
-'standard.css'    => '/* CSS placed here will affect users of the Standard skin */', # only translate this message to other languages if you have to change it
-'nostalgia.css'   => '/* CSS placed here will affect users of the Nostalgia skin */', # only translate this message to other languages if you have to change it
-'cologneblue.css' => '/* CSS placed here will affect users of the Cologne Blue skin */', # only translate this message to other languages if you have to change it
-'monobook.css'    => '/* CSS placed here will affect users of the Monobook skin */', # only translate this message to other languages if you have to change it
-'myskin.css'      => '/* CSS placed here will affect users of the MySkin skin */', # only translate this message to other languages if you have to change it
-'chick.css'       => '/* CSS placed here will affect users of the Chick skin */', # only translate this message to other languages if you have to change it
-'simple.css'      => '/* CSS placed here will affect users of the Simple skin */', # only translate this message to other languages if you have to change it
-'modern.css'      => '/* CSS placed here will affect users of the Modern skin */', # only translate this message to other languages if you have to change it
-'vector.css'      => '/* CSS placed here will affect users of the Vector skin */', # only translate this message to other languages if you have to change it
-'print.css'       => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
-'handheld.css'    => '/* CSS placed here will affect handheld devices based on the skin configured in $wgHandheldStyle */', # only translate this message to other languages if you have to change it
+'common.css'        => '/* CSS placed here will be applied to all skins */', # only translate this message to other languages if you have to change it
+'standard.css'      => '/* CSS placed here will affect users of the Standard skin */', # only translate this message to other languages if you have to change it
+'nostalgia.css'     => '/* CSS placed here will affect users of the Nostalgia skin */', # only translate this message to other languages if you have to change it
+'cologneblue.css'   => '/* CSS placed here will affect users of the Cologne Blue skin */', # only translate this message to other languages if you have to change it
+'monobook.css'      => '/* CSS placed here will affect users of the Monobook skin */', # only translate this message to other languages if you have to change it
+'myskin.css'        => '/* CSS placed here will affect users of the MySkin skin */', # only translate this message to other languages if you have to change it
+'chick.css'         => '/* CSS placed here will affect users of the Chick skin */', # only translate this message to other languages if you have to change it
+'simple.css'        => '/* CSS placed here will affect users of the Simple skin */', # only translate this message to other languages if you have to change it
+'modern.css'        => '/* CSS placed here will affect users of the Modern skin */', # only translate this message to other languages if you have to change it
+'vector.css'        => '/* CSS placed here will affect users of the Vector skin */', # only translate this message to other languages if you have to change it
+'print.css'         => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
+'handheld.css'      => '/* CSS placed here will affect handheld devices based on the skin configured in $wgHandheldStyle */', # only translate this message to other languages if you have to change it
+'noscript.css'      => '/* CSS placed here will affect users with JavaScript disabled */', # only translate this message to other languages if you have to change it
+'autoconfirmed.css' => '/* CSS placed here will affect autoconfirmed users only */', # only translate this message to other languages if you have to change it
+'bot.css'           => '/* CSS placed here will affect bots only */', # only translate this message to other languages if you have to change it
+'sysop.css'         => '/* CSS placed here will affect sysops only */', # only translate this message to other languages if you have to change it
+'bureaucrat.css'    => '/* CSS placed here will affect bureaucrats only */', # only translate this message to other languages if you have to change it
 
 # Scripts
-'common.js'      => '/* Any JavaScript here will be loaded for all users on every page load. */', # only translate this message to other languages if you have to change it
-'standard.js'    => '/* Any JavaScript here will be loaded for users using the Standard skin */', # only translate this message to other languages if you have to change it
-'nostalgia.js'   => '/* Any JavaScript here will be loaded for users using the Nostalgia skin */', # only translate this message to other languages if you have to change it
-'cologneblue.js' => '/* Any JavaScript here will be loaded for users using the Cologne Blue skin */', # only translate this message to other languages if you have to change it
-'monobook.js'    => '/* Any JavaScript here will be loaded for users using the MonoBook skin */', # only translate this message to other languages if you have to change it
-'myskin.js'      => '/* Any JavaScript here will be loaded for users using the MySkin skin */', # only translate this message to other languages if you have to change it
-'chick.js'       => '/* Any JavaScript here will be loaded for users using the Chick skin */', # only translate this message to other languages if you have to change it
-'simple.js'      => '/* Any JavaScript here will be loaded for users using the Simple skin */', # only translate this message to other languages if you have to change it
-'modern.js'      => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
-'vector.js'      => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
+'common.js'        => '/* Any JavaScript here will be loaded for all users on every page load. */', # only translate this message to other languages if you have to change it
+'standard.js'      => '/* Any JavaScript here will be loaded for users using the Standard skin */', # only translate this message to other languages if you have to change it
+'nostalgia.js'     => '/* Any JavaScript here will be loaded for users using the Nostalgia skin */', # only translate this message to other languages if you have to change it
+'cologneblue.js'   => '/* Any JavaScript here will be loaded for users using the Cologne Blue skin */', # only translate this message to other languages if you have to change it
+'monobook.js'      => '/* Any JavaScript here will be loaded for users using the MonoBook skin */', # only translate this message to other languages if you have to change it
+'myskin.js'        => '/* Any JavaScript here will be loaded for users using the MySkin skin */', # only translate this message to other languages if you have to change it
+'chick.js'         => '/* Any JavaScript here will be loaded for users using the Chick skin */', # only translate this message to other languages if you have to change it
+'simple.js'        => '/* Any JavaScript here will be loaded for users using the Simple skin */', # only translate this message to other languages if you have to change it
+'modern.js'        => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
+'vector.js'        => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
+'autoconfirmed.js' => '/* Any JavaScript here will be loaded for autoconfirmed users only */', # only translate this message to other languages if you have to change it
+'bot.js'           => '/* Any JavaScript here will be loaded for bots only */', # only translate this message to other languages if you have to change it
+'sysop.js'         => '/* Any JavaScript here will be loaded for sysops only */', # only translate this message to other languages if you have to change it
+'bureaucrat.js'    => '/* Any JavaScript here will be loaded for bureaucrats only */', # only translate this message to other languages if you have to change it
 
 # Metadata
 'nodublincore'      => 'Dublin Core RDF metadata disabled for this server.',
@@ -3537,25 +3571,6 @@ This is probably caused by a link to a blacklisted external site.',
 'skinname-modern'      => 'Modern', # only translate this message to other languages if you have to change it
 'skinname-vector'      => 'Vector', # only translate this message to other languages if you have to change it
 
-# Math options
-'mw_math_png'    => 'Always render PNG',
-'mw_math_simple' => 'HTML if very simple or else PNG',
-'mw_math_html'   => 'HTML if possible or else PNG',
-'mw_math_source' => 'Leave it as TeX (for text browsers)',
-'mw_math_modern' => 'Recommended for modern browsers',
-'mw_math_mathml' => 'MathML if possible (experimental)',
-
-# Math errors
-'math_failure'          => 'Failed to parse',
-'math_unknown_error'    => 'unknown error',
-'math_unknown_function' => 'unknown function',
-'math_lexing_error'     => 'lexing error',
-'math_syntax_error'     => 'syntax error',
-'math_image_error'      => 'PNG conversion failed; check for correct installation of latex and dvipng (or dvips + gs + convert)',
-'math_bad_tmpdir'       => 'Cannot write to or create math temp directory',
-'math_bad_output'       => 'Cannot write to or create math output directory',
-'math_notexvc'          => 'Missing texvc executable; please see math/README to configure.',
-
 # Patrolling
 'markaspatrolleddiff'                 => 'Mark as patrolled',
 'markaspatrolledlink'                 => '[$1]', # do not translate or duplicate this message to other languages
@@ -3592,23 +3607,25 @@ $1',
 'nextdiff'     => 'Newer edit →',
 
 # Media information
-'mediawarning'         => "'''Warning''': This file type may contain malicious code.
+'mediawarning'           => "'''Warning''': This file type may contain malicious code.
 By executing it, your system may be compromised.",
-'imagemaxsize'         => "Image size limit:<br />''(for file description pages)''",
-'thumbsize'            => 'Thumbnail size:',
-'widthheight'          => '$1×$2', # only translate this message to other languages if you have to change it
-'widthheightpage'      => '$1×$2, $3 {{PLURAL:$3|page|pages}}',
-'file-info'            => '(file size: $1, MIME type: $2)',
-'file-info-size'       => '($1 × $2 pixels, file size: $3, MIME type: $4)',
-'file-nohires'         => '<small>No higher resolution available.</small>',
-'svg-long-desc'        => '(SVG file, nominally $1 × $2 pixels, file size: $3)',
-'show-big-image'       => 'Full resolution',
-'show-big-image-thumb' => '<small>Size of this preview: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'looped',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
-'file-info-png-looped' => 'looped',
-'file-info-png-repeat' => 'played $1 {{PLURAL:$1|time|times}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'imagemaxsize'           => "Image size limit:<br />''(for file description pages)''",
+'thumbsize'              => 'Thumbnail size:',
+'widthheight'            => '$1×$2', # only translate this message to other languages if you have to change it
+'widthheightpage'        => '$1×$2, $3 {{PLURAL:$3|page|pages}}',
+'file-info'              => 'file size: $1, MIME type: $2',
+'file-info-size'         => '$1 × $2 pixels, file size: $3, MIME type: $4',
+'file-nohires'           => '<small>No higher resolution available.</small>',
+'svg-long-desc'          => 'SVG file, nominally $1 × $2 pixels, file size: $3',
+'show-big-image'         => 'Full resolution',
+'show-big-image-preview' => '<small>Size of this preview: $1.</small>',
+'show-big-image-other'   => '<small>Other resolutions: $1.</small>',
+'show-big-image-size'    => '$1 × $2 pixels',
+'file-info-gif-looped'   => 'looped',
+'file-info-gif-frames'   => '$1 {{PLURAL:$1|frame|frames}}',
+'file-info-png-looped'   => 'looped',
+'file-info-png-repeat'   => 'played $1 {{PLURAL:$1|time|times}}',
+'file-info-png-frames'   => '$1 {{PLURAL:$1|frame|frames}}',
 
 # Special:NewFiles
 'newimages'             => 'Gallery of new files',
@@ -3817,6 +3834,7 @@ Others will be hidden by default.
 'exif-gpsareainformation'          => 'Name of GPS area',
 'exif-gpsdatestamp'                => 'GPS date',
 'exif-gpsdifferential'             => 'GPS differential correction',
+'exif-objectname'                  => 'Short title',
 
 # Make & model, can be wikified in order to link to the camera and model name
 'exif-make-value'     => '$1', # do not translate or duplicate this message to other languages
@@ -4052,6 +4070,20 @@ to cancel the e-mail address confirmation:
 
 $5
 
+This confirmation code will expire at $4.',
+'confirmemail_body_set'     => 'Someone, probably you, from IP address $1,
+has set the e-mail address of the account "$2" to this address on {{SITENAME}}.
+
+To confirm that this account really does belong to you and reactivate
+e-mail features on {{SITENAME}}, open this link in your browser:
+
+$3
+
+If the account does *not* belong to you, follow this link
+to cancel the e-mail address confirmation:
+
+$5
+
 This confirmation code will expire at $4.',
 'confirmemail_invalidated'  => 'E-mail address confirmation canceled',
 'invalidateemail'           => 'Cancel e-mail confirmation',
@@ -4071,11 +4103,12 @@ $1',
 'trackbackdeleteok' => 'The trackback was successfully deleted.',
 
 # Delete conflict
-'deletedwhileediting' => "'''Warning''': This page was deleted after you started editing!",
-'confirmrecreate'     => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
+'deletedwhileediting'      => "'''Warning''': This page was deleted after you started editing!",
+'confirmrecreate'          => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
 : ''$2''
 Please confirm that you really want to recreate this page.",
-'recreate'            => 'Recreate',
+'confirmrecreate-noreason' => 'User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing.  Please confirm that you really want to recreate this page.',
+'recreate'                 => 'Recreate',
 
 'unit-pixel' => 'px', # only translate this message to other languages if you have to change it
 
@@ -4169,7 +4202,7 @@ Try normal preview.',
 'watchlistedit-normal-legend'  => 'Remove titles from watchlist',
 'watchlistedit-normal-explain' => 'Titles on your watchlist are shown below.
 To remove a title, check the box next to it, and click "{{int:Watchlistedit-normal-submit}}".
-You can also [[Special:Watchlist/raw|edit the raw list]].',
+You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'watchlistedit-normal-submit'  => 'Remove titles',
 'watchlistedit-normal-done'    => '{{PLURAL:$1|1 title was|$1 titles were}} removed from your watchlist:',
 'watchlistedit-raw-title'      => 'Edit raw watchlist',
@@ -4177,7 +4210,7 @@ You can also [[Special:Watchlist/raw|edit the raw list]].',
 'watchlistedit-raw-explain'    => 'Titles on your watchlist are shown below, and can be edited by adding to and removing from the list;
 one title per line.
 When finished, click "{{int:Watchlistedit-raw-submit}}".
-You can also [[Special:Watchlist/edit|use the standard editor]].',
+You can also [[Special:EditWatchlist|use the standard editor]].',
 'watchlistedit-raw-titles'     => 'Titles:',
 'watchlistedit-raw-submit'     => 'Update watchlist',
 'watchlistedit-raw-done'       => 'Your watchlist has been updated.',
@@ -4297,23 +4330,23 @@ Images are shown in full resolution, other file types are started with their ass
 Enter the file name without the "{{ns:file}}:" prefix.',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch'          => 'Search for duplicate files',
-'fileduplicatesearch-summary'  => 'Search for duplicate files based on hash values.
-
-Enter the filename without the "{{ns:file}}:" prefix.',
-'fileduplicatesearch-legend'   => 'Search for a duplicate',
-'fileduplicatesearch-filename' => 'Filename:',
-'fileduplicatesearch-submit'   => 'Search',
-'fileduplicatesearch-info'     => '$1 × $2 pixel<br />File size: $3<br />MIME type: $4',
-'fileduplicatesearch-result-1' => 'The file "$1" has no identical duplication.',
-'fileduplicatesearch-result-n' => 'The file "$1" has {{PLURAL:$2|1 identical duplication|$2 identical duplications}}.',
+'fileduplicatesearch'           => 'Search for duplicate files',
+'fileduplicatesearch-summary'   => 'Search for duplicate files based on hash values.',
+'fileduplicatesearch-legend'    => 'Search for a duplicate',
+'fileduplicatesearch-filename'  => 'Filename:',
+'fileduplicatesearch-submit'    => 'Search',
+'fileduplicatesearch-info'      => '$1 × $2 pixel<br />File size: $3<br />MIME type: $4',
+'fileduplicatesearch-result-1'  => 'The file "$1" has no identical duplication.',
+'fileduplicatesearch-result-n'  => 'The file "$1" has {{PLURAL:$2|1 identical duplication|$2 identical duplications}}.',
+'fileduplicatesearch-noresults' => 'No file named "$1" found.',
 
 # Special:SpecialPages
 'specialpages'                   => 'Special pages',
 'specialpages-summary'           => '', # do not translate or duplicate this message to other languages
 'specialpages-note'              => '----
 * Normal special pages.
-* <strong class="mw-specialpagerestricted">Restricted special pages.</strong>',
+* <span class="mw-specialpagerestricted">Restricted special pages.</span>
+* <span class="mw-specialpagecached">Cached-only special pages.</span>',
 'specialpages-group-maintenance' => 'Maintenance reports',
 'specialpages-group-other'       => 'Other special pages',
 'specialpages-group-login'       => 'Login / sign up',