Manual:Uselang hack

The default upload form

The "uselang hack" (or "int:lang hack") can be used to create (or at least simulate) multiple "versions" of pages. This was originally used for the Special:Upload form on Wikimedia Commons to create variants of the same forms for different purposes (e.g. upload "Own work", upload "Government work", etc) instead of a single overcrowded form.

Caveats

edit

Note that this is a hack and as such, may break if better functionality to achieve this purpose is introduced into MediaWiki core. It is also awkward to use on multilingual wikis, although certainly still possible.

You will need rights to edit system messages, i.e. pages in the MediaWiki: namespace. (User right 'editinterface', usually "Sysop" group and above)

Note: for this to fully work, due to bugzilla:11695, you need to put this setting in LocalSettings.php :

$wgForceUIMsgAsContentMsg = array( 'licenses' );

You likely also need

$wgUseDatabaseMessages = true;

which is the default. (This says to look in the MediaWiki: namespace for system messages content.)

How it works

edit

The uselang hack exploits MediaWiki's internationalisation capabilities, but instead of displaying text in another language, it displays text for another purpose.

Normal URL for accessing the upload form
https://www.mediawiki.org/wiki/Special:Upload
Displayed language from the user's preferences (Special:Preferences)
Uselang parameter used to override user preferences
https://www.mediawiki.org/wiki/Special:Upload?uselang=fr
All the user interface, including menus and form labels, are displayed in French (language code "fr")
Uselang hack
https://www.mediawiki.org/wiki/Special:Upload?uselang=mynewform
Since "mynewform" is not a valid language code, there is no corresponding Messages*.php file in MediaWiki. Then, for each system message, it checks the local version: e.g. for Uploadtext, it looks for MediaWiki:Uploadtext/mynewform. If this doesn't exist, it displays the default MediaWiki:Uploadtext.

Create a "new" form

edit

Create the new landing page

edit
edit

Extra tips for multilingual wikis

edit

Advanced form hacking: JavaScript

edit