Manual:Interwiki

From mediawiki.org
Translate this page; This page contains changes which are not marked for translation.

Interwiki links are links to pages of other projects, using a prefixed internal link style.

Interwiki links make it possible to link to pages of (e.g.) Wikipedia, Wikibooks, Wikinews etc. or to your wiki-project in different languages. (See Manual:Wiki family .)

A link like [[Wikipedia:Main Page]] will appear like this: Wikipedia:Main Page and redirect you to Wikipedia's Main Page.

Interwiki links to other projects

Table and query API

Interwiki links are hosted in the interwiki table of the MediaWiki database. You can retrieve the interwiki list from the interwikimap property of the siteinfo meta query API, in other words by making an API request like api.php?action=query&meta=siteinfo&siprop=interwikimap

Default

Several Wikimedia projects (and others) are ready for interwiki linking by default, so you can use them without editing your database.

The following are some examples of interwiki prefixes which are available by default (Wikipedia is also available, 1.10 and after):

prefix destination URL usage example
commons https://commons.wikimedia.org/wiki/ [[commons:MediaWiki]]
mediazilla http://bugzilla.wikimedia.org/ [[mediazilla:1209]]
metawikimedia (before version 1.23: metawikipedia) https://meta.wikimedia.org/wiki/ [[metawikimedia:Main Page]]

The full list of default interwiki prefixes is available at maintenance/interwiki.list

See m:Help:Interwiki linking for complete information on linking from/to Wikimedia projects.

In some installations, none of these are pre-installed. Try [[metawikipedia:Main Page]] in this case.

Adding a new website for interwiki linking

  • Interwiki links are set in the interwiki table of the database.
  • To modify these, you will need to edit the database, as below.

It is recommended to use the "Interwiki" extension, which eases the process.

As Wikipedia isn't set up by default prior to version 1.10, you might want to add it (and other projects that you desire).

The examples below show how to set up w: as a link to the English Wikipedia.

The idea is to insert a line of the form:

('prefix', 'URL format string', 1, 0)

into the interwiki table.

Single line

Advanced users may use a single command line, as follows:

  • MySQL and PostgreSQL
MediaWiki versions:
1.10 – 1.16
INSERT INTO interwiki (iw_prefix, iw_url, iw_local, iw_trans) VALUES ('w', 'https://en.wikipedia.org/wiki/$1', 1, 0);

Newer MediaWiki versions require some extra fields such as iw_wikiid:

INSERT INTO interwiki (iw_prefix, iw_url, iw_api, iw_local, iw_trans, iw_wikiid) 
VALUES ('w', 'https://en.wikipedia.org/wiki/$1', 'https://en.wikipedia.org/w/api.php', 0, 1, '');

Export, add, re-import

Alternatively, you can use the following multi-step process, which exports the interwiki table, adds a line, then re-imports it:

  • Export the database table interwiki
  • add to the end of the table a line of the following form (using English wikipedia as an example):
('w', 'https://en.wikipedia.org/wiki/$1', 1, 0);
In the above code, the semicolon ';' as seen, MUST be at the end of the table. At the end of any other line within that table Only has ','.
  • Import the database table interwiki

To test

