Extension:Lingo
Lingo Release status: stable |
|
---|---|
Implementation | Extended syntax , Skin |
Description | Provides hover-over tool tips on pages from words defined on a wiki page |
Author(s) | |
Maintainer(s) | WikiTeq team |
Latest version | 3.2.1 (2023-05-08) |
Compatibility policy | For every MediaWiki release that is a Long Term Support release there is a corresponding branch in the extension. |
MediaWiki | 1.39 |
PHP | 7.0+ |
Database changes | No |
Composer | mediawiki/lingo |
License | GNU General Public License 2.0 or later |
Download | README Release notes |
|
|
Quarterly downloads | 25 (Ranked 115th) |
Translate the Lingo extension if it is available at translatewiki.net | |
Issues | Open tasks · Report a bug |
Lingo is a glossary extension. It lets you define a list of abbreviations and their definitions on a page and then displays them whenever an abbreviation is hovered over in an article.
Usage
The Terminology page
By default, Lingo will mark up any page with the terms and definitions defined on the Terminology page of your wiki (or the respective page in the language of your wiki). Create that page and insert some entries using the following syntax:
;FTP:File Transfer Protocol ;AAAAA:American Association Against Acronym Abuse ;ACK:Acknowledge ;AFAIK:As Far As I Know ;AWGTHTGTATA:Are We Going To Have To Go Through All This Again ;HTTP:HyperText Transfer Protocol
You can use any characters in a term (including punctuation, spaces, and all UTF-8 characters, but excluding the colon (:), of course); you are not limited to only letters.
To structure the Terminology page, you are also allowed to have Terms and Definitions on separate lines. Any lines not starting with a semicolon (;) or a colon (:) are ignored, so go ahead and insert empty lines, headlines, explanatory text.
Using this format, you may assign one definition to multiple terms, e.g., to cover grammatical variants (see the U.S.A. example below), and multiple definitions to one term, e.g., to cover different meanings (see the ACK example). You may even combine this, i.e., have multiple definitions for a set of multiple terms. Finally, you may also use transclusion, e.g., to have different glossaries for different topics and pull them all together on the Terminology page.
;FTP :File Transfer Protocol ;AAAAA :American Association Against Acronym Abuse ;ACK :Acknowledge :Acklington railway station ;U.S.A. ;USA :United States of America Pull in more terminology from elsewhere: {{:MoreTerminology}}
Excluding text from markup
You can exclude an article from markup by including the magic word __NOGLOSSARY__
anywhere in that article's text.
In some cases, it may be necessary to exclude only portions of a page, e.g., because Lingo interferes with some JavaScript. This can be achieved by wrapping that part in an HTML element (e.g., a span or a div) and specifying class="noglossary"
. As a shorthand for <span class="noglossary">
you can just use the <noglossary>
tag.
ApprovedRevs
Lingo supports the Approved Revs extension for the Terminology page. See Customization below.
Internationalization
The extension is pretty well internationalized by now, thanks to the efforts of the volunteers on https://translatewiki.net. (If your language is not supported yet, get an account there and help yourself. It's easy!) To find out the name of the Terminology page and of the __NOGLOSSARY__
magic word in your wiki's language, have a look at the files in the i18n
folder and the Lingo.i18n.magic.php
file. If you want to change the name of the Terminology page, you can do so by editing the page on your wiki named MediaWiki:lingo-terminologypagename.
Installation
Composer
Lingo should be installed using Composer. The package name is mediawiki/lingo
. For instructions on how to install Composer, see MediaWiki's Composer User manual .
- Run
COMPOSER=composer.local.json php composer.phar require --no-update mediawiki/lingo ^3.0
from the MediaWiki installation directory. - Run
php composer.phar update --no-dev mediawiki/lingo
from the MediaWiki installation directory.- Any future update is then just a call to
php composer.phar update --no-dev mediawiki/lingo
.
- Any future update is then just a call to
- Add to the end of LocalSettings.php :
wfLoadExtension('Lingo');
- Do some customization if necessary (see below)
- Go to the Special:Version page of your wiki and verify that an entry for Lingo exists
- From Lingo's entry on the Special:Version page follow the link to the Terminology page of your wiki and insert some entries OR (if this page exists already) edit and re-save it to trigger the recreation of the glossary
Using packaged downloads
If Composer is not an option, you may also install it like this:
- Download Lingo 3.2.0 or the current development version (Alternatively you can clone Lingo using git.)
- Extract the files to the
$IP/extensions
directory - If necessary rename the newly created directory to Lingo
- Add to the end of LocalSettings.php :
wfLoadExtension('Lingo');
- Do some customization if necessary (see below)
- Go to the Special:Version page of your wiki and verify that an entry for Lingo exists
- From Lingo's entry on the Special:Version page follow the link to the Terminology page of your wiki and insert some entries OR (if this page exists already) edit and re-save it to trigger the recreation of the glossary
Customization
Add the following to LocalSettings.php
and uncomment/modify as needed:
// specify a different name for the terminology page (Default: 'Terminology' (or localised version). See MediaWiki:Lingo-terminologypagename.)
//$wgexLingoPage = 'Terminology';
// specify that each term should be annotated only once per page (Default: false)
//$wgexLingoDisplayOnce = false;
// specify what namespaces should or should not be used (Default: Empty, i.e. use all namespaces)
//$wgexLingoUseNamespaces[NS_SPECIAL] = false;
// set default cache type (Default: null, i.e. use main cache)
//$wgexLingoCacheType = CACHE_NONE;
// use ApprovedRevs extension on the Terminology page (Default: false)
//$wgexLingoEnableApprovedRevs = true;
MobileFrontend suppresses Lingo's styling, which makes all Definitions used on the article appear at the end of the page. To avoid this add the following to your LocalSettings.php when using MobileFrontend:
$wgMFRemovableClasses = [ 'base' => [ '.mw-lingo-tooltip' ] ];
Lingo also provides an interface to plug in alternative dictionaries (backends). If you are interested in that, see Semantic Glossary for an example. You can also drop me a mail.
Finally you can provide your own styling. For the classes used by Lingo for the various HTML elements, please have a look at the style file.
Showcases
- NORA online - Dutch Government Reference Architecture website
- Helminthic Therapy Wiki - Information database about helminth replacement therapy - see notes here)
- https://www.wissensmanagement.gv.at - Website for Knowledge Management in Austrian Government
Add your wiki here!
You can find other examples on the usage and version matrix
Version history
Credits
Lingo is a rewrite of extension Terminology, written by BarkerJr with modifications by Benjamin Kahn. Lingo was originally written by Barry Coughlan and is currently maintained by WikiTeq.
Lingo makes use of the jQuery qTip2 library.
Reporting bugs
Bugs and feature requests should preferably be reported on the Wikimedia bug tracker.
Comments, questions and suggestions should be sent or posted to:
- the Lingo discussion page
- the maintainer
See also
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |
- Extensions by WikiTeq/en
- Stable extensions/en
- Extended syntax extensions/en
- Skin extensions/en
- Extensions supporting Composer/en
- GPL licensed extensions/en
- Extensions in Wikimedia version control/en
- All extensions/en
- Extensions included in BlueSpice/en
- Extensions included in Canasta/en
- Extensions included in semantic::core/en
- Extensions included in WikiForge/en
- Referencing extensions/en
- Popup extensions/en
- Dictionary extensions/en