Template:LangSwitch
Note to editors: Please don't categorize this template by editing it directly. Instead, place the category in its documentation page, in its "includeonly" section.
Usage
Returns a value depending on a given language, using reasonable fallbacks if the contents of the switch does not directly map a value for that language.
The given language to test, if it's not specified, is the user interface language of the viewing user.
The language of the mapped value to return when there's no match in the switch for the given language (or one of its fallbacks), is English (en) unless another default language is specified (which will be tried after standard fallbacks but before English).
Parameters
- lang=
language-code
(optional) — the switch by default will return a value according to the viewing user, this parameter allows changing this behavior. language-code
=“Mapped value inlanguage-code
” — maps the language to a value.- Defining this parameter for a language that is used as a reasonable fallback for one or several other languages means that you won't need to define additional parameters to map these other languages, when that value is already accurate for these other languages.
- Commonly used languages that are used as reasonable fallbacks include major languages of the world: English (
en
), Chinese (zh
), French (fr
), Spanish (es
), Arabic (ar
), Russian (ru
), and Indonesian (id
); and to a lower scale, mostly as a fallback for regional languages: Hindi (hi
), German (de
), Portuguese (pt
), and Dutch (nl
). - But this also includes any national language which may be a reasonable fallback for a minority/regional-only language, unless the later is used across borders, such as Catalan (
ca
) or Kurdish (ku
) which should be defined separately. - Usually, you don't need to provide a specific value for language variants in a different script, that are handled now by MediaWiki using builtin transliterators. This includes the two major variants of Chinese: simplified
zh-hans
and traditionalzh-hans
, the simplified variant being implied in the form used by the simpler recommended codezh
); the traditional variant needs to be specified only if the default transliterator does not reliably convert some characters.
- default=
language-code
(optional) — allows to specify which language to use when reasonable fallbacks have failed. If its value matches a given item defined in the switch, the value mapped to this item will be returned when no other languages in the switch match; if the default is not specified, or does not match any item in the switch, the value mapped to English (the default language of this wiki) will be returned.- So the switch does not necessarily have to define an English message, but it should contain at least:
language-code
=“Mapped value inlanguage-code
”, if default=language-code
is present,- or en=“Mapped value in English”, when there's no specified default.
- Specifying another default language (and mapping a value specifically for it) does not prohibit mapping an additional specific value for English, but English will no longer be the last fallback.
- Note that the
language-code
indicated here may be arbitrary and can be a pseudo-language to specify a different value, even if it displays a message in English (or in any language).
- So the switch does not necessarily have to define an English message, but it should contain at least:
Supported language codes
Language codes do not necessarily have to one of those used in a separate edition of a Wikimedia project (such as Wikipedia or Wiktionary), it could be a language supported only on a multilingual site in a single edition, such as Incubator, Commons, MediaWiki or Meta.
But in all cases, the language codes used must be one of the language codes supported by MediaWiki for its localisation (otherwise they could be ignored in parameters of LangSwitch).
Language codes are normally insensitive to letter case, but this template will not recognize language codes specified using any uppercase letter.
Ideally those languages codes should be those recommended by the BCP 47 standard (essentially based on ISO 639, but with some restrictions, and many additions for supporting variants in different scripts, regions, orthographies, or locale conventions). So don't use the longer 3-letter language codes os ISO 639-3 if there's a 2-letter code from ISO-639-1. And don't use the 3-letter language family codes (from ISO 639-5).
The template also supports (for compatibility and to allow smooth migrations) some legacy codes used in Wikimedia projects, but that are no longer recommended (and may be blocked now for new translations in the Special:Translate page), such as the two major Chinese variants, or the old code for the Taraskeviza orthographic variant of Belarusian.
Examples
- Switch according to the language of the viewing user (currently for you, lang=⧼Lang⧽)
-
- '''{{LangSwitch|ar=AR|de=DE|en=EN|es=ES|fr=FR|it=IT|ja=JA|ko=KO|nl=NL|pt=PT|ru=RU|tr=TR|zh=ZH}}''' gives EN
- '''{{LangSwitch|default=''edit''|en=EN|gd=GD|glk=GLK}}''' gives edit
- '''{{LangSwitch|default=''edit''|gd=GD|glk=GLK}}''' gives edit
- Switch according to the language of the content of the current page (in this page, it is Template:CURRENTCONTENTLANGUAGE)
-
- '''{{LangSwitch|lang={{CURRENTCONTENTLANGUAGE}}|ar=AR|de=DE|en=EN|es=ES|fr=FR|it=IT|ja=JA|ko=KO|nl=NL|pt=PT|ru=RU|tr=TR|zh=ZH}}''' gives EN
- '''{{LangSwitch|lang={{CURRENTCONTENTLANGUAGE}}|default=''edit''|en=EN|gd=GD|glk=GLK}}''' gives edit
- '''{{LangSwitch|lang={{CURRENTCONTENTLANGUAGE}}|default=''edit''|gd=GD|glk=GLK}}''' gives edit
- Switch according to the language of a specific language
-
- '''{{LangSwitch|lang=gsw|default=[translate this]|it=IT}}''' gives [translate this]
- '''{{LangSwitch|lang=gsw|default=[translate this]|it=IT|en=EN}}''' gives [translate this]
- '''{{LangSwitch|lang=gsw|default=[translate this]|it=IT|en=EN|fr=FR}}''' gives [translate this]
- '''{{LangSwitch|lang=gsw|default=[translate this]|it=IT|en=EN|de=DE}}''' gives [translate this]
- '''{{LangSwitch|lang=gsw|default=[translate this]|it=IT|en=EN|de=DE|fr=FR}}''' gives [translate this]
- '''{{LangSwitch|lang=gsw|default=[translate this]|it=IT|en=EN|de=DE|fr=FR|gsw=GSW}}''' gives GSW