To test configuration:

  • Go to your site,
  • create an article, with the following content:
    [[w:Wikipedia:Village pump|]]
  • This should display a link to the 'Village pump' page on en.Wikipedia.org (the url https://en.wikipedia.org/wiki/Wikipedia:Village_pump)

Field documentation

Further information: Manual:Interwiki table


Tip for wiki admins: Several help pages link to MediaWiki.org's Manual namespace. To make these links work on your local wiki, add an interwiki link with iw_prefix=manual and iw_url=http://www.mediawiki.org/wiki/Manual:$1


Tip for wiki admins: $wgTranscludeCacheExpiry in your LocalSettings.php should be set if changes in the transcluded wiki are done. Alternatively, you can flush the table transcache on your local wiki.


Interwiki links to other languages

Interwiki links to other languages

If you have installed a Wiki family , you can link from an article in English to an article in German (if you have a German project, too). You can set up MediaWiki to show those links in the sidebar, just below the toolbox.

In your filesystem, there is a subfolder of your MediaWiki installation, called "languages". Go there and have a look at Names.php as it contains a list of known languages and their prefixes. E.g. you want to add your German project, search Names.php for "Deutsch" and note the prefix "de".

If you know the "right" prefix, edit your database by adding a new line to table interwiki:

iw_prefix language-prefix (e.g. "de" for German), which is listed in Names.php
iw_url URL to your wiki-project (e.g. http://de.example.org/index.php/$1)
iw_local same as above "Adding More"
iw_trans same as above "Adding More"

Now, you can link an article to the same in other languages. Adding [[de:Hauptseite]] on your English Main_Page will create a link "Deutsch" below the toolbox, which leads to the Main_Page of the German wiki (Hauptseite).

Note, that this link is shown in Sidebar's section, only, and not inside of the article. If you want to create a link inside of the text, you have to add a colon previous to the prefix: [[:de:Hauptseite]] or set $wgInterwikiMagic to false.

Exporting the interwiki table from a wiki

The following JavaScript code performs the API query to retrieve the interwiki map of an existing wiki, then displays the SQL INSERT statements to fill the interwiki table on a new wiki. You run it for example by injecting the code through your browser's developer tools, or by placing it inside Special:MyPage/skinname.js and previewing.

function ExtractInterwikiMapTable() {
	$.getJSON(mw.config.get('wgScriptPath') + '/api.php?action=query&meta=siteinfo&siprop=interwikimap&format=json', function(data) {
		var iw_prefix, iw_url, iw_local, iw_api, re_escape = /(')/g, result = '';
		for (var i = 0, iwm = data.query.interwikimap; i < iwm.length; i++) {
			iw_prefix = "'" + iwm[i].prefix.replace(re_escape, '\\$1') + "'";
			iw_url = "'" + iwm[i].url.replace(re_escape, '\\$1') + "'";
			iw_local = (typeof iwm[i].local == 'string') ? '1' : '0';
			iw_api = "'" + (iwm[i].iw_api || '').replace(re_escape, '\\$1') + "'";
			result += 'INSERT INTO interwiki (iw_prefix, iw_url, iw_local, iw_trans, iw_api) VALUES ('+iw_prefix+', '+iw_url+', '+iw_local+', 0, '+iw_api+');\n'
		}
		$('<textarea style="width:800px;height:400px;"/>').val(result).appendTo(document.body);
	});
}

$(ExtractInterwikiMapTable);

Interwiki links versus external links

Drawbacks

  • Wiki text isn't always easily transferable between different wikis because they don't consistently use the same interwiki prefixes, or they might not have them at all.
  • Interwiki links can't be found directly like external links can using Special:Linksearch because there isn't an external links table for interwiki links. The interwiki table only stores interwiki prefixes and their targets based on parameters, not the actual instances of the links.
    • The Iwbacklinks query API can fetch pages utilizing the specified interwiki prefix.
    • Searching for interwiki links using text can slow down the server or be disabled during busy times. See also: Finding external links to a page.
  • These statements can mislead users since they don't know when they're being sent to another site.

Similarities

  • ''[[imdbtitle:0389790|Bee Movie]]'' links to a Bee Movie
  • [http://www.imdb.com/title/tt0389790 Bee Movie] links to the same Bee Movie

You can choose between "extiw" and "external text" CSS classes for links, depending on whether you want them to look the same or different. Using just the interwiki link is easier to type, but copying the URL from the webpage is handy. Templates like w:Template:imdb title can be set up to use either an interwiki link with a parameter like "tt0389790" or "0389790," or an external link with a parameter like one of those or the full URL, making it easier to include IMDb references.

Interwiki links versus internal links

Drawbacks

  • Existence detection isn't available.
  • "What links here" only functions for internal links.
  • Support for the interwiki link prefix from the same wiki is necessary to avoid creating invalid internal links.

Advantage

  • Easier content transfer between wikis, as long as the prefix is the same and not a namespace name.

See also