From LNF Wiki
Jump to navigation Jump to search


Template documentation[view] [edit] [history] [purge]

Lua error in package.lua at line 80: module 'Module:Transclusion_count/data/L' not found.

The purpose of this template is to indicate, via a code, that a span of text belongs to a particular language. It often makes no visible changes to the text, but can prompt web browsers to use a more appropriate font, or screen readers to use a particular kind of pronunciation; and so on. The § Rationale, below, provides more information.

Syntax and usage

{{lang |ISO 639 language code |text}}

The ISO 639 code is usually a two- or three-letter abbreviation, in lowercase, of the language's name. French, for example, has the code "fr":

She said: "''{{lang|fr|Je suis française.}}''"


She said: "Je suis française."

By default, this template will place articles into the relevant subcategory of Category:Articles containing non-English-language text. To suppress this – e.g. when using {{lang}} within a wikilink or the title parameter of a citation – add the parameter |nocat=true. If {{lang}} is used to identify a language read from right to left, e.g. Arabic, the template {{rtl-lang}} may be used afterward to ensure the standard (English) left-to-right formatting is resumed. It also supports the |nocat= parameter.

It is better to incorporate only the foreign-language text (linked if appropriate) inside the template, so that extraneous markup that is not from the non-English language in question does not receive incorrect metadata for that language. For example:

  • Use ''{{lang|it|[[goriziana]]}}''
  • Not {{lang|it|''[[goriziana]]''}}

This includes italicization as foreign; English-language quotation marks around titles of work in language that use other quotation character glyphs; italicization of titles in languages that do not use that convention; and emphasis that is not found (in one style or another) in the original non-English text; among other cases. If in doubt, put such markup outside the {{lang}}.

There are also versions of this template for specific languages, intended for use the first time one of those languages appears in an article, that print the language's name and, for languages using the Latin alphabet, italicize the content automatically. For example, {{lang-es|español}} and {{lang-ru|русский язык}} yield, respectively, "Spanish: español" and "Russian: русский язык" (without the quotation marks).

Language subtags can be used to indicate a regional variant of and/or a particular script used for a language. According to the World Wide Web Consortium, "the golden rule when creating language tags is to keep the tag as short as possible",[1] so such subtags should only be added if there is good reason to use them. ISO 639‑1 is preferred over ISO 639‑2 and ISO 639‑3.


By default, {{lang|[language code]|...}} outputs plain text, while {{lang-[language code]|...}} templates (e.g. {{lang-de}}) output text in italics, except for languages that do not use a Latin-based script. If, with the latter, plain text is required (e.g. for proper names), {{noitalic}} may be used. For example,

... the border town of Ventimiglia ({{lang-fr|{{noitalic|Vintimille}}}})


... the border town of Ventimiglia (French: Vintimille)

Indicating writing script

If necessary, add the ISO 15924 code to indicate the script.

For example, Russian is usually written in the Cyrillic script, therefore the Cyrl script code is superfluous and the language code will be ru instead of ru-Cyrl. However, when that text is transliterated the transl code (transliteration) should be used because it isn't the default script for Russian: ru-Latn. Example:

* Moscow ([[Russian language|Russian]]: {{lang|ru|Москва́}}, ''{{transl|ru|Moskva}}'')

which is the same as

* Moscow ({{lang-ru|Москва́}}, ''{{transl|ru|Moskva}}'')

Results in your browser:

  • Moscow (Russian: Москва́, Moskva)

Instead of using ''{{transl|ru|Moskva}}'' the ''{{lang|ru-Latn|Moskva}}'' can be used, but if you specified a font and a size for the target language in your custom CSS (see Help:User style), the transliteration will appear in that specified style. To specify a transliteration scheme, for example, you are using the ISO 9 transliteration of Cyrillic, use ''{{transl|ru|ISO|Moskva}}'':

The IANA maintains a list specifying when the script tag should be suppressed [1]. In some cases, the script must be always specified, like Tajik which can be equally written in Arabic, Latin or Cyrillic alphabets:

* Tajik ({{rtl-lang|tg-Arab|تاجیکی}}, ''{{transl|tg|tojikī}}'', {{lang|tg-Cyrl|тоҷикӣ}})

Which results in your browser:

  • Tajik (تاجیکی‎, tojikī, тоҷикӣ)

Note the use of {{rtl-lang}} instead of {{lang}} when using the Arabic script (see § Writing direction).

Undetermined language

The {{lang}} template is not only used to specify the language of foreign words, but also to specify a single symbol or character in a specific script, for example when discussing about a specific writing system. Many times the character / symbol is used in several languages, but when the article refers to the grapheme itself the ISO 639‑2 and ISO 639‑3 language code und for Undetermined language should be used. For example:

The {{lang|und-Hani|字}} Han character has 6 strokes.
The Han character has 6 strokes.

Han characters are used in Chinese, Japanese, sometimes Korean, and formerly Vietnamese, and in this case the character is not used for any specific language. Note that the script code used is Hani, which specifies generic Han characters (Hanzi, Kanji, Hanja).

Compare {{script}}

The {{script|Hani|字}} Han character has 6 strokes.
The Han character has 6 strokes.

Indicating regional variant

In some cases, maybe it will be needed to add ISO 3166-1 alpha-2 country codes (specific usage of that country). Of course the three codes can appear in the same tag, for example the code zh-Hant-TW will be used for Chinese text written with Traditional Han characters, containing words or expressions specific to Taiwan. zh-Hans is for simplified. Examples:

* {{lang|zh-Hant-TW|臺灣}}

Results in your browser:

  • 臺灣

Writing direction

To embed a string of right-to-left text (from languages like Arabic or Hebrew) within the usual left-to-right context, you should add the | parameter, so the writing direction is correctly indicated to browsers.

Alternatively you can use {{rtl-lang}} which basically is a shortcut giving the same result, or {{rtl-para}} for whole paragraphs of right-to-left text.

Either of these approaches wrap the text in a container with the dir="rtl" attribute. In order to ensure correct rendering in legacy browsers that don't fully support HTML 5 bidirectional isolation, it also adds the ‎ character at the end of the span (see the details at W3C).

Note that the text direction doesn't have to be specified when using the {{lang-xx}} template, as this is implied by the language. Therefore there is no {{rtl-lang-ar}} – just use {{lang-ar}}.


Applying styles

You can apply CSS styles in your user style sheet. Registered users can put styles into User:XXX/monobook.css, where XXX is the user name.

These examples may work in Internet Explorer 8; prior versions do not support attribute selectors. Alternatively, try another browser such as Firefox.

Example: to apply a font to Russian-language text:

 span[lang|=ru] { font-family: fonteskaya; }

Example: to apply a colour to text marked with any language:

 span[lang] { color: green; }

Do not use quotation marks in your user style sheet; wikitext would screw them up. They are recommended in CSS, but not required other than for font families containing generic-family keywords ('inherit', 'serif', 'sans-serif', 'monospace', 'fantasy', and 'cursive'). See here for details.


This is the TemplateData documentation for this template used by VisualEditor and other tools; see the monthly parameter usage report for this template.

TemplateData for Lang

<templatedata>{ "description": "Indicate that a given span of text belongs to a particular language. Use by browsers which use different styles for different languages.", "params": {

 "1": {
   "label": "Language code",
   "description": "A language tag or an ISO 639 language code, e.g. fr (the code for French).",
   "type": "string",
   "required": true
 "2": {
   "label": "Text",
   "description": "The text e.g. Je suis française.",
   "type": "string",
   "required": true


See also

Further information


  1. Overview for Language Tags at World Wide Web Consortium
  2. Heilmann, Chris (13 Mar 2008). "Yahoo! search results now with natural language support". Yahoo! Developer Network Blog. Archived from the original on 25 Jan 2009. Retrieved 28 Feb 2015. 
  3. 3.0 3.1 3.2 Ishida, Richard (18 November 2014). "Why use the language attribute?". World Wide Web Consortium. Retrieved 1 Mar 2015. 
  4. "6.4 Ligatures: the font-variant-ligatures property". CSS Fonts Module Level 3 W3C Candidate Recommendation 3 October 2013.