ವಿಕಿಸೋರ್ಸ್ knwikisource https://kn.wikisource.org/wiki/%E0%B2%AE%E0%B3%81%E0%B2%96%E0%B3%8D%E0%B2%AF_%E0%B2%AA%E0%B3%81%E0%B2%9F MediaWiki 1.44.0-wmf.2 first-letter ಮೀಡಿಯ ವಿಶೇಷ ಚರ್ಚೆಪುಟ ಸದಸ್ಯ ಸದಸ್ಯರ ಚರ್ಚೆಪುಟ ವಿಕಿಸೋರ್ಸ್ ವಿಕಿಸೋರ್ಸ್ ಚರ್ಚೆ ಚಿತ್ರ ಚಿತ್ರ ಚರ್ಚೆಪುಟ ಮೀಡಿಯವಿಕಿ ಮೀಡಿಯವಿಕಿ ಚರ್ಚೆಪುಟ ಟೆಂಪ್ಲೇಟು ಟೆಂಪ್ಲೇಟು ಚರ್ಚೆಪುಟ ಸಹಾಯ ಸಹಾಯ ಚರ್ಚೆಪುಟ ವರ್ಗ ವರ್ಗ ಚರ್ಚೆಪುಟ ಸಂಪುಟ ಸಂಪುಟ ಚರ್ಚೆ ಕರ್ತೃ ಕರ್ತೃ ಚರ್ಚೆ ಪುಟ ಪುಟ ಚರ್ಚೆ ಪರಿವಿಡಿ ಪರಿವಿಡಿ ಚರ್ಚೆ TimedText TimedText talk ಮಾಡ್ಯೂಲ್ ಮಾಡ್ಯೂಲ್ ಚರ್ಚೆ ಟೆಂಪ್ಲೇಟು:Header/doc 10 2217 276314 252648 2024-10-30T08:54:47Z CalendulaAsteraceae 6870 /* Optional */ 276314 wikitext text/x-wiki {{Documentation subpage}} {{#ifeq:{{ROOTPAGENAME}}|Translation header|{{high-use|3919}}<!--https://petscan.wmflabs.org/?psid=27045436-->|{{high-use|416820}}<!--https://petscan.wmflabs.org/?psid=26937518-->}} {{lua|Module:Header}} {{#ifeq:{{ROOTPAGENAME}}|Translation header|{{uses TemplateStyles|Template:Header/styles.css|Template:Translation header/styles.css}}|{{uses TemplateStyles|Template:Header/styles.css}}}} <!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE AND INTERWIKIS IN WIKIDATA -->{{TOCright}} This template can be preloaded via the [[Special:Preferences|Gadgets]], alternatively, one can preload [[Template:{{ROOTPAGENAME}}/preload]]. <section begin="Usage" />{{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = | author = | translator = | section = | previous = | next = | year = | language = | original = | notes = }} </syntaxhighlight><!-- -->|<syntaxhighlight lang="wikitext"> {{header | title = | author = | translator = | section = | previous = | next = | year = | notes = }} </syntaxhighlight><!-- -->}}<section end="Usage" /> This template is meant to be used at the top of a work<ref group=notes>Certain projects have customised versions of {{tl|header}} that are used to present these works, eg. {{tl|DNB00}} is used for the project involved with [[Dictionary of National Biography]]. For these works it is permissible and recommended that these variations are used. New alternatives to {{tl|header}} should be discussed on the talk page, and consequentially listed on each project's pages.</ref> in the {{#switch:{{ROOTPAGENAME}}|Translation header='''Translation:'''|#default=main}} [[Help:Namespaces|namespace]] and its subsections. Fill in any relevant information, and leave unknown or inapplicable parameters empty. For easy use, see also the ''[[Help:Header preloading script gadget|header preloading script gadget]]'' in your preferences. ==Documentation== ===Parameters=== ==== Standard ==== * {{parameter|title}} = title of the work, for subpage use [[#Relative links|relative links]] (mandatory) * {{parameter|author}} = name of author (automatically wikilinks) ** use [[#author-display|{{parameter|author-display}}]] to change how {{parameter|author}} displays ** where control of linking is required use [[#author-nolink|{{parameter|author-nolink}}]], and leave the field empty * {{parameter|section}} = name of subdivision of work, usually used on subpages, typically text without additional formatting * {{parameter|previous}} = name of previous part of work; relative links on subpages, full links otherwise * {{parameter|next}} = name of next part of work, relative links on subpages, full links otherwise * {{parameter|notes}} = notes to explain the work, to add context, or to impart concise information that adds value to the reader; for example, use of {{tl|listen}} ====Optional==== * Parameters modifying {{parameter|author}} ** {{anchor|author-display}}{{parameter|author-display}}, used to change how {{parameter|author}} displays. **: By default, <syntaxhighlight lang="wikitext" inline>| author = Winston Leonard Spencer Churchill</syntaxhighlight> will produce the link [[Author:Winston Leonard Spencer Churchill|Winston Leonard Spencer Churchill]], and <syntaxhighlight lang="wikitext" inline>| author = Winston Churchill (1871-1947)</syntaxhighlight> will produce the link [[Author:Winston Churchill (1871-1947)|Winston Churchill]], but <syntaxhighlight lang="wikitext" inline>| author = Winston Leonard Spencer Churchill | author-display = Winston Churchill</syntaxhighlight> will produce the link [[Author:Winston Leonard Spencer Churchill|Winston Churchill]]. ** {{anchor+|author-nolink|{{parameter|author-nolink}}}}, which disables automatic linking of the author parameter if true. **: <syntaxhighlight lang="wikitext" inline>| author = the [[Portal:United States Congress|United States Congress]] | author-nolink = true</syntaxhighlight> will display the author as "the [[Portal:United States Congress|United States Congress]]". ** {{parameter|section-author}} = name of the author of this section, if not the same as author the overall work; or synonym {{parameter|contributor}}. ** {{parameter|author2}}, {{parameter|author2-display}}, {{parameter|section-author2}}, {{parameter|section-author2-display}}, etc. for additional authors. For example, <syntaxhighlight lang="wikitext" inline>| author1 = Winston Churchill (1871-1947) | author2 = Winston Leonard Spencer Churchill | author2-display = Winston Churchill</syntaxhighlight> will display as "[[Author:Winston Churchill (1871-1947)|Winston Churchill]] and [[Author:Winston Leonard Spencer Churchill|Winston Churchill]]". ** {{anchor|override-author}}{{parameter|override-author}} = legacy parameter for unusual cases. When using this, please leave the author field empty. It is not possible to have more than one {{parameter|override-author}} parameter. * All attribution parameters have the same behavior as author w.r.t. <code>-display</code>, <code>-nolink</code>, <code>section-</code> and additional values. {{#invoke:Header/docdata|attrParamList}} * {{parameter|year}} = year of publication, adds work to the category for the year, see [[:Category:Works by year]]. *:Enter "?" for a work with no known publication year, and leave blank if you simply don't have this information. *:Do not use AD or CE for any Anno Domini/Current Era works (year 1 to the present). Use BCE (do not use BC) for all years before year 1; leave a space between the number and the letters (''e.g.'' <code>150 BCE</code>). *:Approximate dates can be entered in one of the following ways: *:#Decades, centuries or periods can be used instead of a year (''e.g.'' <code>1060s</code>, <code>11th century</code> or <code>Medieval</code>). *:#To use a year in the circa format, enter it as "c/Y" (''e.g.'' <code>c/1066</code> or <code>c/150 BCE</code>). (The use of "ca" or "circa" instead of "c" will also be recognised.) This will display as, for example, "c. 1066". *:#To use a approximate choice of two years, enter it as "Y/Y" (''e.g.'' <code>1066/1067</code>). This will display as it is written. *: The behaviour of this parameter can be further modified by: *:* {{parameter|noyear}} = will prevent the year being displayed in the header but will still add the work to the category for the year. For use in cases where the year is already included in the title of the work. Any use of this parameter, even without text, will work. Example: <code>| noyear = yes</code>. All pages with this parameter will be added to [[:Category:Pages with noyear]] for tracking its usage. *:* {{parameter|noyearcat}} = will display the year but in the header but will not add the work to the category for the year. For use in cases where a specific subcategory exists for the type of work to avoid flooding the main category for the year. As above, any use of the parameter will trigger this action. Pages will be added to the tracking category [[:Category:Pages with noyearcat]]. *:* {{parameter|nolanguagecat}} = will prevent the header from categorizing by language. Pages will be added to the tracking category [[:Category:Pages with nolanguagecat]]. * {{parameter|edition}} <code>= true</code> to refer to further information on the work's talk page. <!-- * {{parameter|categories}} = Forward-slash-separated list of categories; deprecated --> * {{parameter|shortcut}} = The shortcut to this page, if it exists. This is normally reserved for very large reference works (''e.g.'' [[EB11]]) * {{parameter|cover}} = The image used as a cover for the book when exported. Do not include the "File:" prefix, e.g. <code>Foobar.jpg</code>. You can use a page of a multi-page file using <code>Foobar.djvu/7</code>. * {{anchor+|defaultsort|{{parameter|sortkey}}, {{parameter|defaultsort}}}}: For sorting purposes the template will move the articles "a", "an" and "the" to the end of the title, on the root page and all its subpages; for example, [[The Times/1854/News/The Charge of the Light Brigade]] will be sorted as "Times, The/1854/News/Charge of the Light Brigade, The". To override this, set {{parameter|sortkey}} to the desired sort key, e.g. <code>sortkey = Charge of the Light Brigade, The</code>. * {{parameter|language}} = ISO code of the language in which the work was originally written ([[Template:ISO 639 name/doc|find the ISO code here]]—be sure to use the first one listed); adds work to the category for the original language; see [[:Category:Translations]]. Use with {{tl|translation header}} and {{tl|translations}}.<!-- -->{{#ifeq:{{ROOTPAGENAME}}|Translation header| * '''{{tl|Translation header}} only:''' ** {{parameter|original}} = name of the page that hosts the original language work (or chapter) on the [[:mul:|appropriate language Wikisource]]. A standard [[Help:Interlanguage links|interlanguage link]] to the original language work (or chapter) should also be present, though.<!-- -->}} * {{parameter|nocat}} <code>= true</code> to turn off automatic categorization (except for tracking categories) * See [[#Sister, related author, and portal wiki links|Sister, related author, and portal wiki links]] ** {{parameter|portal}} ** {{parameter|related-author}} * Sister wiki links are now typically now provided through Wikidata linking, which manages link rot issues. So while the parameters are shown here for fullness of scope, such usage would be used to override automated linking rather than as a primary use. ====All parameters==== <section begin="Full" />{{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext" highlight="9,20,23,25,28"> {{translation header | title = | author = | author-display = | section = | previous = | next = | notes = <!-- optional from here --> | year = | edition = | translator = | translator-display = | related-author = | portal = | contributor = | editor = | cover = | shortcut = <!-- modifying "year" behaviour; use one of --> | noyear = | noyearcat = <!-- modifying sorting behaviour --> | sortkey = <!-- translation header --> | language = | original = <!-- provided through wikidata, can be used to override wikidata --> | wikipedia = | commons = | commonscat = | wikiquote = | wikinews = | wiktionary = | wikibooks = | wikiversity = | wikispecies = | wikivoyage = | meta = }} </syntaxhighlight><!-- -->|<syntaxhighlight lang="wikitext" highlight="9,20,23,25"> {{header | title = | author = | author-display = | section = | previous = | next = | notes = <!-- optional from here --> | year = | edition = | translator = | translator-display = | related-author = | portal = | contributor = | editor = | cover = | shortcut = <!-- modifying "year" behaviour; use one of --> | noyear = | noyearcat = <!-- modifying sorting behaviour --> | sortkey = <!-- provided through wikidata, can be used to override wikidata --> | wikipedia = | commons = | commonscat = | wikiquote = | wikinews = | wiktionary = | wikibooks = | wikiversity = | wikispecies = | wikivoyage = | meta = }} </syntaxhighlight><!-- -->}}<section end="Full" /> ===Relative links=== With lengthy, multi-page works, using [[m:Help:Link#Subpage feature|relative links]] is highly recommended. This shortens the code and ensures that a work remains linked together even if it is moved or reorganised. The three formats are <nowiki>[[/subpage]]</nowiki> (subpage), <nowiki>[[../]]</nowiki> (parent), and <nowiki>[[../sibling]]</nowiki> (sibling)<ref>The specific form <nowiki>[[../sibling/]]</nowiki> can be used on a sibling to provide both a relative link, and the link label to a sibling page.</ref>; see the example usage below. Note that <nowiki>[[../]]</nowiki> will expand to the title of the parent page, which is ideal if the work is renamed at a later time. This depends on a page conforming to the page title standards in the [[WS:STYLE|Style guide]], with works in the form <nowiki>[[Work title]]</nowiki> and <nowiki>[[Work title/Subpage]]</nowiki>. {{smallrefs}} ===Chapter titles=== In general, include chapter titles in the "section" field, but avoid including them in the "previous" and "next" fields. For example: {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = [[../|Aurora de Chile]] | author = Camilo Henríquez | translator = | section = Issue 28. Thursday, August 20, 1812. Volume 1. | previous = [[../27|Issue 27]] | next = [[../29|Issue 29]] | language = es | original = | year = 1812 | notes = Click on the section headers to go to each article's individual page. }} </syntaxhighlight> {{translation header | title = [[Translation:Aurora de Chile|Aurora de Chile]] | author = Camilo Henríquez | translator = | section = Issue 28. Thursday, August 20, 1812. Volume 1. | previous = [[Translation:Aurora de Chile/27|Issue 27]] | next = [[Translation:Aurora de Chile/29|Issue 29]] | language = es | original = | year = 1812 | notes = Click on the section headers to go to each article's individual page. }}<!-- -->|<syntaxhighlight lang="wikitext"> {{header | title = [[../|The Book of Scottish Song]] | author = | editor = Alexander Whitelaw | translator = | section = Jock o' Hazeldean | contributor = Walter Scott | previous = [[../Sing on, sing on/]] | next = [[../The Laird o' Cockpen/]] | year = 1843 | notes = }} </syntaxhighlight> {{header | title = [[The Book of Scottish Song|The Book of Scottish Song]] | author = | editor = Alexander Whitelaw | translator = | section = Jock o' Hazeldean | contributor = Walter Scott | previous = [[The Book of Scottish Song/Sing on, sing on|Sing on, sing on]] | next = [[The Book of Scottish Song/The Laird o' Cockpen|The Laird o' Cockpen]] | year = 1843 | notes = }} }} }} ==Usage examples== ===Normal=== {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = [[../]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[../Chapter 2/]] | next = [[../Chapter 4/]] | notes = }} </syntaxhighlight> {{translation header | title = [[Alice's Adventures in Wonderland (1866)|Alice's Adventures in Wonderland]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[Alice's Adventures in Wonderland (1866)/Chapter 2|Chapter 2]] | next = [[Alice's Adventures in Wonderland (1866)/Chapter 4|Chapter 4]] | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = [[../]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[../Chapter 2/]] | next = [[../Chapter 4/]] | notes = }} </syntaxhighlight> {{header | title = [[Alice's Adventures in Wonderland (1866)|Alice's Adventures in Wonderland]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[Alice's Adventures in Wonderland (1866)/Chapter 2|Chapter 2]] | next = [[Alice's Adventures in Wonderland (1866)/Chapter 4|Chapter 4]] | notes = }} }} }} ===No author link=== {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} </syntaxhighlight> {{translation header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} </syntaxhighlight> {{header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} }} }} ===Translation=== {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = Sleeping Beauty | author = | section = | previous = | next = | translator = Hammurabi | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} </syntaxhighlight> {{translation header | title = Sleeping Beauty | author = | section = | previous = | next = | translator = Hammurabi | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} {{translation header | title = Sleeping Beauty | author = | section = | previous = | next = | translator = Hammurabi | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = Fables | author = Jean de La Fontaine | translator = Elizur Wright | section = | previous = | next = | notes = }} </syntaxhighlight> {{header | title = Fables | author = Jean de La Fontaine | translator = Elizur Wright | section = | previous = | next = | notes = }} }} }} {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = Sleeping Beauty | author = | section = Example | previous = | next = | translator1 = Robert Burns (1759-1796) | translator1-display = Robert Burns | translator2 = Federico García Lorca | section-translator = unknown | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} </syntaxhighlight> {{translation header | title = Sleeping Beauty | author = | section = Example | previous = | next = | translator1 = Robert Burns (1759-1796) | translator1-display = Robert Burns | translator2 = Federico García Lorca | section-translator = unknown | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = Pantagruel | author = François Rabelais | translator1 = Thomas Urquhart | translator2 = Peter Antony Motteux | section-translator = unknown | section = Example | previous = | next = | notes = }} </syntaxhighlight> {{header | title = Pantagruel | author = François Rabelais | translator1 = Thomas Urquhart | translator2 = Peter Antony Motteux | section-translator = unknown | section = Example | previous = | next = | notes = }} }} }} ==Categories== <pre> | categories = 1st category / 2nd category </pre> '''Note:''' that use of this methodology excludes further editing by use of the ''HotCat'' tool, so this form should only be used where the categories are unlikely to need to be altered ==Sister, related author, and portal wiki links== You can link to Wikisource portals and other WMF projects using the optional wiki links parameters '''where required to override the data''' provided from Wikidata. These are: *{{parameter|portal}}, {{parameter|related-author}} * {{parameter|wikipedia}}, {{parameter|wikispecies}}, {{parameter|commons}}, {{parameter|commonscat}}, {{parameter|wikiquote}}, {{parameter|wikinews}}, {{parameter|wiktionary}}, {{parameter|wikibooks}}, {{parameter|wikiversity}}, {{parameter|meta}} are typically applied from Wikidata data through interwiki links, or through linking of {{property|P921}} so should only be used to override the default For portal this would generally be added to the root page of a work, rather than added repeatedly for each subpage. Usage on a subpage would be useful where the subpage alone has a relationship with the specified portal, whereas the parent work does not have that relationship. {{smaller|These links are generated using {{tl|plain sister}}}} {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} </syntaxhighlight> {{translation header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} |<syntaxhighlight lang="wikitext"> {{header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} </syntaxhighlight> {{header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} }} }} ;List * {{parameter|wikipedia}} * {{parameter|commons}} * {{parameter|commonscat}} * {{parameter|wikiquote}} * {{parameter|wikinews}} * {{parameter|wiktionary}} * {{parameter|wikibooks}} * {{parameter|wikiversity}} * {{parameter|wikispecies}} * {{parameter|wikivoyage}} * {{parameter|wikidata}} * {{parameter|meta}} ==Shortcuts== If a work has a shortcut, you can add it using the {{parameter|shortcut}} field. This should be in accordance with the [[WS:SHORT|shortcut guidelines]], and shortcuts should ''not'' be used for every work. {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} </syntaxhighlight> {{translation header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} |<syntaxhighlight lang="wikitext"> {{header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} </syntaxhighlight> {{header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} }} }} ==Advanced manipulation== ===Alternative headers=== <references group=notes /> ===JavaScript extraction=== The header values can be extracted using [[w:JavaScript|JavaScript]] by accessing the text values of their span wrappers: {| class="wikitable" ! value ! wrapper id |- | title | header-title-text |- | author | header-author-text |- | translator | header-translator-text |- | previous | headerprevious |- | next | headernext |- | notes | ''none'' |} == Microformat == {{UF-hcard-person}} == Technical == This template delegates some logic to Lua modules and uses sub templates to divide up the structural code: * [[Module:Header]] the main logic for parameter handling == Tracking categories == This template uses categories to track maintenance tasks, errors, and feature usage, which are grouped in [[:Category:Header tracking categories]]. ==See also== * [[MediaWiki:Proofreadpage header template]] for the auto-generated header available with <code><nowiki><pages header=1/></nowiki></code> * {{tl|textinfo}} for recording information on work's talk page * {{#ifeq:{{ROOTPAGENAME}}|Translation header|{{tl|header}} for template header used in mainspace|{{tl|translation header}} for template header used in '''Translation:''' namespace}} * {{tl|versions}} and {{tl|translations}} which also use {{ml|Header|header}} * {{tl|author}} for template header used in Author: namespace * {{tl|process header}} for template header used in Wikisource: namespace * {{tl|portal header}} for template header used in Portal: namespace * {{tl|RunningHeader}} for the headers to be used in source texts * <span class="plainlinks">[{{fullurl:Special:WhatLinksHere|target=Template:{{ROOTPAGENAME}}&namespace=10}} Derived templates leveraging Template:{{ROOTPAGENAME}}]</span> Templates called by this template: * {{tl|plain sister}} * {{tl|shortcut}} <!-- categories --> <includeonly> [[Category:Header templates]] [[Category:Templates emitting hCard microformats]] [[Category:Exclude in print]] {{#ifeq:{{ROOTPAGENAME}}|Translation header|[[Category:Translation templates]]}} </includeonly> gx3lliytjpbqzz3pm7nklylem48pc70 276315 276314 2024-11-11T08:44:32Z ~aanzx 6806 ೧ revision imported from [[:en:Template:Header/doc]] 276314 wikitext text/x-wiki {{Documentation subpage}} {{#ifeq:{{ROOTPAGENAME}}|Translation header|{{high-use|3919}}<!--https://petscan.wmflabs.org/?psid=27045436-->|{{high-use|416820}}<!--https://petscan.wmflabs.org/?psid=26937518-->}} {{lua|Module:Header}} {{#ifeq:{{ROOTPAGENAME}}|Translation header|{{uses TemplateStyles|Template:Header/styles.css|Template:Translation header/styles.css}}|{{uses TemplateStyles|Template:Header/styles.css}}}} <!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE AND INTERWIKIS IN WIKIDATA -->{{TOCright}} This template can be preloaded via the [[Special:Preferences|Gadgets]], alternatively, one can preload [[Template:{{ROOTPAGENAME}}/preload]]. <section begin="Usage" />{{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = | author = | translator = | section = | previous = | next = | year = | language = | original = | notes = }} </syntaxhighlight><!-- -->|<syntaxhighlight lang="wikitext"> {{header | title = | author = | translator = | section = | previous = | next = | year = | notes = }} </syntaxhighlight><!-- -->}}<section end="Usage" /> This template is meant to be used at the top of a work<ref group=notes>Certain projects have customised versions of {{tl|header}} that are used to present these works, eg. {{tl|DNB00}} is used for the project involved with [[Dictionary of National Biography]]. For these works it is permissible and recommended that these variations are used. New alternatives to {{tl|header}} should be discussed on the talk page, and consequentially listed on each project's pages.</ref> in the {{#switch:{{ROOTPAGENAME}}|Translation header='''Translation:'''|#default=main}} [[Help:Namespaces|namespace]] and its subsections. Fill in any relevant information, and leave unknown or inapplicable parameters empty. For easy use, see also the ''[[Help:Header preloading script gadget|header preloading script gadget]]'' in your preferences. ==Documentation== ===Parameters=== ==== Standard ==== * {{parameter|title}} = title of the work, for subpage use [[#Relative links|relative links]] (mandatory) * {{parameter|author}} = name of author (automatically wikilinks) ** use [[#author-display|{{parameter|author-display}}]] to change how {{parameter|author}} displays ** where control of linking is required use [[#author-nolink|{{parameter|author-nolink}}]], and leave the field empty * {{parameter|section}} = name of subdivision of work, usually used on subpages, typically text without additional formatting * {{parameter|previous}} = name of previous part of work; relative links on subpages, full links otherwise * {{parameter|next}} = name of next part of work, relative links on subpages, full links otherwise * {{parameter|notes}} = notes to explain the work, to add context, or to impart concise information that adds value to the reader; for example, use of {{tl|listen}} ====Optional==== * Parameters modifying {{parameter|author}} ** {{anchor|author-display}}{{parameter|author-display}}, used to change how {{parameter|author}} displays. **: By default, <syntaxhighlight lang="wikitext" inline>| author = Winston Leonard Spencer Churchill</syntaxhighlight> will produce the link [[Author:Winston Leonard Spencer Churchill|Winston Leonard Spencer Churchill]], and <syntaxhighlight lang="wikitext" inline>| author = Winston Churchill (1871-1947)</syntaxhighlight> will produce the link [[Author:Winston Churchill (1871-1947)|Winston Churchill]], but <syntaxhighlight lang="wikitext" inline>| author = Winston Leonard Spencer Churchill | author-display = Winston Churchill</syntaxhighlight> will produce the link [[Author:Winston Leonard Spencer Churchill|Winston Churchill]]. ** {{anchor+|author-nolink|{{parameter|author-nolink}}}}, which disables automatic linking of the author parameter if true. **: <syntaxhighlight lang="wikitext" inline>| author = the [[Portal:United States Congress|United States Congress]] | author-nolink = true</syntaxhighlight> will display the author as "the [[Portal:United States Congress|United States Congress]]". ** {{parameter|section-author}} = name of the author of this section, if not the same as author the overall work; or synonym {{parameter|contributor}}. ** {{parameter|author2}}, {{parameter|author2-display}}, {{parameter|section-author2}}, {{parameter|section-author2-display}}, etc. for additional authors. For example, <syntaxhighlight lang="wikitext" inline>| author1 = Winston Churchill (1871-1947) | author2 = Winston Leonard Spencer Churchill | author2-display = Winston Churchill</syntaxhighlight> will display as "[[Author:Winston Churchill (1871-1947)|Winston Churchill]] and [[Author:Winston Leonard Spencer Churchill|Winston Churchill]]". ** {{anchor|override-author}}{{parameter|override-author}} = legacy parameter for unusual cases. When using this, please leave the author field empty. It is not possible to have more than one {{parameter|override-author}} parameter. * All attribution parameters have the same behavior as author w.r.t. <code>-display</code>, <code>-nolink</code>, <code>section-</code> and additional values. {{#invoke:Header/docdata|attrParamList}} * {{parameter|year}} = year of publication, adds work to the category for the year, see [[:Category:Works by year]]. *:Enter "?" for a work with no known publication year, and leave blank if you simply don't have this information. *:Do not use AD or CE for any Anno Domini/Current Era works (year 1 to the present). Use BCE (do not use BC) for all years before year 1; leave a space between the number and the letters (''e.g.'' <code>150 BCE</code>). *:Approximate dates can be entered in one of the following ways: *:#Decades, centuries or periods can be used instead of a year (''e.g.'' <code>1060s</code>, <code>11th century</code> or <code>Medieval</code>). *:#To use a year in the circa format, enter it as "c/Y" (''e.g.'' <code>c/1066</code> or <code>c/150 BCE</code>). (The use of "ca" or "circa" instead of "c" will also be recognised.) This will display as, for example, "c. 1066". *:#To use a approximate choice of two years, enter it as "Y/Y" (''e.g.'' <code>1066/1067</code>). This will display as it is written. *: The behaviour of this parameter can be further modified by: *:* {{parameter|noyear}} = will prevent the year being displayed in the header but will still add the work to the category for the year. For use in cases where the year is already included in the title of the work. Any use of this parameter, even without text, will work. Example: <code>| noyear = yes</code>. All pages with this parameter will be added to [[:Category:Pages with noyear]] for tracking its usage. *:* {{parameter|noyearcat}} = will display the year but in the header but will not add the work to the category for the year. For use in cases where a specific subcategory exists for the type of work to avoid flooding the main category for the year. As above, any use of the parameter will trigger this action. Pages will be added to the tracking category [[:Category:Pages with noyearcat]]. *:* {{parameter|nolanguagecat}} = will prevent the header from categorizing by language. Pages will be added to the tracking category [[:Category:Pages with nolanguagecat]]. * {{parameter|edition}} <code>= true</code> to refer to further information on the work's talk page. <!-- * {{parameter|categories}} = Forward-slash-separated list of categories; deprecated --> * {{parameter|shortcut}} = The shortcut to this page, if it exists. This is normally reserved for very large reference works (''e.g.'' [[EB11]]) * {{parameter|cover}} = The image used as a cover for the book when exported. Do not include the "File:" prefix, e.g. <code>Foobar.jpg</code>. You can use a page of a multi-page file using <code>Foobar.djvu/7</code>. * {{anchor+|defaultsort|{{parameter|sortkey}}, {{parameter|defaultsort}}}}: For sorting purposes the template will move the articles "a", "an" and "the" to the end of the title, on the root page and all its subpages; for example, [[The Times/1854/News/The Charge of the Light Brigade]] will be sorted as "Times, The/1854/News/Charge of the Light Brigade, The". To override this, set {{parameter|sortkey}} to the desired sort key, e.g. <code>sortkey = Charge of the Light Brigade, The</code>. * {{parameter|language}} = ISO code of the language in which the work was originally written ([[Template:ISO 639 name/doc|find the ISO code here]]—be sure to use the first one listed); adds work to the category for the original language; see [[:Category:Translations]]. Use with {{tl|translation header}} and {{tl|translations}}.<!-- -->{{#ifeq:{{ROOTPAGENAME}}|Translation header| * '''{{tl|Translation header}} only:''' ** {{parameter|original}} = name of the page that hosts the original language work (or chapter) on the [[:mul:|appropriate language Wikisource]]. A standard [[Help:Interlanguage links|interlanguage link]] to the original language work (or chapter) should also be present, though.<!-- -->}} * {{parameter|nocat}} <code>= true</code> to turn off automatic categorization (except for tracking categories) * See [[#Sister, related author, and portal wiki links|Sister, related author, and portal wiki links]] ** {{parameter|portal}} ** {{parameter|related-author}} * Sister wiki links are now typically now provided through Wikidata linking, which manages link rot issues. So while the parameters are shown here for fullness of scope, such usage would be used to override automated linking rather than as a primary use. ====All parameters==== <section begin="Full" />{{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext" highlight="9,20,23,25,28"> {{translation header | title = | author = | author-display = | section = | previous = | next = | notes = <!-- optional from here --> | year = | edition = | translator = | translator-display = | related-author = | portal = | contributor = | editor = | cover = | shortcut = <!-- modifying "year" behaviour; use one of --> | noyear = | noyearcat = <!-- modifying sorting behaviour --> | sortkey = <!-- translation header --> | language = | original = <!-- provided through wikidata, can be used to override wikidata --> | wikipedia = | commons = | commonscat = | wikiquote = | wikinews = | wiktionary = | wikibooks = | wikiversity = | wikispecies = | wikivoyage = | meta = }} </syntaxhighlight><!-- -->|<syntaxhighlight lang="wikitext" highlight="9,20,23,25"> {{header | title = | author = | author-display = | section = | previous = | next = | notes = <!-- optional from here --> | year = | edition = | translator = | translator-display = | related-author = | portal = | contributor = | editor = | cover = | shortcut = <!-- modifying "year" behaviour; use one of --> | noyear = | noyearcat = <!-- modifying sorting behaviour --> | sortkey = <!-- provided through wikidata, can be used to override wikidata --> | wikipedia = | commons = | commonscat = | wikiquote = | wikinews = | wiktionary = | wikibooks = | wikiversity = | wikispecies = | wikivoyage = | meta = }} </syntaxhighlight><!-- -->}}<section end="Full" /> ===Relative links=== With lengthy, multi-page works, using [[m:Help:Link#Subpage feature|relative links]] is highly recommended. This shortens the code and ensures that a work remains linked together even if it is moved or reorganised. The three formats are <nowiki>[[/subpage]]</nowiki> (subpage), <nowiki>[[../]]</nowiki> (parent), and <nowiki>[[../sibling]]</nowiki> (sibling)<ref>The specific form <nowiki>[[../sibling/]]</nowiki> can be used on a sibling to provide both a relative link, and the link label to a sibling page.</ref>; see the example usage below. Note that <nowiki>[[../]]</nowiki> will expand to the title of the parent page, which is ideal if the work is renamed at a later time. This depends on a page conforming to the page title standards in the [[WS:STYLE|Style guide]], with works in the form <nowiki>[[Work title]]</nowiki> and <nowiki>[[Work title/Subpage]]</nowiki>. {{smallrefs}} ===Chapter titles=== In general, include chapter titles in the "section" field, but avoid including them in the "previous" and "next" fields. For example: {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = [[../|Aurora de Chile]] | author = Camilo Henríquez | translator = | section = Issue 28. Thursday, August 20, 1812. Volume 1. | previous = [[../27|Issue 27]] | next = [[../29|Issue 29]] | language = es | original = | year = 1812 | notes = Click on the section headers to go to each article's individual page. }} </syntaxhighlight> {{translation header | title = [[Translation:Aurora de Chile|Aurora de Chile]] | author = Camilo Henríquez | translator = | section = Issue 28. Thursday, August 20, 1812. Volume 1. | previous = [[Translation:Aurora de Chile/27|Issue 27]] | next = [[Translation:Aurora de Chile/29|Issue 29]] | language = es | original = | year = 1812 | notes = Click on the section headers to go to each article's individual page. }}<!-- -->|<syntaxhighlight lang="wikitext"> {{header | title = [[../|The Book of Scottish Song]] | author = | editor = Alexander Whitelaw | translator = | section = Jock o' Hazeldean | contributor = Walter Scott | previous = [[../Sing on, sing on/]] | next = [[../The Laird o' Cockpen/]] | year = 1843 | notes = }} </syntaxhighlight> {{header | title = [[The Book of Scottish Song|The Book of Scottish Song]] | author = | editor = Alexander Whitelaw | translator = | section = Jock o' Hazeldean | contributor = Walter Scott | previous = [[The Book of Scottish Song/Sing on, sing on|Sing on, sing on]] | next = [[The Book of Scottish Song/The Laird o' Cockpen|The Laird o' Cockpen]] | year = 1843 | notes = }} }} }} ==Usage examples== ===Normal=== {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = [[../]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[../Chapter 2/]] | next = [[../Chapter 4/]] | notes = }} </syntaxhighlight> {{translation header | title = [[Alice's Adventures in Wonderland (1866)|Alice's Adventures in Wonderland]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[Alice's Adventures in Wonderland (1866)/Chapter 2|Chapter 2]] | next = [[Alice's Adventures in Wonderland (1866)/Chapter 4|Chapter 4]] | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = [[../]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[../Chapter 2/]] | next = [[../Chapter 4/]] | notes = }} </syntaxhighlight> {{header | title = [[Alice's Adventures in Wonderland (1866)|Alice's Adventures in Wonderland]] | author = Lewis Carroll | section = Chapter 3: A Caucus-Race and a Long Tale | previous = [[Alice's Adventures in Wonderland (1866)/Chapter 2|Chapter 2]] | next = [[Alice's Adventures in Wonderland (1866)/Chapter 4|Chapter 4]] | notes = }} }} }} ===No author link=== {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} </syntaxhighlight> {{translation header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} </syntaxhighlight> {{header | title = Peerage Act 1963 | author = the [[Portal:Parliament of the United Kingdom|Parliament of the United Kingdom]] | author-nolink = true | section = | previous = | next = | year = 1963 | noyear = true | notes = }} }} }} ===Translation=== {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = Sleeping Beauty | author = | section = | previous = | next = | translator = Hammurabi | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} </syntaxhighlight> {{translation header | title = Sleeping Beauty | author = | section = | previous = | next = | translator = Hammurabi | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} {{translation header | title = Sleeping Beauty | author = | section = | previous = | next = | translator = Hammurabi | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = Fables | author = Jean de La Fontaine | translator = Elizur Wright | section = | previous = | next = | notes = }} </syntaxhighlight> {{header | title = Fables | author = Jean de La Fontaine | translator = Elizur Wright | section = | previous = | next = | notes = }} }} }} {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<syntaxhighlight lang="wikitext"> {{translation header | title = Sleeping Beauty | author = | section = Example | previous = | next = | translator1 = Robert Burns (1759-1796) | translator1-display = Robert Burns | translator2 = Federico García Lorca | section-translator = unknown | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} </syntaxhighlight> {{translation header | title = Sleeping Beauty | author = | section = Example | previous = | next = | translator1 = Robert Burns (1759-1796) | translator1-display = Robert Burns | translator2 = Federico García Lorca | section-translator = unknown | year = 1900 | language = es | original = La bella durmiente del bosque | commonscat = La bella durmiente del bosque | notes = }} |<syntaxhighlight lang="wikitext"> {{header | title = Pantagruel | author = François Rabelais | translator1 = Thomas Urquhart | translator2 = Peter Antony Motteux | section-translator = unknown | section = Example | previous = | next = | notes = }} </syntaxhighlight> {{header | title = Pantagruel | author = François Rabelais | translator1 = Thomas Urquhart | translator2 = Peter Antony Motteux | section-translator = unknown | section = Example | previous = | next = | notes = }} }} }} ==Categories== <pre> | categories = 1st category / 2nd category </pre> '''Note:''' that use of this methodology excludes further editing by use of the ''HotCat'' tool, so this form should only be used where the categories are unlikely to need to be altered ==Sister, related author, and portal wiki links== You can link to Wikisource portals and other WMF projects using the optional wiki links parameters '''where required to override the data''' provided from Wikidata. These are: *{{parameter|portal}}, {{parameter|related-author}} * {{parameter|wikipedia}}, {{parameter|wikispecies}}, {{parameter|commons}}, {{parameter|commonscat}}, {{parameter|wikiquote}}, {{parameter|wikinews}}, {{parameter|wiktionary}}, {{parameter|wikibooks}}, {{parameter|wikiversity}}, {{parameter|meta}} are typically applied from Wikidata data through interwiki links, or through linking of {{property|P921}} so should only be used to override the default For portal this would generally be added to the root page of a work, rather than added repeatedly for each subpage. Usage on a subpage would be useful where the subpage alone has a relationship with the specified portal, whereas the parent work does not have that relationship. {{smaller|These links are generated using {{tl|plain sister}}}} {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} </syntaxhighlight> {{translation header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} |<syntaxhighlight lang="wikitext"> {{header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} </syntaxhighlight> {{header | title = Kinematics of Machinery | author = Franz Reuleaux | section = | previous = | next = | notes = | portal1 = Technology | portal2 = Germany | wikipedia = Kinematics of Machinery | related-author = Albert Einstein }} }} }} ;List * {{parameter|wikipedia}} * {{parameter|commons}} * {{parameter|commonscat}} * {{parameter|wikiquote}} * {{parameter|wikinews}} * {{parameter|wiktionary}} * {{parameter|wikibooks}} * {{parameter|wikiversity}} * {{parameter|wikispecies}} * {{parameter|wikivoyage}} * {{parameter|wikidata}} * {{parameter|meta}} ==Shortcuts== If a work has a shortcut, you can add it using the {{parameter|shortcut}} field. This should be in accordance with the [[WS:SHORT|shortcut guidelines]], and shortcuts should ''not'' be used for every work. {{doc example| {{#ifeq:{{ROOTPAGENAME}}|Translation header<!-- -->|<!--TODO: replace with translation header example--><syntaxhighlight lang="wikitext"> {{translation header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} </syntaxhighlight> {{translation header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} |<syntaxhighlight lang="wikitext"> {{header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} </syntaxhighlight> {{header | title = 1911 Encyclopædia Britannica | author = | section = | previous = | next = | notes = | shortcut = [[EB1911]] }} }} }} ==Advanced manipulation== ===Alternative headers=== <references group=notes /> ===JavaScript extraction=== The header values can be extracted using [[w:JavaScript|JavaScript]] by accessing the text values of their span wrappers: {| class="wikitable" ! value ! wrapper id |- | title | header-title-text |- | author | header-author-text |- | translator | header-translator-text |- | previous | headerprevious |- | next | headernext |- | notes | ''none'' |} == Microformat == {{UF-hcard-person}} == Technical == This template delegates some logic to Lua modules and uses sub templates to divide up the structural code: * [[Module:Header]] the main logic for parameter handling == Tracking categories == This template uses categories to track maintenance tasks, errors, and feature usage, which are grouped in [[:Category:Header tracking categories]]. ==See also== * [[MediaWiki:Proofreadpage header template]] for the auto-generated header available with <code><nowiki><pages header=1/></nowiki></code> * {{tl|textinfo}} for recording information on work's talk page * {{#ifeq:{{ROOTPAGENAME}}|Translation header|{{tl|header}} for template header used in mainspace|{{tl|translation header}} for template header used in '''Translation:''' namespace}} * {{tl|versions}} and {{tl|translations}} which also use {{ml|Header|header}} * {{tl|author}} for template header used in Author: namespace * {{tl|process header}} for template header used in Wikisource: namespace * {{tl|portal header}} for template header used in Portal: namespace * {{tl|RunningHeader}} for the headers to be used in source texts * <span class="plainlinks">[{{fullurl:Special:WhatLinksHere|target=Template:{{ROOTPAGENAME}}&namespace=10}} Derived templates leveraging Template:{{ROOTPAGENAME}}]</span> Templates called by this template: * {{tl|plain sister}} * {{tl|shortcut}} <!-- categories --> <includeonly> [[Category:Header templates]] [[Category:Templates emitting hCard microformats]] [[Category:Exclude in print]] {{#ifeq:{{ROOTPAGENAME}}|Translation header|[[Category:Translation templates]]}} </includeonly> gx3lliytjpbqzz3pm7nklylem48pc70 ಟೆಂಪ್ಲೇಟು:Shortcut 10 11549 276310 257034 2024-09-26T20:37:52Z ShakespeareFan00 7765 Delint - Does anything actually use the ID on this? 276310 wikitext text/x-wiki <templatestyles src="Shortcut/styles.css" /><includeonly><div <!--id="shortcut"--> class="wst-shortcut noprint"><div><div><div> <span>[[Wikisource:Shortcut|Shortcut]]:&#32;</span><br>{{{1}}} </div></div></div></div></includeonly><noinclude>{{documentation}}</noinclude> a94qk2ipe5k7yerjm567nz7e8m1wsh8 276311 276310 2024-11-11T08:44:32Z ~aanzx 6806 ೧ revision imported from [[:en:Template:Shortcut]] 276310 wikitext text/x-wiki <templatestyles src="Shortcut/styles.css" /><includeonly><div <!--id="shortcut"--> class="wst-shortcut noprint"><div><div><div> <span>[[Wikisource:Shortcut|Shortcut]]:&#32;</span><br>{{{1}}} </div></div></div></div></includeonly><noinclude>{{documentation}}</noinclude> a94qk2ipe5k7yerjm567nz7e8m1wsh8 ಟೆಂಪ್ಲೇಟು:Anchor+ 10 11692 276308 29197 2024-09-27T18:16:01Z ShakespeareFan00 7765 276308 wikitext text/x-wiki <onlyinclude><templatestyles src="Template:Anchor/styles.css" /><span {{makeid|{{{a|{{{1|}}}}}}|blank=.}} title="Anchor:{{anchorencode:{{{a|{{{1|}}}}}}}}" class="wst-anchor {{{class|}}}">{{{label|{{{2|{{{1|}}}}}}}}}</span></onlyinclude> {{documentation}} kozg7x99wrpw6sc7xb6dw185f9vf1kg 276309 276308 2024-11-11T08:44:31Z ~aanzx 6806 ೧ revision imported from [[:en:Template:Anchor+]] 276308 wikitext text/x-wiki <onlyinclude><templatestyles src="Template:Anchor/styles.css" /><span {{makeid|{{{a|{{{1|}}}}}}|blank=.}} title="Anchor:{{anchorencode:{{{a|{{{1|}}}}}}}}" class="wst-anchor {{{class|}}}">{{{label|{{{2|{{{1|}}}}}}}}}</span></onlyinclude> {{documentation}} kozg7x99wrpw6sc7xb6dw185f9vf1kg ಟೆಂಪ್ಲೇಟು:Smallrefs 10 11821 276304 259796 2024-11-07T13:21:42Z ShakespeareFan00 7765 259795 wikitext text/x-wiki <templatestyles src="Smallrefs/styles.css" /><!-- # classes: # * prp-pages-output is added to classes to allow the scoped Index-specific TemplateStyles to also apply to these references # * wst-smallrefs-ruled adds a "standard" top-rule # add a blank line before the div to prevent merging with ends of tables, etc --> <div class="prp-pages-output"><!-- This extra div is needed because Index Styles are over-specified with descendant selectors: .wst-smallrefs has to be a descendant, not sibling, of .prp-pages-output which in turn has to be a descendant of mw-parser-output. It's a bad design, but that's where we're at. --><div class="reflist wst-smallrefs {{#if:{{{rule|}}}|wst-smallrefs-ruled}} {{{class|}}}" style="{{#if:{{{fs|{{{1|}}}}}}|font-size:{{{fs|{{{1|83%}}}}}};}} {{#if:{{{lh|{{{2|}}}}}}|line-height:{{{lh|{{{2|1.25}}}}}};}} {{#if: {{{columns|}}}|column-count:{{{columns}}};}}"> {{#tag:references|{{{refs|{{{refx|}}}}}}|group={{{group|}}}}} </div> </div>{{#if:{{{fs|{{{1|}}}}}}|[[Category:Pages using smallrefs with font-size]]}}{{#if:{{{lh|{{{2|}}}}}}|[[Category:Pages using smallrefs with line-height]]}}<noinclude> {{Documentation}} </noinclude> 7qnvajtwo85yecoo2xogf67k2dh32qb 276305 276304 2024-11-11T08:44:30Z ~aanzx 6806 ೧ revision imported from [[:en:Template:Smallrefs]] 259795 wikitext text/x-wiki <templatestyles src="Smallrefs/styles.css" /><!-- # classes: # * prp-pages-output is added to classes to allow the scoped Index-specific TemplateStyles to also apply to these references # * wst-smallrefs-ruled adds a "standard" top-rule # add a blank line before the div to prevent merging with ends of tables, etc --> <div class="prp-pages-output"><!-- This extra div is needed because Index Styles are over-specified with descendant selectors: .wst-smallrefs has to be a descendant, not sibling, of .prp-pages-output which in turn has to be a descendant of mw-parser-output. It's a bad design, but that's where we're at. --><div class="reflist wst-smallrefs {{#if:{{{rule|}}}|wst-smallrefs-ruled}} {{{class|}}}" style="{{#if:{{{fs|{{{1|}}}}}}|font-size:{{{fs|{{{1|83%}}}}}};}} {{#if:{{{lh|{{{2|}}}}}}|line-height:{{{lh|{{{2|1.25}}}}}};}} {{#if: {{{columns|}}}|column-count:{{{columns}}};}}"> {{#tag:references|{{{refs|{{{refx|}}}}}}|group={{{group|}}}}} </div> </div>{{#if:{{{fs|{{{1|}}}}}}|[[Category:Pages using smallrefs with font-size]]}}{{#if:{{{lh|{{{2|}}}}}}|[[Category:Pages using smallrefs with line-height]]}}<noinclude> {{Documentation}} </noinclude> 7qnvajtwo85yecoo2xogf67k2dh32qb ಮಾಡ್ಯೂಲ್:Header 828 94311 276306 275772 2024-10-30T08:44:07Z CalendulaAsteraceae 6870 streamline override checks 276306 Scribunto text/plain --[=[ This is a module to implement logic for [[Template:Header]] and [[Template:Translation header]] TODO: - centuries are defined as starting on XX01, but WS categorizes them as starting on XX00 -- check whether that's a considered policy choice ]=] require('strict') local p = {} --p stands for package local yesno = require('Module:Yesno') local getArgs = require('Module:Arguments').getArgs local TableTools = require('Module:TableTools') local ISO_639_language_name = require('Module:ISO 639').language_name local parent_links = require('Module:Auto parents')._parent_links local construct_header = require('Module:Header structure').construct_header local headerAttributions = require('Module:Header/attribution') local construct_defaultsort = require('Module:Header/sort')._construct_defaultsort local construct_year = require('Module:Header/year').construct_year local current_title = mw.title.getCurrentTitle() --[=[ Wrap stylesheet in noexport div ]=] local function get_noexport_stylesheet(template) return tostring(mw.html.create('div'):addClass('ws-noexport'):wikitext(mw.getCurrentFrame():extensionTag('templatestyles', '', {src = template .. '/styles.css'}))) end --[=[ Get badge if any ]=] local function badge() return require('Module:Edition').badge({args = {category = '1', indicator = '1'}}) end --[=[ Detect explicit formatting in fields like 'section' and 'title' ]=] local function explicit_formatting(str) return str and (string.match(str, "\'\'\'?") or string.match(str, '<%s*/?%s*[iIbB]%s*>')) -- add more cases here or come up with a less silly way to do things end local function check_non_existent_author_pages(args, categories, checkArgs) -- check for cases that aren't supposed to produce a valid link local param = checkArgs.param local tracking_cat = checkArgs.tracking_cat or 'Works with non-existent author pages' if not param or not args[param] or yesno(args[param .. '-nolink']) then return end local lower_arg = string.lower(args[param]) local attr_data = headerAttributions.attr_data[param] or headerAttributions.attr_data[string.gsub(param, 'section%-', '')] if attr_data and attr_data['special_cases'] and attr_data['special_cases'][lower_arg] then return end -- check if page exists local target = mw.title.makeTitle('Author', args[param]) -- expensive function! if not target or not target.exists then table.insert(categories, tracking_cat) end return end --[=[ Construct the automatic categories for the header ]=] local function language_category_name(cat_works_start, lang) local cat_language_name = ISO_639_language_name(lang) or 'an undefined language' if lang == 'el' then cat_language_name = 'Modern Greek' end return cat_works_start .. ' ' .. cat_language_name end local function construct_categories(args, argsWithBlanks) local categories = {} -- categorize subpages local title = current_title local parent_exists = false while title.isSubpage and not parent_exists do title = mw.title.new(title.baseText, title.nsText) parent_exists = title.exists end if parent_exists and title:inNamespaces(0) then table.insert(categories, 'Subpages') elseif parent_exists then table.insert(categories, title.nsText .. ' subpages') end -- add categories from the categories parameter local manual_categories = (args.categories and mw.text.split(args.categories, '%s*/%s*', false)) or {} local using_cat = false for i, category in ipairs(manual_categories) do local cat = mw.text.trim(category) if cat ~= '' then table.insert(categories, cat) using_cat = true end end if using_cat then table.insert(categories, 'Works using categories parameter') end local known_override_types = { ['default'] = 'contributor type', ['author'] = 'author', ['translator'] = 'translator', ['section-author'] = 'contributor' } for k, v in pairs(argsWithBlanks) do -- Check for numerical parameters (which shouldn't be used) if type(k) == 'number' then table.insert(categories, 'Headers with numerical arguments') -- Check for 'override-' parameters elseif string.match(k, '^override%-') then local contrib_type = mw.text.split(k, '-', true) contrib_type = string.gsub(contrib_type[2], '%d*$', '') table.insert(categories, 'Pages with override ' .. (known_override_types[contrib_type] or known_override_types['default'])) end end -- check contributor parameters if args['section-author'] then table.insert(categories, 'Pages with contributor') end local editor = args['override-editor'] or args['editor'] if editor and not args['nocat'] then editor = string.lower(editor) if editor == 'unknown' or editor == '?' then table.insert(categories, 'Works with unknown editors') elseif editor == 'not mentioned' then table.insert(categories, 'Works with unmentioned editors') end end local translator = args['override-translator'] or args['translator'] if translator and not args['nocat'] then translator = string.lower(translator) if translator == 'unknown' or translator == 'not mentioned' or translator == '?' then table.insert(categories, 'Translations without translator information specified') end end local author = args['override-author'] or args['author'] if author and (string.lower(author) == 'unknown') and not args['nocat'] then if args.template_name == 'Translation header' then table.insert(categories, 'Translations of anonymous works') else table.insert(categories, 'Anonymous texts') end end -- check for non-existent contributor pages if current_title:inNamespaces(0, 114) or args.testing then local params_to_check = { {param = 'author'}, {param = 'editor'}, {param = 'translator'}, {param = 'composer', tracking_cat = 'Works with non-existent composer pages'}, {param = 'illustrator', tracking_cat = 'Works with non-existent illustrator pages'} } for k, v in pairs(params_to_check) do check_non_existent_author_pages(args, categories, v) check_non_existent_author_pages(args, categories, {param = 'section-' .. v.param, tracking_cat = v.tracking_cat}) end end if args['shortcut'] then if current_title:inNamespaces(0) then table.insert(categories, 'Mainspace pages with shortcuts') elseif current_title:inNamespaces(114) then table.insert(categories, 'Translation namespace pages with shortcuts') end end if args['noyear'] then table.insert(categories, 'Pages with noyear') end if args['noyearcat'] then table.insert(categories, 'Pages with noyearcat') end if args['nolanguagecat'] then table.insert(categories, 'Pages with nolanguagecat') end if args['cover'] then table.insert(categories, 'Pages with an export cover') end -- sanity/maintenance checks on various parameters -- allow-explicit-formatting parameter suppresses this check -- used by, for example, [[Template:Versions]] if not args['allow-explicit-formatting'] and (explicit_formatting(args['title']) or explicit_formatting(args['section'])) then table.insert(categories, 'Pages with explicit formatting in header fields') end -- translation header categories local isMainPage = ((current_title:inNamespaces(0, 114) and not current_title.isSubpage) or args['testing']) if not args['nocat'] and isMainPage then local cat_works_start = 'Works originally in' local cat_translations_start = 'Translations' if args.template_name == 'Translation header' then cat_works_start = 'Wikisource translations of works in' cat_translations_start = 'Wikisource translations' end if not args['nolanguagecat'] then if args['languages'] then for i, lang in ipairs(args['languages']) do table.insert(categories, language_category_name(cat_works_start, lang)) end end if args['interwiki-prefix'] then table.insert(categories, language_category_name(cat_works_start, args['interwiki-prefix'])) end end if not args['languages'] and args['language-required'] then table.insert(categories, cat_translations_start .. ' with no original language') end if args.template_name == 'Translation header' and not args.original then table.insert(categories, 'Wikisource translations with no original source') end end -- detect inappropriate template use --[=[ if (args['template-name'] ~= 'Translation header' and translator and string.lower(translator) == 'wikisource') or (current_title:inNamespaces(114) and args['template-name'] ~= 'Translation header') then -- tracking category for pages that should be using translation header? end if current_title:inNamespaces(0) and args['template-name'] == 'Translation header' then -- tracking category for translation header in mainspace? end ]=] categories = TableTools.removeDuplicates(categories) local category_links = {} for k, v in pairs(categories) do table.insert(category_links, '[[Category:' .. v .. ']]') end return table.concat(category_links) end --[=[ For debugging ]=] --[=[ function p.construct_categories(args) return construct_categories(args, args) end ]=] --[=[ Assemble the title ]=] local function header_title(args) local title = args.title or '' local titleSpan = tostring(mw.html.create('span'):attr('id', 'header-title-text'):wikitext(title)) local year = construct_year(args) local attr = headerAttributions.construct_attributions(args) local section = headerAttributions.construct_section(args) if attr ~= '' and title ~= '' then attr = tostring(mw.html.create('br'):attr('id', 'header-title-break')) .. attr end return table.concat({titleSpan, year, attr, section}) end local function get_languages(args, prefix) prefix = (prefix and prefix .. '%-') or '' -- language handling local languages = {} for k, v in pairs(args) do local n local nText = string.match(k, '^' .. prefix .. 'language%d*$') if nText then n = string.gsub(nText, 'language(%d*)$', '%1') n = tonumber(n) or 1 languages[n] = v end end languages = TableTools.compressSparseArray(languages) if #languages == 0 then return {} end local language_name local language_names = {} for i, lang in ipairs(languages) do local name = ISO_639_language_name(lang) if name then table.insert(language_names, name) end end if #language_names == 1 then language_name = language_names[1] elseif #language_names > 1 then language_name = table.concat(language_names, ', ', 1, #language_names - 1) .. ' and ' .. language_names[#language_names] end return { languages = languages, language_name = language_name } end --[=[ [[Template:Header]] ]=] function p._header(args, argsWithBlanks) argsWithBlanks = argsWithBlanks or args -- aliases local dup_cat local newArgs = {} local aliases = { ['section-author'] = 'contributor', ['section-translator'] = 'contributing%-translator' } for k, v in pairs(args) do local newkey = string.lower(string.gsub(string.gsub(tostring(k), '_', '-'), ' ', '-')) for arg, alias in pairs(aliases) do newkey = string.gsub(newkey, alias, arg) end if newkey ~= tostring(k) then if argsWithBlanks[newkey] then dup_cat = 'Pages using duplicate arguments in template calls' end if not args[newkey] then newArgs[newkey] = newArgs[newkey] or v end end if newkey == 'testing' or newkey == 'nocat' or newkey == 'nolanguagecat' or newkey == 'language-required' or string.match(newkey, '%-nolink$') then newArgs[newkey] = newArgs[newkey] or yesno(v) end end for k, v in pairs(newArgs) do args[k] = v argsWithBlanks[k] = v end if dup_cat then table.insert(categories, dup_cat) end args.sortkey = args.defaultsort or args.sortkey -- default values args.template_name = args.template_name or 'Header' if args.testing == nil then args.testing = current_title.fullText == 'Template:Header/testcases' or current_title.fullText == 'Template:Translation header/testcases' end -- noyearcat has different behavior for nil and false args.noyearcat = args.nocat == true or nil local language_res = get_languages(args) args.languages = language_res.languages args.language_name = language_res.language_name local section_language_res = get_languages(args, 'section') args.section_languages = section_language_res.languages args.section_language_name = section_language_res.language_name if not args['interwiki-prefix'] and args['languages'] then if #(args['languages']) > 1 then args['interwiki-prefix'] = 'mul' else args['interwiki-prefix'] = args['languages'][1] end end -- add values to argsWithBlanks for k, v in pairs(args) do if not argsWithBlanks[k] then argsWithBlanks[k] = v end end -- default values for title and section (allow override by setting to blank) if not argsWithBlanks['title'] then args['title'] = parent_links({}) argsWithBlanks['title'] = args['title'] end if not argsWithBlanks['section'] and current_title.isSubpage then args['section'] = current_title.subpageText argsWithBlanks['section'] = args['section'] end -- header args args.pre_container = badge() args.header_class = 'wst-header ws-header ws-noexport noprint dynlayout-exempt ' .. (args.header_class or '') args.main_class = 'headertemplate' -- title args.main_title = header_title(args) -- FIXME: just use Wikidata instead of interwiki links? local interwiki = '' if args.template_name == 'Translation header' and args['interwiki-prefix'] then interwiki = tostring(mw.html.create('span'):addClass('interwiki-info'):attr('id', args['interwiki-prefix']):attr('title', '(original)')) if args.original and (args['interwiki-prefix'] == 'ang' or args['interwiki-prefix'] == 'enm' or args['interwiki-prefix'] == 'sco') then -- cycle to mul.ws and back around to en.ws interwiki = interwiki .. '[[' .. args['interwiki-prefix'] .. ':en:' .. args.original .. ']]' elseif args.original then -- general interwiki link interwiki = interwiki .. '[[' .. args['interwiki-prefix'] .. ':' .. args.original .. ']]' end end -- set defaultsort tracking categories args.equalsortcat = '[[Category:' .. 'Headers with DefaultSort equal to page title' .. ']]' args.diffsortcat = '[[Category:' .. 'Headers applying DefaultSort key' .. ']]' args.post_notes = table.concat({ headerAttributions.construct_microformat(args), construct_categories(args, argsWithBlanks), construct_defaultsort(args), interwiki }) return get_noexport_stylesheet('Header') .. construct_header(args) end function p.header(frame) return p._header( getArgs(frame), getArgs(frame, {removeBlanks = false}) ) end --[=[ [[Template:Translation header]] ]=] function p._translation_header(args, argsWithBlanks) argsWithBlanks = argsWithBlanks or args args.header_class = 'wst-translation-header' args.template_name = 'Translation header' args.notes_class = 'header-notes' args['language-required'] = true return get_noexport_stylesheet('Translation header') .. p._header(args, argsWithBlanks) end function p.translation_header(frame) return p._translation_header( getArgs(frame), getArgs(frame, {removeBlanks = false}) ) end return p mkfrrtcepivmyn4pqb8epmn6423l25a 276307 276306 2024-11-11T08:44:31Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Header]] 276306 Scribunto text/plain --[=[ This is a module to implement logic for [[Template:Header]] and [[Template:Translation header]] TODO: - centuries are defined as starting on XX01, but WS categorizes them as starting on XX00 -- check whether that's a considered policy choice ]=] require('strict') local p = {} --p stands for package local yesno = require('Module:Yesno') local getArgs = require('Module:Arguments').getArgs local TableTools = require('Module:TableTools') local ISO_639_language_name = require('Module:ISO 639').language_name local parent_links = require('Module:Auto parents')._parent_links local construct_header = require('Module:Header structure').construct_header local headerAttributions = require('Module:Header/attribution') local construct_defaultsort = require('Module:Header/sort')._construct_defaultsort local construct_year = require('Module:Header/year').construct_year local current_title = mw.title.getCurrentTitle() --[=[ Wrap stylesheet in noexport div ]=] local function get_noexport_stylesheet(template) return tostring(mw.html.create('div'):addClass('ws-noexport'):wikitext(mw.getCurrentFrame():extensionTag('templatestyles', '', {src = template .. '/styles.css'}))) end --[=[ Get badge if any ]=] local function badge() return require('Module:Edition').badge({args = {category = '1', indicator = '1'}}) end --[=[ Detect explicit formatting in fields like 'section' and 'title' ]=] local function explicit_formatting(str) return str and (string.match(str, "\'\'\'?") or string.match(str, '<%s*/?%s*[iIbB]%s*>')) -- add more cases here or come up with a less silly way to do things end local function check_non_existent_author_pages(args, categories, checkArgs) -- check for cases that aren't supposed to produce a valid link local param = checkArgs.param local tracking_cat = checkArgs.tracking_cat or 'Works with non-existent author pages' if not param or not args[param] or yesno(args[param .. '-nolink']) then return end local lower_arg = string.lower(args[param]) local attr_data = headerAttributions.attr_data[param] or headerAttributions.attr_data[string.gsub(param, 'section%-', '')] if attr_data and attr_data['special_cases'] and attr_data['special_cases'][lower_arg] then return end -- check if page exists local target = mw.title.makeTitle('Author', args[param]) -- expensive function! if not target or not target.exists then table.insert(categories, tracking_cat) end return end --[=[ Construct the automatic categories for the header ]=] local function language_category_name(cat_works_start, lang) local cat_language_name = ISO_639_language_name(lang) or 'an undefined language' if lang == 'el' then cat_language_name = 'Modern Greek' end return cat_works_start .. ' ' .. cat_language_name end local function construct_categories(args, argsWithBlanks) local categories = {} -- categorize subpages local title = current_title local parent_exists = false while title.isSubpage and not parent_exists do title = mw.title.new(title.baseText, title.nsText) parent_exists = title.exists end if parent_exists and title:inNamespaces(0) then table.insert(categories, 'Subpages') elseif parent_exists then table.insert(categories, title.nsText .. ' subpages') end -- add categories from the categories parameter local manual_categories = (args.categories and mw.text.split(args.categories, '%s*/%s*', false)) or {} local using_cat = false for i, category in ipairs(manual_categories) do local cat = mw.text.trim(category) if cat ~= '' then table.insert(categories, cat) using_cat = true end end if using_cat then table.insert(categories, 'Works using categories parameter') end local known_override_types = { ['default'] = 'contributor type', ['author'] = 'author', ['translator'] = 'translator', ['section-author'] = 'contributor' } for k, v in pairs(argsWithBlanks) do -- Check for numerical parameters (which shouldn't be used) if type(k) == 'number' then table.insert(categories, 'Headers with numerical arguments') -- Check for 'override-' parameters elseif string.match(k, '^override%-') then local contrib_type = mw.text.split(k, '-', true) contrib_type = string.gsub(contrib_type[2], '%d*$', '') table.insert(categories, 'Pages with override ' .. (known_override_types[contrib_type] or known_override_types['default'])) end end -- check contributor parameters if args['section-author'] then table.insert(categories, 'Pages with contributor') end local editor = args['override-editor'] or args['editor'] if editor and not args['nocat'] then editor = string.lower(editor) if editor == 'unknown' or editor == '?' then table.insert(categories, 'Works with unknown editors') elseif editor == 'not mentioned' then table.insert(categories, 'Works with unmentioned editors') end end local translator = args['override-translator'] or args['translator'] if translator and not args['nocat'] then translator = string.lower(translator) if translator == 'unknown' or translator == 'not mentioned' or translator == '?' then table.insert(categories, 'Translations without translator information specified') end end local author = args['override-author'] or args['author'] if author and (string.lower(author) == 'unknown') and not args['nocat'] then if args.template_name == 'Translation header' then table.insert(categories, 'Translations of anonymous works') else table.insert(categories, 'Anonymous texts') end end -- check for non-existent contributor pages if current_title:inNamespaces(0, 114) or args.testing then local params_to_check = { {param = 'author'}, {param = 'editor'}, {param = 'translator'}, {param = 'composer', tracking_cat = 'Works with non-existent composer pages'}, {param = 'illustrator', tracking_cat = 'Works with non-existent illustrator pages'} } for k, v in pairs(params_to_check) do check_non_existent_author_pages(args, categories, v) check_non_existent_author_pages(args, categories, {param = 'section-' .. v.param, tracking_cat = v.tracking_cat}) end end if args['shortcut'] then if current_title:inNamespaces(0) then table.insert(categories, 'Mainspace pages with shortcuts') elseif current_title:inNamespaces(114) then table.insert(categories, 'Translation namespace pages with shortcuts') end end if args['noyear'] then table.insert(categories, 'Pages with noyear') end if args['noyearcat'] then table.insert(categories, 'Pages with noyearcat') end if args['nolanguagecat'] then table.insert(categories, 'Pages with nolanguagecat') end if args['cover'] then table.insert(categories, 'Pages with an export cover') end -- sanity/maintenance checks on various parameters -- allow-explicit-formatting parameter suppresses this check -- used by, for example, [[Template:Versions]] if not args['allow-explicit-formatting'] and (explicit_formatting(args['title']) or explicit_formatting(args['section'])) then table.insert(categories, 'Pages with explicit formatting in header fields') end -- translation header categories local isMainPage = ((current_title:inNamespaces(0, 114) and not current_title.isSubpage) or args['testing']) if not args['nocat'] and isMainPage then local cat_works_start = 'Works originally in' local cat_translations_start = 'Translations' if args.template_name == 'Translation header' then cat_works_start = 'Wikisource translations of works in' cat_translations_start = 'Wikisource translations' end if not args['nolanguagecat'] then if args['languages'] then for i, lang in ipairs(args['languages']) do table.insert(categories, language_category_name(cat_works_start, lang)) end end if args['interwiki-prefix'] then table.insert(categories, language_category_name(cat_works_start, args['interwiki-prefix'])) end end if not args['languages'] and args['language-required'] then table.insert(categories, cat_translations_start .. ' with no original language') end if args.template_name == 'Translation header' and not args.original then table.insert(categories, 'Wikisource translations with no original source') end end -- detect inappropriate template use --[=[ if (args['template-name'] ~= 'Translation header' and translator and string.lower(translator) == 'wikisource') or (current_title:inNamespaces(114) and args['template-name'] ~= 'Translation header') then -- tracking category for pages that should be using translation header? end if current_title:inNamespaces(0) and args['template-name'] == 'Translation header' then -- tracking category for translation header in mainspace? end ]=] categories = TableTools.removeDuplicates(categories) local category_links = {} for k, v in pairs(categories) do table.insert(category_links, '[[Category:' .. v .. ']]') end return table.concat(category_links) end --[=[ For debugging ]=] --[=[ function p.construct_categories(args) return construct_categories(args, args) end ]=] --[=[ Assemble the title ]=] local function header_title(args) local title = args.title or '' local titleSpan = tostring(mw.html.create('span'):attr('id', 'header-title-text'):wikitext(title)) local year = construct_year(args) local attr = headerAttributions.construct_attributions(args) local section = headerAttributions.construct_section(args) if attr ~= '' and title ~= '' then attr = tostring(mw.html.create('br'):attr('id', 'header-title-break')) .. attr end return table.concat({titleSpan, year, attr, section}) end local function get_languages(args, prefix) prefix = (prefix and prefix .. '%-') or '' -- language handling local languages = {} for k, v in pairs(args) do local n local nText = string.match(k, '^' .. prefix .. 'language%d*$') if nText then n = string.gsub(nText, 'language(%d*)$', '%1') n = tonumber(n) or 1 languages[n] = v end end languages = TableTools.compressSparseArray(languages) if #languages == 0 then return {} end local language_name local language_names = {} for i, lang in ipairs(languages) do local name = ISO_639_language_name(lang) if name then table.insert(language_names, name) end end if #language_names == 1 then language_name = language_names[1] elseif #language_names > 1 then language_name = table.concat(language_names, ', ', 1, #language_names - 1) .. ' and ' .. language_names[#language_names] end return { languages = languages, language_name = language_name } end --[=[ [[Template:Header]] ]=] function p._header(args, argsWithBlanks) argsWithBlanks = argsWithBlanks or args -- aliases local dup_cat local newArgs = {} local aliases = { ['section-author'] = 'contributor', ['section-translator'] = 'contributing%-translator' } for k, v in pairs(args) do local newkey = string.lower(string.gsub(string.gsub(tostring(k), '_', '-'), ' ', '-')) for arg, alias in pairs(aliases) do newkey = string.gsub(newkey, alias, arg) end if newkey ~= tostring(k) then if argsWithBlanks[newkey] then dup_cat = 'Pages using duplicate arguments in template calls' end if not args[newkey] then newArgs[newkey] = newArgs[newkey] or v end end if newkey == 'testing' or newkey == 'nocat' or newkey == 'nolanguagecat' or newkey == 'language-required' or string.match(newkey, '%-nolink$') then newArgs[newkey] = newArgs[newkey] or yesno(v) end end for k, v in pairs(newArgs) do args[k] = v argsWithBlanks[k] = v end if dup_cat then table.insert(categories, dup_cat) end args.sortkey = args.defaultsort or args.sortkey -- default values args.template_name = args.template_name or 'Header' if args.testing == nil then args.testing = current_title.fullText == 'Template:Header/testcases' or current_title.fullText == 'Template:Translation header/testcases' end -- noyearcat has different behavior for nil and false args.noyearcat = args.nocat == true or nil local language_res = get_languages(args) args.languages = language_res.languages args.language_name = language_res.language_name local section_language_res = get_languages(args, 'section') args.section_languages = section_language_res.languages args.section_language_name = section_language_res.language_name if not args['interwiki-prefix'] and args['languages'] then if #(args['languages']) > 1 then args['interwiki-prefix'] = 'mul' else args['interwiki-prefix'] = args['languages'][1] end end -- add values to argsWithBlanks for k, v in pairs(args) do if not argsWithBlanks[k] then argsWithBlanks[k] = v end end -- default values for title and section (allow override by setting to blank) if not argsWithBlanks['title'] then args['title'] = parent_links({}) argsWithBlanks['title'] = args['title'] end if not argsWithBlanks['section'] and current_title.isSubpage then args['section'] = current_title.subpageText argsWithBlanks['section'] = args['section'] end -- header args args.pre_container = badge() args.header_class = 'wst-header ws-header ws-noexport noprint dynlayout-exempt ' .. (args.header_class or '') args.main_class = 'headertemplate' -- title args.main_title = header_title(args) -- FIXME: just use Wikidata instead of interwiki links? local interwiki = '' if args.template_name == 'Translation header' and args['interwiki-prefix'] then interwiki = tostring(mw.html.create('span'):addClass('interwiki-info'):attr('id', args['interwiki-prefix']):attr('title', '(original)')) if args.original and (args['interwiki-prefix'] == 'ang' or args['interwiki-prefix'] == 'enm' or args['interwiki-prefix'] == 'sco') then -- cycle to mul.ws and back around to en.ws interwiki = interwiki .. '[[' .. args['interwiki-prefix'] .. ':en:' .. args.original .. ']]' elseif args.original then -- general interwiki link interwiki = interwiki .. '[[' .. args['interwiki-prefix'] .. ':' .. args.original .. ']]' end end -- set defaultsort tracking categories args.equalsortcat = '[[Category:' .. 'Headers with DefaultSort equal to page title' .. ']]' args.diffsortcat = '[[Category:' .. 'Headers applying DefaultSort key' .. ']]' args.post_notes = table.concat({ headerAttributions.construct_microformat(args), construct_categories(args, argsWithBlanks), construct_defaultsort(args), interwiki }) return get_noexport_stylesheet('Header') .. construct_header(args) end function p.header(frame) return p._header( getArgs(frame), getArgs(frame, {removeBlanks = false}) ) end --[=[ [[Template:Translation header]] ]=] function p._translation_header(args, argsWithBlanks) argsWithBlanks = argsWithBlanks or args args.header_class = 'wst-translation-header' args.template_name = 'Translation header' args.notes_class = 'header-notes' args['language-required'] = true return get_noexport_stylesheet('Translation header') .. p._header(args, argsWithBlanks) end function p.translation_header(frame) return p._translation_header( getArgs(frame), getArgs(frame, {removeBlanks = false}) ) end return p mkfrrtcepivmyn4pqb8epmn6423l25a ಮಾಡ್ಯೂಲ್:Documentation/styles.css 828 95178 276322 273157 2024-11-07T13:27:42Z Sjoerddebruin 7771 Dark mode styles via :W 276322 sanitized-css text/css .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; color:inherit; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } @media screen { html.skin-theme-clientpref-night .documentation, html.skin-theme-clientpref-night .documentation-metadata { background-color: #0b1e1c; } } @media screen and ( prefers-color-scheme: dark) { html.skin-theme-clientpref-os .documentation, html.skin-theme-clientpref-os .documentation-metadata { background-color: #0b1e1c; } } nequp42tnkqdlpdirqvbqiakbtqrx1f 276323 276322 2024-11-11T08:44:33Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Documentation/styles.css]] 276322 sanitized-css text/css .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; color:inherit; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } @media screen { html.skin-theme-clientpref-night .documentation, html.skin-theme-clientpref-night .documentation-metadata { background-color: #0b1e1c; } } @media screen and ( prefers-color-scheme: dark) { html.skin-theme-clientpref-os .documentation, html.skin-theme-clientpref-os .documentation-metadata { background-color: #0b1e1c; } } nequp42tnkqdlpdirqvbqiakbtqrx1f ಟೆಂಪ್ಲೇಟು:TOC right/styles.css 10 95254 276312 252642 2024-08-04T20:19:05Z CalendulaAsteraceae 6870 276312 sanitized-css text/css .tocright { float: right; clear: right; width: auto; background: none; padding: .5em 0 .8em 1.4em; margin-bottom: .5em; } .tocright-clear-left { clear: left; } .tocright-clear-both { clear: both; } .tocright-clear-none { clear: none; } /* on very small screens, don't allow a content "sliver" up the left side */ @media screen and ( max-width: 720px ) { .tocright { width: 100%; } } 8pdldcabbl3mdi2wgpqvne1s73zq9o4 276313 276312 2024-11-11T08:44:32Z ~aanzx 6806 ೧ revision imported from [[:en:Template:TOC_right/styles.css]] 276312 sanitized-css text/css .tocright { float: right; clear: right; width: auto; background: none; padding: .5em 0 .8em 1.4em; margin-bottom: .5em; } .tocright-clear-left { clear: left; } .tocright-clear-both { clear: both; } .tocright-clear-none { clear: none; } /* on very small screens, don't allow a content "sliver" up the left side */ @media screen and ( max-width: 720px ) { .tocright { width: 100%; } } 8pdldcabbl3mdi2wgpqvne1s73zq9o4 ಮಾಡ್ಯೂಲ್:Wikidata label 828 95261 276316 252662 2024-04-16T16:26:37Z EncycloPetey 7766 Protected "[[Module:Wikidata label]]" ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) 252661 Scribunto text/plain --[[ __ __ _ _ __ ___ _ _ _ _ _ _ _ | \/ | ___ __| |_ _| | ___ \ \ / (_) | _(_) __| | __ _| |_ __ _ | | __ _| |__ ___| | | |\/| |/ _ \ / _` | | | | |/ _ (_) \ /\ / /| | |/ / |/ _` |/ _` | __/ _` | | |/ _` | '_ \ / _ \ | | | | | (_) | (_| | |_| | | __/_ \ V V / | | <| | (_| | (_| | || (_| | | | (_| | |_) | __/ | |_| |_|\___/ \__,_|\__,_|_|\___(_) \_/\_/ |_|_|\_\_|\__,_|\__,_|\__\__,_| |_|\__,_|_.__/ \___|_| This module is intended to be the engine behind "Template:Label". This module was copied from Commons please ask for changes there. Please do not modify this code without applying the changes first at "Module:Wikidata label/sandbox" and testing at "Module:Wikidata label/testcases". Authors and maintainers: * User:Jarekt - original version ]] require('strict') -- used for debugging purposes as it detects cases of unintended global variables --============================================= --=== Internal functions ====================== --============================================= --------------------------------------------------------------------------- -- Normalize input arguments by converting them all to lower case and -- replacing space with "_" in the argument name. Also empty strings are -- converted to nils. Arguments are collected from arguments passed to the -- module and if missing from the template that calls the module local function getArgs(frame) local function normalize_input_args(input_args, output_args) for name, value in pairs( input_args ) do value = mw.text.trim(value) -- trim whitespaces from the beggining and the end of the string if value ~= '' then -- nuke empty strings if type(name)=='string' then name = string.gsub( string.lower(name), ' ', '_') end output_args[name] = value end end return output_args end local args = {} args = normalize_input_args(frame:getParent().args, args) args = normalize_input_args(frame.args, args) return args end --------------------------------------------------------------------------- -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to Module:Yesno but does not assume val is a string local function yesno(val, default) if type(val) == 'boolean' then return val elseif type(val) == 'number' then if val == 1 then return true elseif val == 0 then return false end elseif type(val) == 'string' then val = mw.ustring.lower(val) -- put in lower case if val == 'no' or val == 'n' or val == 'false' or val == '0' then return false elseif val == 'yes' or val == 'y' or val == 'true' or val == '1' then return true end end return default end ------------------------------------------------------------------------- -- get message in a given language -- INPUTS: -- * msg - name of a message. For it to work [[MediaWiki:msg]] page need to be set up -- * lang - translate message to language "lang" -- * default - string to return in case this module is moved to a project where this message is not set -- OUTPUT: -- * translated message local function getMessage(msg, lang, default) msg = mw.message.new(msg):inLanguage(lang):plain() return (msg == nil and default) or msg end --------------------------------------------------------------------------- -- use different sitelink call depending if you already have an entity or not -- INPUTS: -- * item and entity - entity id and entity: if full entity already uploded than use that -- otherwise use entity id to look up sitelink -- * lang - language of the project -- OUTPUT: -- * sitelink local function getSitelink(item, entity, lang) if entity and entity.getSitelink then -- if we have entity then use it return entity:getSitelink(lang .. 'wiki') else -- if no entity then use different function return mw.wikibase.getSitelink(item, lang .. 'wiki') end end --------------------------------------------------------------------------- -- use different sitelink call depending if you already have an entity or not -- INPUTS: -- * item and entity - entity id and entity: if full entity already uploded than use that -- otherwise use entity id to look up sitelink -- * prop - property for which to return the best statment -- OUTPUT: -- * value of the best statment (only from the first one) local function getBestStatementsValue(item, entity, prop) local statments if entity then statments = entity:getBestStatements(prop) else statments = mw.wikibase.getBestStatements(item, prop) end for _, statment in ipairs(statments) do if statment and statment.mainsnak.datavalue.value then return statment.mainsnak.datavalue.value end end end --------------------------------------------------------------------------- -- change capitalization of the label -- INPUTS: -- * label - label string -- * capitalization - capitalization to be applied: allowed values are "tc", "lc", -- "uc", "lcfirst", and "ucfirst". Any other value will return original string -- * lang - language of the label -- OUTPUT: -- * value of the best statment (only from the first one) local function apply_capitalization(label, capitalization, lang) capitalization = string.lower(capitalization or 'none') if capitalization == 'none' then return label elseif capitalization == 'uc' then return mw.language.new(lang):uc(label) elseif capitalization == 'lc' then return mw.language.new(lang):lc(label) elseif capitalization == 'tc' then -- title case local new_label = {} for _, word in ipairs(mw.text.split(label, ' ')) do table.insert(new_label, mw.language.new(lang):ucfirst(word)) end return table.concat(new_label, ' ') elseif capitalization == 'ucfirst' then return mw.language.new(lang):ucfirst(label) elseif capitalization == 'lcfirst' then return mw.language.new(lang):lcfirst(label) end return label end --[[------------------------------------------------------------------------- get link based on user preference INPUTS: * link_type - can be : * "wikidata" - link to wikidata * "wikipedia" - link to wikipedia (language dependent) * "wikidata talk" - link to wikidata talk page * "commons" - link to commons (try sitelink then commons category then commons gallery) * "commonscat" - link to commons (try commons category then commons gallery) * "-" - means no link * item - entity ID (always provided) * entity - whole entity. It can be nil if whole entity is not loaded * langList - language fallback list for preferred language (required) OUTPUT: * link - link to the wikimedia page ]] local function getLink(link_type, item, entity, langList) local link, eLink link_type = mw.ustring.lower(link_type or '') local item_type = mw.ustring.sub(item, 1, 1) -- first letter prefix of item entity ID: 'Q', 'P' or 'M' if item_type == 'M' then eLink='c:Special:EntityPage/'..item elseif item_type == 'Q' then eLink='d:'..item -- wikibase entity page link elseif item_type == 'P' then eLink='d:Property:'..item -- wikibase entity page link else eLink='d:Special:EntityPage/'..item end if link_type == '-' then -- allow different link formats link = '' -- no link elseif link_type == 'wikidata' or item_type == 'M' then link = eLink -- link to wikibase entity page elseif link_type == 'wikidata talk' and item_type == 'P' then link = 'd:Property talk:'.. item -- link to wikidata property talk page elseif link_type == 'wikidata talk' then link = 'd:Talk:'..item -- link to wikidata talk page elseif link_type == 'commons' or link_type == 'commonscat' then --[[ When link_type == 'commons' we try the following links (in specified order): 1) commons sitelink 2) P373 "Commons Category" claims 3) P935 "Commons Gallery" claims Since most items have a commons sitelink we never have to look for claims When link_type == 'commonscat' we try to maximize chances of commons link being a category, so we try the following links (in specified order): 1) commons sitelink, which is kept if it points to a category 2) P373 "Commons Category" claims 3) commons sitelink (which does not point to a category) 4) P935 "Commons Gallery" claims Since most pages have a commons sitelink we never have to look for claims ]] local sLink = getSitelink(item, entity, 'commons') -- look for sitelink to commons if sLink then sLink = 'c:'..sLink if (link_type == 'commons') or (link_type == 'commonscat' and mw.ustring.find(sLink, 'Category:')) then link = sLink end end if not link then -- try linking to P373 "Commons Category" local cat = getBestStatementsValue(item, entity, 'P373') link = (cat ~= nil and 'c:Category:' .. cat) or nil end link = link or sLink if not link then -- try linking to P935 "Commons Gallery" link = getBestStatementsValue(item, entity, 'P935') end end if not link then -- apply default "Wikipedia" link type for _, language in ipairs(langList) do local sitelink = getSitelink(item, entity, language) if sitelink then link = 'w:'.. language ..':'.. sitelink break end end end return link or eLink -- no wiki sitelink, so link to wikidata end --============================================= --=== External functions ====================== --============================================= local p = {} --====================================================================== --=== API functions for use from other Scribunto modules =============== --====================================================================== --[[ _getLabel This function returns a label translated to desired language, created based on wikidata Inputs: 1: item - wikidata's item's q-id or entity class 2: lang - desired language of the label 3: link_type - link style. Possible values (case-insensitive): "wikipedia", "wikidata", "Commons", or "-" (no link) 4: capitalization - can be "uc" (upper case), "lc" (lower case), "ucfirst" (upper case for the first letter), "lcfirst" (lower case for the first letter), or 'none' (default) Error Handling: Bad q-id will result in displayed error ]] function p._getLabel(item, lang, link_type, capitalization, show_id) local entity, s, link, label, language, desc -- clean up the input parameters if type(item) ~= 'string' then -- "item" is not a q-id entity = item -- "item" must be the entity item = entity.id -- look-up q-id elseif tonumber(item) then -- if it is just the number then add "Q" in front item = 'Q'..item end item = mw.ustring.gsub(mw.ustring.upper(item), 'PROPERTY:P', 'P') -- make all the properties the same and capitalize if not lang then label, lang = mw.wikibase.getLabelWithLang(item) end if not lang then -- if still no language lang = mw.getCurrentFrame():callParserFunction("int","lang") -- get user's chosen language label = nil end -- build language fallback list lang = mw.ustring.lower(lang) local langList = mw.language.getFallbacksFor(lang) table.insert(langList, 1, lang) -- get label (visible part of the link) if not label then for _, language in ipairs(langList) do -- loop over language fallback list looking for label in the specific language if entity then label = entity:getLabel(language) else label = mw.wikibase.getLabelByLang(item, language) end if label then break end -- label found and we are done end end if label then -- wikitext-escape the label if we have one label = mw.text.nowiki(label) end if not label then -- no labels found, so just show the q-id label = item elseif show_id then -- add id show_id = yesno(show_id,false) if show_id then local wordsep = getMessage('Word-separator', lang, ' ') local id = mw.message.new('parentheses', item):inLanguage(lang):plain() id = (id~=nil and id) or ('('..item..')') -- in case this module is moved to a project where {{int:parenthesis}} is not set label = label .. wordsep .. "<small>" .. id .. "</small>" end end label = apply_capitalization(label, capitalization, lang) -- look for description if entity and entity.descriptions and lang then for _, language in ipairs(langList) do if entity.descriptions[language] then desc = entity.descriptions[language].value break end end else desc = mw.wikibase.getDescription(item) end if desc and link_type ~= '-' then -- wikitext-escape the description if we have one desc = mw.text.nowiki(desc) -- add description as hover text label = '<span title="' .. desc .. '">' .. label .. '</span>' end -- return the results if link_type == '-' then return label -- return just the label else link = getLink(link_type, item, entity, langList) return '[[' .. link .. '|' .. label .. ']]' -- return link end end --[[------------------------------------------------------------------------------- _sitelinks This function returns a table of sitelinks for a single project organized by language Inputs: 1: item - wikidata's item's q-id or entity class 2: project - (case-insensitive) one of: "wikipedia", "wikisource", "wikiquote", "wikibooks", "wikinews", "wikiversity", "wikivoyage", "wiktionary", "commons", "mediawiki", "wikispecies", "wikidata", etc. Output: Table of sitelinks with language fields Output: Table of sitelinks with language fields See also * [https://foundation.wikimedia.org/wiki/Special:SiteMatrix] for the full list of supported interwikis. * [https://dumps.wikimedia.org/backup-index.html] for the full list of sitecodes (used in database dumps). ]] function p._sitelinks(item, project) local entity, sitelink -- get entity if type(item) == 'string' then -- "item" is a q-id entity = mw.wikibase.getEntity(item) else entity = item -- "item" is the entity end -- convert from english project name to proproject code local projLUT = { wikipedia = 'wiki', commons = 'commonswiki', foundation = 'foundationwiki', mediawiki = 'mediawikiwiki', wikispecies = 'specieswiki', wikidata = 'wikidatawiki', incubator = 'incubatorwiki', oldwikisource = 'sourceswiki', } local langLUT = { -- These are not language codes before the 'wiki' or 'wikiversity' suffix in a sitecode: foundation = '~', commons = '~', -- they will be skipped incubator = '~', meta = '~', mediawiki = '~', sources = '~', species = '~', beta = '~', -- Legacy language codes used in sitecodes, remapped to standard Wikimedia language codes: -- See https://meta.wikimedia.org/wiki/Special_language_codes for details als = 'gsw', bat_smg = 'sgs', fiu_vro = 'vro', be_x_old = 'be-tarask', roa_rup = 'rup', zh_classical = 'lzh', zh_yue = 'yue', zh_min_nan = 'nan', zh_wuu = 'wuu', no = 'nb', } project = project:lower() project = projLUT[project] or project -- correct the project name local n = project:len() local linkTable = {} if entity and entity.sitelinks then -- See if entity exists, and that it has sitelinks for _, sitelink in pairs(entity.sitelinks) do -- loop over all sitelinks local site = sitelink.site local m = site:len() - n local proj = site:sub(m +1) -- project part of the siteID if proj == project then -- proj matches desired "project" local lang = site:sub(1, m) -- language part of the siteID lang = langLUT[lang] or lang:gsub('_','-') if lang ~= '~' then -- proj matches desired "project" linkTable[lang] = sitelink.title end end end end return linkTable end --[[---------------------------------------------------------------- _aliases This function returns a table of aliases for a single language Inputs: 1: item - wikidata's item's q-id or entity class 2: lang - language code, like 'en' or 'de' Output: Table of aliases with language fields ]] function p._aliases(item, lang) local entity if type(item) == 'string' then -- "item" is a q-id entity = mw.wikibase.getEntity(item) else entity = item -- "item" is the entity end local aliasTable = {} if entity and entity.aliases then -- See if there is an entity and that is has aliases if entity.aliases[lang] then -- See if it has English Aliases for _, alias in pairs(entity.aliases[lang]) do -- Make a loop around the English aliases table.insert(aliasTable, alias.value) -- Create a table of English aliases end end end return aliasTable end --====================================================================== --=== Invoke functions for use from wikitext, e.g., templates ========== ---===================================================================== --[[ getLabel This function returns a label translated to desired language, created based on wikidata Usage: {{#invoke:Wikidata label|getLabel|item=Q...|lang=..|link_style=..|capitalization=..}} Parameters 1: wikidata's item's q-id (required) 2: language (optional; default {{int:lang}}) 3: link_style: "wikipedia" (default), "Wikidata", "Commons", or "-" (no link) 4: capitalization - can be "uc", "lc", "tc", "ucfirst", "lcfirst" Error Handling: Bad q-id will result in displayed error ]] function p.getLabel(frame) local args = getArgs(frame) return p._getLabel(args.item, args.lang, args.link, args.capitalization, args.show_id) end --[[------------------------------------------------------------------------------- sitelinks This function returns a comma separated list of sitelinks for a single project organized by language Its main purpose is to help with testing of _sitelinks function. Usage: {{#invoke:Wikidata label|sitelinks|item=Q...|project=..}} Inputs: 1: item - wikidata's item's q-id or entity class 2: project - "wikipedia" (or "wiki"), "wikisource", "wikiquote", "wikibooks", "wikinews", "wikiversity", "wikivoyage", "wiktionary", etc. Output: comma separated list ]] function p.sitelinks(frame) local args = getArgs(frame) local sitelinks = p._sitelinks(args.item, args.project) local sitelinkList = {} for lang, sitelink in pairs(sitelinks) do table.insert(sitelinkList, (lang=='' and sitelink) or (lang .. ':' .. sitelink)) end return table.concat(sitelinkList, ', ') end --[[---------------------------------------------------------------------------- aliases This function returns a comma separated list of aliases for a single language Its main purpose is to help with testing of _aliases function. Usage: {{#invoke:Wikidata label|aliases|item=Q...|lang=..}} Inputs: 1: item - wikidata's item's q-id or entity class 2: lang - language code, like 'en' or 'de' Output: Comma separated list of aliases ]] function p.aliases(frame) local args = getArgs(frame) return table.concat(p._aliases(args.item, args.lang), ', ') end return p tubg9bh0033761yy22p4vw8xjare3q3 276317 276316 2024-11-11T08:44:33Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Wikidata_label]] 252661 Scribunto text/plain --[[ __ __ _ _ __ ___ _ _ _ _ _ _ _ | \/ | ___ __| |_ _| | ___ \ \ / (_) | _(_) __| | __ _| |_ __ _ | | __ _| |__ ___| | | |\/| |/ _ \ / _` | | | | |/ _ (_) \ /\ / /| | |/ / |/ _` |/ _` | __/ _` | | |/ _` | '_ \ / _ \ | | | | | (_) | (_| | |_| | | __/_ \ V V / | | <| | (_| | (_| | || (_| | | | (_| | |_) | __/ | |_| |_|\___/ \__,_|\__,_|_|\___(_) \_/\_/ |_|_|\_\_|\__,_|\__,_|\__\__,_| |_|\__,_|_.__/ \___|_| This module is intended to be the engine behind "Template:Label". This module was copied from Commons please ask for changes there. Please do not modify this code without applying the changes first at "Module:Wikidata label/sandbox" and testing at "Module:Wikidata label/testcases". Authors and maintainers: * User:Jarekt - original version ]] require('strict') -- used for debugging purposes as it detects cases of unintended global variables --============================================= --=== Internal functions ====================== --============================================= --------------------------------------------------------------------------- -- Normalize input arguments by converting them all to lower case and -- replacing space with "_" in the argument name. Also empty strings are -- converted to nils. Arguments are collected from arguments passed to the -- module and if missing from the template that calls the module local function getArgs(frame) local function normalize_input_args(input_args, output_args) for name, value in pairs( input_args ) do value = mw.text.trim(value) -- trim whitespaces from the beggining and the end of the string if value ~= '' then -- nuke empty strings if type(name)=='string' then name = string.gsub( string.lower(name), ' ', '_') end output_args[name] = value end end return output_args end local args = {} args = normalize_input_args(frame:getParent().args, args) args = normalize_input_args(frame.args, args) return args end --------------------------------------------------------------------------- -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to Module:Yesno but does not assume val is a string local function yesno(val, default) if type(val) == 'boolean' then return val elseif type(val) == 'number' then if val == 1 then return true elseif val == 0 then return false end elseif type(val) == 'string' then val = mw.ustring.lower(val) -- put in lower case if val == 'no' or val == 'n' or val == 'false' or val == '0' then return false elseif val == 'yes' or val == 'y' or val == 'true' or val == '1' then return true end end return default end ------------------------------------------------------------------------- -- get message in a given language -- INPUTS: -- * msg - name of a message. For it to work [[MediaWiki:msg]] page need to be set up -- * lang - translate message to language "lang" -- * default - string to return in case this module is moved to a project where this message is not set -- OUTPUT: -- * translated message local function getMessage(msg, lang, default) msg = mw.message.new(msg):inLanguage(lang):plain() return (msg == nil and default) or msg end --------------------------------------------------------------------------- -- use different sitelink call depending if you already have an entity or not -- INPUTS: -- * item and entity - entity id and entity: if full entity already uploded than use that -- otherwise use entity id to look up sitelink -- * lang - language of the project -- OUTPUT: -- * sitelink local function getSitelink(item, entity, lang) if entity and entity.getSitelink then -- if we have entity then use it return entity:getSitelink(lang .. 'wiki') else -- if no entity then use different function return mw.wikibase.getSitelink(item, lang .. 'wiki') end end --------------------------------------------------------------------------- -- use different sitelink call depending if you already have an entity or not -- INPUTS: -- * item and entity - entity id and entity: if full entity already uploded than use that -- otherwise use entity id to look up sitelink -- * prop - property for which to return the best statment -- OUTPUT: -- * value of the best statment (only from the first one) local function getBestStatementsValue(item, entity, prop) local statments if entity then statments = entity:getBestStatements(prop) else statments = mw.wikibase.getBestStatements(item, prop) end for _, statment in ipairs(statments) do if statment and statment.mainsnak.datavalue.value then return statment.mainsnak.datavalue.value end end end --------------------------------------------------------------------------- -- change capitalization of the label -- INPUTS: -- * label - label string -- * capitalization - capitalization to be applied: allowed values are "tc", "lc", -- "uc", "lcfirst", and "ucfirst". Any other value will return original string -- * lang - language of the label -- OUTPUT: -- * value of the best statment (only from the first one) local function apply_capitalization(label, capitalization, lang) capitalization = string.lower(capitalization or 'none') if capitalization == 'none' then return label elseif capitalization == 'uc' then return mw.language.new(lang):uc(label) elseif capitalization == 'lc' then return mw.language.new(lang):lc(label) elseif capitalization == 'tc' then -- title case local new_label = {} for _, word in ipairs(mw.text.split(label, ' ')) do table.insert(new_label, mw.language.new(lang):ucfirst(word)) end return table.concat(new_label, ' ') elseif capitalization == 'ucfirst' then return mw.language.new(lang):ucfirst(label) elseif capitalization == 'lcfirst' then return mw.language.new(lang):lcfirst(label) end return label end --[[------------------------------------------------------------------------- get link based on user preference INPUTS: * link_type - can be : * "wikidata" - link to wikidata * "wikipedia" - link to wikipedia (language dependent) * "wikidata talk" - link to wikidata talk page * "commons" - link to commons (try sitelink then commons category then commons gallery) * "commonscat" - link to commons (try commons category then commons gallery) * "-" - means no link * item - entity ID (always provided) * entity - whole entity. It can be nil if whole entity is not loaded * langList - language fallback list for preferred language (required) OUTPUT: * link - link to the wikimedia page ]] local function getLink(link_type, item, entity, langList) local link, eLink link_type = mw.ustring.lower(link_type or '') local item_type = mw.ustring.sub(item, 1, 1) -- first letter prefix of item entity ID: 'Q', 'P' or 'M' if item_type == 'M' then eLink='c:Special:EntityPage/'..item elseif item_type == 'Q' then eLink='d:'..item -- wikibase entity page link elseif item_type == 'P' then eLink='d:Property:'..item -- wikibase entity page link else eLink='d:Special:EntityPage/'..item end if link_type == '-' then -- allow different link formats link = '' -- no link elseif link_type == 'wikidata' or item_type == 'M' then link = eLink -- link to wikibase entity page elseif link_type == 'wikidata talk' and item_type == 'P' then link = 'd:Property talk:'.. item -- link to wikidata property talk page elseif link_type == 'wikidata talk' then link = 'd:Talk:'..item -- link to wikidata talk page elseif link_type == 'commons' or link_type == 'commonscat' then --[[ When link_type == 'commons' we try the following links (in specified order): 1) commons sitelink 2) P373 "Commons Category" claims 3) P935 "Commons Gallery" claims Since most items have a commons sitelink we never have to look for claims When link_type == 'commonscat' we try to maximize chances of commons link being a category, so we try the following links (in specified order): 1) commons sitelink, which is kept if it points to a category 2) P373 "Commons Category" claims 3) commons sitelink (which does not point to a category) 4) P935 "Commons Gallery" claims Since most pages have a commons sitelink we never have to look for claims ]] local sLink = getSitelink(item, entity, 'commons') -- look for sitelink to commons if sLink then sLink = 'c:'..sLink if (link_type == 'commons') or (link_type == 'commonscat' and mw.ustring.find(sLink, 'Category:')) then link = sLink end end if not link then -- try linking to P373 "Commons Category" local cat = getBestStatementsValue(item, entity, 'P373') link = (cat ~= nil and 'c:Category:' .. cat) or nil end link = link or sLink if not link then -- try linking to P935 "Commons Gallery" link = getBestStatementsValue(item, entity, 'P935') end end if not link then -- apply default "Wikipedia" link type for _, language in ipairs(langList) do local sitelink = getSitelink(item, entity, language) if sitelink then link = 'w:'.. language ..':'.. sitelink break end end end return link or eLink -- no wiki sitelink, so link to wikidata end --============================================= --=== External functions ====================== --============================================= local p = {} --====================================================================== --=== API functions for use from other Scribunto modules =============== --====================================================================== --[[ _getLabel This function returns a label translated to desired language, created based on wikidata Inputs: 1: item - wikidata's item's q-id or entity class 2: lang - desired language of the label 3: link_type - link style. Possible values (case-insensitive): "wikipedia", "wikidata", "Commons", or "-" (no link) 4: capitalization - can be "uc" (upper case), "lc" (lower case), "ucfirst" (upper case for the first letter), "lcfirst" (lower case for the first letter), or 'none' (default) Error Handling: Bad q-id will result in displayed error ]] function p._getLabel(item, lang, link_type, capitalization, show_id) local entity, s, link, label, language, desc -- clean up the input parameters if type(item) ~= 'string' then -- "item" is not a q-id entity = item -- "item" must be the entity item = entity.id -- look-up q-id elseif tonumber(item) then -- if it is just the number then add "Q" in front item = 'Q'..item end item = mw.ustring.gsub(mw.ustring.upper(item), 'PROPERTY:P', 'P') -- make all the properties the same and capitalize if not lang then label, lang = mw.wikibase.getLabelWithLang(item) end if not lang then -- if still no language lang = mw.getCurrentFrame():callParserFunction("int","lang") -- get user's chosen language label = nil end -- build language fallback list lang = mw.ustring.lower(lang) local langList = mw.language.getFallbacksFor(lang) table.insert(langList, 1, lang) -- get label (visible part of the link) if not label then for _, language in ipairs(langList) do -- loop over language fallback list looking for label in the specific language if entity then label = entity:getLabel(language) else label = mw.wikibase.getLabelByLang(item, language) end if label then break end -- label found and we are done end end if label then -- wikitext-escape the label if we have one label = mw.text.nowiki(label) end if not label then -- no labels found, so just show the q-id label = item elseif show_id then -- add id show_id = yesno(show_id,false) if show_id then local wordsep = getMessage('Word-separator', lang, ' ') local id = mw.message.new('parentheses', item):inLanguage(lang):plain() id = (id~=nil and id) or ('('..item..')') -- in case this module is moved to a project where {{int:parenthesis}} is not set label = label .. wordsep .. "<small>" .. id .. "</small>" end end label = apply_capitalization(label, capitalization, lang) -- look for description if entity and entity.descriptions and lang then for _, language in ipairs(langList) do if entity.descriptions[language] then desc = entity.descriptions[language].value break end end else desc = mw.wikibase.getDescription(item) end if desc and link_type ~= '-' then -- wikitext-escape the description if we have one desc = mw.text.nowiki(desc) -- add description as hover text label = '<span title="' .. desc .. '">' .. label .. '</span>' end -- return the results if link_type == '-' then return label -- return just the label else link = getLink(link_type, item, entity, langList) return '[[' .. link .. '|' .. label .. ']]' -- return link end end --[[------------------------------------------------------------------------------- _sitelinks This function returns a table of sitelinks for a single project organized by language Inputs: 1: item - wikidata's item's q-id or entity class 2: project - (case-insensitive) one of: "wikipedia", "wikisource", "wikiquote", "wikibooks", "wikinews", "wikiversity", "wikivoyage", "wiktionary", "commons", "mediawiki", "wikispecies", "wikidata", etc. Output: Table of sitelinks with language fields Output: Table of sitelinks with language fields See also * [https://foundation.wikimedia.org/wiki/Special:SiteMatrix] for the full list of supported interwikis. * [https://dumps.wikimedia.org/backup-index.html] for the full list of sitecodes (used in database dumps). ]] function p._sitelinks(item, project) local entity, sitelink -- get entity if type(item) == 'string' then -- "item" is a q-id entity = mw.wikibase.getEntity(item) else entity = item -- "item" is the entity end -- convert from english project name to proproject code local projLUT = { wikipedia = 'wiki', commons = 'commonswiki', foundation = 'foundationwiki', mediawiki = 'mediawikiwiki', wikispecies = 'specieswiki', wikidata = 'wikidatawiki', incubator = 'incubatorwiki', oldwikisource = 'sourceswiki', } local langLUT = { -- These are not language codes before the 'wiki' or 'wikiversity' suffix in a sitecode: foundation = '~', commons = '~', -- they will be skipped incubator = '~', meta = '~', mediawiki = '~', sources = '~', species = '~', beta = '~', -- Legacy language codes used in sitecodes, remapped to standard Wikimedia language codes: -- See https://meta.wikimedia.org/wiki/Special_language_codes for details als = 'gsw', bat_smg = 'sgs', fiu_vro = 'vro', be_x_old = 'be-tarask', roa_rup = 'rup', zh_classical = 'lzh', zh_yue = 'yue', zh_min_nan = 'nan', zh_wuu = 'wuu', no = 'nb', } project = project:lower() project = projLUT[project] or project -- correct the project name local n = project:len() local linkTable = {} if entity and entity.sitelinks then -- See if entity exists, and that it has sitelinks for _, sitelink in pairs(entity.sitelinks) do -- loop over all sitelinks local site = sitelink.site local m = site:len() - n local proj = site:sub(m +1) -- project part of the siteID if proj == project then -- proj matches desired "project" local lang = site:sub(1, m) -- language part of the siteID lang = langLUT[lang] or lang:gsub('_','-') if lang ~= '~' then -- proj matches desired "project" linkTable[lang] = sitelink.title end end end end return linkTable end --[[---------------------------------------------------------------- _aliases This function returns a table of aliases for a single language Inputs: 1: item - wikidata's item's q-id or entity class 2: lang - language code, like 'en' or 'de' Output: Table of aliases with language fields ]] function p._aliases(item, lang) local entity if type(item) == 'string' then -- "item" is a q-id entity = mw.wikibase.getEntity(item) else entity = item -- "item" is the entity end local aliasTable = {} if entity and entity.aliases then -- See if there is an entity and that is has aliases if entity.aliases[lang] then -- See if it has English Aliases for _, alias in pairs(entity.aliases[lang]) do -- Make a loop around the English aliases table.insert(aliasTable, alias.value) -- Create a table of English aliases end end end return aliasTable end --====================================================================== --=== Invoke functions for use from wikitext, e.g., templates ========== ---===================================================================== --[[ getLabel This function returns a label translated to desired language, created based on wikidata Usage: {{#invoke:Wikidata label|getLabel|item=Q...|lang=..|link_style=..|capitalization=..}} Parameters 1: wikidata's item's q-id (required) 2: language (optional; default {{int:lang}}) 3: link_style: "wikipedia" (default), "Wikidata", "Commons", or "-" (no link) 4: capitalization - can be "uc", "lc", "tc", "ucfirst", "lcfirst" Error Handling: Bad q-id will result in displayed error ]] function p.getLabel(frame) local args = getArgs(frame) return p._getLabel(args.item, args.lang, args.link, args.capitalization, args.show_id) end --[[------------------------------------------------------------------------------- sitelinks This function returns a comma separated list of sitelinks for a single project organized by language Its main purpose is to help with testing of _sitelinks function. Usage: {{#invoke:Wikidata label|sitelinks|item=Q...|project=..}} Inputs: 1: item - wikidata's item's q-id or entity class 2: project - "wikipedia" (or "wiki"), "wikisource", "wikiquote", "wikibooks", "wikinews", "wikiversity", "wikivoyage", "wiktionary", etc. Output: comma separated list ]] function p.sitelinks(frame) local args = getArgs(frame) local sitelinks = p._sitelinks(args.item, args.project) local sitelinkList = {} for lang, sitelink in pairs(sitelinks) do table.insert(sitelinkList, (lang=='' and sitelink) or (lang .. ':' .. sitelink)) end return table.concat(sitelinkList, ', ') end --[[---------------------------------------------------------------------------- aliases This function returns a comma separated list of aliases for a single language Its main purpose is to help with testing of _aliases function. Usage: {{#invoke:Wikidata label|aliases|item=Q...|lang=..}} Inputs: 1: item - wikidata's item's q-id or entity class 2: lang - language code, like 'en' or 'de' Output: Comma separated list of aliases ]] function p.aliases(frame) local args = getArgs(frame) return table.concat(p._aliases(args.item, args.lang), ', ') end return p tubg9bh0033761yy22p4vw8xjare3q3 ಮಾಡ್ಯೂಲ್:Makeid 828 98853 276330 275664 2024-10-19T01:12:50Z CalendulaAsteraceae 6870 move up check for blank ID 276330 Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs function p._makeid(args) local id_text = args[1] if not id_text or id_text == '' then return '' end local blank_values = {} for k, v in pairs(args) do if string.match(k, '^blank%d*$') then blank_values[v] = true end end if blank_values[id_text] then return '' else return 'id=\"' .. mw.uri.anchorEncode(id_text) .. '\"' end end function p.makeid(frame) return p._makeid(getArgs(frame)) end return p hrgorewi10670e3soofoqxl17a7owpi 276331 276330 2024-11-11T08:44:34Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Makeid]] 276330 Scribunto text/plain require('strict') local p = {} local getArgs = require('Module:Arguments').getArgs function p._makeid(args) local id_text = args[1] if not id_text or id_text == '' then return '' end local blank_values = {} for k, v in pairs(args) do if string.match(k, '^blank%d*$') then blank_values[v] = true end end if blank_values[id_text] then return '' else return 'id=\"' .. mw.uri.anchorEncode(id_text) .. '\"' end end function p.makeid(frame) return p._makeid(getArgs(frame)) end return p hrgorewi10670e3soofoqxl17a7owpi ಮಾಡ್ಯೂಲ್:Header/year 828 98888 276320 275780 2024-10-30T07:03:08Z CalendulaAsteraceae 6870 adjust how year span is formatted 276320 Scribunto text/plain require('strict') local p = {} --p stands for package local yesno = require('Module:Yesno') local TableTools = require('Module:TableTools') --[=[ Construct the year span --]=] local function formatYear(year, precision) if precision == 7 then local suffixes = { [1] = 'st', [2] = 'nd', [3] = 'rd', default = 'th' } local century = (year - year % 100)/100 + 1 return century .. (suffixes[century] or suffixes['default']) .. ' century' elseif precision == 8 then return year .. 's' else return year end end local function getYearFromSingleStatement(statement, args) local snak = statement.mainsnak if not snak or not snak.datavalue or not snak.datavalue.value or not snak['datavalue']['value']['time'] then return nil end local cats = {} -- tracking categories --[=[ Precision: 0 - billion years 1 - hundred million years, 2 - ten million years, 3 - million years, 4 - hundred thousand years, 5 - ten thousand years, 6 - millenia, 7 - centuries, 8 - decades, 9 - years, 10 - months, 11 - days 12 - hours 13 - minutes 14 - seconds ]=] local precision = math.min(snak.datavalue.value.precision, 9) local year local bce = '' local circa = '' local start_times = {} local end_times = {} local start_years = {} local end_years = {} local start_year local end_year if statement.qualifiers then -- Check if date is approximate -- P1480 = sourcing circumstances, Q5727902 = circa if statement.qualifiers.P1480 then for _, qualifier in pairs(statement.qualifiers.P1480) do if qualifier.datavalue and qualifier.datavalue.value.id == 'Q5727902' then precision = precision - 1 circa = 'c. ' break end end end -- P580 = start time if statement.qualifiers.P580 then for k, v in pairs(statement.qualifiers.P580) do local startt = getYearFromSingleStatement({mainsnak = v}, {noprint = false}) if startt then table.insert(start_times, startt) end end for k, v in pairs(start_times) do table.insert(start_years, v.year) end start_years = TableTools.compressSparseArray(TableTools.removeDuplicates(start_years)) table.sort(start_years) if #start_years > 1 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end start_year = start_years[1] end -- P582 = end time if statement.qualifiers.P582 then for k, v in pairs(statement.qualifiers.P582) do local endt = getYearFromSingleStatement({mainsnak = v}, {noprint = false}) if endt then table.insert(end_times, endt) end end for k, v in pairs(end_times) do table.insert(end_years, v.year) end end_years = TableTools.compressSparseArray(TableTools.removeDuplicates(end_years)) table.sort(end_years) if #end_years > 1 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end end_year = end_years[1] end end -- precision is less than a year if precision < 9 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end -- precision is less than a century if precision < 7 then if args['noprint'] then year = '' else year = string.gsub(string.gsub(mw.wikibase.formatValue(statement.mainsnak), '^<span>', ''), '</span>$', '') end return {year = year, printed_year = year, cats = table.concat(cats)} end -- extract the year from the timestamp -- example timestamps: +2016-10-05T00:00:00Z, -1752-00-00T00:00:00Z local split = mw.text.split(snak['datavalue']['value']['time'], '-', true) if split[1] == '' then year = tonumber(split[2]) bce = ' BCE' else year = tonumber(split[1]) end -- malformed timestamp if not year then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') return {cats = table.concat(cats)} end -- approximate year, precision 8: year - year % 10 for decade -- approximate decade, precision 7: year - year % 100 for century if circa ~= '' then year = year - (year % math.pow(10, 9 - precision)) end year = formatYear(year, precision) if start_year and start_year ~= year then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end local printed_year = circa .. year .. bce if (start_year or end_year) and start_year ~= end_year then printed_year = circa .. (start_year or '') .. '–' .. (end_year or '') .. bce end if start_year and end_year and start_year ~= end_year then local start_decade = start_year - start_year % 10 local end_decade = end_year - end_year % 10 local start_century = start_year - start_year % 100 local end_century = end_year - end_year % 100 if start_decade == end_decade then table.insert(cats, '[[Category:' .. start_decade .. 's' .. bce .. ' works' .. ']]') elseif start_century == end_century then table.insert(cats, '[[Category:' .. formatYear(end_year, 7) .. bce .. ' works' .. ']]') end else table.insert(cats, '[[Category:' .. year .. bce .. ' works' .. ']]') end cats = TableTools.compressSparseArray(TableTools.removeDuplicates(cats)) return {year = year, printed_year = printed_year, circa = circa, bce = bce, cats = table.concat(cats)} end local function parse_wikidata_year_and_categorise(args) -- Fetch entity object for Wikidata item connected to the current page -- Let manually-specified Wikidata ID override if given and valid if not (args.wikidata and mw.wikibase.isValidEntityId(args.wikidata)) then args.wikidata = mw.wikibase.getEntityIdForCurrentPage() end if not args.wikidata then return nil end local item = mw.wikibase.getEntity(args.wikidata) if not item then return nil end local statements = item:getBestStatements('P577') -- publication date if #statements == 0 then return nil end local years = {} local cats = {} for _, statement in pairs(statements) do local year_data = getYearFromSingleStatement(statement, args) if year_data then table.insert(years, year_data.printed_year) table.insert(cats, year_data.cats) end end years = TableTools.compressSparseArray(TableTools.removeDuplicates(years)) cats = TableTools.compressSparseArray(TableTools.removeDuplicates(cats)) if #years == 0 then return nil elseif #years > 1 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end return {year = table.concat(years, '/'), cats = table.concat(cats)} end local function parse_year_and_categorise(args) if args['noprint'] and args['nocat'] then return nil end local year = args['year'] -- Use Wikidata if year param is empty if not year then return parse_wikidata_year_and_categorise(args) end local cats = {} local bce = '' local circa = '' -- Extract common era info to make it easier to process if string.match(year, "BC[E]?$") then bce = ' BCE' year = string.gsub(year, '%s*BC[E]?', '') -- Also tag it as a non-numeric year table.insert(cats, '[[Category:' .. 'Works with non-numeric dates' .. ']]') end -- If the year provided is a plain year (all digits) if tonumber(year) then table.insert(cats, '[[Category:' .. year .. bce .. ' works]]') return {year = year .. bce, cats = table.concat(cats)} end -- Add tracking category for all non-numeric dates table.insert(cats, '[[Category:' .. 'Works with non-numeric dates' .. ']]') -- Explicitly tagged as being of unknown date if year == '?' or string.lower(year) == 'unknown' then table.insert(cats, '[[Category:' .. 'Works of unknown date' .. ']]') return {year = 'unknown', cats = table.concat(cats)} end -- Now figure out a complex date -- Year ranges year = string.gsub(string.gsub(year, '%-', '–'), '—', '–') -- Approximate years -- Lua patterns can't do ^c(irca)?( |%.|/)* because they don't do alternation or apply quantifiers to groups if string.match(year, '^circa') or string.match(year, '^c%s*%.') or string.match(year, '^c%s*/') then circa = 'c. ' year = string.gsub(string.gsub(string.gsub(year, '^circa%s*', ''), '^c%s*%.%s*', ''), '^c%s*/%s*', '') table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') -- circa a specific year if tonumber(year) then year = tonumber(year) local decade = (year - year % 10) .. 's' table.insert(cats, '[[Category:' .. decade .. bce .. ' works]]') return {year = circa .. year .. bce, cats = table.concat(cats)} end end -- Check if it looks like a decade if string.match(year, '^%d*0s$') then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') table.insert(cats, '[[Category:' .. year .. bce .. ' works]]') return {year = circa .. year .. bce, cats = table.concat(cats)} end -- Or a century if string.match(year, '^%d+[a-z]* century$') then year = string.gsub(year, '^(%d+)[a-z]* century$', '%1') year = formatYear(100 * (tonumber(year) - 1), 7) table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') table.insert(cats, '[[Category:' .. year .. bce .. ' works]]') return {year = circa .. year .. bce, cats = table.concat(cats)} end -- Or a range of years local start_year, end_year if string.match(year, '^%d*–%d*$') then start_year, end_year = string.match(year, '^(%d*)–(%d*)$') elseif string.match(year, '^%d*/%d*$') then start_year, end_year = string.match(year, '^(%d*)/(%d*)$') table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end if start_year or end_year then start_year = tonumber(start_year) end_year = tonumber(end_year) if start_year and end_year and start_year == end_year and circa == '' then table.insert(cats, '[[Category:' .. start_year .. bce .. ' works' .. ']]') return {year = circa .. start_year .. bce, cats = table.concat(cats)} elseif start_year and end_year then local start_decade = start_year - start_year % 10 local end_decade = end_year - end_year % 10 local start_century = start_year - start_year % 100 local end_century = end_year - end_year % 100 if start_decade == end_decade then table.insert(cats, '[[Category:' .. start_decade .. 's' .. bce .. ' works' .. ']]') elseif start_century == end_century then table.insert(cats, '[[Category:' .. formatYear(end_year, 7) .. bce .. ' works' .. ']]') end elseif end_year then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end -- check isn't redundant since the year might just be – if start_year or end_year then return {year = circa .. year .. bce, cats = table.concat(cats)} end end -- If we're here we didn't manage to parse it. table.insert(cats, '[[Category:' .. 'Works with unrecognised dates' .. ']]') return {year = circa .. year .. bce, cats = table.concat(cats)} end function p.construct_year(args) local year = mw.html.create('span'):attr('id', 'header-year-text') local current_title = mw.title.getCurrentTitle() local year_args = { ['year'] = args['year'], noprint = yesno(args['noyear']) or false, wikidata = args.wikidata } year_args['nocat'] = yesno(args['noyearcat']) if year_args['nocat'] == nil then year_args['nocat'] = ( not args.testing -- Testing pages always categorise ) and ( yesno(args['disambiguation']) -- Disambiguations never categorise or not current_title:inNamespaces(0, 114) -- Only categorise in mainspace and Translation or current_title.isSubpage -- Only categorise if this is a base page ) end local year_data = parse_year_and_categorise(year_args) if year_data then local cats = (not year_args['nocat'] and year_data.cats) or '' if year_args['noprint'] or not year_data.year then return cats else year:wikitext(year_data.year) return ' (' .. tostring(year) .. ')' .. cats end else return (year_args['nocat'] and '') or '[[Category:' .. 'Undated works' .. ']]' end end return p 449ubkw330zwpe43l5phw105q9qoj8w 276321 276320 2024-11-11T08:44:33Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Header/year]] 276320 Scribunto text/plain require('strict') local p = {} --p stands for package local yesno = require('Module:Yesno') local TableTools = require('Module:TableTools') --[=[ Construct the year span --]=] local function formatYear(year, precision) if precision == 7 then local suffixes = { [1] = 'st', [2] = 'nd', [3] = 'rd', default = 'th' } local century = (year - year % 100)/100 + 1 return century .. (suffixes[century] or suffixes['default']) .. ' century' elseif precision == 8 then return year .. 's' else return year end end local function getYearFromSingleStatement(statement, args) local snak = statement.mainsnak if not snak or not snak.datavalue or not snak.datavalue.value or not snak['datavalue']['value']['time'] then return nil end local cats = {} -- tracking categories --[=[ Precision: 0 - billion years 1 - hundred million years, 2 - ten million years, 3 - million years, 4 - hundred thousand years, 5 - ten thousand years, 6 - millenia, 7 - centuries, 8 - decades, 9 - years, 10 - months, 11 - days 12 - hours 13 - minutes 14 - seconds ]=] local precision = math.min(snak.datavalue.value.precision, 9) local year local bce = '' local circa = '' local start_times = {} local end_times = {} local start_years = {} local end_years = {} local start_year local end_year if statement.qualifiers then -- Check if date is approximate -- P1480 = sourcing circumstances, Q5727902 = circa if statement.qualifiers.P1480 then for _, qualifier in pairs(statement.qualifiers.P1480) do if qualifier.datavalue and qualifier.datavalue.value.id == 'Q5727902' then precision = precision - 1 circa = 'c. ' break end end end -- P580 = start time if statement.qualifiers.P580 then for k, v in pairs(statement.qualifiers.P580) do local startt = getYearFromSingleStatement({mainsnak = v}, {noprint = false}) if startt then table.insert(start_times, startt) end end for k, v in pairs(start_times) do table.insert(start_years, v.year) end start_years = TableTools.compressSparseArray(TableTools.removeDuplicates(start_years)) table.sort(start_years) if #start_years > 1 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end start_year = start_years[1] end -- P582 = end time if statement.qualifiers.P582 then for k, v in pairs(statement.qualifiers.P582) do local endt = getYearFromSingleStatement({mainsnak = v}, {noprint = false}) if endt then table.insert(end_times, endt) end end for k, v in pairs(end_times) do table.insert(end_years, v.year) end end_years = TableTools.compressSparseArray(TableTools.removeDuplicates(end_years)) table.sort(end_years) if #end_years > 1 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end end_year = end_years[1] end end -- precision is less than a year if precision < 9 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end -- precision is less than a century if precision < 7 then if args['noprint'] then year = '' else year = string.gsub(string.gsub(mw.wikibase.formatValue(statement.mainsnak), '^<span>', ''), '</span>$', '') end return {year = year, printed_year = year, cats = table.concat(cats)} end -- extract the year from the timestamp -- example timestamps: +2016-10-05T00:00:00Z, -1752-00-00T00:00:00Z local split = mw.text.split(snak['datavalue']['value']['time'], '-', true) if split[1] == '' then year = tonumber(split[2]) bce = ' BCE' else year = tonumber(split[1]) end -- malformed timestamp if not year then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') return {cats = table.concat(cats)} end -- approximate year, precision 8: year - year % 10 for decade -- approximate decade, precision 7: year - year % 100 for century if circa ~= '' then year = year - (year % math.pow(10, 9 - precision)) end year = formatYear(year, precision) if start_year and start_year ~= year then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end local printed_year = circa .. year .. bce if (start_year or end_year) and start_year ~= end_year then printed_year = circa .. (start_year or '') .. '–' .. (end_year or '') .. bce end if start_year and end_year and start_year ~= end_year then local start_decade = start_year - start_year % 10 local end_decade = end_year - end_year % 10 local start_century = start_year - start_year % 100 local end_century = end_year - end_year % 100 if start_decade == end_decade then table.insert(cats, '[[Category:' .. start_decade .. 's' .. bce .. ' works' .. ']]') elseif start_century == end_century then table.insert(cats, '[[Category:' .. formatYear(end_year, 7) .. bce .. ' works' .. ']]') end else table.insert(cats, '[[Category:' .. year .. bce .. ' works' .. ']]') end cats = TableTools.compressSparseArray(TableTools.removeDuplicates(cats)) return {year = year, printed_year = printed_year, circa = circa, bce = bce, cats = table.concat(cats)} end local function parse_wikidata_year_and_categorise(args) -- Fetch entity object for Wikidata item connected to the current page -- Let manually-specified Wikidata ID override if given and valid if not (args.wikidata and mw.wikibase.isValidEntityId(args.wikidata)) then args.wikidata = mw.wikibase.getEntityIdForCurrentPage() end if not args.wikidata then return nil end local item = mw.wikibase.getEntity(args.wikidata) if not item then return nil end local statements = item:getBestStatements('P577') -- publication date if #statements == 0 then return nil end local years = {} local cats = {} for _, statement in pairs(statements) do local year_data = getYearFromSingleStatement(statement, args) if year_data then table.insert(years, year_data.printed_year) table.insert(cats, year_data.cats) end end years = TableTools.compressSparseArray(TableTools.removeDuplicates(years)) cats = TableTools.compressSparseArray(TableTools.removeDuplicates(cats)) if #years == 0 then return nil elseif #years > 1 then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end return {year = table.concat(years, '/'), cats = table.concat(cats)} end local function parse_year_and_categorise(args) if args['noprint'] and args['nocat'] then return nil end local year = args['year'] -- Use Wikidata if year param is empty if not year then return parse_wikidata_year_and_categorise(args) end local cats = {} local bce = '' local circa = '' -- Extract common era info to make it easier to process if string.match(year, "BC[E]?$") then bce = ' BCE' year = string.gsub(year, '%s*BC[E]?', '') -- Also tag it as a non-numeric year table.insert(cats, '[[Category:' .. 'Works with non-numeric dates' .. ']]') end -- If the year provided is a plain year (all digits) if tonumber(year) then table.insert(cats, '[[Category:' .. year .. bce .. ' works]]') return {year = year .. bce, cats = table.concat(cats)} end -- Add tracking category for all non-numeric dates table.insert(cats, '[[Category:' .. 'Works with non-numeric dates' .. ']]') -- Explicitly tagged as being of unknown date if year == '?' or string.lower(year) == 'unknown' then table.insert(cats, '[[Category:' .. 'Works of unknown date' .. ']]') return {year = 'unknown', cats = table.concat(cats)} end -- Now figure out a complex date -- Year ranges year = string.gsub(string.gsub(year, '%-', '–'), '—', '–') -- Approximate years -- Lua patterns can't do ^c(irca)?( |%.|/)* because they don't do alternation or apply quantifiers to groups if string.match(year, '^circa') or string.match(year, '^c%s*%.') or string.match(year, '^c%s*/') then circa = 'c. ' year = string.gsub(string.gsub(string.gsub(year, '^circa%s*', ''), '^c%s*%.%s*', ''), '^c%s*/%s*', '') table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') -- circa a specific year if tonumber(year) then year = tonumber(year) local decade = (year - year % 10) .. 's' table.insert(cats, '[[Category:' .. decade .. bce .. ' works]]') return {year = circa .. year .. bce, cats = table.concat(cats)} end end -- Check if it looks like a decade if string.match(year, '^%d*0s$') then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') table.insert(cats, '[[Category:' .. year .. bce .. ' works]]') return {year = circa .. year .. bce, cats = table.concat(cats)} end -- Or a century if string.match(year, '^%d+[a-z]* century$') then year = string.gsub(year, '^(%d+)[a-z]* century$', '%1') year = formatYear(100 * (tonumber(year) - 1), 7) table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') table.insert(cats, '[[Category:' .. year .. bce .. ' works]]') return {year = circa .. year .. bce, cats = table.concat(cats)} end -- Or a range of years local start_year, end_year if string.match(year, '^%d*–%d*$') then start_year, end_year = string.match(year, '^(%d*)–(%d*)$') elseif string.match(year, '^%d*/%d*$') then start_year, end_year = string.match(year, '^(%d*)/(%d*)$') table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end if start_year or end_year then start_year = tonumber(start_year) end_year = tonumber(end_year) if start_year and end_year and start_year == end_year and circa == '' then table.insert(cats, '[[Category:' .. start_year .. bce .. ' works' .. ']]') return {year = circa .. start_year .. bce, cats = table.concat(cats)} elseif start_year and end_year then local start_decade = start_year - start_year % 10 local end_decade = end_year - end_year % 10 local start_century = start_year - start_year % 100 local end_century = end_year - end_year % 100 if start_decade == end_decade then table.insert(cats, '[[Category:' .. start_decade .. 's' .. bce .. ' works' .. ']]') elseif start_century == end_century then table.insert(cats, '[[Category:' .. formatYear(end_year, 7) .. bce .. ' works' .. ']]') end elseif end_year then table.insert(cats, '[[Category:' .. 'Works of uncertain date' .. ']]') end -- check isn't redundant since the year might just be – if start_year or end_year then return {year = circa .. year .. bce, cats = table.concat(cats)} end end -- If we're here we didn't manage to parse it. table.insert(cats, '[[Category:' .. 'Works with unrecognised dates' .. ']]') return {year = circa .. year .. bce, cats = table.concat(cats)} end function p.construct_year(args) local year = mw.html.create('span'):attr('id', 'header-year-text') local current_title = mw.title.getCurrentTitle() local year_args = { ['year'] = args['year'], noprint = yesno(args['noyear']) or false, wikidata = args.wikidata } year_args['nocat'] = yesno(args['noyearcat']) if year_args['nocat'] == nil then year_args['nocat'] = ( not args.testing -- Testing pages always categorise ) and ( yesno(args['disambiguation']) -- Disambiguations never categorise or not current_title:inNamespaces(0, 114) -- Only categorise in mainspace and Translation or current_title.isSubpage -- Only categorise if this is a base page ) end local year_data = parse_year_and_categorise(year_args) if year_data then local cats = (not year_args['nocat'] and year_data.cats) or '' if year_args['noprint'] or not year_data.year then return cats else year:wikitext(year_data.year) return ' (' .. tostring(year) .. ')' .. cats end else return (year_args['nocat'] and '') or '[[Category:' .. 'Undated works' .. ']]' end end return p 449ubkw330zwpe43l5phw105q9qoj8w ಮಾಡ್ಯೂಲ್:Header/attribution 828 98889 276324 275786 2024-10-30T08:21:01Z CalendulaAsteraceae 6870 fix bug in parameter processing 276324 Scribunto text/plain require('strict') local p = {} local yesno = require('Module:Yesno') local TableTools = require('Module:TableTools') local contrib_types = require('Module:Header/attribution data') p.attr_data = {} for k, v in pairs(contrib_types) do p.attr_data[v['param_name']] = v end local function get_attribution_params(args) local all_contributors = { title = {}, section = {} } for k, v in pairs(args) do local base_param_name = string.gsub(string.gsub(k, '%-display$', ''), '%-nolink$', '') local arg_param_name = string.gsub(base_param_name, '^override%-', '') local param_name = string.gsub(arg_param_name, '%d*$', '') local section_key if string.match(arg_param_name, '^section%-') then section_key = 'section' param_name = string.gsub(param_name, '^section%-', '') else section_key = 'title' end if p['attr_data'][param_name] then local param_name_pattern = '^' .. string.gsub(string.gsub(base_param_name, '%d*$', ''), '%-', '%%%-') local nText = string.match(k, param_name_pattern .. '%d*$') local nDisplay = string.match(k, param_name_pattern .. '%d*%-display$') local nNoLink = string.match(k, param_name_pattern .. '%d*%-nolink$') local n local info if nText then n = string.gsub(nText, param_name_pattern .. '(%d*)$', '%1') n = tonumber(n) or 1 info = 'text' elseif nDisplay then n = string.gsub(nDisplay, param_name_pattern .. '(%d*)%-display$', '%1') n = tonumber(n) or 1 info = 'display' elseif nNoLink then n = string.gsub(nNoLink, param_name_pattern .. '(%d*)%-nolink$', '%1') n = tonumber(n) or 1 info = 'nolink' end local index = p['attr_data'][param_name]['index'] all_contributors[section_key][index] = all_contributors[section_key][index] or {} all_contributors[section_key][index]['param_name'] = all_contributors[section_key][index]['param_name'] or param_name all_contributors[section_key][index]['arg_param_name'] = all_contributors[section_key][index]['arg_param_name'] or arg_param_name all_contributors[section_key][index]['override'] = all_contributors[section_key][index]['override'] or args['override-' .. arg_param_name] if n and not (args.template_name == 'Translation header' and arg_param_name == 'translator' and info == 'text' and string.lower(v) == 'wikisource') then all_contributors[section_key][index]['values'] = all_contributors[section_key][index]['values'] or {} all_contributors[section_key][index]['values'][n] = all_contributors[section_key][index]['values'][n] or {} all_contributors[section_key][index]['values'][n][info] = all_contributors[section_key][index]['values'][n][info] or v end end end if args.template_name == 'Translation header' then local index = p['attr_data']['translator']['index'] all_contributors['title'][index] = all_contributors['title'][index] or {} all_contributors['title'][index]['param_name'] = all_contributors['title'][index]['param_name'] or 'translator' all_contributors['title'][index]['arg_param_name'] = all_contributors['title'][index]['arg_param_name'] or 'translator' all_contributors['title'][index]['override'] = all_contributors['title'][index]['override'] or nil all_contributors['title'][index]['values'] = all_contributors['title'][index]['values'] or {} table.insert(all_contributors['title'][index]['values'], {text = 'wikisource'}) end local contributors = { title = {}, section = {} } for section_key, section_values in pairs(all_contributors) do for i, contrib in ipairs(TableTools.compressSparseArray(section_values)) do local new_contrib = {} for k, v in pairs(TableTools.shallowClone(contrib)) do if k == 'values' then new_contrib[k] = TableTools.compressSparseArray(v) else new_contrib[k] = v end end table.insert(contributors[section_key], new_contrib) end end return contributors end function p.get_attribution_params(args) return get_attribution_params(args) end local function construct_attribution_span(args) local aspan = mw.html.create('span') :addClass('vcard') :attr('id', 'header-' .. args.span_param_name .. '-text') :tag('span'):addClass('fn'):wikitext(args.atext) return tostring(mw.html.create('span') :addClass('contributor-text') :wikitext(args.prefix .. tostring(aspan)) ) end local function construct_attribution(args) local data = args.data local param_name = data['param_name'] local span_param_name = param_name local prefix = p['attr_data'][param_name]['prefix'] .. '&nbsp;' if data['arg_param_name'] == 'section-author' then span_param_name = 'contributor' end if data['arg_param_name'] == 'author' and data['override'] then prefix = '' -- legacy parameter elseif param_name == 'translator' and args.languages then prefix = 'translated from ' .. (args.language_name or 'unrecognized language') .. ' by&nbsp;' end -- override (legacy parameter) local atext = data['override'] if atext then if args.template_name == 'Translation header' and param_name == 'translator' then atext = atext .. ' and ' .. p['attr_data']['translator']['special_cases']['wikisource'] end return construct_attribution_span({span_param_name = span_param_name, prefix = prefix, atext = atext}) end local contributors = {} for i, contributor in ipairs(data['values']) do local text = contributor['text'] local display = contributor['display'] local nolink = yesno(contributor['nolink']) or false if nolink then table.insert(contributors, display or text) elseif text then local special = false for k, v in pairs(p['attr_data'][param_name]['special_cases']) do if string.lower(text) == k then special = true if type(v) == 'function' then display = v(display) else display = v end break end end if not special then if not display then display = string.gsub(text, ' %(.*%)$', '') end display = '[[Author:' .. text .. '|' .. display .. ']]' end if display then table.insert(contributors, display) end else mw.logObject(contributor) end end if #contributors == 0 then return nil elseif #contributors == 1 then atext = contributors[1] else atext = table.concat(contributors, ', ', 1, #contributors - 1) .. ' and ' .. contributors[#contributors] end -- Temporary check for illustrator in subpages. -- TODO: remove once -- [[Special:PermanentLink/14324127#Replace illustrator header parameter with section illustrator in subpages of works]] -- has been addressed. local cat = '' if param_name == 'illustrator' and mw.title.getCurrentTitle().isSubpage then cat = '[[' .. 'Category:' .. 'Subpages using illustrator parameter' .. ']]' end local s = construct_attribution_span({span_param_name = span_param_name, prefix = prefix, atext = atext}) return s .. cat end function p.construct_attributions(args) local attributions = {} local a_args = TableTools.shallowClone(args) local attr_params = get_attribution_params(args)['title'] for i, data in ipairs(attr_params) do a_args['data'] = data local atext = construct_attribution(a_args) if atext then table.insert(attributions, atext) end end if #attributions == 0 then return '' end return table.concat(attributions, ', ') end -- section function p.construct_section(args) local section_text = args['section'] if not section_text or section_text == '' then return '' end local attributions = {} local a_args = TableTools.shallowClone(args) a_args.languages = a_args.section_languages or a_args.languages a_args.language_name = a_args.section_language_name or a_args.language_name local attr_params = get_attribution_params(args)['section'] for i, data in ipairs(attr_params) do a_args['data'] = data local atext = construct_attribution(a_args) if atext then table.insert(attributions, atext) end end if #attributions > 0 then local sep = ' ' if #attributions > 1 then sep = '<br/>' end section_text = section_text .. sep .. table.concat(attributions, ', ') end return tostring(mw.html.create('div') :addClass('header-section-text') :wikitext(section_text) ) end --[=[ Construct the [[Help:Microformat]] for the page. This is in the form: <div id="ws-data" ...> <span id="ws-title">Title here...</span> ... <div> ]=] function p.construct_microformat(args) local mf_div = mw.html.create('div') :addClass('ws-noexport') :attr('id', 'ws-data') :css({speak = 'none'}) -- override to show the microformat if yesno(args['show-microformat']) then mf_div:addClass('ws-data-show') end -- collect the MF values here local mf = {}; -- page ID mf['ws-article-id'] = mw.title.getCurrentTitle().id -- title if args['title'] then mf['ws-title'] = args['title'] -- append section if there is one if args['section'] then mf['ws-title'] = mf['ws-title'] .. " — " .. args['section'] end end -- year mf['ws-year'] = args['year'] -- cover mf['ws-cover'] = args['cover'] -- use section values if available, otherwise use work values local attr_params = get_attribution_params(args) local joined_attr_params = {} for i, section_key in ipairs({'section', 'title'}) do for i, data in ipairs(attr_params[section_key]) do local index = p['attr_data'][data['param_name']]['index'] joined_attr_params[index] = joined_attr_params[index] or data end end joined_attr_params = TableTools.compressSparseArray(joined_attr_params) for i, data in ipairs(joined_attr_params) do local atext = data['override'] local ws_translator = args.template_name == 'Translation header' and data['param_name'] == 'translator' if atext and ws_translator then atext = atext .. ' and Wikisource' elseif not atext then local attr_text = {} for i, values in ipairs(data['values']) do local display = values['text'] local special = false if values['text'] then for k, v in pairs(p['attr_data'][data['param_name']]['special_cases']) do if string.lower(values['text']) == k then special = true if k == 'anon' or k == 'anonymous' then display = 'Anonymous' elseif k == 'wikisource' then display = 'Wikisource' elseif type(v) == 'function' then display = v(display) else display = v end break end end else mw.logObject(values) end table.insert(attr_text, display) end if #attr_text == 1 then atext = attr_text[1] elseif #attr_text > 1 then atext = table.concat(attr_text, ', ', 1, #attr_text - 1) .. ' and ' .. attr_text[#attr_text] end end if atext then mf['ws-' .. data['param_name']] = atext end end for k, v in pairs(mf) do mf_div:tag('span'):attr('id', k):wikitext(v) end return tostring(mf_div) end return p sdsvw7o2lqww54ombueecxb3eorxh18 276325 276324 2024-11-11T08:44:34Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Header/attribution]] 276324 Scribunto text/plain require('strict') local p = {} local yesno = require('Module:Yesno') local TableTools = require('Module:TableTools') local contrib_types = require('Module:Header/attribution data') p.attr_data = {} for k, v in pairs(contrib_types) do p.attr_data[v['param_name']] = v end local function get_attribution_params(args) local all_contributors = { title = {}, section = {} } for k, v in pairs(args) do local base_param_name = string.gsub(string.gsub(k, '%-display$', ''), '%-nolink$', '') local arg_param_name = string.gsub(base_param_name, '^override%-', '') local param_name = string.gsub(arg_param_name, '%d*$', '') local section_key if string.match(arg_param_name, '^section%-') then section_key = 'section' param_name = string.gsub(param_name, '^section%-', '') else section_key = 'title' end if p['attr_data'][param_name] then local param_name_pattern = '^' .. string.gsub(string.gsub(base_param_name, '%d*$', ''), '%-', '%%%-') local nText = string.match(k, param_name_pattern .. '%d*$') local nDisplay = string.match(k, param_name_pattern .. '%d*%-display$') local nNoLink = string.match(k, param_name_pattern .. '%d*%-nolink$') local n local info if nText then n = string.gsub(nText, param_name_pattern .. '(%d*)$', '%1') n = tonumber(n) or 1 info = 'text' elseif nDisplay then n = string.gsub(nDisplay, param_name_pattern .. '(%d*)%-display$', '%1') n = tonumber(n) or 1 info = 'display' elseif nNoLink then n = string.gsub(nNoLink, param_name_pattern .. '(%d*)%-nolink$', '%1') n = tonumber(n) or 1 info = 'nolink' end local index = p['attr_data'][param_name]['index'] all_contributors[section_key][index] = all_contributors[section_key][index] or {} all_contributors[section_key][index]['param_name'] = all_contributors[section_key][index]['param_name'] or param_name all_contributors[section_key][index]['arg_param_name'] = all_contributors[section_key][index]['arg_param_name'] or arg_param_name all_contributors[section_key][index]['override'] = all_contributors[section_key][index]['override'] or args['override-' .. arg_param_name] if n and not (args.template_name == 'Translation header' and arg_param_name == 'translator' and info == 'text' and string.lower(v) == 'wikisource') then all_contributors[section_key][index]['values'] = all_contributors[section_key][index]['values'] or {} all_contributors[section_key][index]['values'][n] = all_contributors[section_key][index]['values'][n] or {} all_contributors[section_key][index]['values'][n][info] = all_contributors[section_key][index]['values'][n][info] or v end end end if args.template_name == 'Translation header' then local index = p['attr_data']['translator']['index'] all_contributors['title'][index] = all_contributors['title'][index] or {} all_contributors['title'][index]['param_name'] = all_contributors['title'][index]['param_name'] or 'translator' all_contributors['title'][index]['arg_param_name'] = all_contributors['title'][index]['arg_param_name'] or 'translator' all_contributors['title'][index]['override'] = all_contributors['title'][index]['override'] or nil all_contributors['title'][index]['values'] = all_contributors['title'][index]['values'] or {} table.insert(all_contributors['title'][index]['values'], {text = 'wikisource'}) end local contributors = { title = {}, section = {} } for section_key, section_values in pairs(all_contributors) do for i, contrib in ipairs(TableTools.compressSparseArray(section_values)) do local new_contrib = {} for k, v in pairs(TableTools.shallowClone(contrib)) do if k == 'values' then new_contrib[k] = TableTools.compressSparseArray(v) else new_contrib[k] = v end end table.insert(contributors[section_key], new_contrib) end end return contributors end function p.get_attribution_params(args) return get_attribution_params(args) end local function construct_attribution_span(args) local aspan = mw.html.create('span') :addClass('vcard') :attr('id', 'header-' .. args.span_param_name .. '-text') :tag('span'):addClass('fn'):wikitext(args.atext) return tostring(mw.html.create('span') :addClass('contributor-text') :wikitext(args.prefix .. tostring(aspan)) ) end local function construct_attribution(args) local data = args.data local param_name = data['param_name'] local span_param_name = param_name local prefix = p['attr_data'][param_name]['prefix'] .. '&nbsp;' if data['arg_param_name'] == 'section-author' then span_param_name = 'contributor' end if data['arg_param_name'] == 'author' and data['override'] then prefix = '' -- legacy parameter elseif param_name == 'translator' and args.languages then prefix = 'translated from ' .. (args.language_name or 'unrecognized language') .. ' by&nbsp;' end -- override (legacy parameter) local atext = data['override'] if atext then if args.template_name == 'Translation header' and param_name == 'translator' then atext = atext .. ' and ' .. p['attr_data']['translator']['special_cases']['wikisource'] end return construct_attribution_span({span_param_name = span_param_name, prefix = prefix, atext = atext}) end local contributors = {} for i, contributor in ipairs(data['values']) do local text = contributor['text'] local display = contributor['display'] local nolink = yesno(contributor['nolink']) or false if nolink then table.insert(contributors, display or text) elseif text then local special = false for k, v in pairs(p['attr_data'][param_name]['special_cases']) do if string.lower(text) == k then special = true if type(v) == 'function' then display = v(display) else display = v end break end end if not special then if not display then display = string.gsub(text, ' %(.*%)$', '') end display = '[[Author:' .. text .. '|' .. display .. ']]' end if display then table.insert(contributors, display) end else mw.logObject(contributor) end end if #contributors == 0 then return nil elseif #contributors == 1 then atext = contributors[1] else atext = table.concat(contributors, ', ', 1, #contributors - 1) .. ' and ' .. contributors[#contributors] end -- Temporary check for illustrator in subpages. -- TODO: remove once -- [[Special:PermanentLink/14324127#Replace illustrator header parameter with section illustrator in subpages of works]] -- has been addressed. local cat = '' if param_name == 'illustrator' and mw.title.getCurrentTitle().isSubpage then cat = '[[' .. 'Category:' .. 'Subpages using illustrator parameter' .. ']]' end local s = construct_attribution_span({span_param_name = span_param_name, prefix = prefix, atext = atext}) return s .. cat end function p.construct_attributions(args) local attributions = {} local a_args = TableTools.shallowClone(args) local attr_params = get_attribution_params(args)['title'] for i, data in ipairs(attr_params) do a_args['data'] = data local atext = construct_attribution(a_args) if atext then table.insert(attributions, atext) end end if #attributions == 0 then return '' end return table.concat(attributions, ', ') end -- section function p.construct_section(args) local section_text = args['section'] if not section_text or section_text == '' then return '' end local attributions = {} local a_args = TableTools.shallowClone(args) a_args.languages = a_args.section_languages or a_args.languages a_args.language_name = a_args.section_language_name or a_args.language_name local attr_params = get_attribution_params(args)['section'] for i, data in ipairs(attr_params) do a_args['data'] = data local atext = construct_attribution(a_args) if atext then table.insert(attributions, atext) end end if #attributions > 0 then local sep = ' ' if #attributions > 1 then sep = '<br/>' end section_text = section_text .. sep .. table.concat(attributions, ', ') end return tostring(mw.html.create('div') :addClass('header-section-text') :wikitext(section_text) ) end --[=[ Construct the [[Help:Microformat]] for the page. This is in the form: <div id="ws-data" ...> <span id="ws-title">Title here...</span> ... <div> ]=] function p.construct_microformat(args) local mf_div = mw.html.create('div') :addClass('ws-noexport') :attr('id', 'ws-data') :css({speak = 'none'}) -- override to show the microformat if yesno(args['show-microformat']) then mf_div:addClass('ws-data-show') end -- collect the MF values here local mf = {}; -- page ID mf['ws-article-id'] = mw.title.getCurrentTitle().id -- title if args['title'] then mf['ws-title'] = args['title'] -- append section if there is one if args['section'] then mf['ws-title'] = mf['ws-title'] .. " — " .. args['section'] end end -- year mf['ws-year'] = args['year'] -- cover mf['ws-cover'] = args['cover'] -- use section values if available, otherwise use work values local attr_params = get_attribution_params(args) local joined_attr_params = {} for i, section_key in ipairs({'section', 'title'}) do for i, data in ipairs(attr_params[section_key]) do local index = p['attr_data'][data['param_name']]['index'] joined_attr_params[index] = joined_attr_params[index] or data end end joined_attr_params = TableTools.compressSparseArray(joined_attr_params) for i, data in ipairs(joined_attr_params) do local atext = data['override'] local ws_translator = args.template_name == 'Translation header' and data['param_name'] == 'translator' if atext and ws_translator then atext = atext .. ' and Wikisource' elseif not atext then local attr_text = {} for i, values in ipairs(data['values']) do local display = values['text'] local special = false if values['text'] then for k, v in pairs(p['attr_data'][data['param_name']]['special_cases']) do if string.lower(values['text']) == k then special = true if k == 'anon' or k == 'anonymous' then display = 'Anonymous' elseif k == 'wikisource' then display = 'Wikisource' elseif type(v) == 'function' then display = v(display) else display = v end break end end else mw.logObject(values) end table.insert(attr_text, display) end if #attr_text == 1 then atext = attr_text[1] elseif #attr_text > 1 then atext = table.concat(attr_text, ', ', 1, #attr_text - 1) .. ' and ' .. attr_text[#attr_text] end end if atext then mf['ws-' .. data['param_name']] = atext end end for k, v in pairs(mf) do mf_div:tag('span'):attr('id', k):wikitext(v) end return tostring(mf_div) end return p sdsvw7o2lqww54ombueecxb3eorxh18 ಮಾಡ್ಯೂಲ್:Header/attribution data 828 98891 276328 275790 2024-10-30T09:03:21Z CalendulaAsteraceae 6870 add "compiler" 276328 Scribunto text/plain local function anon(text) text = text or 'Anonymous' local cat = '' if mw.title.getCurrentTitle():inNamespaces(0, 114) then cat = '[[Category:' .. 'Works by unknown authors' .. ']]' end return '[[Portal:Anonymous texts|' .. text .. ']]' .. cat end local function anon_nocat(text) return '[[Portal:Anonymous texts|' .. (text or 'Anonymous') .. ']]' end local contrib_types = { {noun = 'author', prefix = 'by'}, {noun = 'attributed to', prefix = 'attributed to', special_cases = {}}, {noun = 'adapter', prefix = 'adapted by'}, {noun = 'abridger', prefix = 'abridged by'}, {noun = 'illustrator', prefix = 'illustrated by'}, {noun = 'director', prefix = 'directed by'}, {noun = 'lyricist', prefix = 'lyrics by'}, {noun = 'librettist', prefix = 'libretto by'}, { noun = 'book by', prefix = 'book by', special_cases = { ['?'] = 'unknown author', ['unknown'] = 'unknown author', ['not mentioned'] = 'unknown author', ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various authors' } }, {noun = 'composer', prefix = 'composed by'}, {noun = 'arranger', prefix = 'arranged by'}, { noun = 'translator', prefix = 'translated by', special_cases = { ['?'] = 'unknown translator', ['unknown'] = 'unknown translator', ['not mentioned'] = 'unknown translator', ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various translators', ['wikisource'] = '[[Wikisource:Translations|Wikisource]]' } }, { noun = 'editor', prefix = 'edited by', special_cases = { ['?'] = 'unknown editor', ['unknown'] = 'unknown editor', ['not mentioned'] = 'unknown editor', ['anon'] = anon_nocat, ['anonymous'] = anon_nocat, ['various'] = 'various editors' } }, {noun = 'compiler', prefix = 'compiled by'} } for i = 1, #contrib_types do local noun = contrib_types[i]['noun'] contrib_types[i]['param_name'] = contrib_types[i]['param_name'] or string.gsub(noun, ' ', '-') contrib_types[i]['special_cases'] = contrib_types[i]['special_cases'] or { ['?'] = 'unknown ' .. noun, ['unknown'] = 'unknown ' .. noun, ['not mentioned'] = 'unknown ' .. noun, ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various ' .. noun .. 's' } contrib_types[i]['index'] = i end return contrib_types ka2tp1bpgzhcxei1qgw6d41mcuywphw 276329 276328 2024-11-11T08:44:34Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Header/attribution_data]] 276328 Scribunto text/plain local function anon(text) text = text or 'Anonymous' local cat = '' if mw.title.getCurrentTitle():inNamespaces(0, 114) then cat = '[[Category:' .. 'Works by unknown authors' .. ']]' end return '[[Portal:Anonymous texts|' .. text .. ']]' .. cat end local function anon_nocat(text) return '[[Portal:Anonymous texts|' .. (text or 'Anonymous') .. ']]' end local contrib_types = { {noun = 'author', prefix = 'by'}, {noun = 'attributed to', prefix = 'attributed to', special_cases = {}}, {noun = 'adapter', prefix = 'adapted by'}, {noun = 'abridger', prefix = 'abridged by'}, {noun = 'illustrator', prefix = 'illustrated by'}, {noun = 'director', prefix = 'directed by'}, {noun = 'lyricist', prefix = 'lyrics by'}, {noun = 'librettist', prefix = 'libretto by'}, { noun = 'book by', prefix = 'book by', special_cases = { ['?'] = 'unknown author', ['unknown'] = 'unknown author', ['not mentioned'] = 'unknown author', ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various authors' } }, {noun = 'composer', prefix = 'composed by'}, {noun = 'arranger', prefix = 'arranged by'}, { noun = 'translator', prefix = 'translated by', special_cases = { ['?'] = 'unknown translator', ['unknown'] = 'unknown translator', ['not mentioned'] = 'unknown translator', ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various translators', ['wikisource'] = '[[Wikisource:Translations|Wikisource]]' } }, { noun = 'editor', prefix = 'edited by', special_cases = { ['?'] = 'unknown editor', ['unknown'] = 'unknown editor', ['not mentioned'] = 'unknown editor', ['anon'] = anon_nocat, ['anonymous'] = anon_nocat, ['various'] = 'various editors' } }, {noun = 'compiler', prefix = 'compiled by'} } for i = 1, #contrib_types do local noun = contrib_types[i]['noun'] contrib_types[i]['param_name'] = contrib_types[i]['param_name'] or string.gsub(noun, ' ', '-') contrib_types[i]['special_cases'] = contrib_types[i]['special_cases'] or { ['?'] = 'unknown ' .. noun, ['unknown'] = 'unknown ' .. noun, ['not mentioned'] = 'unknown ' .. noun, ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various ' .. noun .. 's' } contrib_types[i]['index'] = i end return contrib_types ka2tp1bpgzhcxei1qgw6d41mcuywphw ಮಾಡ್ಯೂಲ್:ISO 639/local 828 99128 276303 2024-11-11T08:34:47Z ~aanzx 6806 ಹೊಸ ಪುಟ: return { ["aaa"] = "Ghotuo", ["aab"] = "Alumu-Tesu", ["aac"] = "Ari", ["aad"] = "Amal", ["aaf"] = "Aranadan", ["aag"] = "Ambrak", ["aah"] = "Abuʼ", ["aai"] = "Arifama-Miniafia", ["aak"] = "Ankave", ["aal"] = "Afade", ["aam"] = "Aramanik", ["aan"] = "Anambé", ["aao"] = "Algerian Saharan Arabic", ["aap"] = "Pará Arára", ["aaq"] = "Eastern Abnaki", ["aar"] = "Afar", ["aas"] = "Aasáx", ["aat"] = "Arvanitika Albanian", ["aau"] = "Abau", ["aaw"] = "So... 276303 Scribunto text/plain return { ["aaa"] = "Ghotuo", ["aab"] = "Alumu-Tesu", ["aac"] = "Ari", ["aad"] = "Amal", ["aaf"] = "Aranadan", ["aag"] = "Ambrak", ["aah"] = "Abuʼ", ["aai"] = "Arifama-Miniafia", ["aak"] = "Ankave", ["aal"] = "Afade", ["aam"] = "Aramanik", ["aan"] = "Anambé", ["aao"] = "Algerian Saharan Arabic", ["aap"] = "Pará Arára", ["aaq"] = "Eastern Abnaki", ["aar"] = "Afar", ["aas"] = "Aasáx", ["aat"] = "Arvanitika Albanian", ["aau"] = "Abau", ["aaw"] = "Solong", ["aax"] = "Mandobo Atas", ["aay"] = "Aariya", ["aaz"] = "Amarasi", ["aba"] = "Abé", ["abb"] = "Bankon", ["abc"] = "Ambala Ayta", ["abd"] = "Camarines Norte Agta", ["abe"] = "Western Abnaki", ["abf"] = "Abai Sungai", ["abg"] = "Abaga", ["abh"] = "Tajiki Arabic", ["abi"] = "Abidji", ["abj"] = "Aka-Bea", ["abk"] = "Abkhaz", ["abl"] = "Abung", ["abm"] = "Abanyom", ["abn"] = "Abua", ["abo"] = "Abon", ["abp"] = "Abenlen Ayta", ["abq"] = "Abaza", ["abr"] = "Abron", ["abt"] = "Ambulas", ["abu"] = "Abure", ["abv"] = "Baharna Arabic", ["abw"] = "Pal", ["abx"] = "Inabaknon", ["aby"] = "Aneme Wake", ["abz"] = "Abui", ["aca"] = "Achagua", ["acb"] = "Áncá", ["acc"] = "Cubulco Achí", ["acd"] = "Gikyode", ["acf"] = "Saint Lucian Creole French", ["ach"] = "Acoli", ["aci"] = "Aka-Cari", ["ack"] = "Aka-Kora", ["acl"] = "Akar-Bale", ["acn"] = "Achang", ["acp"] = "Eastern Acipa", ["acq"] = "Ta'izzi-Adeni Arabic", ["acr"] = "Rabinal Achí", ["acs"] = "Acroá", ["act"] = "Achterhooks", ["acu"] = "Achuar-Shiwiar", ["acv"] = "Achumawi", ["acw"] = "Hijazi Arabic", ["acx"] = "Omani Arabic", ["acy"] = "Cypriot Arabic", ["acz"] = "Acheron", ["ada"] = "Adangme", ["adb"] = "Adabe", ["add"] = "Dzodinka", ["ade"] = "Adele", ["adf"] = "Dhofari Arabic", ["adg"] = "Andegerebinha", ["adh"] = "Adhola", ["adi"] = "Adi", ["adj"] = "Adioukrou", ["adl"] = "Galo Adi", ["adn"] = "Adang", ["ado"] = "Abu", ["adp"] = "Adap", ["adq"] = "Adangbe", ["adr"] = "Adonara", ["ads"] = "Adamorobe Sign Language", ["adt"] = "Adynyamathanha", ["adu"] = "Aduge", ["adw"] = "Amundava", ["adx"] = "Amdo Tibetan", ["adz"] = "Adzera", ["ae"] = "Avestan", ["aea"] = "Areba", ["aec"] = "Saidi Arabic", ["aed"] = "Argentine Sign Language", ["aee"] = "Northeast Pashayi", ["aek"] = "Haeke", ["ael"] = "Ambele", ["aem"] = "Arem", ["aen"] = "Armenian Sign Language", ["aeq"] = "Aer", ["aer"] = "Eastern Arrernte", ["aes"] = "Alsea", ["aeu"] = "Akeu", ["aew"] = "Ambakich", ["aex"] = "Amerax", ["aey"] = "Amele", ["aez"] = "Aeka", ["afa"] = "Afro-Asiatic languages", ["afb"] = "Gulf Arabic", ["afd"] = "Andai", ["afe"] = "Putukwam", ["afg"] = "Afghan Sign Language", ["afh"] = "Afrihili", ["afi"] = "Akrukay", ["afk"] = "Nanubae", ["afn"] = "Defaka", ["afo"] = "Eloyi", ["afp"] = "Tapei", ["afr"] = "Afrikaans", ["afs"] = "Afro-Seminole Creole", ["aft"] = "Afitti", ["afu"] = "Awutu", ["afz"] = "Obokuitai", ["aga"] = "Aguano", ["agb"] = "Legbo", ["agc"] = "Agatu", ["agd"] = "Agarabi", ["age"] = "Angal", ["agf"] = "Arguni", ["agg"] = "Angor", ["agh"] = "Ngelima", ["agi"] = "Agariya", ["agj"] = "Argobba", ["agk"] = "Isarog Agta", ["agl"] = "Fembe", ["agm"] = "Angaatiha", ["agn"] = "Agutaynen", ["ago"] = "Tainae", ["agp"] = "Paranan", ["agq"] = "Aghem", ["agr"] = "Aguaruna", ["ags"] = "Esimbi", ["agt"] = "Central Cagayan Agta", ["agu"] = "Aguacateco", ["agv"] = "Remontado Agta", ["agw"] = "Kahua", ["agx"] = "Aghul", ["agy"] = "Southern Alta", ["agz"] = "Mt. Iriga Agta", ["aha"] = "Ahanta", ["ahb"] = "Axamb", ["ahe"] = "Ahe", ["ahg"] = "Qimant", ["ahh"] = "Aghu", ["ahi"] = "Tiagbamrin Aizi", ["ahk"] = "Akha", ["ahl"] = "Igo", ["ahm"] = "Mobumrin Aizi", ["ahn"] = "Àhàn", ["aho"] = "Ahom", ["ahp"] = "Aproumu Aizi", ["ahr"] = "Ahirani", ["ahs"] = "Ashe", ["aht"] = "Ahtena", ["aia"] = "Arosi", ["aib"] = "Chinese Ainu", ["aic"] = "Ainbai", ["aid"] = "Alngith", ["aie"] = "Amara", ["aif"] = "Agi", ["aig"] = "Antigua and Barbuda Creole English", ["aih"] = "Ai-Cham", ["aii"] = "Assyrian Neo-Aramaic", ["aij"] = "Lishanid Noshan", ["aik"] = "Ake", ["ail"] = "Aimele", ["aim"] = "Aimol", ["ain"] = "Ainu", ["aio"] = "Aiton", ["aip"] = "Burumakok", ["aiq"] = "Aimaq", ["air"] = "Airoran", ["ais"] = "Nataoran Amis", ["ait"] = "Arikem", ["aiw"] = "Aari", ["aix"] = "Aigon", ["aiy"] = "Ali", ["aiz"] = "Aari", ["aja"] = "Sudanese Aja", ["ajg"] = "Beninese Aja", ["aji"] = "Ajië", ["ajn"] = "Andajin", ["ajp"] = "South Levantine Arabic", ["ajt"] = "Judeo-Tunisian Arabic", ["aju"] = "Judeo-Moroccan Arabic", ["ajw"] = "Ajawa", ["ajz"] = "Amri", ["ak"] = "Akan", ["aka"] = "Akan", ["akb"] = "Batak Angkola", ["akc"] = "Mpur", ["akd"] = "Ukpet-Ehom", ["ake"] = "Akawaio", ["akf"] = "Akpa", ["akg"] = "Anakalangu", ["akh"] = "Angal Heneng", ["aki"] = "Aiome", ["akj"] = "Aka-Jeru", ["akk"] = "Akkadian", ["akl"] = "Aklanon", ["akm"] = "Aka-Bo", ["akn"] = "Amikoana", ["ako"] = "Akurio", ["akp"] = "Siwu", ["akq"] = "Ak", ["akr"] = "Araki", ["aks"] = "Akaselem", ["akt"] = "Akolet", ["aku"] = "Akum", ["akv"] = "Akhvakh", ["akw"] = "Akwa", ["akx"] = "Aka-Kede", ["aky"] = "Aka-Kol", ["akz"] = "Alabama", ["ala"] = "Alago", ["alb"] = "Albanian", ["alc"] = "Qawasqar", ["ald"] = "Alladian", ["ale"] = "Aleut", ["alf"] = "Alege", ["alg"] = "Algonquian languages", ["alh"] = "Alawa", ["ali"] = "Amaimon", ["alj"] = "Alangan", ["alk"] = "Alak", ["all"] = "Allar", ["alm"] = "Amblong", ["alo"] = "Larike-Wakasihu", ["alp"] = "Alune", ["alq"] = "Algonquin", ["alr"] = "Alutor", ["alu"] = "Are'are", ["alw"] = "Alaba", ["alx"] = "Alatil", ["aly"] = "Alyawarr", ["alz"] = "Alur", ["ama"] = "Amanayé", ["amb"] = "Ambo", ["amc"] = "Amahuaca", ["amd"] = "Amapá Creole", ["ame"] = "Yanesha'", ["amf"] = "Hamer-Banna", ["amg"] = "Amarag", ["amh"] = "Amharic", ["amj"] = "Amdang", ["amk"] = "Ambai", ["aml"] = "War", ["amm"] = "Papua New Guinean Ama", ["amn"] = "Amanab", ["amo"] = "Amo", ["amp"] = "Alamblak", ["amq"] = "Amahai", ["amr"] = "Amarakaeri", ["ams"] = "Southern Amami-Oshima", ["amt"] = "Amto", ["amu"] = "Guerrero Amuzgo", ["amv"] = "Ambelau", ["amw"] = "Western Neo-Aramaic", ["amx"] = "Anmatyerre", ["amy"] = "Ami", ["amz"] = "Atampaya", ["ana"] = "Andaqui", ["anb"] = "Andoa", ["anc"] = "Ngas", ["and"] = "Ansus", ["ane"] = "Xârâcùù", ["anf"] = "Animere", ["anh"] = "Nend", ["ani"] = "Andi", ["anj"] = "Anor", ["ank"] = "Goemai", ["anl"] = "Anu", ["anm"] = "Anal", ["ano"] = "Andoque", ["anq"] = "Indian Jarawa", ["anr"] = "Andh", ["ans"] = "Anserma", ["ant"] = "Antakarinya", ["anu"] = "Anuak", ["anv"] = "Denya", ["anw"] = "Anaang", ["anx"] = "Andra-Hus", ["any"] = "Anyin", ["anz"] = "Anem", ["aoa"] = "Angolar", ["aob"] = "Abom", ["aoc"] = "Pemon", ["aod"] = "Andarum", ["aoe"] = "Angal Enen", ["aof"] = "Bragat", ["aog"] = "Angoram", ["aoh"] = "Arma", ["aoi"] = "Anindilyakwa", ["aoj"] = "Mufian", ["aok"] = "Arhö", ["aol"] = "Alor", ["aom"] = "Ömie", ["aon"] = "Bumbita Arapesh", ["aor"] = "Aore", ["aos"] = "Taikat", ["aot"] = "Atong", ["aou"] = "Gelao", ["aox"] = "Atorada", ["aoz"] = "Uab Meto", ["apa"] = "Apache languages", ["apb"] = "Sa'a", ["apc"] = "North Levantine Arabic", ["apd"] = "Sudanese Arabic", ["ape"] = "Bukiyip", ["apf"] = "Pahanan Agta", ["apg"] = "Ampanang", ["aph"] = "Athpariya", ["api"] = "Apiacá", ["apj"] = "Jicarilla Apache", ["apk"] = "Kiowa Apache", ["apl"] = "Lipan Apache", ["apm"] = "Mescalero-Chiricahua Apache", ["apn"] = "Apinayé", ["apo"] = "Apalik", ["app"] = "Apma", ["apq"] = "A-Pucikwar", ["apr"] = "Arop-Lukep", ["aps"] = "Arop-Sissano", ["apt"] = "Apatani", ["apu"] = "Apurinã", ["apv"] = "Alapmunte", ["apw"] = "Western Apache", ["apx"] = "Aputai", ["apy"] = "Apalaí", ["apz"] = "Safeyoka", ["aqc"] = "Archi", ["aqd"] = "Ampari Dogon", ["aqg"] = "Arigidi", ["aqm"] = "Atohwaim", ["aqn"] = "Northern Alta", ["aqp"] = "Atakapa", ["aqr"] = "Arhâ", ["aqt"] = "Angaité", ["aqz"] = "Akuntsu", ["ara"] = "Arabic", ["arb"] = "Standard Arabic", ["ard"] = "Arabana", ["are"] = "Western Arrarnta", ["arf"] = "Arafundi", ["arg"] = "Aragonese", ["arh"] = "Arhuaco", ["ari"] = "Arikara", ["arj"] = "Arapaso", ["ark"] = "Arikapú", ["arl"] = "Arabela", ["arm"] = "Armenian", ["aro"] = "Araona", ["arp"] = "Arapaho", ["arr"] = "Brazilian Karo", ["ars"] = "Najdi Arabic", ["art"] = "Artificial languages", ["art-x-sambahsa"] = "Sambahsa", ["aru"] = "Arua", ["arv"] = "Arbore", ["arw"] = "Arawak", ["arx"] = "Aruá", ["asa"] = "Tanzanian Asu", ["asb"] = "Assiniboine", ["asc"] = "Casuarina Coast Asmat", ["asd"] = "Asas", ["asf"] = "Australian Sign Language", ["asg"] = "Cishingini", ["ash"] = "Abishira", ["asi"] = "Buruwai", ["asj"] = "Nsari", ["ask"] = "Ashkun", ["asl"] = "Asilulu", ["asm"] = "Assamese", ["asn"] = "Xingú Asuriní", ["aso"] = "Dano", ["asp"] = "Algerian Sign Language", ["asq"] = "Austrian Sign Language", ["asr"] = "Asuri", ["ass"] = "Ipulo", ["asu"] = "Asuriní", ["asv"] = "Asoa", ["asw"] = "Australian Aborigines Sign Language", ["asx"] = "Muratayak", ["asy"] = "Yaosakor Asmat", ["asz"] = "As", ["ata"] = "Pele-Ata", ["atb"] = "Zaiwa", ["atc"] = "Atsahuaca", ["atd"] = "Ata Manobo", ["ate"] = "Atemble", ["atf"] = "Atuence", ["atg"] = "Ivbie North-Okpela-Arhe", ["ath"] = "Athapascan languages", ["ati"] = "Attié", ["atk"] = "Ati", ["atl"] = "Mt. Iraya Agta", ["atm"] = "Ata", ["atn"] = "Ashtiani", ["ato"] = "Atong", ["atp"] = "Pudtol Atta", ["atq"] = "Aralle-Tabulahan", ["atr"] = "Atruahí", ["ats"] = "Gros Ventre", ["att"] = "Pamplona Atta", ["atu"] = "Reel", ["atv"] = "Northern Altai", ["atw"] = "Atsugewi", ["atx"] = "Arutani", ["aty"] = "Aneityum", ["atz"] = "Arta", ["aua"] = "Asumboa", ["aub"] = "Alugu", ["auc"] = "Waorani", ["aud"] = "Anuta", ["aue"] = "ǂKxʼaoǁʼae", ["aug"] = "Aguna", ["auh"] = "Aushi", ["aui"] = "Anuki", ["auj"] = "Awjilah", ["auk"] = "Heyo", ["aul"] = "Aulua", ["aum"] = "Nigerian Asu", ["aun"] = "Molmo One", ["auo"] = "Auyokawa", ["aup"] = "Makayam", ["auq"] = "Anus", ["aur"] = "Aruek", ["aus"] = "Australian languages", ["aut"] = "Austral", ["auu"] = "Auye", ["auv"] = "Auvergnat", ["auw"] = "Awyi", ["aux"] = "Aurá", ["auy"] = "Awiyaana", ["auz"] = "Uzbeki Arabic", ["ava"] = "Avaric", ["avb"] = "Avau", ["avd"] = "Alviri-Vidari", ["ave"] = "Avestan", ["avi"] = "Avikam", ["avl"] = "Eastern Egyptian Bedawi Arabic", ["avm"] = "Angkamuthi", ["avn"] = "Avatime", ["avo"] = "Agavotaguerra", ["avs"] = "Aushiri", ["avt"] = "Au", ["avu"] = "Avokaya", ["avv"] = "Avá-Canoeiro", ["awb"] = "Awa", ["awc"] = "Western Acipa", ["awe"] = "Awetí", ["awg"] = "Anguthimri", ["awh"] = "Awbono", ["awi"] = "Aekyom", ["awk"] = "Awabakal", ["awm"] = "Arawum", ["awn"] = "Awngi", ["awo"] = "Awak", ["awr"] = "Awera", ["aws"] = "South Awyu", ["awt"] = "Araweté", ["awu"] = "Central Awyu", ["awv"] = "Jair Awyu", ["aww"] = "Awun", ["awx"] = "Awara", ["awy"] = "Edera Awyu", ["axb"] = "Abipon", ["axe"] = "Ayerrerenge", ["axg"] = "Mato Grosso Arára", ["axk"] = "Central African Yaka", ["axl"] = "Lower Southern Aranda", ["axm"] = "Middle Armenian", ["axx"] = "Xaragure", ["aya"] = "Awar", ["ayb"] = "Ayizo Gbe", ["ayc"] = "Southern Aymara", ["ayd"] = "Ayabadhu", ["aye"] = "Ayere", ["ayg"] = "Ginyanga", ["ayh"] = "Hadrami Arabic", ["ayi"] = "Yigha", ["ayk"] = "Akuku", ["ayl"] = "Libyan Arabic", ["aym"] = "Aymara", ["ayn"] = "Sanaani Arabic", ["ayo"] = "Ayoreo", ["ayp"] = "North Mesopotamian Arabic", ["ayq"] = "Papua New Guinean Ayi", ["ayr"] = "Central Aymara", ["ays"] = "Sorsogon Ayta", ["ayt"] = "Bataan Ayta", ["ayu"] = "Ayu", ["ayx"] = "Chinese Ayi", ["ayy"] = "Tayabas Ayta", ["ayz"] = "Mai Brat", ["aza"] = "Azha", ["azd"] = "Eastern Durango Nahuatl", ["aze"] = "Azerbaijani", ["azg"] = "San Pedro Amuzgos Amuzgo", ["azj"] = "North Azerbaijani", ["azm"] = "Ipalapa Amuzgo", ["azn"] = "Western Durango Nahuatl", ["azo"] = "Awing", ["azr"] = "Adzera", ["azt"] = "Faire Atta", ["azz"] = "Highland Puebla Nahuatl", ["baa"] = "Babatana", ["bab"] = "Bainouk-Gunyuño", ["bac"] = "Badui", ["bad"] = "Banda languages", ["bae"] = "Baré", ["baf"] = "Nubaca", ["bag"] = "Tuki", ["bah"] = "Bahamas Creole English", ["bai"] = "Bamileke languages", ["baj"] = "Barakai", ["bak"] = "Bashkir", ["bal"] = "Baluchi", ["bam"] = "Bambara", ["bao"] = "Waimaha", ["bap"] = "Bantawa", ["baq"] = "Basque", ["bas"] = "Cameroonian Basa", ["bat"] = "Baltic languages", ["bau"] = "Nigerian Bada", ["bav"] = "Vengo", ["baw"] = "Bambili-Bambui", ["bax"] = "Bamun", ["bay"] = "Batuley", ["baz"] = "Tunen", ["bba"] = "Baatonum", ["bbb"] = "Barai", ["bbd"] = "Bau", ["bbe"] = "Bangba", ["bbf"] = "Baibai", ["bbg"] = "Barama", ["bbh"] = "Bugan", ["bbi"] = "Barombi", ["bbj"] = "Ghɔmálá'", ["bbk"] = "Babanki", ["bbl"] = "Bats", ["bbm"] = "Babango", ["bbn"] = "Uneapa", ["bbo"] = "Northern Bobo Madaré", ["bbp"] = "West Central Banda", ["bbq"] = "Bamali", ["bbr"] = "Girawa", ["bbs"] = "Bakpinka", ["bbt"] = "Mburku", ["bbu"] = "Nigerian Kulung", ["bbv"] = "Karnai", ["bbw"] = "Baba", ["bbx"] = "Bubia", ["bby"] = "Befang", ["bbz"] = "Babalia Creole Arabic", ["bca"] = "Central Bai", ["bcb"] = "Bainouk-Samik", ["bcd"] = "North Babar", ["bce"] = "Bamenyam", ["bcf"] = "Bamu", ["bcg"] = "Baga Binari", ["bch"] = "Bariai", ["bcj"] = "Bardi", ["bck"] = "Bunaba", ["bcm"] = "Bannoni", ["bcn"] = "Nigerian Bali", ["bco"] = "Kaluli", ["bcp"] = "Congolese Bali", ["bcq"] = "Bench", ["bcr"] = "Babine", ["bcs"] = "Kohumono", ["bct"] = "Bendi", ["bcu"] = "Awad Bing", ["bcv"] = "Shoo-Minda-Nye", ["bcw"] = "Bana", ["bcx"] = "Pamona", ["bcy"] = "Bacama", ["bcz"] = "Bainouk-Gunyaamolo", ["bda"] = "Bayot", ["bdb"] = "Basap", ["bdc"] = "Emberá-Baudó", ["bdd"] = "Bunama", ["bde"] = "Bade", ["bdf"] = "Biage", ["bdg"] = "Bonggi", ["bdh"] = "Sudanese Baka", ["bdi"] = "Burun", ["bdj"] = "Bai", ["bdk"] = "Budukh", ["bdl"] = "Indonesian Bajau", ["bdm"] = "Buduma", ["bdn"] = "Baldemu", ["bdo"] = "Bernde", ["bdp"] = "Bende", ["bdq"] = "Bahnar", ["bds"] = "Burunge", ["bdt"] = "Bokoto", ["bdu"] = "Oroko", ["bdv"] = "Bodo Parja", ["bdw"] = "Baham", ["bdx"] = "Budong-Budong", ["bdy"] = "Bandjalang", ["bdz"] = "Badeshi", ["bea"] = "Beaver", ["beb"] = "Bebele", ["bec"] = "Iceve-Maci", ["bed"] = "Bedoanas", ["bee"] = "Byangsi", ["bef"] = "Benabena", ["beg"] = "Belait", ["beh"] = "Biali", ["bei"] = "Bekati'", ["bej"] = "Beja", ["bek"] = "Bebeli", ["bel"] = "Belarusian", ["bem"] = "Zambian Bemba", ["ben"] = "Bengali", ["beo"] = "Beami", ["bep"] = "Besoa", ["beq"] = "Beembe", ["ber"] = "Berber languages", ["bes"] = "Besme", ["bet"] = "Guiberoua Béte", ["beu"] = "Blagar", ["bev"] = "Daloa Bété", ["bex"] = "Jur Modo", ["bey"] = "Papua New Guinean Beli", ["bez"] = "Tanzanian Bena", ["bfa"] = "Bari", ["bfb"] = "Pauri Bareli", ["bfc"] = "Northern Bai", ["bfd"] = "Bafut", ["bfe"] = "Betaf", ["bff"] = "Bofi", ["bfg"] = "Busang Kayan", ["bfh"] = "Blafe", ["bfi"] = "British Sign Language", ["bfj"] = "Bafanji", ["bfk"] = "Ban Khor Sign Language", ["bfl"] = "Banda-Ndélé", ["bfm"] = "Mmen", ["bfn"] = "Bunak", ["bfo"] = "Malba Birifor", ["bfp"] = "Beba", ["bfq"] = "Badaga", ["bfr"] = "Bazigar", ["bfs"] = "Southern Bai", ["bft"] = "Balti", ["bfu"] = "Gahri", ["bfw"] = "Bondo", ["bfx"] = "Bantayanon", ["bfy"] = "Bagheli", ["bfz"] = "Mahasu Pahari", ["bga"] = "Gwamhi-Wuri", ["bgb"] = "Bobongko", ["bgc"] = "Haryanvi", ["bgd"] = "Rathwi Bareli", ["bge"] = "Bauria", ["bgf"] = "Bangandu", ["bgg"] = "Bugun", ["bgh"] = "Bogan", ["bgi"] = "Giangan", ["bgj"] = "Bangolan", ["bgk"] = "Bit", ["bgl"] = "Laotian Bo", ["bgm"] = "Baga Mboteni", ["bgo"] = "Baga Koga", ["bgp"] = "Eastern Balochi", ["bgq"] = "Bagri", ["bgr"] = "Bawm Chin", ["bgs"] = "Tagabawa", ["bgt"] = "Bughotu", ["bgu"] = "Mbongno", ["bgv"] = "Warkay-Bipim", ["bgw"] = "Bhatri", ["bgx"] = "Balkan Gagauz Turkish", ["bgy"] = "Benggoi", ["bgz"] = "Banggai", ["bha"] = "Bharia", ["bhb"] = "Bhili", ["bhc"] = "Biga", ["bhd"] = "Bhadrawahi", ["bhe"] = "Bhaya", ["bhf"] = "Odiai", ["bhg"] = "Binandere", ["bhh"] = "Bukharic", ["bhi"] = "Bhilali", ["bhj"] = "Bahing", ["bhk"] = "Albay Bicolano", ["bhl"] = "Bimin", ["bhm"] = "Bathari", ["bhn"] = "Bohtan Neo-Aramaic", ["bhp"] = "Bima", ["bhq"] = "Tukang Besi South", ["bhr"] = "Bara Malagasy", ["bhs"] = "Buwal", ["bht"] = "Bhattiyali", ["bhu"] = "Bhunjia", ["bhv"] = "Bahau", ["bhw"] = "Biak", ["bhx"] = "Bhalay", ["bhy"] = "Bhele", ["bhz"] = "Indonesian Bada", ["bia"] = "Badimaya", ["bib"] = "Bissa", ["bic"] = "Bikaru", ["bid"] = "Bidiyo", ["bie"] = "Bepour", ["bif"] = "Biafada", ["big"] = "Biangai", ["bih"] = "Bihari", ["bii"] = "Bisu", ["bij"] = "Vaghat-Ya-Bijim-Legeri", ["bik"] = "Bikol", ["bil"] = "Bile", ["bim"] = "Bimoba", ["bin"] = "Bini", ["bio"] = "Nai", ["bip"] = "Bila", ["biq"] = "Bipi", ["bir"] = "Bisorio", ["bis"] = "Bislama", ["bit"] = "Berinomo", ["biu"] = "Biete", ["biv"] = "Southern Birifor", ["biw"] = "Cameroonian Kol", ["bix"] = "Bijori", ["biy"] = "Birhor", ["biz"] = "Baloi", ["bja"] = "Budza", ["bjb"] = "Banggarla", ["bjc"] = "Bariji", ["bjd"] = "Bandjigali", ["bje"] = "Biao-Jiao Mien", ["bjf"] = "Barzani Jewish Neo-Aramaic", ["bjg"] = "Bidyogo", ["bjh"] = "Bahinemo", ["bji"] = "Burji", ["bjj"] = "Kanauji", ["bjk"] = "Barok", ["bjl"] = "Papua New Guinean Bulu", ["bjm"] = "Bajelani", ["bjo"] = "Mid-Southern Banda", ["bjp"] = "Fanamaket", ["bjq"] = "Southern Betsimisaraka Malagasy", ["bjr"] = "Binumarien", ["bjs"] = "Bajan", ["bjt"] = "Balanta-Ganja", ["bju"] = "Busuu", ["bjv"] = "Bedjond", ["bjw"] = "Bakwé", ["bjx"] = "Banao Itneg", ["bjy"] = "Bayali", ["bjz"] = "Baruga", ["bka"] = "Kyak", ["bkb"] = "Finallig", ["bkc"] = "Cameroonian Baka", ["bkd"] = "Binukid", ["bke"] = "Bengkulu", ["bkf"] = "Beeke", ["bkg"] = "Buraka", ["bkh"] = "Bakoko", ["bki"] = "Baki", ["bkj"] = "Pande", ["bkk"] = "Brokskat", ["bkl"] = "Berik", ["bkm"] = "Cameroonian Kom", ["bkn"] = "Bukitan", ["bko"] = "Kwa'", ["bkp"] = "Congolese Boko", ["bkq"] = "Bakairí", ["bkr"] = "Bakumpai", ["bks"] = "Masbate Sorsogon", ["bkt"] = "Boloki", ["bku"] = "Buhid", ["bkv"] = "Bekwarra", ["bkw"] = "Bekwil", ["bkx"] = "Baikeno", ["bky"] = "Bokyi", ["bkz"] = "Bungku", ["bla"] = "Siksika", ["blb"] = "Bilua", ["blc"] = "Bella Coola", ["bld"] = "Bolango", ["ble"] = "Balanta-Kentohe", ["blf"] = "Buol", ["blg"] = "Balau", ["blh"] = "Kuwaa", ["bli"] = "Bolia", ["blj"] = "Bolongan", ["bll"] = "Biloxi", ["blm"] = "Sudanese Beli", ["bln"] = "Southern Catanduanes Bicolano", ["blo"] = "Anii", ["blp"] = "Blablanga", ["blq"] = "Baluan-Pam", ["blr"] = "Blang", ["bls"] = "Balaesang", ["blt"] = "Tai Dam", ["blu"] = "Hmong Njua", ["blv"] = "Bolo", ["blw"] = "Balangao", ["blx"] = "Mag-Indi Ayta", ["bly"] = "Notre", ["blz"] = "Balantak", ["bma"] = "Lame", ["bmb"] = "Bembe", ["bmc"] = "Biem", ["bmd"] = "Baga Manduri", ["bme"] = "Limassa", ["bmf"] = "Bom", ["bmg"] = "Bamwe", ["bmh"] = "Kein", ["bmi"] = "Bagirmi", ["bmj"] = "Bote-Majhi", ["bmk"] = "Ghayavi", ["bml"] = "Bomboli", ["bmm"] = "Northern Betsimisaraka Malagasy", ["bmn"] = "Papua New Guinean Bina", ["bmo"] = "Bambalang", ["bmp"] = "Bulgebi", ["bmq"] = "Bomu", ["bmr"] = "Muinane", ["bms"] = "Bilma Kanuri", ["bmt"] = "Biao Mon", ["bmu"] = "Burum-Mindik", ["bmv"] = "Bum", ["bmw"] = "Bomwali", ["bmx"] = "Baimak", ["bmy"] = "Congolese Bemba", ["bmz"] = "Baramu", ["bna"] = "Bonerate", ["bnb"] = "Bookan", ["bnc"] = "Central Bontoc", ["bnd"] = "Indonesian Banda", ["bne"] = "Bintauna", ["bnf"] = "Masiwang", ["bng"] = "Benga", ["bnh"] = "Banawá", ["bni"] = "Bangi", ["bnj"] = "Eastern Tawbuid", ["bnk"] = "Bierebo", ["bnl"] = "Boon", ["bnm"] = "Batanga", ["bnn"] = "Bunun", ["bno"] = "Bantoanon", ["bnp"] = "Bola", ["bnq"] = "Bantik", ["bnr"] = "Butmas-Tur", ["bns"] = "Bundeli", ["bnt"] = "Bantu languages", ["bnu"] = "Bentong", ["bnv"] = "Edwas or Bonerif", ["bnw"] = "Bisis", ["bnx"] = "Bangubangu", ["bny"] = "Bintulu", ["bnz"] = "Beezen", ["boa"] = "Bora", ["bob"] = "Boni", ["boc"] = "Bakung Kenyah", ["bod"] = "Tibetan", ["boe"] = "Mundabli", ["bof"] = "Bolon", ["bog"] = "Bamako Sign Language", ["boh"] = "Boma", ["boi"] = "Barbareño", ["boj"] = "Anjam", ["bok"] = "Bonjo", ["bol"] = "Bole", ["bom"] = "Berom", ["bon"] = "Bine", ["boo"] = "Tièma Cièwè Bozo", ["bop"] = "Bonkiman", ["boq"] = "Bogaya", ["bor"] = "Borôro", ["bos"] = "Bosnian", ["bot"] = "Bongo", ["bou"] = "Bondei", ["bov"] = "Tuwuli", ["bow"] = "Rema", ["box"] = "Buamu", ["boy"] = "Central African Bodo", ["boz"] = "Tiéyaxo Bozo", ["bpa"] = "Dakaka", ["bpb"] = "Barbacoas", ["bpd"] = "Banda-Banda", ["bpg"] = "Bonggo", ["bph"] = "Botlikh", ["bpi"] = "Bagupi", ["bpj"] = "Binji", ["bpk"] = "Orowe", ["bpl"] = "Broome Pearling Lugger Pidgin", ["bpm"] = "Biyom", ["bpn"] = "Dzao Min", ["bpo"] = "Anasi", ["bpp"] = "Kaure", ["bpq"] = "Banda Malay", ["bpr"] = "Koronadal Blaan", ["bps"] = "Sarangani Blaan", ["bpt"] = "Barrow Point", ["bpu"] = "Bongu", ["bpv"] = "Bian Marind", ["bpw"] = "Papua New Guinean Bo", ["bpx"] = "Palya Bareli", ["bpz"] = "Bilba", ["bqa"] = "Tchumbuli", ["bqb"] = "Bagusa", ["bqc"] = "Beninese Boko", ["bqd"] = "Bung", ["bqe"] = "Navarro-Labourdin Basque", ["bqf"] = "Baga Kaloum", ["bqg"] = "Bago-Kusuntu", ["bqh"] = "Baima", ["bqj"] = "Bandial", ["bqk"] = "Banda-Mbrès", ["bql"] = "Bilakura", ["bqm"] = "Wumboko", ["bqn"] = "Bulgarian Sign Language", ["bqo"] = "Balo", ["bqp"] = "Busa", ["bqq"] = "Biritai", ["bqr"] = "Burusu", ["bqs"] = "Bosngun", ["bqt"] = "Bamukumbit", ["bqu"] = "Boguru", ["bqv"] = "Begbere-Ejar", ["bqw"] = "Nigerian Buru", ["bqx"] = "Baangi", ["bqy"] = "Bali Sign Language", ["bqz"] = "Bakaka", ["bra"] = "Braj", ["brb"] = "Lave", ["brc"] = "Berbice Creole Dutch", ["brd"] = "Baraamu", ["bre"] = "Breton", ["brf"] = "Bera", ["brg"] = "Baure", ["bri"] = "Mokpwe", ["brj"] = "Bieria", ["brk"] = "Birked", ["brl"] = "Birwa", ["brm"] = "Barambu", ["brn"] = "Boruca", ["bro"] = "Brokkat", ["brp"] = "Barapasi", ["brq"] = "Breri", ["brr"] = "Birao", ["brs"] = "Baras", ["brt"] = "Bitare", ["bru"] = "Eastern Bru", ["brv"] = "Western Bru", ["brw"] = "Bellari", ["brx"] = "Indian Bodo", ["bry"] = "Burui", ["brz"] = "Bilbil", ["bsa"] = "Abinomn", ["bsb"] = "Brunei Bisaya", ["bsc"] = "Bassari", ["bsd"] = "Sarawak Bisaya", ["bse"] = "Wushi", ["bsf"] = "Bauchi", ["bsg"] = "Bashkardi", ["bsh"] = "Kati", ["bsi"] = "Bassossi", ["bsj"] = "Bangwinji", ["bsk"] = "Burushaski", ["bsl"] = "Basa-Gumna", ["bsm"] = "Busami", ["bsn"] = "Barasana", ["bso"] = "Buso", ["bsp"] = "Baga Sitemu", ["bsq"] = "Bassa", ["bsr"] = "Bassa-Kontagora", ["bss"] = "Akoose", ["bst"] = "Basketo", ["bsu"] = "Bahonsuai", ["bsv"] = "Baga Sobané", ["bsw"] = "Baiso", ["bsx"] = "Yangkam", ["bsy"] = "Sabah Bisaya", ["bsz"] = "Souletin Basque", ["bta"] = "Bata", ["btb"] = "Cameroonian Beti", ["btc"] = "Cameroonian Bati", ["btd"] = "Batak Dairi", ["bte"] = "Gamo-Ningi", ["btf"] = "Birgit", ["btg"] = "Gagnoa Bété", ["bth"] = "Biatah", ["bti"] = "Burate", ["btj"] = "Bacanese Malay", ["btk"] = "Batak languages", ["btl"] = "Bhatola", ["btn"] = "Ratagnon", ["btp"] = "Budibud", ["btq"] = "Batek", ["btr"] = "Baetora", ["bts"] = "Batak Simalungun", ["btt"] = "Bete-Bendi", ["btu"] = "Batu", ["btv"] = "Bateri", ["btw"] = "Butuanon", ["btx"] = "Batak Karo", ["bty"] = "Bobot", ["btz"] = "Batak Alas-Kluet", ["bua"] = "Buriat", ["bub"] = "Bua", ["buc"] = "Bushi", ["bud"] = "Ntcham", ["bue"] = "Beothuk", ["buf"] = "Bushoong", ["buh"] = "Younuo Bunu", ["bui"] = "Bongili", ["buj"] = "Basa-Gurmana", ["buk"] = "Bugawac", ["bul"] = "Bulgarian", ["bum"] = "Cameroonian Bulu", ["bun"] = "Sherbro", ["buo"] = "Terei", ["bup"] = "Busoa", ["buq"] = "Brem", ["bur"] = "Burmese", ["bus"] = "Bokobaru", ["but"] = "Bungain", ["buu"] = "Budu", ["buv"] = "Bun", ["buw"] = "Bubi", ["bux"] = "Boghom", ["buy"] = "Bullom So", ["buz"] = "Bukwen", ["bva"] = "Barein", ["bvb"] = "Bube", ["bvc"] = "Baelelea", ["bvd"] = "Baeggu", ["bve"] = "Berau Malay", ["bvf"] = "Boor", ["bvg"] = "Bonkeng", ["bvh"] = "Bure", ["bvi"] = "Belanda Viri", ["bvj"] = "Baan", ["bvk"] = "Bukat", ["bvl"] = "Bolivian Sign Language", ["bvm"] = "Bamunka", ["bvn"] = "Buna", ["bvo"] = "Bolgo", ["bvp"] = "Bumang", ["bvq"] = "Birri", ["bvr"] = "Burarra", ["bvs"] = "Belgian Sign Language", ["bvt"] = "Indonesian Bati", ["bvu"] = "Bukit Malay", ["bvv"] = "Baniva", ["bvw"] = "Boga", ["bvx"] = "Dibole", ["bvy"] = "Baybayanon", ["bvz"] = "Bauzi", ["bwa"] = "Bwatoo", ["bwb"] = "Namosi-Naitasiri-Serua", ["bwc"] = "Bwile", ["bwd"] = "Bwaidoka", ["bwe"] = "Bwe Karen", ["bwf"] = "Boselewa", ["bwg"] = "Barwe", ["bwh"] = "Bishuo", ["bwi"] = "Baniwa", ["bwj"] = "Láá Láá Bwamu", ["bwk"] = "Bauwaki", ["bwl"] = "Bwela", ["bwm"] = "Biwat", ["bwn"] = "Wunai Bunu", ["bwo"] = "Boro", ["bwp"] = "Mandobo Bawah", ["bwq"] = "Southern Bobo Madaré", ["bwr"] = "Bura-Pabir", ["bws"] = "Bomboma", ["bwt"] = "Bafaw-Balong", ["bwu"] = "Ghanaian Buli", ["bwv"] = "Bahau River Kenyah", ["bww"] = "Bwa", ["bwx"] = "Bu-Nao Bunu", ["bwy"] = "Cwi Bwamu", ["bwz"] = "Bwisi", ["bxa"] = "Bauro", ["bxb"] = "Belanda Bor", ["bxc"] = "Molengue", ["bxd"] = "Pela", ["bxe"] = "Birale", ["bxf"] = "Bilur", ["bxg"] = "Bangala", ["bxh"] = "Buhutu", ["bxi"] = "Pirlatapa", ["bxj"] = "Bayungu", ["bxk"] = "Bukusu", ["bxl"] = "Jalkunan", ["bxm"] = "Mongolia Buriat", ["bxn"] = "Burduna", ["bxo"] = "Barikanchi", ["bxp"] = "Bebil", ["bxq"] = "Beele", ["bxs"] = "Busam", ["bxt"] = "Buxinhua", ["bxu"] = "China Buriat", ["bxv"] = "Berakou", ["bxw"] = "Bankagooma", ["bxx"] = "Borna", ["bxz"] = "Binahari", ["bya"] = "Batak", ["byb"] = "Bikya", ["byc"] = "Ubaghara", ["byd"] = "Benyadu'", ["bye"] = "Pouye", ["byf"] = "Bete", ["byg"] = "Baygo", ["byh"] = "Bujhyal", ["byi"] = "Buyu", ["byj"] = "Nigerian Bina", ["byk"] = "Biao", ["byl"] = "Bayono", ["bym"] = "Bidyara", ["byn"] = "Bilin", ["byo"] = "Biyo", ["byp"] = "Bumaji", ["byq"] = "Basay", ["byr"] = "Baruya", ["bys"] = "Burak", ["byt"] = "Berti", ["byu"] = "Buyang", ["byv"] = "Medumba", ["byw"] = "Belhariya", ["byx"] = "Qaqet", ["byy"] = "Buya", ["byz"] = "Banaro", ["bza"] = "Bandi", ["bzb"] = "Andio", ["bzc"] = "Southern Betsimisaraka Malagasy", ["bzd"] = "Bribri", ["bze"] = "Jenaama Bozo", ["bzf"] = "Boikin", ["bzg"] = "Babuza", ["bzh"] = "Mapos Buang", ["bzi"] = "Bisu", ["bzj"] = "Belize Kriol English", ["bzk"] = "Nicaragua Creole English", ["bzl"] = "Sulawesi Boano", ["bzm"] = "Bolondo", ["bzn"] = "Maluku Boano", ["bzo"] = "Bozaba", ["bzp"] = "Kemberano", ["bzq"] = "Indonesian Buli", ["bzr"] = "Biri", ["bzs"] = "Brazilian Sign Language", ["bzt"] = "Brithenig", ["bzu"] = "Burmeso", ["bzv"] = "Bebe", ["bzw"] = "Nigerian Basa", ["bzx"] = "Hainyaxo Bozo", ["bzy"] = "Obanliku", ["bzz"] = "Evant", ["caa"] = "Chortí", ["cab"] = "Garifuna", ["cac"] = "San Sebastián Coatán Chuj", ["cad"] = "Caddo", ["cae"] = "Lehar", ["caf"] = "Southern Carrier", ["cag"] = "Nivaclé", ["cah"] = "Cahuarano", ["cai"] = "Central American Indian languages", ["caj"] = "Chané", ["cak"] = "Central Cakchiquel", ["cal"] = "Carolinian", ["cam"] = "Cemuhî", ["can"] = "Chambri", ["cao"] = "Chácobo", ["cap"] = "Chipaya", ["caq"] = "Car Nicobarese", ["car"] = "Carib", ["cas"] = "Tsimané", ["cat"] = "Catalan", ["cau"] = "Caucasian languages", ["cav"] = "Cavineña", ["caw"] = "Callawalla", ["cax"] = "Chiquitano", ["cay"] = "Cayuga", ["caz"] = "Canichana", ["cbb"] = "Cabiyarí", ["cbc"] = "Carapana", ["cbd"] = "Carijona", ["cbe"] = "Chipiajes", ["cbg"] = "Chimila", ["cbh"] = "Cagua", ["cbi"] = "Chachi", ["cbj"] = "Ede Cabe", ["cbk"] = "Chavacano", ["cbl"] = "Bualkhaw Chin", ["cbm"] = "Yepocapa Southwestern Cakchiquel", ["cbn"] = "Nyahkur", ["cbo"] = "Izora", ["cbq"] = "Tsucuba Cuba", ["cbr"] = "Cashibo-Cacataibo", ["cbs"] = "Cashinahua", ["cbt"] = "Chayahuita", ["cbu"] = "Candoshi-Shapra", ["cbv"] = "Cacua", ["cbw"] = "Kinabalian", ["cby"] = "Carabayo", ["cca"] = "Cauca", ["ccc"] = "Chamicuro", ["ccd"] = "Cafundo Creole", ["cce"] = "Chopi", ["ccg"] = "Samba Daka", ["cch"] = "Atsam", ["ccj"] = "Kasanga", ["ccl"] = "Cutchi-Swahili", ["ccm"] = "Malaccan Creole Malay", ["cco"] = "Comaltepec Chinantec", ["ccp"] = "Chakma", ["ccq"] = "Chaungtha", ["ccr"] = "Cacaopera", ["ccx"] = "Northern Zhuang", ["ccy"] = "Southern Zhuang", ["cda"] = "Choni", ["cde"] = "Chenchu", ["cdf"] = "Chiru", ["cdg"] = "Chamari", ["cdh"] = "Chambeali", ["cdi"] = "Chodri", ["cdj"] = "Churahi", ["cdm"] = "Chepang", ["cdn"] = "Chaudangsi", ["cdr"] = "Cinda-Regi-Tiyal", ["cds"] = "Chadian Sign Language", ["cdy"] = "Chadong", ["cdz"] = "Koda", ["cea"] = "Lower Chehalis", ["ceg"] = "Chamacoco", ["cek"] = "Eastern Khumi Chin", ["cel"] = "Celtic languages", ["cen"] = "Cen", ["ces"] = "Czech", ["cet"] = "Centúúm", ["cey"] = "Ekai Chin", ["cfa"] = "Dijim-Bwilim", ["cfd"] = "Cara", ["cfg"] = "Como Karim", ["cfm"] = "Falam Chin", ["cga"] = "Changriwa", ["cgc"] = "Kagayanen", ["cgg"] = "Chiga", ["cgk"] = "Chocangacakha", ["cha"] = "Chamorro", ["chb"] = "Chibcha", ["chc"] = "Catawba", ["chd"] = "Highland Oaxacan Chontal", ["che"] = "Chechen", ["chf"] = "Tabasco Chontal", ["chg"] = "Chagatai", ["chh"] = "Chinook", ["chi"] = "Chinese", ["chi-CN"] = "China Chinese", ["chi-HK"] = "Hong Kong Chinese", ["chi-TW"] = "Taiwanese Chinese", ["chj"] = "Ojitlán Chinantec", ["chk"] = "Chuukese", ["chl"] = "Cahuilla", ["chm"] = "Russian Mari", ["chn"] = "Chinook jargon", ["chp"] = "Chipewyan", ["chq"] = "Quiotepec Chinantec", ["chs"] = "Chumash", ["cht"] = "Cholón", ["chu"] = "Old Church Slavonic", ["chv"] = "Chuvash", ["chw"] = "Chuwabu", ["chx"] = "Chantyal", ["chz"] = "Ozumacín Chinantec", ["cia"] = "Cia-Cia", ["cib"] = "Ci Gbe", ["cic"] = "Chickasaw", ["cid"] = "Chimariko", ["cie"] = "Cineni", ["cih"] = "Chinali", ["cik"] = "Chitkuli Kinnauri", ["cim"] = "Cimbrian", ["cin"] = "Cinta Larga", ["cip"] = "Chiapanec", ["cir"] = "Tiri", ["cit"] = "Chittagonian", ["ciw"] = "Chippewa", ["ciy"] = "Chaima", ["cja"] = "Western Cham", ["cje"] = "CHARu", ["cjh"] = "Upper Chehalis", ["cji"] = "Chamalal", ["cjk"] = "Chokwe", ["cjm"] = "Eastern Cham", ["cjn"] = "Chenapian", ["cjo"] = "Ashéninka Pajonal", ["cjp"] = "Cabécar", ["cjr"] = "Chorotega", ["cjs"] = "Shor", ["cjv"] = "Chuave", ["cjy"] = "Jinyu Chinese", ["cka"] = "Khumi Awa Chin", ["ckc"] = "Northern Cakchiquel", ["ckd"] = "South Central Cakchiquel", ["cke"] = "Eastern Cakchiquel", ["ckf"] = "Southern Cakchiquel", ["ckh"] = "Chak", ["cki"] = "Santa María De Jesús Cakchiquel", ["ckj"] = "Santo Domingo Xenacoj Cakchiquel", ["ckk"] = "Acatenango Southwestern Cakchiquel", ["ckl"] = "Cibak", ["ckm"] = "Chakavian", ["ckn"] = "Kaang Chin", ["cko"] = "Anufo", ["ckq"] = "Kajakse", ["ckr"] = "Kairak", ["cks"] = "Tayo", ["ckt"] = "Chukot", ["cku"] = "Koasati", ["ckv"] = "Kavalan", ["ckw"] = "Western Cakchiquel", ["ckx"] = "Caka", ["cky"] = "Cakfem-Mushere", ["ckz"] = "Cauqué Mayan", ["cla"] = "Ron", ["clc"] = "Chilcotin", ["cld"] = "Chaldean Neo-Aramaic", ["cle"] = "Lealao Chinantec", ["clh"] = "Chilisso", ["cli"] = "Chakali", ["clj"] = "Laitu Chin", ["clk"] = "Idu-Mishmi", ["cll"] = "Chala", ["clm"] = "Klallam Clallam", ["clo"] = "Lowland Oaxacan Chontal", ["clt"] = "Lautu Chin", ["clu"] = "Caluyanun", ["clw"] = "Chulym", ["cly"] = "Eastern Highland Chatino", ["cma"] = "Maa", ["cmc"] = "Chamic languages", ["cme"] = "Cerma", ["cmg"] = "Classical Mongolian", ["cmi"] = "Emberá-Chamí", ["cmk"] = "Chimakum", ["cml"] = "Campalagian", ["cmm"] = "Michigamea", ["cmn"] = "Mandarin Chinese", ["cmo"] = "Central Mnong", ["cmr"] = "Mro Chin", ["cms"] = "Messapic", ["cmt"] = "Camtho", ["cna"] = "Changthang", ["cnb"] = "Chinbon Chin", ["cnc"] = "Côông", ["cng"] = "Northern Qiang", ["cnh"] = "Lai Chin", ["cni"] = "Asháninka", ["cnk"] = "Khumi Chin", ["cnl"] = "Lalana Chinantec", ["cnm"] = "Ixtatán Chuj", ["cno"] = "Con", ["cnp"] = "Northern Pinghua", ["cnr"] = "Montenegrin", ["cns"] = "Central Asmat", ["cnt"] = "Tepetotutla Chinantec", ["cnu"] = "Chenoua", ["cnw"] = "Ngawn Chin", ["cnx"] = "Middle Cornish", ["coa"] = "Cocos Islands Malay", ["cob"] = "Chicomuceltec", ["coc"] = "Cocopa", ["cod"] = "Cocama-Cocamilla", ["coe"] = "Koreguaje", ["cof"] = "Colorado", ["cog"] = "Chong", ["coh"] = "Chonyi", ["coj"] = "Cochimi", ["cok"] = "Santa Teresa Cora", ["col"] = "Columbia-Wenatchi", ["com"] = "Comanche", ["con"] = "Cofán", ["coo"] = "Comox", ["cop"] = "Coptic", ["coq"] = "Coquille", ["cor"] = "Cornish", ["cos"] = "Corsican", ["cot"] = "Caquinte", ["cou"] = "Wamey", ["cov"] = "Cao Miao", ["cow"] = "Cowlitz", ["cox"] = "Nanti", ["coy"] = "Coyaima", ["coz"] = "Chochotec", ["cpa"] = "Palantla Chinantec", ["cpb"] = "Ucayali-Yurúa Ashéninka", ["cpc"] = "Ajyíninka Apurucayali", ["cpe"] = "English based creoles and pidgins", ["cpf"] = "French-based creoles and pidgins", ["cpg"] = "Cappadocian Greek", ["cpi"] = "Chinese Pidgin English", ["cpn"] = "Cherepon", ["cpo"] = "Kpeego", ["cpp"] = "Portuguese-based creoles and pidgins", ["cpu"] = "Pichis Ashéninka", ["cpy"] = "South Ucayali Ashéninka", ["cqd"] = "Chuanqiandian Cluster Miao", ["cqu"] = "Chilean Quechua", ["cra"] = "Chara", ["crb"] = "Island Carib", ["crc"] = "Lonwolwol", ["crd"] = "Coeur d'Alene", ["cre"] = "Cree", ["crf"] = "Caramanta", ["crg"] = "Michif", ["cri"] = "Sãotomense", ["crj"] = "Southern East Cree", ["crk"] = "Plains Cree", ["crl"] = "Northern East Cree", ["crm"] = "Moose Cree", ["crn"] = "El Nayar Cora", ["cro"] = "Crow", ["crp"] = "Creoles and pidgins", ["crq"] = "Iyoʼwujwa Chorote", ["crr"] = "Carolina Algonquian", ["crs"] = "Seselwa Creole French", ["crt"] = "Iyoʼwujwa Chorote", ["cru"] = "Carútana", ["crv"] = "Chaura", ["crw"] = "Chrau", ["crx"] = "Carrier", ["cry"] = "Cori", ["crz"] = "Cruzeño", ["csa"] = "Chiltepec Chinantec", ["csc"] = "Catalan Sign Language", ["csd"] = "Chiangmai Sign Language", ["cse"] = "Czech Sign Language", ["csf"] = "Cuba Sign Language", ["csg"] = "Chilean Sign Language", ["csh"] = "Asho Chin", ["csi"] = "Coast Miwok", ["csj"] = "Songlai Chin", ["csk"] = "Jola-Kasa", ["csl"] = "Chinese Sign Language", ["csm"] = "Central Sierra Miwok", ["csn"] = "Colombian Sign Language", ["cso"] = "Sochiapan Chinantec", ["csp"] = "Southern Pinghua", ["csq"] = "Croatia Sign Language", ["csr"] = "Costa Rican Sign Language", ["css"] = "Southern Ohlone", ["cst"] = "Northern Ohlone", ["csv"] = "Sumtu Chin", ["csw"] = "Swampy Cree", ["csy"] = "Siyin Chin", ["csz"] = "Coos", ["cta"] = "Tataltepec Chatino", ["ctc"] = "Chetco", ["ctd"] = "Tedim Chin", ["cte"] = "Tepinapa Chinantec", ["ctg"] = "Chittagonian", ["cth"] = "Thaiphum Chin", ["cti"] = "Tila Chol", ["ctl"] = "Tlacoatzintepec Chinantec", ["ctm"] = "Chitimacha", ["ctn"] = "Chhintange", ["cto"] = "Emberá-Catío", ["ctp"] = "Western Highland Chatino", ["cts"] = "Northern Catanduanes Bicolano", ["ctt"] = "Wayanad Chetti", ["ctu"] = "Tumbalá Chol", ["ctz"] = "Zacatepec Chatino", ["cua"] = "Cua", ["cub"] = "Cubeo", ["cuc"] = "Usila Chinantec", ["cug"] = "Cung", ["cuh"] = "Chuka", ["cui"] = "Cuiba", ["cuj"] = "Mashco Piro", ["cuk"] = "San Blas Kuna", ["cul"] = "Culina", ["cum"] = "Cumeral", ["cun"] = "Cunén Quiché", ["cuo"] = "Cumanagoto", ["cup"] = "Cupeño", ["cuq"] = "Cun", ["cur"] = "Chhulung", ["cus"] = "Cushitic languages", ["cut"] = "Teutila Cuicatec", ["cuu"] = "Tai Ya", ["cuv"] = "Cuvok", ["cuw"] = "Chukwa", ["cux"] = "Tepeuxila Cuicatec", ["cuy"] = "Cuitlatec", ["cvg"] = "Chug", ["cvn"] = "Valle Nacional Chinantec", ["cwa"] = "Kabwa", ["cwb"] = "Maindo", ["cwd"] = "Woods Cree", ["cwe"] = "Kwere", ["cwg"] = "Chewong", ["cwt"] = "Kuwaataay", ["cya"] = "Nopala Chatino", ["cyb"] = "Cayubaba", ["cym"] = "Welsh", ["cyo"] = "Cuyonon", ["cze"] = "Czech", ["czh"] = "Huizhou Chinese", ["czk"] = "Knaanic", ["czn"] = "Zenzontepec Chatino", ["czo"] = "Min Zhong Chinese", ["czt"] = "Zotung Chin", ["daa"] = "Dangaléat", ["dac"] = "Dambi", ["dad"] = "Marik", ["dae"] = "Duupa", ["daf"] = "Dan", ["dah"] = "Gwahatike", ["dai"] = "Day", ["daj"] = "Dar Fur Daju", ["dak"] = "Dakota", ["dal"] = "Dahalo", ["dam"] = "Damakawa", ["dan"] = "Danish", ["dao"] = "Daai Chin", ["dap"] = "Nisi", ["daq"] = "Dandami Maria", ["dar"] = "Dargwa", ["das"] = "Daho-Doo", ["dat"] = "Darang Deng", ["dau"] = "Dar Sila Daju", ["dav"] = "Taita", ["daw"] = "Davawenyo", ["dax"] = "Dayi", ["day"] = "Land Dayak languages", ["daz"] = "Dao", ["dba"] = "Bangeri Me Dogon", ["dbb"] = "Deno", ["dbd"] = "Dadiya", ["dbe"] = "Dabe", ["dbf"] = "Edopi", ["dbg"] = "Dogul Dom Dogon", ["dbi"] = "Doka", ["dbj"] = "Ida'an", ["dbl"] = "Dyirbal", ["dbm"] = "Duguri", ["dbn"] = "Duriankere", ["dbo"] = "Dulbu", ["dbp"] = "Duwai", ["dbq"] = "Daba", ["dbr"] = "Dabarre", ["dbt"] = "Ben Tey Dogon", ["dbu"] = "Bondum Dom Dogon", ["dbv"] = "Dungu", ["dbw"] = "Bankan Tey Dogon", ["dby"] = "Dibiyaso", ["dcc"] = "Deccan", ["dcr"] = "Negerhollands", ["dda"] = "Dadi Dadi", ["ddd"] = "Dongotono", ["dde"] = "Doondo", ["ddg"] = "Fataluku", ["ddi"] = "Diodio", ["ddj"] = "Jaru", ["ddn"] = "Benin Dendi", ["ddo"] = "Tsez", ["ddr"] = "Dhudhuroa", ["dds"] = "Donno So Dogon", ["ddw"] = "Dawera-Daweloor", ["de-CH"] = "Swiss High German", ["dec"] = "Dagik", ["ded"] = "Dedua", ["dee"] = "Dewoin", ["def"] = "Dezfuli", ["deg"] = "Degema", ["deh"] = "Dehwari", ["dei"] = "Demisa", ["dek"] = "Dek", ["del"] = "Delaware", ["dem"] = "Dem", ["den"] = "Athapascan Slave", ["dep"] = "Pidgin Delaware", ["deq"] = "Central African Dendi", ["der"] = "Deori", ["des"] = "Desano", ["deu"] = "German", ["deu-CH"] = "Swiss High German", ["deu-at"] = "Austrian German", ["dev"] = "Domung", ["deva"] = "Devanāgarī", ["dez"] = "Dengese", ["dgb"] = "Bunoge Dogon", ["dgc"] = "Casiguran Dumagat Agta", ["dgd"] = "Dagaari Dioula", ["dge"] = "Degenan", ["dgg"] = "Doga", ["dgh"] = "Dghwede", ["dgi"] = "Northern Dagara", ["dgk"] = "Dagba", ["dgl"] = "Andaandi", ["dgn"] = "Dagoman", ["dgo"] = "Dogri", ["dgr"] = "Dogrib", ["dgs"] = "Dogoso", ["dgt"] = "Ndrag'ngith", ["dgu"] = "Degaru", ["dgw"] = "Daungwurrung", ["dgx"] = "Doghoro", ["dgz"] = "Daga", ["dha"] = "Dhanwar", ["dhd"] = "Dhundari", ["dhg"] = "Dhangu", ["dhi"] = "Dhimal", ["dhl"] = "Dhalandji", ["dhm"] = "Zemba", ["dhn"] = "Dhanki", ["dho"] = "Dhodia", ["dhr"] = "Dhargari", ["dhs"] = "Dhaiso", ["dhu"] = "Dhurga", ["dhv"] = "Dehu", ["dhw"] = "Nepali Dhanwar", ["dhx"] = "Dhungaloo", ["dia"] = "Dia", ["dib"] = "South Central Dinka", ["dic"] = "Lakota Dida", ["did"] = "Didinga", ["dif"] = "Dieri", ["dig"] = "Digo", ["dih"] = "Kumiai", ["dii"] = "Dimbong", ["dij"] = "Dai", ["dik"] = "Southwestern Dinka", ["dil"] = "Dilling", ["dim"] = "Dime", ["dio"] = "Dibo", ["dip"] = "Northeastern Dinka", ["dir"] = "Dirim", ["dis"] = "Dimasa", ["dit"] = "Dirari", ["diu"] = "Diriku", ["div"] = "Dhivehi", ["diw"] = "Northwestern Dinka", ["dix"] = "Dixon Reef", ["diy"] = "Diuwe", ["diz"] = "Ding", ["dja"] = "Djadjawurrung", ["djb"] = "Djinba", ["djc"] = "Dar Daju Daju", ["djd"] = "Djamindjung", ["dje"] = "Zarma", ["djf"] = "Djangun", ["dji"] = "Djinang", ["djj"] = "Djeebbana", ["djk"] = "Aukan", ["djl"] = "Djiwarli", ["djm"] = "Jamsay Dogon", ["djn"] = "Djauan", ["djo"] = "Djongkang", ["djr"] = "Djambarrpuyngu", ["dju"] = "Kapriman", ["djw"] = "Djawi", ["dka"] = "Dakpakha", ["dkk"] = "Dakka", ["dkl"] = "Kolum So Dogon", ["dkr"] = "Kuijau", ["dks"] = "Southeastern Dinka", ["dkx"] = "Mazagway", ["dlg"] = "Dolgan", ["dlk"] = "Dahalik", ["dlm"] = "Dalmatian", ["dln"] = "Darlong", ["dma"] = "Duma", ["dmb"] = "Mombo Dogon", ["dmc"] = "Dimir", ["dmd"] = "Madhi Madhi", ["dme"] = "Dugwor", ["dmf"] = "Medefaidrin", ["dmg"] = "Upper Kinabatangan", ["dmk"] = "Domaaki", ["dml"] = "Dameli", ["dmm"] = "Dama", ["dmo"] = "Kemezung", ["dmr"] = "East Damar", ["dms"] = "Dampelas", ["dmu"] = "Dubu", ["dmv"] = "Dumpas", ["dmw"] = "Mudburra", ["dmx"] = "Dema", ["dmy"] = "Demta", ["dna"] = "Upper Grand Valley Dani", ["dnd"] = "Daonda", ["dne"] = "Ndendeule", ["dng"] = "Dungan", ["dni"] = "Lower Grand Valley Dani", ["dnj"] = "Dan", ["dnk"] = "Dengka", ["dnn"] = "Dzùùngoo", ["dno"] = "Northern Lendu Ndrulo", ["dnr"] = "Danaru", ["dnt"] = "Mid Grand Valley Dani", ["dnu"] = "Danau", ["dnv"] = "Danu", ["dnw"] = "Western Dani", ["dny"] = "Dení", ["doa"] = "Dom", ["dob"] = "Dobu", ["doc"] = "Northern Dong", ["doe"] = "Doe", ["dof"] = "Domu", ["doh"] = "Dong", ["doi"] = "Dogri", ["dok"] = "Dondo", ["dol"] = "Doso", ["don"] = "Papua New Guinean Toura", ["doo"] = "Dongo", ["dop"] = "Lukpa", ["doq"] = "Dominican Sign Language", ["dor"] = "Dori'o", ["dos"] = "Dogosé", ["dot"] = "Dass", ["dov"] = "Dombe", ["dow"] = "Doyayo", ["dox"] = "Bussa", ["doy"] = "Dompo", ["doz"] = "Dorze", ["dpp"] = "Papar", ["dra"] = "Dravidian languages", ["drb"] = "Dair", ["drc"] = "Minderico", ["drd"] = "Darmiya", ["dre"] = "Dolpo", ["drg"] = "Rungus", ["drh"] = "Darkhat", ["dri"] = "Cʼlela", ["drl"] = "Darling", ["drn"] = "West Damar", ["dro"] = "Daro-Matu", ["drq"] = "Dura", ["drr"] = "Dororo", ["drs"] = "Gedeo", ["drt"] = "Drents", ["dru"] = "Rukai", ["drw"] = "Darwazi", ["dry"] = "Darai", ["dse"] = "Dutch Sign Language", ["dsh"] = "Daasanach", ["dsi"] = "Disa", ["dsl"] = "Danish Sign Language", ["dsn"] = "Dusner", ["dso"] = "Desiya Oriya", ["dsq"] = "Dawsahak", ["dta"] = "Daur", ["dtb"] = "Labuk-Kinabatangan Kadazan", ["dtd"] = "Ditidaht", ["dth"] = "Adithinngithigh", ["dti"] = "Ana Tinga Dogon", ["dtk"] = "Tene Kan Dogon", ["dtm"] = "Tomo Kan Dogon", ["dtn"] = "Daatsʼiin", ["dto"] = "Tommo So Dogon", ["dtr"] = "Lotud", ["dts"] = "Toro So Dogon", ["dtt"] = "Toro Tegu Dogon", ["dtu"] = "Tebul Ure Dogon", ["dua"] = "Duala", ["dub"] = "Dubli", ["duc"] = "Duna", ["dud"] = "Hun-Saare", ["due"] = "Umiray Dumaget Agta", ["duf"] = "Dumbea", ["dug"] = "Duruma", ["duh"] = "Dungra Bhil", ["dui"] = "Dumun", ["duj"] = "Dhuwal", ["duk"] = "Duduela", ["dul"] = "Alabat Island Agta", ["dum"] = "Middle Dutch", ["dun"] = "Dusun Deyah", ["duo"] = "Dupaninan Agta", ["dup"] = "Duanoʼ", ["duq"] = "Dusun Malang", ["dur"] = "Dii", ["dus"] = "Dumi", ["dut"] = "Dutch", ["duu"] = "Drung", ["duv"] = "Duvle", ["duw"] = "Dusun Witu", ["dux"] = "Duungooma", ["duy"] = "Dicamay Agta", ["duz"] = "Duli", ["dva"] = "Duau", ["dwa"] = "Diri", ["dwk"] = "Dawik Kui", ["dwl"] = "Walo Kumbe Dogon", ["dwr"] = "Dawro", ["dws"] = "Dutton World Speedwords", ["dwu"] = "Dhuwal", ["dww"] = "Dawawa", ["dwy"] = "Dhuwaya", ["dwz"] = "Dewas Rai", ["dya"] = "Dyan", ["dyb"] = "Dyaberdyaber", ["dyd"] = "Dyugun", ["dyg"] = "Villa Viciosa Agta", ["dyi"] = "Djimini Senoufo", ["dyk"] = "Land Dayak", ["dym"] = "Yanda Dom Dogon", ["dyn"] = "Dyangadi", ["dyo"] = "Jola-Fonyi", ["dyu"] = "Dyula", ["dyy"] = "Dyaabugay", ["dza"] = "Duguza", ["dzd"] = "Daza", ["dze"] = "Djiwarli", ["dzg"] = "Dazaga", ["dzl"] = "Dzalakha", ["dzn"] = "Dzando", ["dzo"] = "Dzongkha", ["eaa"] = "Karenggapa", ["ebc"] = "Beginci", ["ebg"] = "Ebughu", ["ebk"] = "Eastern Bontok", ["ebo"] = "Teke-Ebo", ["ebr"] = "Ebrié", ["ebu"] = "Embu", ["ecr"] = "Eteocretan", ["ecs"] = "Ecuadorian Sign Language", ["ecy"] = "Eteocypriot", ["eee"] = "E", ["efa"] = "Efai", ["efe"] = "Efe", ["ega"] = "Ega", ["ego"] = "Eggon", ["egy"] = "Ancient Egyptian", ["ehu"] = "Ehueun", ["eip"] = "Eipomek", ["eit"] = "Eitiep", ["eiv"] = "Askopan", ["eja"] = "Ejamat", ["eka"] = "Ekajuk", ["ekc"] = "Eastern Karnic", ["eke"] = "Ekit", ["ekg"] = "Ekari", ["eki"] = "Eki", ["ekk"] = "Standard Estonian", ["ekl"] = "Kol", ["ekm"] = "Elip", ["eko"] = "Koti", ["ekp"] = "Ekpeye", ["ekr"] = "Yace", ["eky"] = "Eastern Kayah", ["ele"] = "Elepi", ["elh"] = "El Hugeirat", ["eli"] = "Nding", ["elk"] = "Elkei", ["ell"] = "Greek", ["elm"] = "Eleme", ["elo"] = "El Molo", ["elp"] = "Elpaputih", ["elu"] = "Elu", ["elx"] = "Elamite", ["ema"] = "Emai-Iuleha-Ora", ["emb"] = "Embaloh", ["eme"] = "Emerillon", ["emg"] = "Eastern Meohang", ["emi"] = "Mussau-Emira", ["emk"] = "Eastern Maninkakan", ["emm"] = "Mamulique", ["emn"] = "Eman", ["emo"] = "Emok", ["emp"] = "Northern Emberá", ["ems"] = "Pacific Gulf Yupik", ["emu"] = "Eastern Muria", ["emw"] = "Emplawas", ["emx"] = "Erromintxela", ["emy"] = "Epigraphic Mayan", ["en-CA"] = "Canadian English", ["en-GB"] = "British English", ["en-US"] = "American English", ["en-us"] = "American English", ["ena"] = "Apali", ["enb"] = "Endo", ["enc"] = "En", ["end"] = "Ende", ["enf"] = "Forest Enets", ["eng"] = "English", ["eng-CA"] = "Canadian English", ["eng-GB"] = "British English", ["eng-US"] = "American English", ["eng-ca"] = "Canadian English", ["eng-gb"] = "British English", ["eng-us"] = "American English", ["enh"] = "Tundra Enets", ["eni"] = "Enim", ["enl"] = "Enlhet", ["enm"] = "Middle English", ["enn"] = "Engenni", ["eno"] = "Enggano", ["enq"] = "Enga", ["enr"] = "Emumu", ["enu"] = "Enu", ["env"] = "Edu State Enwan", ["enw"] = "Akwa Ibom State Enwan", ["enx"] = "Enxet", ["eot"] = "Côte d'Ivoire Beti", ["epi"] = "Epie", ["epo"] = "Esperanto", ["era"] = "Eravallan", ["erg"] = "Sie", ["erh"] = "Eruwa", ["eri"] = "Ogea", ["erk"] = "South Efate", ["ero"] = "Horpa", ["err"] = "Erre", ["ers"] = "Ersu", ["ert"] = "Eritai", ["erw"] = "Erokwanas", ["ese"] = "Ese Ejja", ["esg"] = "Aheri Gondi", ["esh"] = "Eshtehardi", ["esi"] = "North Alaskan Inupiatun", ["esk"] = "Northwest Alaska Inupiatun", ["esl"] = "Egypt Sign Language", ["esm"] = "Esuma", ["esn"] = "Salvadoran Sign Language", ["eso"] = "Estonian Sign Language", ["esq"] = "Esselen", ["ess"] = "Central Siberian Yupik", ["est"] = "Estonian", ["esu"] = "Central Yupik", ["esy"] = "Eskayan", ["etb"] = "Etebi", ["etc"] = "Etchemin", ["eth"] = "Ethiopian Sign Language", ["etn"] = "Vanuatu Eton", ["eto"] = "Cameroonian Eton", ["etr"] = "Edolo", ["ets"] = "Yekhee", ["ett"] = "Etruscan", ["etu"] = "Ejagham", ["etx"] = "Eten", ["etz"] = "Semimi", ["eur"] = "Europanto", ["eus"] = "Basque", ["eve"] = "Even", ["evh"] = "Uvbie", ["evn"] = "Evenki", ["ewe"] = "Ewe", ["ewo"] = "Ewondo", ["eya"] = "Eyak", ["eyo"] = "Keiyo", ["eza"] = "Ezaa", ["eze"] = "Uzekwe", ["faa"] = "Fasu", ["fab"] = "Fa d'Ambu", ["fad"] = "Wagi", ["faf"] = "Fagani", ["fag"] = "Finongan", ["fah"] = "Fali Of Baissa", ["fai"] = "Faiwol", ["faj"] = "Faita", ["fak"] = "Cameroonian Fang", ["fal"] = "South Fali", ["fam"] = "Fam", ["fan"] = "Fang", ["fao"] = "Faroese", ["fap"] = "Palor", ["far"] = "Fataleka", ["fas"] = "Persian", ["fau"] = "Fayu", ["fax"] = "Fala", ["fay"] = "Southwestern Fars", ["faz"] = "Northwestern Fars", ["fbl"] = "West Albay Bikol", ["fcs"] = "Quebec Sign Language", ["fer"] = "Feroge", ["ffi"] = "Foia Foia", ["ffm"] = "Maasina Fulfulde", ["fgr"] = "Fongoro", ["fia"] = "Nobiin", ["fie"] = "Fyer", ["fij"] = "Fijian", ["fil"] = "Filipino", ["fin"] = "Finnish", ["fip"] = "Fipa", ["fir"] = "Firan", ["fiu"] = "Finno-Ugric languages", ["fiw"] = "Fiwaga", ["fiz"] = "Izere", ["fkk"] = "Kirya-Konzəl", ["fkv"] = "Kven Finnish", ["fla"] = "Kalispel-Pend d'Oreille", ["flh"] = "Foau", ["fli"] = "Fali", ["fll"] = "North Fali", ["flm"] = "Falam Chin", ["fln"] = "Flinders Island", ["flr"] = "Fuliiru", ["fly"] = "Tsotsitaal", ["fmp"] = "Fe'fe'", ["fmu"] = "Far Western Muria", ["fnb"] = "Fanbak", ["fng"] = "Fanagalo", ["fni"] = "Fania", ["fod"] = "Foodo", ["foi"] = "Foi", ["fom"] = "Foma", ["for"] = "Fore", ["fos"] = "Siraya", ["fpe"] = "Fernando Po Creole English", ["fqs"] = "Fas", ["fra"] = "French", ["frd"] = "Fordata", ["fre"] = "French", ["fri"] = "Western Frisian", ["frk"] = "Frankish", ["frm"] = "Middle French", ["fro"] = "Old French", ["frq"] = "Forak", ["frs"] = "Eastern Frisian", ["frt"] = "Fortsenal", ["fry"] = "Western Frisian", ["fse"] = "Finnish Sign Language", ["fsl"] = "French Sign Language", ["fss"] = "Finnish-Swedish Sign Language", ["fub"] = "Adamawa Fulfulde", ["fuc"] = "Pulaar", ["fud"] = "East Futuna", ["fue"] = "Borgu Fulfulde", ["fuf"] = "Pular", ["fuh"] = "Western Niger Fulfulde", ["fui"] = "Bagirmi Fulfulde", ["fuj"] = "Ko", ["ful"] = "Fula", ["fum"] = "Fum", ["fun"] = "Fulniô", ["fuq"] = "Central-Eastern Niger Fulfulde", ["fut"] = "Futuna-Aniwa", ["fuu"] = "Furu", ["fuv"] = "Nigerian Fulfulde", ["fuy"] = "Fuyug", ["fvr"] = "Fur", ["fwa"] = "Fwâi", ["fwe"] = "Fwe", ["gab"] = "Gabri", ["gac"] = "Mixed Great Andamanese", ["gad"] = "Gaddang", ["gae"] = "Guarequena", ["gaf"] = "Gende", ["gah"] = "Alekano", ["gai"] = "Borei", ["gaj"] = "Gadsup", ["gak"] = "Gamkonora", ["gal"] = "Galoli", ["gam"] = "Kandawo", ["gao"] = "Gants", ["gap"] = "Gal", ["gaq"] = "Gtaʼ", ["gar"] = "Galeya", ["gas"] = "Adiwasi Garasia", ["gat"] = "Kenati", ["gau"] = "Mudhili Gadaba", ["gav"] = "Gabutamon", ["gaw"] = "Nobonob", ["gax"] = "Borana-Arsi-Guji Oromo", ["gay"] = "Gayo", ["gaz"] = "West Central Oromo", ["gba"] = "Central African Gbaya", ["gbb"] = "Kaytetye", ["gbc"] = "Garawa", ["gbd"] = "Karadjeri", ["gbe"] = "Niksek", ["gbf"] = "Gaikundi", ["gbg"] = "Gbanziri", ["gbh"] = "Defi Gbe", ["gbi"] = "Galela", ["gbj"] = "Bodo Gadaba", ["gbk"] = "Gaddi", ["gbl"] = "Gamit", ["gbm"] = "Garhwali", ["gbn"] = "Mo'da", ["gbo"] = "Northern Grebo", ["gbp"] = "Gbaya-Bossangoa", ["gbq"] = "Gbaya-Bozoum", ["gbr"] = "Gbagyi", ["gbs"] = "Gbesi Gbe", ["gbu"] = "Gagadu", ["gbv"] = "Gbanu", ["gbw"] = "Gabi-Gabi", ["gbx"] = "Eastern Xwla Gbe", ["gby"] = "Gbari", ["gbz"] = "Zoroastrian Dari", ["gcc"] = "Mali", ["gcd"] = "Ganggalida", ["gce"] = "Galice", ["gcl"] = "Grenadian Creole English", ["gcn"] = "Gaina", ["gct"] = "Colonia Tovar German", ["gda"] = "Gade Lohar", ["gdb"] = "Pottangi Ollar Gadaba", ["gdc"] = "Gugu Badhun", ["gdd"] = "Gedaged", ["gde"] = "Gude", ["gdf"] = "Guduf-Gava", ["gdg"] = "Ga'dang", ["gdh"] = "Gadjerawang", ["gdi"] = "Gundi", ["gdj"] = "Gurdjar", ["gdk"] = "Gadang", ["gdl"] = "Dirasha", ["gdm"] = "Laal", ["gdn"] = "Umanakaina", ["gdo"] = "Ghodoberi", ["gdq"] = "Mehri", ["gdr"] = "Wipi", ["gds"] = "Ghandruk Sign Language", ["gdt"] = "Kungardutyi", ["gdu"] = "Gudu", ["gdx"] = "Godwari", ["gea"] = "Geruma", ["geb"] = "Kire", ["gec"] = "Gboloo Grebo", ["ged"] = "Gade", ["gef"] = "Gerai", ["geg"] = "Gengle", ["geh"] = "Hutterite German", ["gei"] = "Gebe", ["gej"] = "Gen", ["gek"] = "Yiwom", ["gel"] = "Kag-Fer-Jiir-Koor-Ror-Us-Zuksun", ["gem"] = "Germanic languages", ["gen"] = "Geman Deng", ["geo"] = "Georgian", ["geq"] = "Geme", ["ger"] = "German", ["ger-CH"] = "Swiss High German", ["ger-at"] = "Austrian German", ["ges"] = "Geser-Gorom", ["gev"] = "Eviya", ["gew"] = "Gera", ["gex"] = "Garre", ["gey"] = "Enya", ["gez"] = "Geez", ["gfk"] = "Patpatar", ["gft"] = "Gafat", ["gfx"] = "Mangetti Dune !Xung", ["gga"] = "Gao", ["ggb"] = "Gbii", ["ggd"] = "Gugadj", ["gge"] = "Guragone", ["ggg"] = "Gurgula", ["ggh"] = "Garreh-Ajuran", ["ggk"] = "Kungarakany", ["ggl"] = "Ganglau", ["ggm"] = "Gugu Mini", ["ggn"] = "Eastern Gurung", ["ggo"] = "Southern Gondi", ["ggr"] = "Aghu Tharnggalu", ["ggt"] = "Gitua", ["ggu"] = "Gagu", ["ggw"] = "Gogodala", ["gha"] = "Ghadamès", ["ghc"] = "Hiberno-Scottish Gaelic", ["ghe"] = "Southern Ghale", ["ghh"] = "Northern Ghale", ["ghk"] = "Geko Karen", ["ghl"] = "Ghulfan", ["ghn"] = "Ghanongga", ["gho"] = "Ghomara", ["ghr"] = "Ghera", ["ghs"] = "Guhu-Samane", ["ght"] = "Kutang Ghale", ["gia"] = "Kitja", ["gib"] = "Gibanawa", ["gic"] = "Gail", ["gid"] = "Gidar", ["gie"] = "Guébie Gaɓogbo", ["gig"] = "Goaria", ["gih"] = "Githabul", ["gil"] = "Gilbertese", ["gim"] = "Eastern Highlands Gimi", ["gin"] = "Hinukh", ["gio"] = "Gelao", ["gip"] = "West New British Gimi", ["giq"] = "Green Gelao", ["gir"] = "Red Gelao", ["gis"] = "North Giziga", ["git"] = "Gitxsan", ["giu"] = "Mulao", ["giw"] = "White Gelao", ["gix"] = "Gilima", ["giy"] = "Giyug", ["giz"] = "South Giziga", ["gji"] = "Geji", ["gjk"] = "Kachi Koli", ["gjm"] = "Gunditjmara", ["gjn"] = "Gonja", ["gjr"] = "Gurindji Kriol", ["gju"] = "Gujari", ["gka"] = "Guya", ["gkd"] = "Madang Province Magɨ", ["gke"] = "Ndai", ["gkn"] = "Gokana", ["gko"] = "Kok-Nar", ["gkp"] = "Guinea Kpelle", ["gku"] = "ǂUngkue", ["gla"] = "Scots Gaelic", ["glc"] = "Bon Gula", ["gle"] = "Irish", ["glg"] = "Galician", ["glh"] = "Northwest Pashayi", ["gli"] = "Guliguli", ["glj"] = "Gula Iro", ["gll"] = "Garlali", ["glo"] = "Galambu", ["glr"] = "Glaro-Twabo", ["glu"] = "Chadian Gula", ["glv"] = "Manx", ["glw"] = "Glavda", ["gly"] = "Gule", ["gma"] = "Gambera", ["gmb"] = "Gula'alaa", ["gmd"] = "Mághdì", ["gmg"] = "Magɨyi", ["gmh"] = "Middle High German", ["gml"] = "Middle Low German", ["gmm"] = "Gbaya-Mbodomo", ["gmn"] = "Gimnime", ["gmo"] = "Gamo-Gofa-Dawro", ["gmr"] = "Mirniny Mirning", ["gmu"] = "Gumalu", ["gmv"] = "Gamo", ["gmx"] = "Magoma", ["gmy"] = "Mycenaean Greek", ["gmz"] = "Mgbolizhia", ["gna"] = "Kaansa", ["gnb"] = "Gangte", ["gnc"] = "Guanche", ["gnd"] = "Zulgo-Gemzek", ["gne"] = "Ganang", ["gng"] = "Ngangam", ["gnh"] = "Lere", ["gni"] = "Gooniyandi", ["gnj"] = "Ngen", ["gnk"] = "G{{!}}{{!}}ana", ["gnl"] = "Gangulu", ["gnm"] = "Ginuman", ["gnn"] = "Gumatj", ["gno"] = "Northern Gondi", ["gnq"] = "Gana", ["gnr"] = "Gureng Gureng", ["gnt"] = "Guntai", ["gnu"] = "Gnau", ["gnw"] = "Western Bolivian Guaraní", ["gnz"] = "Ganzi", ["goa"] = "Guro", ["gob"] = "Playero", ["goc"] = "Gorakor", ["god"] = "Godié", ["goe"] = "Gongduk", ["gof"] = "Gofa", ["gog"] = "Gogo", ["goh"] = "Old High German", ["goi"] = "Gobasi", ["goj"] = "Gowlan", ["gok"] = "Gowli", ["gol"] = "Gola", ["gom-Latn"] = "Latin-script Goan Konkani", ["gon"] = "Gondi", ["goo"] = "Gone Dau", ["gop"] = "Yeretuar", ["goq"] = "Gorap", ["gos"] = "Gronings", ["gou"] = "Gavar", ["gow"] = "Gorowa", ["gox"] = "Gobu", ["goy"] = "Goundo", ["goz"] = "Gozarkhani", ["gpa"] = "Gupa-Abawa", ["gpn"] = "Taiap", ["gqa"] = "Ga", ["gqi"] = "Guiqiong", ["gqn"] = "Brazilian Guana", ["gqr"] = "Gor", ["gqu"] = "Qau", ["gra"] = "Rajput Garasia", ["grb"] = "Grebo", ["grc-koi"] = "Koine Greek", ["grd"] = "Guruntum-Mbaaru", ["gre"] = "Greek", ["grg"] = "Madi", ["grh"] = "Gbiri-Niragu", ["gri"] = "Ghari", ["grj"] = "Southern Grebo", ["grm"] = "Kota Marudu Talantang", ["grn"] = "Guaraní", ["gro"] = "Groma", ["grq"] = "Gorovu", ["grr"] = "Taznatit", ["grs"] = "Gresi", ["grt"] = "Garo", ["gru"] = "Kistane", ["grv"] = "Central Grebo", ["grw"] = "Gweda", ["grx"] = "Guriaso", ["gry"] = "Barclayville Grebo", ["grz"] = "Guramalum", ["gsc"] = "Gascon", ["gse"] = "Ghanaian Sign Language", ["gsg"] = "German Sign Language", ["gsl"] = "Gusilay", ["gsm"] = "Guatemalan Sign Language", ["gsn"] = "Gusan", ["gso"] = "Southwest Gbaya", ["gsp"] = "Wasembo", ["gss"] = "Greek Sign Language", ["gta"] = "Guató", ["gti"] = "Gbati-ri", ["gtu"] = "Aghu-Tharnggala", ["gua"] = "Shiki", ["gub"] = "Guajajára", ["gud"] = "Yocoboué Dida", ["gue"] = "Gurinji", ["guf"] = "Gupapuyngu", ["gug"] = "Paraguayan Guaraní", ["guh"] = "Guahibo", ["gui"] = "Eastern Bolivian Guaraní", ["guj"] = "Gujarati", ["guk"] = "Gumuz", ["gul"] = "Sea Island Creole English", ["gum"] = "Guambiano", ["gun"] = "Mbyá Guaraní", ["guo"] = "Guayabero", ["gup"] = "Gunwinggu", ["guq"] = "Aché", ["gus"] = "Guinean Sign Language", ["gut"] = "Maléku Jaíka", ["guu"] = "Yanomamö", ["guv"] = "Gey", ["gux"] = "Gourmanchéma", ["guz"] = "Gusii", ["gva"] = "Paraguayan Guana", ["gvc"] = "Guanano", ["gve"] = "Duwet", ["gvf"] = "Golin", ["gvj"] = "Guajá", ["gvl"] = "Gulay", ["gvm"] = "Gurmana", ["gvn"] = "Kuku-Yalanji", ["gvo"] = "Gavião Do Jiparaná", ["gvp"] = "Pará Gavião", ["gvr"] = "Western Gurung", ["gvs"] = "Gumawana", ["gvy"] = "Guyani", ["gwa"] = "Mbato", ["gwb"] = "Gwa", ["gwc"] = "Kalami", ["gwd"] = "Gawwada", ["gwe"] = "Gweno", ["gwf"] = "Gowro", ["gwg"] = "Moo", ["gwi"] = "Gwich'in", ["gwj"] = "G{{!}}ui", ["gwm"] = "Awngthim", ["gwn"] = "Gwandara", ["gwr"] = "Gwere", ["gwt"] = "Gawar-Bati", ["gwu"] = "Guwamu", ["gww"] = "Kwini", ["gwx"] = "Gua", ["gxx"] = "Wè Southern", ["gya"] = "Northwest Gbaya", ["gyb"] = "Garus", ["gyd"] = "Kayardild", ["gye"] = "Gyem", ["gyf"] = "Gungabula", ["gyg"] = "Gbayi", ["gyi"] = "Gyele", ["gyl"] = "Gayil", ["gym"] = "Ngäbere", ["gyn"] = "Guyanese Creole English", ["gyo"] = "Gyalsumdo", ["gyr"] = "Guarayu", ["gyy"] = "Gunya", ["gza"] = "Ganza", ["gzi"] = "Gazi", ["gzn"] = "Gane", ["haa"] = "Han", ["hab"] = "Hanoi Sign Language", ["hac"] = "Gurani", ["had"] = "Hatam", ["hae"] = "Eastern Oromo", ["haf"] = "Haiphong Sign Language", ["hag"] = "Hanga", ["hah"] = "Hahon", ["hai"] = "Haida", ["haj"] = "Hajong", ["hal"] = "Halang", ["ham"] = "Hewa", ["han"] = "Hangaza", ["hans"] = "Simplified Chinese", ["hans-CN"] = "China Simplified Chinese", ["hans-HK"] = "Hong Kong Simplified Chinese", ["hans-TW"] = "Taiwanese Simplified Chinese", ["hant"] = "Traditional Chinese", ["hant-CN"] = "China Traditional Chinese", ["hant-HK"] = "Hong Kong Traditional Chinese", ["hant-TW"] = "Taiwanese Traditional Chinese", ["hao"] = "Hakö", ["hap"] = "Hupla", ["haq"] = "Ha", ["har"] = "Harari", ["has"] = "Haisla", ["hat"] = "Haitian Creole", ["hau"] = "Hausa", ["hav"] = "Havu", ["hax"] = "Southern Haida", ["hay"] = "Haya", ["haz"] = "Hazaragi", ["hba"] = "Hamba", ["hbb"] = "Huba", ["hbn"] = "Heiban", ["hbo"] = "Ancient Hebrew", ["hbs"] = "Serbo-Croatian", ["hbu"] = "Habu", ["hca"] = "Andaman Creole Hindi", ["hch"] = "Huichol", ["hdn"] = "Northern Haida", ["hds"] = "Honduras Sign Language", ["hdy"] = "Hadiyya", ["hea"] = "Northern Qiandong Hmong", ["heb"] = "Hebrew", ["hed"] = "Herdé", ["heg"] = "Helong", ["heh"] = "Hehe", ["hei"] = "Heiltsuk", ["hem"] = "Hemba", ["her"] = "Herero", ["hgm"] = "Hai{{!}}{{!}}om", ["hgw"] = "Haigwai", ["hhi"] = "Hoia Hoia", ["hhr"] = "Kerak", ["hhy"] = "Hoyahoya", ["hia"] = "Lamang", ["hib"] = "Hibito", ["hid"] = "Hidatsa", ["hig"] = "Kamwe", ["hih"] = "Pamosu", ["hii"] = "Hinduri", ["hij"] = "Hijuk", ["hik"] = "Seit-Kaitetu", ["hin"] = "Hindi", ["hio"] = "Tsoa", ["hir"] = "Himarimã", ["hit"] = "Hittite", ["hiw"] = "Hiw", ["hix"] = "Hixkaryána", ["hji"] = "Haji", ["hka"] = "Kahe", ["hke"] = "Hunde", ["hkk"] = "Hunjara-Kaina Ke", ["hkn"] = "Mel-Khaonh", ["hks"] = "Hong Kong Sign Language", ["hla"] = "Halia", ["hlb"] = "Halbi", ["hld"] = "Halang Doan", ["hle"] = "Hlersu", ["hlt"] = "Nga La", ["hlu"] = "Hieroglyphic Luwian", ["hma"] = "Southern Mashan Hmong", ["hmb"] = "Humburi Senni Songhay", ["hmc"] = "Central Huishui Hmong", ["hmd"] = "Northeastern Dian Hmong", ["hme"] = "Eastern Huishui Hmong", ["hmf"] = "Hmong Don", ["hmg"] = "Southwestern Guiyang Hmong", ["hmh"] = "Southwestern Huishui Hmong", ["hmi"] = "Northern Huishui Hmong", ["hmj"] = "Chonganjiang Hmong", ["hmk"] = "Maek", ["hml"] = "Luopohe Hmong", ["hmm"] = "Central Mashan Hmong", ["hmn"] = "Hmong", ["hmo"] = "Hiri Motu", ["hmp"] = "Northern Mashan Hmong", ["hmq"] = "Eastern Qiandong Hmong", ["hmr"] = "Hmar", ["hms"] = "Southern Qiandong Hmong", ["hmt"] = "Hamtai", ["hmu"] = "Hamap", ["hmv"] = "Hmong Dô", ["hmw"] = "Western Mashan Hmong", ["hmy"] = "Southern Guiyang Hmong", ["hmz"] = "Hmong Shua", ["hna"] = "Cameroonian Mina", ["hnd"] = "Southern Hindko", ["hne"] = "Chhattisgarhi", ["hng"] = "Hungu", ["hnh"] = "Ani", ["hni"] = "Hani", ["hnj"] = "Hmong Njua", ["hnn"] = "Hanunoo", ["hns"] = "Caribbean Hindustani", ["hnu"] = "Hung", ["hoa"] = "Hoava", ["hob"] = "Madang Province Mari", ["hoc"] = "Ho", ["hod"] = "Holma", ["hoe"] = "Horom", ["hoh"] = "Hobyót", ["hoi"] = "Holikachuk", ["hoj"] = "Harauti", ["hol"] = "Holu", ["hom"] = "Homa", ["hoo"] = "Holoholo", ["hop"] = "Hopi", ["hor"] = "Horo", ["hos"] = "Ho Chi Minh City Sign Language", ["hot"] = "Hote", ["hov"] = "Hovongan", ["how"] = "Honi", ["hoy"] = "Holiya", ["hoz"] = "Hozo", ["hpo"] = "Hpon", ["hps"] = "Hawaiian Pidgin Sign Language", ["hra"] = "Hrangkhol", ["hrc"] = "Niwer Mil", ["hre"] = "Hre", ["hrk"] = "Haruku", ["hrm"] = "Horned Miao", ["hro"] = "Haroi", ["hrp"] = "Nhirrpi", ["hrr"] = "Horuru", ["hrt"] = "Hértevin", ["hru"] = "Hruso", ["hrv"] = "Croatian", ["hrw"] = "Warwar Feni", ["hrz"] = "Harzani", ["hsf"] = "Southeastern Huastec", ["hsh"] = "Hungarian Sign Language", ["hsl"] = "Hausa Sign Language", ["hss"] = "Harsusi", ["hti"] = "Hoti", ["hto"] = "Minica Huitoto", ["hts"] = "Hadza", ["htu"] = "Hitu", ["htx"] = "Middle Hittite", ["hub"] = "Huambisa", ["huc"] = "ǂʼAmkoe", ["hud"] = "Huaulu", ["hue"] = "San Francisco Del Mar Huave", ["huf"] = "Humene", ["hug"] = "Huachipaeri", ["huh"] = "Huilliche", ["hui"] = "Huli", ["huj"] = "Northern Guiyang Hmong", ["huk"] = "Hulung", ["hul"] = "Hula", ["hum"] = "Hungana", ["hun"] = "Hungarian", ["huo"] = "Hu", ["hup"] = "Hupa", ["huq"] = "Tsat", ["hur"] = "Halkomelem", ["hus"] = "Veracruz Huastec", ["hut"] = "Humla", ["huu"] = "Murui Huitoto", ["huv"] = "San Mateo Del Mar Huave", ["huw"] = "Hukumina", ["hux"] = "Nüpode Huitoto", ["huy"] = "Hulaulá", ["huz"] = "Hunzib", ["hva"] = "San Luís Potosí Huastec", ["hvc"] = "Langay", ["hve"] = "San Dionisio Del Mar Huave", ["hvk"] = "Haveke", ["hvn"] = "Sabu", ["hvv"] = "Santa María Del Mar Huave", ["hwa"] = "Wané", ["hwc"] = "Hawaiian Creole English", ["hwo"] = "Hwana", ["hya"] = "Hya", ["hye"] = "Armenian", ["iai"] = "Iaai", ["ian"] = "Iatmul", ["iap"] = "Iapama", ["iar"] = "Purari", ["iba"] = "Iban", ["ibb"] = "Ibibio", ["ibd"] = "Iwaidja", ["ibe"] = "Akpes", ["ibg"] = "Ibanag", ["ibh"] = "Bih", ["ibi"] = "Ibilo", ["ibl"] = "Ibaloi", ["ibm"] = "Agoi", ["ibn"] = "Ibino", ["ibo"] = "Igbo", ["ibr"] = "Ibuoro", ["ibu"] = "Ibu", ["iby"] = "Ibani", ["ica"] = "Ede Ica", ["ice"] = "Icelandic", ["ich"] = "Etkywan", ["icl"] = "Icelandic Sign Language", ["icr"] = "Islander Creole English", ["ida"] = "Idakho-Isukha-Tiriki", ["idb"] = "Indo-Portuguese", ["idc"] = "Idon", ["idd"] = "Ede Idaca", ["ide"] = "Idere", ["idi"] = "Idi", ["ido"] = "Ido", ["idr"] = "Indri", ["ids"] = "Idesa", ["idt"] = "Idaté", ["idu"] = "Idoma", ["ifa"] = "Amganad Ifugao", ["ifb"] = "Batad Ifugao", ["ife"] = "Ifè", ["iff"] = "Ifo", ["ifk"] = "Tuwali Ifugao", ["ifm"] = "Teke-Fuumu", ["ifu"] = "Mayoyao Ifugao", ["ify"] = "Keley-I Kallahan", ["igb"] = "Ebira", ["ige"] = "Igede", ["igg"] = "Igana", ["igm"] = "Kanggape", ["ign"] = "Ignaciano", ["igo"] = "Isebe", ["igs"] = "Interglossa", ["igw"] = "Igwe", ["ihb"] = "Iha Based Pidgin", ["ihi"] = "Ihievbe", ["ihp"] = "Iha", ["ihw"] = "Bidhawal", ["iii"] = "Nuosu", ["iin"] = "Thiin", ["ijc"] = "Izon", ["ije"] = "Biseni", ["ijj"] = "Ede Ije", ["ijn"] = "Kalabari", ["ijo"] = "Ijo languages", ["ijs"] = "Southeast Ijo", ["ike"] = "Eastern Canadian Inuktitut", ["iki"] = "Iko", ["ikk"] = "Ika", ["ikl"] = "Ikulu", ["iko"] = "Olulumo-Ikom", ["ikp"] = "Ikpeshi", ["ikr"] = "Ikaranggal", ["iks"] = "Inuit Sign Language", ["ikt"] = "Western Canadian Inuktitut", ["iku"] = "Inuktitut", ["ikv"] = "Iku-Gora-Ankwa", ["ikw"] = "Ikwere", ["ikx"] = "Ik", ["ikz"] = "Ikizu", ["ila"] = "Ile Ape", ["ilb"] = "Ila", ["ile"] = "Interlingue", ["ilg"] = "Garig-Ilgar", ["ili"] = "Ili Turki", ["ilk"] = "Ilongot", ["ill"] = "Iranun", ["ilm"] = "Malaysian Iranun", ["ilp"] = "Filipino Iranun", ["ils"] = "International Sign", ["ilu"] = "Iliʼuun", ["ilv"] = "Ilue", ["ilw"] = "Talur", ["ima"] = "Mala Malasar", ["ime"] = "Imeraguen", ["imi"] = "Anamgura", ["iml"] = "Miluk", ["imn"] = "Imonda", ["imo"] = "Imbongu", ["imr"] = "Imroing", ["ims"] = "Marsian", ["imy"] = "Milyan", ["ina"] = "Interlingua", ["inb"] = "Inga", ["inc"] = "Indo-Aryan languages", ["ind"] = "Indonesian", ["ine"] = "Indo-European languages", ["ing"] = "Deg Xinag", ["inj"] = "Jungle Inga", ["inl"] = "Indonesian Sign Language", ["inm"] = "Minaean", ["inn"] = "Isinai", ["ino"] = "Inoke-Yate", ["inp"] = "Iñapari", ["ins"] = "Indian Sign Language", ["int"] = "Intha", ["inz"] = "Ineseño", ["ior"] = "Inor", ["iou"] = "Tuma-Irumu", ["iow"] = "Iowa-Oto", ["ipi"] = "Ipili", ["ipk"] = "Inupiaq", ["ipo"] = "Ipiko", ["iqu"] = "Iquito", ["iqw"] = "Ikwo", ["ira"] = "Iranian languages", ["ire"] = "Iresim", ["irh"] = "Irarutu", ["iri"] = "Irigwe", ["irk"] = "Iraqw", ["irn"] = "Irántxe", ["iro"] = "Iroquoian languages", ["irr"] = "Ir", ["iru"] = "Irula", ["irx"] = "Kamberau", ["iry"] = "Iraya", ["isa"] = "Isabi", ["isc"] = "Isconahua", ["isd"] = "Isnag", ["ise"] = "Italian Sign Language", ["isg"] = "Irish Sign Language", ["ish"] = "Esan", ["isi"] = "Nkem-Nkum", ["isk"] = "Ishkashimi", ["isl"] = "Icelandic", ["ism"] = "Masimasi", ["isn"] = "Isanzu", ["iso"] = "Isoko", ["isr"] = "Israeli Sign Language", ["ist"] = "Istriot", ["isu"] = "Menchum Division Isu", ["ita"] = "Italian", ["itb"] = "Binongan Itneg", ["itd"] = "Southern Tidung", ["ite"] = "Itene", ["iti"] = "Inlaod Itneg", ["itk"] = "Judeo-Italian", ["itl"] = "Itelmen", ["itm"] = "Itu Mbon Uzo", ["ito"] = "Itonama", ["itr"] = "Iteri", ["its"] = "Isekiri", ["itt"] = "Maeng Itneg", ["itu"] = "Itutang", ["itv"] = "Itawit", ["itw"] = "Ito", ["itx"] = "Itik", ["ity"] = "Moyadan Itneg", ["itz"] = "Itzá", ["ium"] = "Iu Mien", ["ivb"] = "Ibatan", ["ivv"] = "Ivatan", ["iwk"] = "I-Wak", ["iwm"] = "Iwam", ["iwo"] = "Iwur", ["iws"] = "Sepik Iwam", ["ixc"] = "Ixcatec", ["ixi"] = "Nebaj Ixil", ["ixj"] = "Chajul Ixil", ["ixl"] = "San Juan Cotzal Ixil", ["iya"] = "Iyayu", ["iyo"] = "Mesaka", ["iyx"] = "Congolese Yaka", ["izh"] = "Ingrian", ["izi"] = "Izi-Ezaa-Ikwo-Mgbo", ["izr"] = "Izere", ["izz"] = "Izii", ["ja-Hani"] = "Japanese", ["ja-Latn"] = "Japanese", ["jaa"] = "Jamamadí", ["jab"] = "Hyam", ["jac"] = "Eastern Jacalteco", ["jad"] = "Jahanka", ["jae"] = "Yabem", ["jaf"] = "Jara", ["jah"] = "Jah Hut", ["jai"] = "Western Jacalteco", ["jaj"] = "Zazao", ["jak"] = "Jakun", ["jal"] = "Yalahatan", ["jan"] = "Jandai", ["jao"] = "Yanyuwa", ["jap"] = "Jaruára", ["jaq"] = "Yaqay", ["jar"] = "Nigerian Jarawa", ["jas"] = "New Caledonian Javanese", ["jat"] = "Jakati", ["jau"] = "Yaur", ["jav"] = "Javanese", ["jax"] = "Jambi Malay", ["jay"] = "Jarnango", ["jaz"] = "Jawe", ["jbe"] = "Judeo-Berber", ["jbi"] = "Badjiri", ["jbj"] = "Arandai", ["jbk"] = "Barikewa", ["jbn"] = "Nafusi", ["jbr"] = "Jofotek-Bromnya", ["jbt"] = "Jabutí", ["jbu"] = "Jukun Takum", ["jbw"] = "Yawijibaya", ["jcs"] = "Jamaican Country Sign Language", ["jct"] = "Judeo-Crimean Tatar", ["jda"] = "Jad", ["jdg"] = "Jadgali", ["jdt"] = "Judeo-Tat", ["jeb"] = "Jebero", ["jee"] = "Jerung", ["jeg"] = "Jeng", ["jeh"] = "Jeh", ["jei"] = "Yei", ["jek"] = "Jeri Kuo", ["jel"] = "Yelmek", ["jen"] = "Dza", ["jer"] = "Jere", ["jet"] = "Manem", ["jeu"] = "Jonkor Bourmataguil", ["jgb"] = "Ngbee", ["jge"] = "Judeo-Georgian", ["jgk"] = "Gwak", ["jgo"] = "Ngomba", ["jhi"] = "Jehai", ["jhs"] = "Jhankot Sign Language", ["jia"] = "Jina", ["jib"] = "Jibu", ["jic"] = "Tol", ["jid"] = "Bu", ["jie"] = "Jilbe", ["jig"] = "Djingili", ["jih"] = "Shangzhai", ["jii"] = "Jiiddu", ["jil"] = "Jilim", ["jim"] = "Cameroonian Jimi", ["jio"] = "Jiamao", ["jiq"] = "Guanyinqiao", ["jit"] = "Jita", ["jiu"] = "Youle Jinuo", ["jiv"] = "Shuar", ["jiy"] = "Buyuan Jinuo", ["jje"] = "Jejueo", ["jjr"] = "Bankal", ["jka"] = "Kaera", ["jkm"] = "Mobwa Karen", ["jko"] = "Kubo", ["jkp"] = "Paku Karen", ["jkr"] = "Indian Koro", ["jku"] = "Labir", ["jle"] = "Ngile", ["jls"] = "Jamaican Sign Language", ["jma"] = "Dima", ["jmb"] = "Zumbun", ["jmc"] = "Machame", ["jmd"] = "Yamdena", ["jmi"] = "Nigerian Jimi", ["jml"] = "Jumli", ["jmn"] = "Makuri Naga", ["jmr"] = "Kamara", ["jms"] = "Nigerian Mashi", ["jmw"] = "Mouwase", ["jmx"] = "Western Juxtlahuaca Mixtec", ["jna"] = "Jangshung", ["jnd"] = "Jandavra", ["jng"] = "Yangman", ["jni"] = "Janji", ["jnj"] = "Yemsa", ["jnl"] = "Rawat", ["jns"] = "Jaunsari", ["job"] = "Joba", ["jod"] = "Wojenaka", ["jog"] = "Jogi", ["jor"] = "Jorá", ["jos"] = "Jordanian Sign Language", ["jow"] = "Jowulu", ["jpa"] = "Jewish Palestinian Aramaic", ["jpn"] = "Japanese", ["jpr"] = "Judeo-Persian", ["jqr"] = "Jaqaru", ["jra"] = "Jarai", ["jrb"] = "Judeo-Arabic", ["jrr"] = "Jiru", ["jrt"] = "Jorto", ["jru"] = "Japrería", ["jsl"] = "Japanese Sign Language", ["jua"] = "Júma", ["jub"] = "Wannu", ["juc"] = "Jurchen", ["jud"] = "Worodougou", ["juh"] = "Hõne", ["jui"] = "Ngadjuri", ["juk"] = "Wapan", ["jul"] = "Jirel", ["jum"] = "Jumjum", ["jun"] = "Juang", ["juo"] = "Jiba", ["jup"] = "Hupdë", ["jur"] = "Jurúna", ["jus"] = "Jumla Sign Language", ["juu"] = "Ju", ["juw"] = "Wãpha", ["juy"] = "Juray", ["jvd"] = "Javindo", ["jvn"] = "Caribbean Javanese", ["jwi"] = "Jwira-Pepesa", ["jya"] = "Jiarong", ["jye"] = "Judeo-Yemeni Arabic", ["jyy"] = "Jaya", ["kac"] = "Jingpho", ["kad"] = "Kadara", ["kae"] = "Ketangalan", ["kaf"] = "Katso", ["kag"] = "Kajaman", ["kah"] = "Central African Kara", ["kaj"] = "Jju", ["kak"] = "Kayapa Kallahan", ["kal"] = "Kalaallisut", ["kam"] = "Kamba", ["kan"] = "Kannada", ["kao"] = "Xaasongaxango", ["kap"] = "Bezhta", ["kaq"] = "Capanahua", ["kar"] = "Karen languages", ["kas"] = "Kashmiri", ["kat"] = "Georgian", ["kau"] = "Kanuri", ["kav"] = "Katukína", ["kaw"] = "Kawi", ["kax"] = "Kao", ["kay"] = "Kamayurá", ["kaz"] = "Kazakh", ["kba"] = "Kalarko", ["kbb"] = "Kaxuiâna", ["kbc"] = "Kadiwéu", ["kbe"] = "Kanju", ["kbf"] = "Kakauhua", ["kbg"] = "Khamba", ["kbh"] = "Camsá", ["kbi"] = "Kaptiau", ["kbj"] = "Kari", ["kbk"] = "Grass Koiari", ["kbl"] = "Kanembu", ["kbm"] = "Iwal", ["kbn"] = "Central African Kare", ["kbo"] = "Keliko", ["kbq"] = "Kamano", ["kbr"] = "Kafa", ["kbs"] = "Kande", ["kbt"] = "Abadi", ["kbu"] = "Kabutra", ["kbv"] = "Indonesian Dera", ["kbw"] = "Kaiep", ["kbx"] = "Ap Ma", ["kby"] = "Manga Kanuri", ["kbz"] = "Duhwa", ["kca"] = "Khanty", ["kcb"] = "Kawacha", ["kcc"] = "Lubila", ["kcd"] = "Ngkâlmpw Kanum", ["kce"] = "Kaivi", ["kcf"] = "Ukaan", ["kch"] = "Vono", ["kci"] = "Kamantan", ["kcj"] = "Kobiana", ["kck"] = "Kalanga", ["kcl"] = "Papua New Guinean Kela", ["kcm"] = "Central African Gula", ["kcn"] = "Nubi", ["kco"] = "Kinalakna", ["kcp"] = "Kanga", ["kcq"] = "Kamo", ["kcr"] = "Katla", ["kcs"] = "Koenoem", ["kct"] = "Kaian", ["kcu"] = "Tanzanian Kami", ["kcv"] = "Kete", ["kcw"] = "Kabwari", ["kcx"] = "Kachama-Ganjule", ["kcy"] = "Korandje", ["kcz"] = "Konongo", ["kda"] = "Worimi", ["kdc"] = "Kutu", ["kdd"] = "Yankunytjatjara", ["kde"] = "Makonde", ["kdf"] = "Mamusi", ["kdg"] = "Seba", ["kdh"] = "Tem", ["kdi"] = "Kumam", ["kdj"] = "Karamojong", ["kdk"] = "Numee", ["kdl"] = "Tsikimba", ["kdm"] = "Kagoma", ["kdn"] = "Kunda", ["kdp"] = "Kaningdon-Nindem", ["kdq"] = "Koch", ["kdr"] = "Karaim", ["kds"] = "Lahu Shi", ["kdt"] = "Kuy", ["kdu"] = "Kadaru", ["kdv"] = "Kado", ["kdw"] = "Koneraw", ["kdx"] = "Kam", ["kdy"] = "Keder", ["kdz"] = "Kwaja", ["keb"] = "Kélé", ["kec"] = "Keiga", ["ked"] = "Kerewe", ["kee"] = "Eastern Keres", ["kef"] = "Kpessi", ["keg"] = "Tese", ["keh"] = "Keak", ["kei"] = "Kei", ["kej"] = "Kadar", ["kek"] = "Kekchí", ["kel"] = "Congolese Kela", ["kem"] = "Kemak", ["ken"] = "Kenyang", ["keo"] = "Kakwa", ["kep"] = "Kaikadi", ["keq"] = "Kamar", ["ker"] = "Kera", ["kes"] = "Kugbo", ["ket"] = "Ket", ["keu"] = "Akebu", ["kev"] = "Kanikkaran", ["kew"] = "West Kewa", ["kex"] = "Kukna", ["key"] = "Kupia", ["kez"] = "Kukele", ["kfa"] = "Kodava", ["kfb"] = "Northwestern Kolami", ["kfc"] = "Konda-Dora", ["kfd"] = "Korra Koraga", ["kfe"] = "Indian Kota", ["kff"] = "Koya", ["kfg"] = "Kudiya", ["kfh"] = "Kurichiya", ["kfi"] = "Kurumba", ["kfj"] = "Kemiehua", ["kfk"] = "Kinnauri", ["kfl"] = "Kung", ["kfm"] = "Khunsari", ["kfn"] = "Kuk", ["kfo"] = "Côte d'Ivoire Koro", ["kfp"] = "Korwa", ["kfq"] = "Korku", ["kfr"] = "Kachchi", ["kfs"] = "Bilaspuri", ["kft"] = "Kanjari", ["kfu"] = "Katkari", ["kfv"] = "Kurmukar", ["kfw"] = "Kharam Naga", ["kfx"] = "Kullu Pahari", ["kfy"] = "Kumauni", ["kfz"] = "Koromfé", ["kga"] = "Koyaga", ["kgb"] = "Kawe", ["kgc"] = "Kasseng", ["kgd"] = "Kataang", ["kgf"] = "Kube", ["kgg"] = "Kusunda", ["kgh"] = "Upper Tanudan Kalinga", ["kgi"] = "Selangor Sign Language", ["kgj"] = "Gamale Kham", ["kgk"] = "Kaiwá", ["kgl"] = "Kunggari", ["kgm"] = "Karipúna", ["kgn"] = "Karingani", ["kgo"] = "Krongo", ["kgp"] = "Kaingáng", ["kgq"] = "Kamoro", ["kgr"] = "Abun", ["kgs"] = "Kumbainggar", ["kgt"] = "Somyev", ["kgu"] = "Kobol", ["kgv"] = "Karas", ["kgw"] = "Karon Dori", ["kgx"] = "Kamaru", ["kgy"] = "Kyerung", ["kha"] = "Khasi", ["khb"] = "Lü", ["khc"] = "Tukang Besi North", ["khd"] = "Bädi Kanum", ["khe"] = "Korowai", ["khf"] = "Khuen", ["khg"] = "Khams Tibetan", ["khh"] = "Kehu", ["khi"] = "Khoisan languages", ["khj"] = "Kuturmi", ["khk"] = "Halh Mongolian", ["khl"] = "Lusi", ["khm"] = "Khmer", ["khn"] = "Khandesi", ["kho"] = "Khotanese", ["khp"] = "Kapori", ["khq"] = "Koyra Chiini Songhay", ["khr"] = "Kharia", ["khs"] = "Kasua", ["kht"] = "Khamti", ["khu"] = "Nkhumbi", ["khv"] = "Khvarshi", ["khx"] = "Kanu", ["khy"] = "Congolese Kele", ["khz"] = "Keapara", ["kia"] = "Kim", ["kib"] = "Koalib", ["kic"] = "Kickapoo", ["kid"] = "Koshin", ["kie"] = "Kibet", ["kif"] = "Eastern Parbate", ["kig"] = "Kimaama", ["kih"] = "Kilmeri", ["kii"] = "Kitsai", ["kij"] = "Kilivila", ["kik"] = "Kikuyu", ["kil"] = "Kariya", ["kim"] = "Karagas", ["kin"] = "Kinyarwanda", ["kio"] = "Kiowa", ["kip"] = "Sheshi Kham", ["kiq"] = "Kosadle", ["kir"] = "Kyrgyz", ["kis"] = "Kis", ["kit"] = "Agob", ["kiv"] = "Kimbu", ["kiw"] = "Northeast Kiwai", ["kix"] = "Khiamniungan Naga", ["kiy"] = "Kirikiri", ["kiz"] = "Kisi", ["kja"] = "Mlap", ["kjb"] = "Eastern Kanjobal", ["kjc"] = "Coastal Konjo", ["kjd"] = "Southern Kiwai", ["kje"] = "Kisar", ["kjf"] = "Khalaj", ["kjg"] = "Khmu", ["kji"] = "Zabana", ["kjj"] = "Khinalugh", ["kjk"] = "Highland Konjo", ["kjl"] = "Western Parbate", ["kjm"] = "Kháng", ["kjn"] = "Kunjen", ["kjo"] = "Harijan Kinnauri", ["kjq"] = "Western Keres", ["kjr"] = "Kurudu", ["kjs"] = "East Kewa", ["kjt"] = "Phrae Pwo Karen", ["kju"] = "Kashaya", ["kjv"] = "Kajkavian", ["kjx"] = "Ramopa", ["kjy"] = "Erave", ["kjz"] = "Bumthangkha", ["kka"] = "Kakanda", ["kkb"] = "Kwerisa", ["kkc"] = "Odoodee", ["kkd"] = "Kinuku", ["kke"] = "Kakabe", ["kkf"] = "Kalaktang Monpa", ["kkg"] = "Mabaka Valley Kalinga", ["kkh"] = "Khün", ["kki"] = "Kagulu", ["kkj"] = "Kako", ["kkk"] = "Kokota", ["kkl"] = "Kosarek Yale", ["kkm"] = "Kiong", ["kkn"] = "Kon Keu", ["kko"] = "Karko", ["kkp"] = "Gugubera", ["kkq"] = "Kaiku", ["kkr"] = "Kir-Balar", ["kks"] = "Giiwo", ["kkt"] = "Koi", ["kku"] = "Tumi", ["kkv"] = "Kangean", ["kkw"] = "Teke-Kukuya", ["kkx"] = "Kohin", ["kky"] = "Guguyimidjir", ["kkz"] = "Kaska", ["kla"] = "Klamath-Modoc", ["klb"] = "Kiliwa", ["klc"] = "Kolbila", ["kld"] = "Gamilaraay", ["kle"] = "Nepali Kulung", ["klf"] = "Kendeje", ["klg"] = "Tagakaulu Kalagan", ["klh"] = "Weliki", ["kli"] = "Kalumpang", ["klj"] = "Turkic Khalaj", ["klk"] = "Nigerian Kono", ["kll"] = "Kagan Kalagan", ["klm"] = "Kolom", ["kln"] = "Kalenjin", ["klo"] = "Kapya", ["klp"] = "Kamasa", ["klq"] = "Rumu", ["klr"] = "Khaling", ["kls"] = "Kalasha", ["klt"] = "Nukna", ["klu"] = "Klao", ["klv"] = "Maskelynes", ["klw"] = "Lindu", ["klx"] = "Koluwawa", ["kly"] = "Kalao", ["klz"] = "Kabola", ["kma"] = "Konni", ["kmb"] = "Kimbundu", ["kmc"] = "Southern Dong", ["kmd"] = "Madukayang Kalinga", ["kme"] = "Bakole", ["kmf"] = "Papua New Guinean Kare", ["kmg"] = "Kâte", ["kmh"] = "Kalam", ["kmi"] = "Nigerian Kami", ["kmj"] = "Kumarbhag Paharia", ["kmk"] = "Limos Kalinga", ["kml"] = "Lower Tanudan Kalinga", ["kmm"] = "Indian Kom", ["kmn"] = "Awtuw", ["kmo"] = "Kwoma", ["kmp"] = "Gimme", ["kmq"] = "Kwama", ["kmr"] = "northern Kurdish", ["kms"] = "Kamasau", ["kmt"] = "Kemtuik", ["kmu"] = "Kanite", ["kmv"] = "Karipúna Creole French", ["kmw"] = "Congolese Komo", ["kmx"] = "Waboda", ["kmy"] = "Koma", ["kmz"] = "Khorasani Turkish", ["kna"] = "Nigerian Dera", ["knb"] = "Lubuagan Kalinga", ["knc"] = "Central Kanuri", ["knd"] = "Konda", ["kne"] = "Kankanaey", ["knf"] = "Mankanya", ["kng"] = "Koongo", ["knh"] = "Kayan River Kenyah", ["kni"] = "Kanufi", ["knj"] = "Western Kanjobal", ["knk"] = "Kuranko", ["knl"] = "Keninjal", ["knm"] = "Kanamarí", ["knn"] = "Konkani", ["kno"] = "Sierra Leonean Kono", ["knp"] = "Kwanja", ["knq"] = "Kintaq", ["knr"] = "Kaningra", ["kns"] = "Kensiu", ["knt"] = "Panoan Katukína", ["knu"] = "Guinean Kono", ["knv"] = "Tabo", ["knw"] = "Kung-Ekoka", ["knx"] = "Kendayan", ["kny"] = "Kanyok", ["knz"] = "Kalamsé", ["ko-Hang"] = "Korean", ["ko-Hang-KP"] = "Korean", ["ko-Hang-KR"] = "Korean", ["ko-Hani"] = "Korean", ["ko-Hant"] = "Korean", ["ko-Hant-KP"] = "Korean", ["ko-KP"] = "Korean", ["ko-Kana"] = "Korean", ["ko-Kang"] = "Korean", ["ko-Kore"] = "Korean", ["ko-Latn"] = "Korean", ["ko-hang"] = "Korean", ["koa"] = "Konomala", ["kob"] = "Kohoroxitari", ["koc"] = "Kpati", ["kod"] = "Kodi", ["koe"] = "Kacipo-Balesi", ["kof"] = "Kubi", ["kog"] = "Cogui", ["koh"] = "Koyo", ["koj"] = "Sara Dunjo", ["kok"] = "Konkani", ["kol"] = "Papua New Guinean Kol", ["kom"] = "Komi", ["kon"] = "Kongo", ["koo"] = "Konjo", ["kop"] = "Kwato", ["koq"] = "Gabon Kota", ["kor"] = "Korean", ["kos"] = "Kosraean", ["kot"] = "Lagwan", ["kou"] = "Koke", ["kov"] = "Kudu-Camo", ["kow"] = "Kugama", ["kox"] = "Coxima", ["koy"] = "Koyukon", ["koz"] = "Korak", ["kp-Hanj"] = "Korean", ["kpa"] = "Kutto", ["kpb"] = "Mullu Kurumba", ["kpc"] = "Curripaco", ["kpd"] = "Koba", ["kpe"] = "Kpelle", ["kpf"] = "Komba", ["kpg"] = "Kapingamarangi", ["kph"] = "Kplang", ["kpi"] = "Kofei", ["kpj"] = "Karajá", ["kpk"] = "Kpan", ["kpl"] = "Kpala", ["kpm"] = "Koho", ["kpn"] = "Kepkiriwát", ["kpo"] = "Ikposo", ["kpp"] = "Paku Karen", ["kpq"] = "Korupun-Sela", ["kpr"] = "Korafe", ["kps"] = "Tehit", ["kpt"] = "Karata", ["kpu"] = "Kafoa", ["kpv"] = "Komi-Zyrian", ["kpw"] = "Kobon", ["kpx"] = "Mountain Koiali", ["kpy"] = "Koryak", ["kpz"] = "Kupsabiny", ["kqa"] = "Mum", ["kqb"] = "Kovai", ["kqc"] = "Doromu", ["kqd"] = "Koy Sanjaq Surat", ["kqe"] = "Kalagan", ["kqf"] = "Kakabai", ["kqg"] = "Khe", ["kqh"] = "Kisankasa", ["kqi"] = "Koitabu", ["kqj"] = "Koromira", ["kqk"] = "Kotafon Gbe", ["kql"] = "Kyenele", ["kqm"] = "Khisa", ["kqn"] = "Kaonde", ["kqo"] = "Eastern Krahn", ["kqp"] = "Kimré", ["kqq"] = "Krenak", ["kqr"] = "Kimaragang", ["kqs"] = "Northern Kissi", ["kqt"] = "Klias River Kadazan", ["kqu"] = "Seroa", ["kqv"] = "Okolod", ["kqw"] = "Kandas", ["kqx"] = "Mser", ["kqy"] = "Koorete", ["kqz"] = "Korana", ["kra"] = "Kumhali", ["krb"] = "Karkin", ["krd"] = "Kairui-Midiki", ["kre"] = "Kreen-Akarore", ["krf"] = "Vanuatu Koro", ["krg"] = "North Korowai", ["krh"] = "Kurama", ["krk"] = "Kerek", ["krm"] = "Krim", ["krn"] = "Sapo", ["kro"] = "Kru languages", ["krp"] = "Korop", ["krq"] = "Krui", ["krr"] = "Krung", ["krs"] = "Sudanese Gbaya", ["krt"] = "Tumari Kanuri", ["kru"] = "Kurukh", ["krv"] = "Kravet", ["krw"] = "Western Krahn", ["krx"] = "Karon", ["kry"] = "Kryts", ["krz"] = "Sota Kanum", ["ksa"] = "Shuwa-Zamani", ["ksb"] = "Shambala", ["ksc"] = "Southern Kalinga", ["ksd"] = "Kuanua", ["kse"] = "Kuni", ["ksf"] = "Bafia", ["ksg"] = "Kusaghe", ["ksi"] = "Krisa", ["ksj"] = "Uare", ["ksk"] = "Kansa", ["ksl"] = "Kumalu", ["ksm"] = "Kumba", ["ksn"] = "Kasiguranin", ["kso"] = "Kofa", ["ksp"] = "Kaba", ["ksq"] = "Kwaami", ["ksr"] = "Borong", ["kss"] = "Southern Kisi", ["kst"] = "Winyé", ["ksu"] = "Khamyang", ["ksv"] = "Kusu", ["ksx"] = "Kedang", ["ksy"] = "Kharia Thar", ["ksz"] = "Koraku", ["kta"] = "Katua", ["ktb"] = "Kambaata", ["ktc"] = "Kholok", ["ktd"] = "Kokata", ["kte"] = "Nubri", ["ktf"] = "Kwami", ["ktg"] = "Kalkutungu", ["kth"] = "Karanga", ["kti"] = "North Muyu", ["ktj"] = "Plapo Krumen", ["ktk"] = "Kaniet", ["ktl"] = "Koroshi", ["ktm"] = "Kurti", ["ktn"] = "Karitiâna", ["kto"] = "Kuot", ["ktp"] = "Kaduo", ["ktq"] = "Katabaga", ["ktr"] = "Kota Marudu Tinagas", ["kts"] = "South Muyu", ["ktt"] = "Ketum", ["ktu"] = "Congolese Kituba", ["ktv"] = "Eastern Katu", ["ktw"] = "Kato", ["ktx"] = "Kaxararí", ["kty"] = "Bas-Uélé District Kango", ["ktz"] = "Ju{{!}}ʼhoan", ["kua"] = "Kwanyama", ["kub"] = "Kutep", ["kuc"] = "Kwinsu", ["kud"] = "Auhelawa", ["kue"] = "Kuman", ["kuf"] = "Western Katu", ["kug"] = "Kupa", ["kuh"] = "Kushi", ["kui"] = "Kuikúro-Kalapálo", ["kuj"] = "Kuria", ["kuk"] = "Kepo'", ["kul"] = "Kulere", ["kun"] = "Kunama", ["kuo"] = "Kumukio", ["kup"] = "Kunimaipa", ["kuq"] = "Karipuná", ["kur"] = "Kurdish", ["kut"] = "Kutenai", ["kuu"] = "Upper Kuskokwim", ["kuv"] = "Kur", ["kuw"] = "Kpagua", ["kux"] = "Kukatja", ["kuy"] = "Kuuku-Ya'u", ["kuz"] = "Kunza", ["kva"] = "Bagvalal", ["kvb"] = "Kubu", ["kvc"] = "Kove", ["kvd"] = "Indonesian Kui", ["kve"] = "Kalabakan", ["kvf"] = "Kabalai", ["kvg"] = "Kuni-Boazi", ["kvh"] = "Komodo", ["kvi"] = "Kwang", ["kvj"] = "Psikye", ["kvk"] = "Korean Sign Language", ["kvl"] = "Brek Karen", ["kvm"] = "Kendem", ["kvn"] = "Border Kuna", ["kvo"] = "Dobel", ["kvp"] = "Kompane", ["kvq"] = "Geba Karen", ["kvr"] = "Kerinci", ["kvs"] = "Kunggara", ["kvt"] = "Lahta Karen", ["kvu"] = "Yinbaw Karen", ["kvv"] = "Kola", ["kvw"] = "Wersing", ["kvx"] = "Parkari Koli", ["kvy"] = "Yintale Karen", ["kvz"] = "Tsakwambo", ["kwa"] = "Dâw", ["kwb"] = "Kwa", ["kwc"] = "Likwala", ["kwd"] = "Kwaio", ["kwe"] = "Kwerba", ["kwf"] = "Kwara'ae", ["kwg"] = "Kaba Deme", ["kwh"] = "Kowiai", ["kwi"] = "Awa-Cuaiquer", ["kwj"] = "Kwanga", ["kwk"] = "Kwakiutl", ["kwl"] = "Kofyar", ["kwm"] = "Kwambi", ["kwn"] = "Kwangali", ["kwo"] = "Kwomtari", ["kwp"] = "Kodia", ["kwq"] = "Kwak", ["kwr"] = "Kwer", ["kws"] = "Kwese", ["kwt"] = "Kwesten", ["kwu"] = "Kwakum", ["kwv"] = "Kaba Na", ["kww"] = "Kwinti", ["kwx"] = "Khirwar", ["kwy"] = "San Salvador Kongo", ["kwz"] = "Kwadi", ["kxa"] = "Kairiru", ["kxb"] = "Krobu", ["kxc"] = "Komso", ["kxd"] = "Brunei", ["kxe"] = "Kakihum", ["kxf"] = "Manumanaw Karen", ["kxg"] = "Katingan", ["kxh"] = "Ethiopian Karo", ["kxi"] = "Keningau Murut", ["kxj"] = "Kulfa", ["kxk"] = "Zayein Karen", ["kxl"] = "Nepali Kurux", ["kxm"] = "Northern Khmer", ["kxn"] = "Kanowit", ["kxo"] = "Kanoé", ["kxp"] = "Wadiyara Koli", ["kxq"] = "Smärky Kanum", ["kxr"] = "Papua New Guinean Koro", ["kxs"] = "Kangjia", ["kxt"] = "Koiwat", ["kxu"] = "Indian Kui", ["kxv"] = "Kuvi", ["kxw"] = "Konai", ["kxx"] = "Likuba", ["kxy"] = "Kayong", ["kxz"] = "Kerewo", ["kya"] = "Kwaya", ["kyb"] = "Butbut Kalinga", ["kyc"] = "Kyaka", ["kyd"] = "Karey", ["kye"] = "Krache", ["kyf"] = "Kouya", ["kyg"] = "Keyagana", ["kyh"] = "Karok", ["kyi"] = "Kiput", ["kyj"] = "Karao", ["kyk"] = "Kamayo", ["kyl"] = "Kalapuya", ["kym"] = "Kpatili", ["kyn"] = "Karolanos", ["kyo"] = "Kelon", ["kyp"] = "Kang", ["kyq"] = "Kenga", ["kyr"] = "Kuruáya", ["kys"] = "Baram Kayan", ["kyt"] = "Kayagar", ["kyu"] = "Western Kayah", ["kyv"] = "Kayort", ["kyw"] = "Kudmali", ["kyx"] = "Rapoisi", ["kyy"] = "Kambaira", ["kyz"] = "Kayabí", ["kza"] = "Western Karaboro", ["kzb"] = "Kaibobo", ["kzc"] = "Bondoukou Kulango", ["kzd"] = "Kadai", ["kze"] = "Kosena", ["kzf"] = "Da'a Kaili", ["kzg"] = "Kikai", ["kzh"] = "Kenuzi-Dongola", ["kzi"] = "Kelabit", ["kzj"] = "Coastal Kadazan", ["kzk"] = "Kazukuru", ["kzl"] = "Kayeli", ["kzm"] = "Kais", ["kzn"] = "Kokola", ["kzo"] = "Kaningi", ["kzp"] = "Kaidipang", ["kzq"] = "Kaike", ["kzr"] = "Karang", ["kzs"] = "Sugut Dusun", ["kzt"] = "Tambunan Dusun", ["kzu"] = "Kayupulau", ["kzv"] = "Komyandaret", ["kzw"] = "Karirí-Xocó", ["kzx"] = "Kamarian", ["kzy"] = "Tshopo District Kango", ["kzz"] = "Kalabra", ["laa"] = "Lapuyan Subanun", ["lab"] = "Linear A", ["lac"] = "Lacandon", ["lae"] = "Pattani", ["laf"] = "Lafofa", ["lag"] = "Langi", ["lah"] = "Lahnda", ["lai"] = "Lambya", ["laj"] = "Ugandan Lango", ["lak"] = "Nigerian Laka", ["lal"] = "Lalia", ["lam"] = "Lamba", ["lan"] = "Laru", ["lao"] = "Lao", ["lap"] = "Chadian Laka", ["laq"] = "Qabiao", ["lar"] = "Larteh", ["las"] = "Togo Lama", ["lat"] = "Latin", ["lau"] = "Laba", ["lav"] = "Latvian", ["law"] = "Lauje", ["lax"] = "Tiwa", ["lay"] = "Myanma Lama", ["laz"] = "Aribwatsa", ["lba"] = "Lui", ["lbb"] = "Label", ["lbc"] = "Lakkia", ["lbf"] = "Tinani", ["lbg"] = "Laopang", ["lbi"] = "La'bi", ["lbj"] = "Ladakhi", ["lbk"] = "Central Bontok", ["lbl"] = "Libon Bikol", ["lbm"] = "Lodhi", ["lbn"] = "Lamet", ["lbo"] = "Laven", ["lbq"] = "Wampar", ["lbr"] = "Northern Lorung", ["lbs"] = "Libyan Sign Language", ["lbt"] = "Lachi", ["lbu"] = "Labu", ["lbv"] = "Lavatbura-Lamusong", ["lbw"] = "Tolaki", ["lbx"] = "Lawangan", ["lby"] = "Lamu-Lamu", ["lbz"] = "Lardil", ["lcc"] = "Legenyem", ["lcd"] = "Lola", ["lce"] = "Loncong", ["lcf"] = "Lubu", ["lch"] = "Luchazi", ["lcl"] = "Lisela", ["lcm"] = "Tungag", ["lcp"] = "Western Lawa", ["lcq"] = "Luhu", ["lcs"] = "Lisabata-Nuniali", ["lda"] = "Kla-Dan", ["ldb"] = "Idun", ["ldd"] = "Luri", ["ldg"] = "Lenyima", ["ldh"] = "Lamja-Dengsa-Tola", ["ldi"] = "Laari", ["ldj"] = "Lemoro", ["ldk"] = "Leelau", ["ldl"] = "Kaan", ["ldm"] = "Landoma", ["ldn"] = "Láadan", ["ldo"] = "Loo", ["ldp"] = "Tso", ["ldq"] = "Lufu", ["lea"] = "Lega-Shabunda", ["leb"] = "Lala-Bisa", ["lec"] = "Leco", ["led"] = "Lendu", ["lee"] = "Lyélé", ["lef"] = "Lelemi", ["leg"] = "Lengua", ["leh"] = "Lenje", ["lei"] = "Lemio", ["lej"] = "Lengola", ["lek"] = "Leipon", ["lel"] = "Congolese Lele", ["lem"] = "Nomaande", ["len"] = "Lenca", ["leo"] = "Cameroonian Leti", ["lep"] = "Lepcha", ["leq"] = "Lembena", ["ler"] = "Lenkau", ["les"] = "Lese", ["let"] = "Lesing-Gelimi", ["leu"] = "Papua New Guinean Kara", ["lev"] = "Lamma", ["lew"] = "Ledo Kaili", ["lex"] = "Luang", ["ley"] = "Lemolang", ["lfa"] = "Lefa", ["lga"] = "Lungga", ["lgb"] = "Laghu", ["lgg"] = "Lugbara", ["lgh"] = "Laghuu", ["lgi"] = "Lengilu", ["lgk"] = "Lingarak", ["lgl"] = "Wala", ["lgm"] = "Lega-Mwenga", ["lgn"] = "Opuuo", ["lgq"] = "Logba", ["lgr"] = "Lengo", ["lgt"] = "Pahi", ["lgu"] = "Longgu", ["lgz"] = "Ligenza", ["lha"] = "Vietnamese Laha", ["lhh"] = "Indonesian Laha", ["lhi"] = "Lahu Shi", ["lhl"] = "Lahul Lohar", ["lhm"] = "Lhomi", ["lhn"] = "Lahanan", ["lhp"] = "Lhokpu", ["lhs"] = "Mlahsö", ["lht"] = "Toga", ["lhu"] = "Lahu", ["lia"] = "West-Central Limba", ["lib"] = "Likum", ["lic"] = "Hlai", ["lid"] = "Nyindrou", ["lie"] = "Likila", ["lif"] = "Limbu", ["lig"] = "Ligbi", ["lih"] = "Lihir", ["lii"] = "Lingkhim", ["lik"] = "Lika", ["lil"] = "Lillooet", ["lim"] = "Limburgish", ["lin"] = "Lingala", ["lio"] = "Liki", ["lip"] = "Sekpele", ["liq"] = "Libido", ["lir"] = "Liberian English", ["lis"] = "Lisu", ["lit"] = "Lithuanian", ["liu"] = "Logorik", ["liw"] = "Lembak", ["lix"] = "Liabuku", ["liy"] = "Banda-Bambari", ["liz"] = "Libinza", ["lja"] = "Golpa", ["lje"] = "Rampi", ["lji"] = "Laiyolo", ["ljl"] = "Li'o", ["ljp"] = "Lampung", ["ljw"] = "Yirandali", ["ljx"] = "Yuru", ["lka"] = "Lakalei", ["lkb"] = "Kabras", ["lkc"] = "Kucong", ["lkd"] = "Lakondê", ["lke"] = "Kenyi", ["lkh"] = "Lakha", ["lkj"] = "Remun", ["lkl"] = "Laeko-Libuat", ["lkm"] = "Kalaamaya", ["lkn"] = "Lakona", ["lko"] = "Khayo", ["lkr"] = "Päri", ["lks"] = "Kisa", ["lkt"] = "Lakota", ["lku"] = "Kungkari", ["lky"] = "Lokoya", ["lla"] = "Lala-Roba", ["llb"] = "Lolo", ["llc"] = "Guinean Lele", ["lle"] = "Papua New Guinean Lele", ["llf"] = "Hermit", ["llg"] = "Lole", ["llh"] = "Lamu", ["lli"] = "Teke-Laali", ["llj"] = "Ladji Ladji", ["llk"] = "Lelak", ["lll"] = "Lilau", ["llm"] = "Lasalimu", ["lln"] = "Chadian Lele", ["llo"] = "Khlor", ["llp"] = "North Efate", ["llq"] = "Lolak", ["lls"] = "Lithuanian Sign Language", ["llu"] = "Lau", ["llx"] = "Lauan", ["lma"] = "East Limba", ["lmb"] = "Merei", ["lmc"] = "Limilngan", ["lmd"] = "Lumun", ["lme"] = "Pévé", ["lmf"] = "South Lembata", ["lmg"] = "Lamogai", ["lmh"] = "Lambichhong", ["lmi"] = "Lombi", ["lmj"] = "West Lembata", ["lmk"] = "Lamkang", ["lml"] = "Hano", ["lmm"] = "Lamam", ["lmn"] = "Lambadi", ["lmp"] = "Limbum", ["lmq"] = "Lamatuka", ["lmr"] = "Lamalera", ["lms"] = "Limousin", ["lmt"] = "Lematang", ["lmu"] = "Lamenu", ["lmv"] = "Lomaiviti", ["lmw"] = "Lake Miwok", ["lmx"] = "Laimbue", ["lmy"] = "Lamboya", ["lmz"] = "Lumbee", ["lna"] = "Langbashe", ["lnb"] = "Mbalanhu", ["lnc"] = "Languedocien", ["lnd"] = "Lundayeh", ["lng"] = "Langobardic", ["lnh"] = "Lanoh", ["lni"] = "Lantanai", ["lnj"] = "Leningitij", ["lnl"] = "South Central Banda", ["lnm"] = "Langam", ["lnn"] = "Lorediakarkar", ["lno"] = "Sudanese Lango", ["lns"] = "Lamnso'", ["lnt"] = "Lintang", ["lnu"] = "Longuda", ["lnw"] = "Lanima", ["lnz"] = "Lonzo", ["loa"] = "Loloda", ["lob"] = "Lobi", ["loc"] = "Inonhan", ["lod"] = "Berawan", ["loe"] = "Coastal Saluan", ["lof"] = "Logol", ["log"] = "Logo", ["loh"] = "Narim", ["loi"] = "Côte d'Ivoire Loma", ["loj"] = "Lou", ["lok"] = "Loko", ["lol"] = "Mongo", ["lom"] = "Liberian Loma", ["lon"] = "Malawi Lomwe", ["loo"] = "Lombo", ["lop"] = "Lopa", ["loq"] = "Lobala", ["lor"] = "Téén", ["los"] = "Loniu", ["lot"] = "Otuho", ["lou"] = "Louisiana Creole French", ["lov"] = "Lopi", ["low"] = "Tampias Lobu", ["lox"] = "Loun", ["loy"] = "Lowa", ["lpa"] = "Lelepa", ["lpe"] = "Lepki", ["lpn"] = "Long Phuri Naga", ["lpo"] = "Lipo", ["lpx"] = "Lopit", ["lra"] = "Lara'", ["lre"] = "Laurentian", ["lrg"] = "Laragia", ["lri"] = "Marachi", ["lrk"] = "Loarki", ["lrl"] = "Lari", ["lrm"] = "Marama", ["lrn"] = "Lorang", ["lro"] = "Laro", ["lrr"] = "Southern Lorung", ["lrt"] = "Larantuka Malay", ["lrv"] = "Larevat", ["lrz"] = "Lemerig", ["lsa"] = "Lasgerdi", ["lsd"] = "Lishana Deni", ["lse"] = "Lusengo", ["lsg"] = "Lyons Sign Language", ["lsh"] = "Lish", ["lsi"] = "Lashi", ["lsl"] = "Latvian Sign Language", ["lsm"] = "Saamia", ["lsn"] = "Tibetan Sign Language", ["lso"] = "Laotian Sign Language", ["lsp"] = "Panamanian Sign Language", ["lsr"] = "Aruop", ["lss"] = "Lasi", ["lst"] = "Trinidad and Tobago Sign Language", ["lsv"] = "Sivia Sign Language", ["lsy"] = "Mauritian Sign Language", ["ltc"] = "Late Middle Chinese", ["lth"] = "Thur", ["lti"] = "Indonesian Leti", ["ltn"] = "Latundê", ["lto"] = "Tsotso", ["lts"] = "Tachoni", ["ltu"] = "Latu", ["ltz"] = "Luxembourgish", ["lu"] = "Luba-Katanga", ["lua"] = "Luba-Kasai", ["lub"] = "Luba-Katanga", ["luc"] = "Aringa", ["lud"] = "Ludian", ["lue"] = "Luvale", ["luf"] = "Laua", ["lug"] = "Luganda", ["lui"] = "Luiseno", ["luj"] = "Luna", ["luk"] = "Lunanakha", ["lul"] = "Olu'bo", ["lum"] = "Luimbi", ["lun"] = "Lunda", ["luo"] = "Luo", ["lup"] = "Lumbu", ["luq"] = "Lucumi", ["lur"] = "Laura", ["lut"] = "Lushootseed", ["luu"] = "Lumba-Yakkha", ["luv"] = "Luwati", ["luw"] = "Luo", ["luy"] = "Luyia", ["lva"] = "Maku'a", ["lvi"] = "Lavi", ["lvk"] = "Lavukaleve", ["lvs"] = "Standard Latvian", ["lvu"] = "Levuka", ["lwa"] = "Lwalu", ["lwe"] = "Lewo Eleng", ["lwg"] = "Wanga", ["lwh"] = "White Lachi", ["lwl"] = "Eastern Lawa", ["lwm"] = "Laomian", ["lwo"] = "Luwo", ["lws"] = "Malawian Sign Language", ["lwt"] = "Lewotobi", ["lwu"] = "Lawu", ["lww"] = "Lewo", ["lya"] = "Layakha", ["lyg"] = "Lyngngam", ["lyn"] = "Luyana", ["lzl"] = "Litzlitz", ["lzn"] = "Leinong Naga", ["maa"] = "San Jerónimo Tecóatl Mazatec", ["mab"] = "Yutanduchi Mixtec", ["mac"] = "Macedonian", ["mae"] = "Bo-Rukul", ["maf"] = "Mafa", ["mah"] = "Marshallese", ["maj"] = "Jalapa De Díaz Mazatec", ["mak"] = "Makasar", ["mal"] = "Malayalam", ["mam"] = "Northern Mam", ["man"] = "Mandingo", ["mao"] = "Māori", ["map"] = "Austronesian languages", ["maq"] = "Chiquihuitlán Mazatec", ["mar"] = "Marathi", ["mas"] = "Masai", ["mat"] = "San Francisco Matlatzinca", ["mau"] = "Huautla Mazatec", ["mav"] = "Sateré-Mawé", ["maw"] = "Mampruli", ["max"] = "North Moluccan Malay", ["may"] = "Malay", ["maz"] = "Mazahua Central", ["mba"] = "Higaonon", ["mbb"] = "Western Bukidnon Manobo", ["mbc"] = "Macushi", ["mbd"] = "Dibabawon Manobo", ["mbe"] = "Molale", ["mbf"] = "Baba Malay", ["mbg"] = "Northern Nambikuára", ["mbh"] = "Mangseng", ["mbi"] = "Ilianen Manobo", ["mbj"] = "Nadëb", ["mbk"] = "Malol", ["mbl"] = "Maxakalí", ["mbm"] = "Ombamba", ["mbn"] = "Macaguán", ["mbo"] = "Cameroonian Mbo", ["mbp"] = "Malayo", ["mbq"] = "Maisin", ["mbr"] = "Nukak Makú", ["mbs"] = "Sarangani Manobo", ["mbt"] = "Matigsalug Manobo", ["mbu"] = "Mbula-Bwazza", ["mbv"] = "Mbulungish", ["mbw"] = "Maring", ["mbx"] = "East Sepik Province Mari", ["mby"] = "Memoni", ["mbz"] = "Amoltepec Mixtec", ["mca"] = "Maca", ["mcb"] = "Machiguenga", ["mcc"] = "Bitur", ["mcd"] = "Sharanahua", ["mce"] = "Itundujia Mixtec", ["mcf"] = "Matsés", ["mcg"] = "Mapoyo", ["mch"] = "Maquiritari", ["mci"] = "Mese", ["mcj"] = "Mvanip", ["mck"] = "Mbunda", ["mcl"] = "Macaguaje", ["mcm"] = "Malaccan Creole Portuguese", ["mcn"] = "Masana", ["mco"] = "Coatlán Mixe", ["mcp"] = "Makaa", ["mcq"] = "Ese", ["mcr"] = "Menya", ["mcs"] = "Mambai", ["mct"] = "Mengisa", ["mcu"] = "Cameroonian Mambila", ["mcv"] = "Minanibai", ["mcw"] = "Chadian Mawa", ["mcx"] = "Mpiemo", ["mcy"] = "South Watut", ["mcz"] = "Mawan", ["mda"] = "Nigerian Mada", ["mdb"] = "Morigi", ["mdc"] = "Papua New Guinean Male", ["mdd"] = "Mbum", ["mde"] = "Chadian Maba", ["mdg"] = "Massalat", ["mdh"] = "Maguindanao", ["mdi"] = "Mamvu", ["mdj"] = "Mangbetu", ["mdk"] = "Mangbutu", ["mdl"] = "Maltese Sign Language", ["mdm"] = "Mayogo", ["mdn"] = "Mbati", ["mdo"] = "Southwest Gbaya", ["mdp"] = "Mbala", ["mdq"] = "Mbole", ["mdr"] = "Mandar", ["mds"] = "Papua New Guinean Maria", ["mdt"] = "Mbere", ["mdu"] = "Mboko", ["mdv"] = "Santa Lucía Monteverde Mixtec", ["mdw"] = "Mbosi", ["mdx"] = "Dizi", ["mdy"] = "Ethiopian Male", ["mdz"] = "Suruí Do Pará", ["mea"] = "Menka", ["meb"] = "Ikobi-Mena", ["mec"] = "Mara", ["med"] = "Melpa", ["mee"] = "Mengen", ["mef"] = "Megam", ["meg"] = "Mea", ["meh"] = "Southwestern Tlaxiaco Mixtec", ["mei"] = "Midob", ["mej"] = "Meyah", ["mek"] = "Mekeo", ["mel"] = "Melanau", ["mem"] = "Mangala", ["men"] = "Mende", ["meo"] = "Kedah Malay", ["mep"] = "Miriwung", ["meq"] = "Merey", ["mer"] = "Meru", ["mes"] = "Masmaje", ["met"] = "Mato", ["meu"] = "Motu", ["mev"] = "Mann", ["mew"] = "Maaka", ["mey"] = "Hassaniyya", ["mez"] = "Menominee", ["mfa"] = "Pattani Malay", ["mfb"] = "Lom", ["mfc"] = "Mba", ["mfd"] = "Mendankwe-Nkwen", ["mfe"] = "Morisyen", ["mff"] = "Naki", ["mfg"] = "Mixifore", ["mfh"] = "Matal", ["mfi"] = "Wandala", ["mfj"] = "Mefele", ["mfk"] = "North Mofu", ["mfl"] = "Putai", ["mfm"] = "Marghi South", ["mfn"] = "Cross River Mbembe", ["mfo"] = "Mbe", ["mfp"] = "Makassar Malay", ["mfq"] = "Moba", ["mfr"] = "Marithiel", ["mfs"] = "Mexican Sign Language", ["mft"] = "Mokerang", ["mfu"] = "Mbwela", ["mfv"] = "Mandjak", ["mfw"] = "Mulaha", ["mfx"] = "Melo", ["mfy"] = "Mayo", ["mfz"] = "Mabaan", ["mga"] = "Middle Irish", ["mgb"] = "Mararit", ["mgc"] = "Morokodo", ["mgd"] = "Moru", ["mge"] = "Mango", ["mgf"] = "Maklew", ["mgg"] = "Mpongmpong", ["mgh"] = "Makhuwa-Meetto", ["mgi"] = "Lijili", ["mgj"] = "Abureni", ["mgk"] = "Mawes", ["mgl"] = "Maleu-Kilenge", ["mgm"] = "Mambae", ["mgn"] = "Mbangi", ["mgo"] = "Meta'", ["mgp"] = "Eastern Magar", ["mgq"] = "Malila", ["mgr"] = "Mambwe-Lungu", ["mgs"] = "Tanzanian Manda", ["mgt"] = "Mongol", ["mgu"] = "Mailu", ["mgv"] = "Matengo", ["mgw"] = "Matumbi", ["mgx"] = "Omati", ["mgy"] = "Mbunga", ["mgz"] = "Mbugwe", ["mha"] = "Indian Manda", ["mhb"] = "Mahongwe", ["mhc"] = "Mocho", ["mhd"] = "Mbugu", ["mhe"] = "Besisi", ["mhf"] = "Mamaa", ["mhg"] = "Margu", ["mhh"] = "Maskoy Pidgin", ["mhi"] = "Ma'di", ["mhj"] = "Mogholi", ["mhk"] = "Mungaka", ["mhl"] = "Mauwake", ["mhm"] = "Makhuwa-Moniga", ["mhn"] = "Mócheno", ["mho"] = "Zambian Mashi", ["mhp"] = "Balinese Malay", ["mhq"] = "Mandan", ["mhs"] = "Indonesian Buru", ["mht"] = "Mandahuaca", ["mhu"] = "Digaro-Mishmi", ["mhv"] = "Arakanese", ["mhw"] = "Mbukushu", ["mhx"] = "Maru", ["mhy"] = "Ma'anyan", ["mhz"] = "Mor Islands Mor", ["mia"] = "Miami", ["mib"] = "Atatláhuca Mixtec", ["mic"] = "Miꞌkmaq", ["mid"] = "Mandaic", ["mie"] = "Ocotepec Mixtec", ["mif"] = "Mofu-Gudur", ["mig"] = "San Miguel El Grande Mixtec", ["mih"] = "Chayuco Mixtec", ["mii"] = "Chigmecatitlán Mixtec", ["mij"] = "Abar", ["mik"] = "Mikasuki", ["mil"] = "Peñoles Mixtec", ["mim"] = "Alacatlatzala Mixtec", ["mio"] = "Pinotepa Nacional Mixtec", ["mip"] = "Apasco-Apoala Mixtec", ["miq"] = "Mískito", ["mir"] = "Isthmus Mixe", ["mis"] = "Uncoded languages", ["mit"] = "Southern Puebla Mixtec", ["miu"] = "Cacaloxtepec Mixtec", ["miv"] = "Mimi", ["miw"] = "Akoye", ["mix"] = "Mixtepec Mixtec", ["miy"] = "Ayutla Mixtec", ["miz"] = "Coatzospan Mixtec", ["mja"] = "Mahei", ["mjb"] = "Makalero", ["mjc"] = "San Juan Colorado Mixtec", ["mjd"] = "Northwest Maidu", ["mje"] = "Muskum", ["mjg"] = "Tu", ["mjh"] = "Nyasa Mwera", ["mji"] = "Kim Mun", ["mjj"] = "Mawak", ["mjk"] = "Matukar", ["mjl"] = "Mandeali", ["mjm"] = "Medebur", ["mjn"] = "Papua New Guinean Ma", ["mjo"] = "Malankuravan", ["mjp"] = "Malapandaram", ["mjq"] = "Malaryan", ["mjr"] = "Malavedan", ["mjs"] = "Miship", ["mjt"] = "Sauria Paharia", ["mju"] = "Manna-Dora", ["mjv"] = "Mannan", ["mjw"] = "Karbi", ["mjx"] = "Mahali", ["mjy"] = "Mahican", ["mjz"] = "Majhi", ["mka"] = "Mbre", ["mkb"] = "Mal Paharia", ["mkc"] = "Siliput", ["mkd"] = "Macedonian", ["mke"] = "Mawchi", ["mkf"] = "Miya", ["mkg"] = "Chinese Mak", ["mkh"] = "Mon-Khmer languages", ["mki"] = "Dhatki", ["mkj"] = "Mokilese", ["mkk"] = "Byep", ["mkl"] = "Mokole", ["mkm"] = "Moklen", ["mkn"] = "Kupang Malay", ["mko"] = "Mingang Doso", ["mkp"] = "Moikodi", ["mkq"] = "Bay Miwok", ["mkr"] = "Malas", ["mks"] = "Silacayoapan Mixtec", ["mkt"] = "Vamale", ["mku"] = "Konyanka Maninka", ["mkv"] = "Mafea", ["mkw"] = "Congolese Kituba", ["mkx"] = "Cinamiguin Manobo", ["mky"] = "East Makian", ["mkz"] = "Makasae", ["mla"] = "Malo", ["mlb"] = "Mbule", ["mlc"] = "Cao Lan", ["mld"] = "Malakhel", ["mle"] = "Manambu", ["mlf"] = "Mal", ["mlg"] = "Malagasy", ["mlh"] = "Mape", ["mli"] = "Malimpung", ["mlj"] = "Miltu", ["mlk"] = "Malakote", ["mll"] = "Malua Bay", ["mlm"] = "Mulam", ["mln"] = "Malango", ["mlo"] = "Mlomp", ["mlp"] = "Bargam", ["mlq"] = "Western Maninkakan", ["mlr"] = "Vame", ["mls"] = "Masalit", ["mlt"] = "Maltese", ["mlu"] = "To'abaita", ["mlv"] = "Motlav", ["mlw"] = "Moloko", ["mlx"] = "Malfaxal", ["mly"] = "Malay", ["mlz"] = "Malaynon", ["mma"] = "Mama", ["mmb"] = "Momina", ["mmc"] = "Michoacán Mazahua", ["mmd"] = "Maonan", ["mme"] = "Mae", ["mmf"] = "Mundat", ["mmg"] = "North Ambrym", ["mmh"] = "Mehináku", ["mmi"] = "Musar", ["mmj"] = "Majhwar", ["mmk"] = "Mukha-Dora", ["mml"] = "Man Met", ["mmm"] = "Maii", ["mmn"] = "Mamanwa", ["mmo"] = "Mangga Buang", ["mmp"] = "Musan", ["mmq"] = "Musak", ["mmr"] = "Western Xiangxi Hmong", ["mms"] = "Southern Mam", ["mmt"] = "Malalamai", ["mmu"] = "Mmaala", ["mmv"] = "Miriti", ["mmw"] = "Emae", ["mmx"] = "Madak", ["mmy"] = "Migaama", ["mmz"] = "Mabaale", ["mna"] = "Mbula", ["mnb"] = "Muna", ["mnd"] = "Mondé", ["mne"] = "Naba", ["mnf"] = "Mundani", ["mng"] = "Eastern Mnong", ["mnh"] = "Congolese Mono", ["mnj"] = "Munji", ["mnk"] = "Mandinka", ["mnl"] = "Tiale", ["mnm"] = "Mapena", ["mnn"] = "Southern Mnong", ["mno"] = "Manobo languages", ["mnp"] = "Min Bei Chinese", ["mnq"] = "Minriq", ["mnr"] = "American Mono", ["mns"] = "Mansi", ["mnt"] = "Maykulan", ["mnu"] = "Mer", ["mnv"] = "Rennell-Belona", ["mnx"] = "Manikion", ["mny"] = "Manyawa", ["mnz"] = "Moni", ["moa"] = "Mwan", ["mob"] = "Moinba", ["moc"] = "Mocoví", ["mod"] = "Mobilian", ["moe"] = "Montagnais", ["mof"] = "Mohegan-Montauk-Narragansett", ["mog"] = "Mongondow", ["moh"] = "Mohawk", ["moi"] = "Mboi", ["moj"] = "Monzombo", ["mok"] = "Morori", ["mol"] = "Moldovan", ["mom"] = "Monimbo", ["mon"] = "Mongolian", ["moo"] = "Monom", ["mop"] = "Mopán Maya", ["moq"] = "Bomberai Peninsula Mor", ["mor"] = "Moro", ["mot"] = "Barí", ["mou"] = "Mogum", ["mov"] = "Mohave", ["mow"] = "Congolese Moi", ["mox"] = "Molima", ["moy"] = "Shekkacho", ["moz"] = "Mukulu", ["mpa"] = "Mpoto", ["mpb"] = "Mullukmulluk", ["mpc"] = "Mangarayi", ["mpd"] = "Machinere", ["mpe"] = "Majang", ["mpf"] = "Tajumulco Mam", ["mpg"] = "Marba", ["mph"] = "Maung", ["mpi"] = "Mpade", ["mpj"] = "Martu Wangka", ["mpk"] = "Chadian Mbara", ["mpl"] = "Middle Watut", ["mpm"] = "Yosondúa Mixtec", ["mpn"] = "Mindiri", ["mpo"] = "Miu", ["mpp"] = "Migabac", ["mpq"] = "Matís", ["mpr"] = "Vangunu", ["mps"] = "Dadibi", ["mpt"] = "Mian", ["mpu"] = "Makuráp", ["mpv"] = "Munkip", ["mpw"] = "Mapidian", ["mpx"] = "Misima-Paneati", ["mpy"] = "Mapia", ["mpz"] = "Mpi", ["mqa"] = "Indonesian Maba", ["mqb"] = "Mbuko", ["mqc"] = "Mangole", ["mqd"] = "Madang", ["mqe"] = "Matepi", ["mqf"] = "Momuna", ["mqg"] = "Kota Bangun Kutai Malay", ["mqh"] = "Tlazoyaltepec Mixtec", ["mqi"] = "Mariri", ["mqj"] = "Mamasa", ["mqk"] = "Rajah Kabunsuwan Manobo", ["mql"] = "Mbelime", ["mqm"] = "South Marquesan", ["mqn"] = "Moronene", ["mqo"] = "Modole", ["mqp"] = "Manipa", ["mqq"] = "Minokok", ["mqr"] = "Mander", ["mqs"] = "West Makian", ["mqt"] = "Mok", ["mqu"] = "Mandari", ["mqv"] = "Mosimo", ["mqw"] = "Murupi", ["mqx"] = "Mamuju", ["mqy"] = "Manggarai", ["mqz"] = "Malasanga", ["mra"] = "Mlabri", ["mrb"] = "Marino", ["mrc"] = "Maricopa", ["mrd"] = "Western Magar", ["mre"] = "Martha's Vineyard Sign Language", ["mrf"] = "Elseng", ["mrg"] = "Miri", ["mri"] = "Māori", ["mrk"] = "Hmwaveke", ["mrl"] = "Mortlockese", ["mrm"] = "Merlav", ["mrn"] = "Cheke Holo", ["mro"] = "Mru", ["mrp"] = "Morouas", ["mrq"] = "North Marquesan", ["mrr"] = "Indian Maria", ["mrs"] = "Maragus", ["mrt"] = "Marghi Central", ["mru"] = "Cameroonian Mono", ["mrv"] = "Mangareva", ["mrw"] = "Maranao", ["mrx"] = "Maremgi", ["mry"] = "Karaga Mandaya", ["mrz"] = "Marind", ["msa"] = "Malay", ["msb"] = "Masbatenyo", ["msc"] = "Sankaran Maninka", ["msd"] = "Yucatec Maya Sign Language", ["mse"] = "Musey", ["msf"] = "Mekwei", ["msg"] = "Moraid", ["msh"] = "Masikoro Malagasy", ["msi"] = "Sabah Malay", ["msj"] = "Congolese Ma", ["msk"] = "Mansaka", ["msl"] = "Molof", ["msm"] = "Agusan Manobo", ["msn"] = "Mosina", ["mso"] = "Mombum", ["msp"] = "Maritsauá", ["msq"] = "Caac", ["msr"] = "Mongolian Sign Language", ["mss"] = "West Masela", ["mst"] = "Cataelano Mandaya", ["msu"] = "Musom", ["msv"] = "Maslam", ["msw"] = "Mansoanka", ["msx"] = "Moresada", ["msy"] = "Aruamu", ["msz"] = "Momare", ["mta"] = "Cotabato Manobo", ["mtb"] = "Anyin Morofo", ["mtc"] = "Munit", ["mtd"] = "Mualang", ["mte"] = "Solomon Islands Mono", ["mtf"] = "Murik", ["mtg"] = "Una", ["mth"] = "Munggui", ["mti"] = "Papua New Guinean Maiwa", ["mtj"] = "Moskona", ["mtk"] = "Mbe'", ["mtl"] = "Montol", ["mtm"] = "Mator", ["mtn"] = "Matagalpa", ["mto"] = "Totontepec Mixe", ["mtp"] = "Wichí Lhamtés Nocten", ["mtq"] = "Muong", ["mtr"] = "Mewari", ["mts"] = "Yora", ["mtt"] = "Mota", ["mtu"] = "Tututepec Mixtec", ["mtv"] = "Asaro'o", ["mtw"] = "Magahat", ["mtx"] = "Tidaá Mixtec", ["mty"] = "Nabi", ["mtz"] = "Tacanec", ["mu"] = "Multiple languages", ["mua"] = "Mundang", ["mub"] = "Mubi", ["muc"] = "Mbu'", ["mud"] = "Mednyj Aleut", ["mue"] = "Media Lengua", ["mug"] = "Musgu", ["muh"] = "Mündü", ["mui"] = "Musi", ["muj"] = "Mabire", ["muk"] = "Mugom", ["mul"] = "Multiple languages", ["mum"] = "Maiwala", ["mun"] = "Munda languages", ["muo"] = "Nyong", ["mup"] = "Malvi", ["muq"] = "Eastern Xiangxi Hmong", ["mur"] = "Murle", ["mut"] = "Western Muria", ["muu"] = "Yaaku", ["muv"] = "Muthuvan", ["muw"] = "Mundari", ["mux"] = "Mbo-Ung", ["muy"] = "Muyang", ["muz"] = "Mursi", ["mva"] = "Manam", ["mvb"] = "Mattole", ["mvc"] = "Central Mam", ["mvd"] = "Mamboru", ["mve"] = "Pakistani Marwari", ["mvf"] = "Peripheral Mongolian", ["mvg"] = "Yucuañe Mixtec", ["mvh"] = "Mire", ["mvi"] = "Miyako", ["mvj"] = "Todos Santos Cuchumatán Mam", ["mvk"] = "Mekmek", ["mvl"] = "Australian Mbara", ["mvm"] = "Muya", ["mvn"] = "Minaveha", ["mvo"] = "Marovo", ["mvp"] = "Duri", ["mvq"] = "Moere", ["mvr"] = "Marau", ["mvs"] = "Massep", ["mvt"] = "Mpotovoro", ["mvu"] = "Marfa", ["mvv"] = "Tagal Murut", ["mvw"] = "Machinga", ["mvx"] = "Meoswar", ["mvy"] = "Indus Kohistani", ["mvz"] = "Mesqan", ["mwa"] = "Mwatebu", ["mwb"] = "Juwal", ["mwc"] = "Are", ["mwd"] = "Mudbura", ["mwe"] = "Chimwera Mwera", ["mwf"] = "Murrinh-Patha", ["mwg"] = "Aiklep", ["mwh"] = "Mouk-Aria", ["mwi"] = "Labo", ["mwj"] = "Maligo", ["mwk"] = "Kita Maninkakan", ["mwm"] = "Sar", ["mwn"] = "Nyamwanga", ["mwo"] = "Central Maewo", ["mwp"] = "Kala Lagaw Ya", ["mwq"] = "Mün Chin", ["mwr"] = "Marwari", ["mws"] = "Mwimbi-Muthambi", ["mwt"] = "Moken", ["mwu"] = "Mittu", ["mwv"] = "Mentawai", ["mww"] = "Hmong Daw", ["mwx"] = "Mediak", ["mwy"] = "Mosiro", ["mwz"] = "Moingi", ["mxa"] = "Northwest Oaxaca Mixtec", ["mxb"] = "Tezoatlán Mixtec", ["mxc"] = "Manyika", ["mxd"] = "Modang", ["mxe"] = "Mele-Fila", ["mxf"] = "Malgbe", ["mxg"] = "Mbangala", ["mxh"] = "Mvuba", ["mxi"] = "Mozarabic", ["mxj"] = "Miju-Mishmi", ["mxk"] = "Monumbo", ["mxl"] = "Maxi Gbe", ["mxm"] = "Meramera", ["mxn"] = "Indonesian Moi", ["mxo"] = "Mbowe", ["mxp"] = "Tlahuitoltepec Mixe", ["mxq"] = "Juquila Mixe", ["mxr"] = "Murik Kayan", ["mxs"] = "Huitepec Mixtec", ["mxt"] = "Jamiltepec Mixtec", ["mxu"] = "Cameroonian Mada", ["mxv"] = "Metlatónoc Mixtec", ["mxw"] = "Namo", ["mxx"] = "Mahou", ["mxy"] = "Southeastern Nochixtlán Mixtec", ["mxz"] = "Central Masela", ["mya"] = "Burmese", ["myb"] = "Mbay", ["myc"] = "Mayeka", ["myd"] = "Maramba", ["mye"] = "Myene", ["myf"] = "Bambassi", ["myg"] = "Manta", ["myh"] = "Makah", ["myi"] = "Indian Mina", ["myj"] = "Mangayat", ["myk"] = "Mamara Senoufo", ["myl"] = "Moma", ["mym"] = "Me'en", ["myn"] = "Mayan languages", ["myo"] = "Anfillo", ["myp"] = "Pirahã", ["myq"] = "Forest Maninka", ["myr"] = "Muniche", ["mys"] = "Mesmes", ["myt"] = "Sangab Mandaya", ["myu"] = "Mundurukú", ["myw"] = "Muyuw", ["myx"] = "Masaba", ["myy"] = "Macuna", ["myz"] = "Classical Mandaic", ["mza"] = "Santa María Zacatepec Mixtec", ["mzb"] = "Tumzabt", ["mzc"] = "Madagascar Sign Language", ["mzd"] = "Malimba", ["mze"] = "Morawa", ["mzf"] = "Aiku", ["mzg"] = "Monastic Sign Language", ["mzh"] = "Wichí Lhamtés Güisnay", ["mzi"] = "Ixcatlán Mazatec", ["mzj"] = "Manya", ["mzk"] = "Nigeria Mambila", ["mzl"] = "Mazatlán Mixe", ["mzm"] = "Mumuye", ["mzo"] = "Matipuhy", ["mzp"] = "Movima", ["mzq"] = "Mori Atas", ["mzr"] = "Marúbo", ["mzs"] = "Macanese", ["mzt"] = "Mintil", ["mzu"] = "Inapang", ["mzv"] = "Manza", ["mzw"] = "Deg", ["mzx"] = "Mawayana", ["mzy"] = "Mozambican Sign Language", ["mzz"] = "Maiadomu", ["naa"] = "Namla", ["nab"] = "Southern Nambikuára", ["nac"] = "Narak", ["nad"] = "Nijadali", ["nae"] = "Naka'ela", ["naf"] = "Nabak", ["nag"] = "Naga Pidgin", ["nai"] = "North American Indian languages", ["naj"] = "Nalu", ["nak"] = "Nakanai", ["nal"] = "Nalik", ["nam"] = "Nangikurrunggurr", ["nao"] = "Naaba", ["nap-x-tara"] = "Tarantino", ["naq"] = "Namibian Nama", ["nar"] = "Iguta", ["nas"] = "Naasioi", ["nat"] = "Hungworo", ["nau"] = "Nauru", ["nav"] = "Navajo", ["naw"] = "Nawuri", ["nax"] = "Nakwi", ["nay"] = "Narrinyeri", ["naz"] = "Coatepec Nahuatl", ["nba"] = "Nyemba", ["nbb"] = "Ndoe", ["nbc"] = "Chang Naga", ["nbd"] = "Ngbinda", ["nbe"] = "Konyak Naga", ["nbf"] = "Naxi", ["nbg"] = "Nagarchal", ["nbh"] = "Ngamo", ["nbi"] = "Mao Naga", ["nbj"] = "Ngarinman", ["nbk"] = "Nake", ["nbl"] = "Southern Ndebele", ["nbm"] = "Ngbaka Ma'bo", ["nbn"] = "Kuri", ["nbo"] = "Nkukoli", ["nbp"] = "Nnam", ["nbq"] = "Nggem", ["nbr"] = "Numana-Nunku-Gbantu-Numbu", ["nbs"] = "Namibian Sign Language", ["nbt"] = "Na", ["nbu"] = "Rongmei Naga", ["nbv"] = "Ngamambo", ["nbw"] = "Southern Ngbandi", ["nbx"] = "Ngura", ["nby"] = "Ningera", ["nca"] = "Iyo", ["ncb"] = "Central Nicobarese", ["ncc"] = "Ponam", ["ncd"] = "Nachhiring", ["nce"] = "Yale", ["ncf"] = "Notsi", ["ncg"] = "Nisga'a", ["nch"] = "Central Huasteca Nahuatl", ["nci"] = "Classical Nahuatl", ["ncj"] = "Northern Puebla Nahuatl", ["nck"] = "Nakara", ["ncl"] = "Michoacán Nahuatl", ["ncm"] = "Nambo", ["ncn"] = "Nauna", ["nco"] = "Sibe", ["ncp"] = "Ndaktup", ["ncq"] = "Northern Katang", ["ncr"] = "Ncane", ["ncs"] = "Nicaraguan Sign Language", ["nct"] = "Chothe Naga", ["ncu"] = "Chumburung", ["ncx"] = "Central Puebla Nahuatl", ["ncz"] = "Natchez", ["nd"] = "Northern Ndebele", ["nda"] = "Ndasa", ["ndb"] = "Kenswei Nsei", ["ndc"] = "Ndau", ["ndd"] = "Nde-Nsele-Nta", ["nde"] = "Northern Ndebele", ["ndf"] = "Nadruvian", ["ndg"] = "Ndengereko", ["ndh"] = "Ndali", ["ndi"] = "Samba Leko", ["ndj"] = "Ndamba", ["ndk"] = "Ndaka", ["ndl"] = "Ndolo", ["ndm"] = "Ndam", ["ndn"] = "Ngundi", ["ndo"] = "Ndonga", ["ndp"] = "Ndo", ["ndq"] = "Ndombe", ["ndr"] = "Ndoola", ["ndt"] = "Ndunga", ["ndu"] = "Dugun", ["ndv"] = "Ndut", ["ndw"] = "Ndobo", ["ndx"] = "Nduga", ["ndy"] = "Lutos", ["ndz"] = "Ndogo", ["nea"] = "Eastern Ngad'a", ["neb"] = "Côte d'Ivoire Toura", ["nec"] = "Nedebang", ["ned"] = "Nde-Gbite", ["nee"] = "Kumak", ["nef"] = "Nefamese", ["neg"] = "Negidal", ["neh"] = "Nyenkha", ["nei"] = "Neo-Hittite", ["nej"] = "Neko", ["nek"] = "Neku", ["nem"] = "Nemi", ["nen"] = "Nengone", ["neo"] = "Ná-Meo", ["nep"] = "Nepali", ["neq"] = "North Central Mixe", ["ner"] = "Yahadian", ["nes"] = "Bhoti Kinnauri", ["net"] = "Nete", ["neu"] = "Neo", ["nev"] = "Nyaheun", ["nex"] = "Neme", ["ney"] = "Neyo", ["nez"] = "Nez Perce", ["nfa"] = "Dhao", ["nfd"] = "Ndun", ["nfg"] = "Nyeng", ["nfk"] = "Shakara", ["nfl"] = "Ayiwo", ["nfr"] = "Nafaanra", ["nfu"] = "Mfumte", ["nga"] = "Ngbaka", ["ngb"] = "Northern Ngbandi", ["ngc"] = "Congolese Ngombe", ["ngd"] = "Central African Ngando", ["nge"] = "Ngemba", ["ngg"] = "Ngbaka Manza", ["ngh"] = "N{{!}}{{!}}ng", ["ngi"] = "Ngizim", ["ngj"] = "Ngie", ["ngk"] = "Ngalkbun", ["ngl"] = "Lomwe", ["ngm"] = "Ngatik Men's Creole", ["ngn"] = "Ngwo", ["ngo"] = "Ngoni", ["ngp"] = "Ngulu", ["ngq"] = "Ngurimi", ["ngr"] = "Nanggu", ["ngs"] = "Gvoko", ["ngt"] = "Ngeq", ["ngu"] = "Guerrero Nahuatl", ["ngv"] = "Nagumi", ["ngw"] = "Ngwaba", ["ngx"] = "Nggwahyi", ["ngy"] = "Tibea", ["ngz"] = "Ngungwel", ["nha"] = "Nhanda", ["nhb"] = "Beng", ["nhc"] = "Tabasco Nahuatl", ["nhd"] = "Chiripá", ["nhe"] = "Eastern Huasteca Nahuatl", ["nhf"] = "Nhuwala", ["nhg"] = "Tetelcingo Nahuatl", ["nhh"] = "Nahari", ["nhi"] = "Tenango Nahuatl", ["nhj"] = "Tlalitzlipa Nahuatl", ["nhk"] = "Isthmus-Cosoleacaque Nahuatl", ["nhm"] = "Morelos Nahuatl", ["nhn"] = "Central Nahuatl", ["nho"] = "Takuu", ["nhp"] = "Isthmus-Pajapan Nahuatl", ["nhq"] = "Huaxcaleca Nahuatl", ["nhr"] = "Naro", ["nhs"] = "Southeastern Puebla Nahuatl", ["nht"] = "Ometepec Nahuatl", ["nhu"] = "Noone", ["nhv"] = "Temascaltepec Nahuatl", ["nhw"] = "Western Huasteca Nahuatl", ["nhx"] = "Isthmus-Mecayapan Nahuatl", ["nhy"] = "Northern Oaxaca Nahuatl", ["nhz"] = "Santa María La Alta Nahuatl", ["nib"] = "Nakama", ["nic"] = "Niger-Kordofanian languages", ["nid"] = "Ngandi", ["nie"] = "Niellim", ["nif"] = "Nek", ["nig"] = "Ngalakan", ["nih"] = "Nyiha", ["nii"] = "Nii", ["nij"] = "Ngaju", ["nik"] = "Southern Nicobarese", ["nil"] = "Nila", ["nim"] = "Nilamba", ["nin"] = "Ninzo", ["nio"] = "Nganasan", ["niq"] = "Nandi", ["nir"] = "Nimboran", ["nis"] = "Nimi", ["niv"] = "Nivkh", ["niw"] = "Nimo", ["nix"] = "Hema", ["niy"] = "Ngiti", ["niz"] = "Ningil", ["nja"] = "Nzanyi", ["njb"] = "Nocte Naga", ["njd"] = "Ndonde Hamba", ["njh"] = "Lotha Naga", ["nji"] = "Gudanji", ["njj"] = "Njen", ["njl"] = "Njalgulgule", ["njm"] = "Angami Naga", ["njn"] = "Liangmai Naga", ["njo"] = "Ao Naga", ["njr"] = "Njerep", ["njs"] = "Nisa", ["njt"] = "Ndyuka-Trio Pidgin", ["nju"] = "Ngadjunmaya", ["njx"] = "Kunyi", ["njy"] = "Njyem", ["njz"] = "Nyishi", ["nka"] = "Nkoya", ["nkb"] = "Khoibu Naga", ["nkc"] = "Nkongho", ["nkd"] = "Koireng", ["nke"] = "Duke", ["nkf"] = "Inpui Naga", ["nkg"] = "Nekgini", ["nkh"] = "Khezha Naga", ["nki"] = "Thangal Naga", ["nkj"] = "Nakai", ["nkk"] = "Nokuku", ["nkm"] = "Namat", ["nkn"] = "Nkangala", ["nko"] = "Nkonya", ["nkp"] = "Niuatoputapu", ["nkq"] = "Nkami", ["nkr"] = "Nukuoro", ["nks"] = "North Asmat", ["nkt"] = "Tanzanian Nyika", ["nku"] = "Bouna Kulango", ["nkv"] = "Malawian and Zambian Nyika", ["nkw"] = "Nkutu", ["nkx"] = "Nkoroo", ["nky"] = "Khiamniungan Naga", ["nkz"] = "Nkari", ["nla"] = "Ngombale", ["nlc"] = "Nalca", ["nld"] = "Dutch", ["nle"] = "East Nyala", ["nlg"] = "Gela", ["nli"] = "Grangali", ["nlj"] = "Nyali", ["nlk"] = "Ninia Yali", ["nll"] = "Nihali", ["nlm"] = "Mankiyali", ["nln"] = "Durango Nahuatl", ["nlo"] = "Ngul", ["nlq"] = "Lao Naga", ["nlr"] = "Ngarla", ["nlu"] = "Nchumbulu", ["nlv"] = "Orizaba Nahuatl", ["nlw"] = "Walangama", ["nlx"] = "Nahali", ["nly"] = "Nyamal", ["nlz"] = "Nalögo", ["nma"] = "Maram Naga", ["nmb"] = "Big Nambas", ["nmc"] = "Ngam", ["nmd"] = "Ndumu", ["nme"] = "Mzieme Naga", ["nmf"] = "Tangkhul Naga", ["nmg"] = "Ngumba", ["nmh"] = "Monsang Naga", ["nmi"] = "Nyam", ["nmj"] = "Central African Ngombe", ["nmk"] = "Namakura", ["nml"] = "Ndemli", ["nmm"] = "Manangba", ["nmn"] = "!Xóõ", ["nmo"] = "Moyon Naga", ["nmp"] = "Nimanbur", ["nmq"] = "Nambya", ["nmr"] = "Nimbari", ["nms"] = "Letemboi", ["nmt"] = "Namonuito", ["nmu"] = "Northeast Maidu", ["nmv"] = "Ngamini", ["nmw"] = "Nimoa", ["nmx"] = "Papua New Guinean Nama", ["nmy"] = "Namuyi", ["nna"] = "Nyangumarta", ["nnb"] = "Nande", ["nnc"] = "Nancere", ["nnd"] = "West Ambae", ["nne"] = "Ngandyera", ["nnf"] = "Ngaing", ["nng"] = "Maring Naga", ["nnh"] = "Ngiemboon", ["nni"] = "North Nuaulu", ["nnj"] = "Nyangatom", ["nnk"] = "Nankina", ["nnl"] = "Northern Rengma Naga", ["nnm"] = "Namia", ["nnn"] = "Ngete", ["nno"] = "Norwegian Nynorsk", ["nnp"] = "Wancho Naga", ["nnq"] = "Ngindo", ["nnr"] = "Narungga", ["nns"] = "Ningye", ["nnt"] = "Nanticoke", ["nnu"] = "Dwang", ["nnv"] = "Australian Nugunu", ["nnw"] = "Southern Nuni", ["nnx"] = "Ngong", ["nny"] = "Nyangga", ["nnz"] = "Nda'nda'", ["noa"] = "Woun Meu", ["nob"] = "Norwegian Bokmål", ["noc"] = "Nuk", ["noe"] = "Nimadi", ["nof"] = "Nomane", ["noh"] = "Nomu", ["noi"] = "Noiri", ["noj"] = "Nonuya", ["nok"] = "Nooksack", ["nol"] = "Nomlaki", ["nom"] = "Nocamán", ["non"] = "Old Norse", ["noo"] = "Nootka", ["nop"] = "Numanggang", ["noq"] = "Ngongo", ["nor"] = "Norwegian", ["nos"] = "Eastern Nisu Yi", ["not"] = "Nomatsiguenga", ["nou"] = "Ewage-Notu", ["now"] = "Nyambo", ["noy"] = "Noy", ["noz"] = "Nayi", ["npa"] = "Nar Phu", ["npb"] = "Nupbikha", ["npg"] = "Ponyo-Gongwang Naga", ["nph"] = "Phom Naga", ["npi"] = "Nepali", ["npl"] = "Southeastern Puebla Nahuatl", ["npn"] = "Mondropolon", ["npo"] = "Pochuri Naga", ["nps"] = "Nipsan", ["npu"] = "Puimei Naga", ["npx"] = "Noipx", ["npy"] = "Napu", ["nqg"] = "Ede Nago", ["nqk"] = "Kura Ede Nago", ["nql"] = "Ngendelengo", ["nqm"] = "Ndom", ["nqn"] = "Nen", ["nqq"] = "Kyan-Karyaw Naga", ["nqy"] = "Akyaung Ari Naga", ["nr"] = "Southern Ndebele", ["nra"] = "Ngom", ["nrb"] = "Nara", ["nrc"] = "Noric", ["nre"] = "Southern Rengma Naga", ["nrf"] = "Jèrriais or Guernésiais", ["nrg"] = "Narango", ["nri"] = "Chokri Naga", ["nrk"] = "Ngarla", ["nrl"] = "Ngarluma", ["nrn"] = "Norn", ["nrp"] = "North Picene", ["nrr"] = "Norra", ["nrt"] = "Northern Kalapuya", ["nru"] = "Narua", ["nrx"] = "Ngurmbur", ["nrz"] = "Lala", ["nsa"] = "Sangtam Naga", ["nsb"] = "Lower Nossob", ["nsc"] = "Nshi", ["nsd"] = "Southern Nisu", ["nse"] = "Nsenga", ["nsf"] = "Northwestern Nisu", ["nsg"] = "Ngasa", ["nsh"] = "Ngoshie", ["nsi"] = "Nigerian Sign Language", ["nsk"] = "Naskapi", ["nsl"] = "Norwegian Sign Language", ["nsm"] = "Sumi Naga", ["nsn"] = "Nehan", ["nsp"] = "Nepalese Sign Language", ["nsq"] = "Northern Sierra Miwok", ["nsr"] = "Maritime Sign Language", ["nss"] = "Nali", ["nst"] = "Tase Naga", ["nsu"] = "Sierra Negra Nahuatl", ["nsv"] = "Southwestern Nisu", ["nsw"] = "Navut", ["nsx"] = "Nsongo", ["nsy"] = "Nasal", ["nsz"] = "Nisenan", ["ntd"] = "Northern Tidung", ["nte"] = "Nathembo", ["ntg"] = "Ngantangarra", ["nti"] = "Natioro", ["ntj"] = "Ngaanyatjarra", ["ntk"] = "Ikoma", ["ntm"] = "Nateni", ["nto"] = "Ntomba", ["ntp"] = "Northern Tepehuan", ["ntr"] = "Delo", ["nts"] = "Natagaimas", ["ntu"] = "Natügu", ["ntw"] = "Nottoway", ["ntx"] = "Myanma Tangkhul Naga", ["nty"] = "Mantsi", ["ntz"] = "Natanzi", ["nua"] = "Yuaga", ["nub"] = "Nubian languages", ["nuc"] = "Nukuini", ["nud"] = "Ngala", ["nue"] = "Ngundu", ["nuf"] = "Nusu", ["nug"] = "Nungali", ["nuh"] = "Ndunda", ["nui"] = "Ngumbi", ["nuj"] = "Nyole", ["nuk"] = "Nuu-chah-nulth", ["nul"] = "Nusa Laut", ["num"] = "Niuafo'ou", ["nun"] = "Burmese Nung", ["nuo"] = "Nguôn", ["nup"] = "Nupe-Nupe-Tako", ["nuq"] = "Nukumanu", ["nur"] = "Nukuria", ["nus"] = "Nuer", ["nut"] = "Vietnamese Nung", ["nuu"] = "Ngbundu", ["nuv"] = "Northern Nuni", ["nuw"] = "Nguluwan", ["nux"] = "Mehek", ["nuy"] = "Nunggubuyu", ["nuz"] = "Tlamacazapa Nahuatl", ["nvh"] = "Nasarian", ["nvm"] = "Namiae", ["nvo"] = "Nyokon", ["nwa"] = "Nawathinehena", ["nwb"] = "Nyabwa", ["nwc"] = "Classical Newari", ["nwe"] = "Ngwe", ["nwg"] = "Ngayawung", ["nwi"] = "Southwest Tanna", ["nwm"] = "Nyamusa-Molo", ["nwo"] = "Nauo", ["nwr"] = "Nawaru", ["nwx"] = "Middle Newar", ["nwy"] = "Nottoway-Meherrin", ["nxa"] = "Nauete", ["nxd"] = "Congolese Ngando", ["nxe"] = "Nage", ["nxg"] = "Ngad'a", ["nxi"] = "Nindi", ["nxj"] = "Nyadu", ["nxk"] = "Koki Naga", ["nxl"] = "South Nuaulu", ["nxm"] = "Numidian", ["nxn"] = "Ngawun", ["nxo"] = "Ndambomo", ["nxq"] = "Naxi", ["nxr"] = "Ninggerum", ["nxu"] = "Narau", ["nxx"] = "Nafri", ["nya"] = "Chichewa", ["nyb"] = "Nyangbo", ["nyc"] = "Nyanga-li", ["nyd"] = "Nyore", ["nye"] = "Nyengo", ["nyf"] = "Giryama", ["nyg"] = "Nyindu", ["nyh"] = "Nyigina", ["nyi"] = "Sudanese Ama", ["nyj"] = "Nyanga", ["nyk"] = "Nyaneka", ["nyl"] = "Nyeu", ["nym"] = "Nyamwezi", ["nyp"] = "Nyang'i", ["nyq"] = "Nayini", ["nyr"] = "Malawian Nyiha", ["nyt"] = "Nyawaygi", ["nyu"] = "Nyungwe", ["nyv"] = "Nyulnyul", ["nyw"] = "Nyaw", ["nyx"] = "Nganyaywana", ["nyy"] = "Nyakyusa", ["nza"] = "Tigon Mbembe", ["nzb"] = "Njebi", ["nzd"] = "Nzadi", ["nzi"] = "Nzima", ["nzk"] = "Nzakara", ["nzm"] = "Zeme Naga", ["nzs"] = "New Zealand Sign Language", ["nzu"] = "Teke-Nzikou", ["nzy"] = "Nzakambay", ["nzz"] = "Nanga Dama Dogon", ["oaa"] = "Orok", ["oac"] = "Oroch", ["oar"] = "Old Aramaic", ["oav"] = "Old Avar", ["obi"] = "Obispeño", ["obk"] = "Southern Bontok", ["obl"] = "Oblo", ["obm"] = "Moabite", ["obo"] = "Obo Manobo", ["obr"] = "Old Burmese", ["obt"] = "Old Breton", ["obu"] = "Obulom", ["oca"] = "Ocaina", ["occ"] = "Occidental", ["och"] = "Old Chinese", ["oci"] = "Occitan", ["oco"] = "Old Cornish", ["ocu"] = "Atzingo Matlatzinca", ["oda"] = "Odut", ["odk"] = "Od", ["odt"] = "Old Dutch", ["odu"] = "Odual", ["ofo"] = "Ofo", ["ofs"] = "Old Frisian", ["ofu"] = "Efutop", ["ogb"] = "Ogbia", ["ogc"] = "Ogbah", ["oge"] = "Old Georgian", ["ogg"] = "Ogbogolo", ["ogn"] = "Ogan", ["ogo"] = "Khana", ["ogu"] = "Ogbronuagum", ["oht"] = "Old Hittite", ["ohu"] = "Old Hungarian", ["oia"] = "Oirata", ["oin"] = "Inebu One", ["oj"] = "Anishinaabe", ["ojc"] = "Central Anishinaabe", ["ojg"] = "Eastern Anishinaabe", ["oji"] = "Anishinaabe", ["ojp"] = "Old Japanese", ["ojs"] = "Severn Anishinaabe", ["ojv"] = "Ontong Java", ["ojw"] = "Western Anishinaabe", ["oka"] = "Okanagan", ["okb"] = "Okobo", ["okd"] = "Okodia", ["oke"] = "Southwestern Edo Okpe", ["okg"] = "Koko Babangk", ["okh"] = "Koresh-e Rostam", ["oki"] = "Okiek", ["okj"] = "Oko-Juwoi", ["okk"] = "Kwamtim One", ["okl"] = "Old Kentish Sign Language", ["okm"] = "Middle Korean", ["okn"] = "Oki-No-Erabu", ["oko"] = "Old Korean", ["okr"] = "Kirike", ["oks"] = "Oko-Eni-Osayen", ["oku"] = "Oku", ["okv"] = "Orokaiva", ["okx"] = "Northwestern Edo Okpe", ["ola"] = "Walungge", ["old"] = "Mochi", ["oldwikisource"] = "Multiple languages", ["ole"] = "Olekha", ["olk"] = "Olkol", ["olm"] = "Oloma", ["olr"] = "Olrat", ["olt"] = "Old Lithuanian", ["olu"] = "Kuvale", ["oma"] = "Omaha-Ponca", ["omb"] = "East Ambae", ["omc"] = "Mochica", ["ome"] = "Omejes", ["omg"] = "Omagua", ["omi"] = "Omi", ["omk"] = "Omok", ["oml"] = "Ombo", ["omn"] = "Minoan", ["omo"] = "Utarmbung", ["omp"] = "Old Manipuri", ["omr"] = "Old Marathi", ["omt"] = "Omotik", ["omu"] = "Omurano", ["omw"] = "South Tairora", ["omx"] = "Old Mon", ["ona"] = "Ona", ["onb"] = "Lingao", ["one"] = "Oneida", ["ong"] = "Olo", ["oni"] = "Onin", ["onj"] = "Onjob", ["onk"] = "Kabore One", ["onn"] = "Onobasulu", ["ono"] = "Onondaga", ["onp"] = "Sartang", ["onr"] = "Northern One", ["ons"] = "Ono", ["ont"] = "Ontenu", ["onu"] = "Unua", ["onw"] = "Old Nubian", ["onx"] = "Onin Based Pidgin", ["ood"] = "Tohono O'odham", ["oog"] = "Ong", ["oon"] = "Önge", ["oor"] = "Oorlams", ["oos"] = "Old Ossetic", ["opa"] = "Okpamheri", ["ope"] = "Old Persian", ["opk"] = "Kopkaka", ["opm"] = "Oksapmin", ["opo"] = "Opao", ["opt"] = "Opata", ["opy"] = "Ofayé", ["ora"] = "Oroha", ["orc"] = "Orma", ["ore"] = "Orejón", ["org"] = "Oring", ["orh"] = "Oroqen", ["ori"] = "Oriya", ["ork"] = "Orokaiva", ["orm"] = "Oromo", ["orn"] = "Orang Kanaq", ["oro"] = "Orokolo", ["orr"] = "Oruma", ["ors"] = "Orang Seletar", ["ort"] = "Adivasi Oriya", ["oru"] = "Ormuri", ["orv"] = "Old Russian", ["orw"] = "Oro Win", ["orx"] = "Oro", ["ory"] = "Oriya", ["orz"] = "Ormu", ["osa"] = "Osage", ["osc"] = "Oscan", ["osi"] = "Osing", ["oso"] = "Ososo", ["osp"] = "Old Spanish", ["oss"] = "Ossetic", ["ost"] = "Osatu", ["osu"] = "Southern One", ["osx"] = "Old Saxon", ["ota"] = "Ottoman Turkish", ["otb"] = "Old Tibetan", ["otd"] = "Dohoi", ["ote"] = "Mezquital Otomi", ["oti"] = "Oti", ["otk"] = "Old Turkish", ["otl"] = "Tilapa Otomi", ["otm"] = "Eastern Highland Otomi", ["otn"] = "Tenango Otomi", ["oto"] = "Otomian languages", ["otq"] = "Querétaro Otomi", ["otr"] = "Otoro", ["ots"] = "Estado de México Otomi", ["ott"] = "Temoaya Otomi", ["otu"] = "Otuke", ["otw"] = "Ottawa", ["otx"] = "Texcatepec Otomi", ["oty"] = "Old Tamil", ["otz"] = "Ixtenco Otomi", ["oua"] = "Tagargrent", ["oub"] = "Glio-Oubi", ["oue"] = "Oune", ["oui"] = "Old Uighur", ["oum"] = "Ouma", ["oun"] = "!O!ung", ["ovd"] = "Övdalian Elfdalian", ["owi"] = "Owiniga", ["owl"] = "Old Welsh", ["oyb"] = "Oy", ["oyd"] = "Oyda", ["oym"] = "Wayampi", ["oyy"] = "Oya'oya", ["ozm"] = "Koonzime", ["paa"] = "Papuan languages", ["pab"] = "Parecís", ["pac"] = "Pacoh", ["pad"] = "Paumarí", ["pae"] = "Pagibete", ["paf"] = "Paranawát", ["pah"] = "Tenharim", ["pai"] = "Pe", ["paj"] = "Ipeka-Tapuia", ["pak"] = "Parakanã", ["pal"] = "Pahlavi", ["pan"] = "Punjabi", ["pao"] = "Northern Paiute", ["paq"] = "Parya", ["par"] = "Panamint", ["pas"] = "Papasena", ["pat"] = "Papitalai", ["pau"] = "Palauan", ["pav"] = "Pakaásnovos", ["paw"] = "Pawnee", ["pax"] = "Pankararé", ["pay"] = "Pech", ["paz"] = "Pankararú", ["pbb"] = "Páez", ["pbc"] = "Patamona", ["pbe"] = "Mezontla Popoloca", ["pbf"] = "Coyotepec Popoloca", ["pbg"] = "Paraujano", ["pbh"] = "Eñepa", ["pbi"] = "Parkwa", ["pbl"] = "Nigerian Mak", ["pbm"] = "Puebla Mazatec", ["pbn"] = "Kpasam", ["pbo"] = "Papel", ["pbp"] = "Badyara", ["pbr"] = "Pangwa", ["pbs"] = "Central Pame", ["pbt"] = "Southern Pashto", ["pbu"] = "Northern Pashto", ["pbv"] = "Pnar", ["pby"] = "Pyu", ["pbz"] = "Palu", ["pca"] = "Santa Inés Ahuatempan Popoloca", ["pcb"] = "Pear", ["pcc"] = "Bouyei", ["pce"] = "Pale Palaung", ["pcf"] = "Paliyan", ["pcg"] = "Paniya", ["pch"] = "Pardhan", ["pci"] = "Duruwa", ["pcj"] = "Parenga", ["pck"] = "Paite Chin", ["pcl"] = "Pardhi", ["pcn"] = "Piti", ["pcp"] = "Pacahuara", ["pcr"] = "Panang", ["pcw"] = "Pyapun", ["pda"] = "Anam", ["pdi"] = "Pa Di", ["pdn"] = "Podena", ["pdo"] = "Padoe", ["pdu"] = "Kayan", ["pea"] = "Peranakan Indonesian", ["peb"] = "Eastern Pomo", ["pec"] = "Southern Pesisir", ["ped"] = "Papua New Guinean Mala", ["pee"] = "Taje", ["pef"] = "Northeastern Pomo", ["peg"] = "Pengo", ["peh"] = "Bonan", ["pei"] = "Chichimeca-Jonaz", ["pej"] = "Northern Pomo", ["pek"] = "Penchal", ["pel"] = "Pekal", ["pem"] = "Phende", ["pen"] = "Penesak", ["peo"] = "Old Persian", ["pep"] = "Kunja", ["peq"] = "Southern Pomo", ["per"] = "Persian", ["pes"] = "Western Farsi", ["pev"] = "Pémono", ["pex"] = "Petats", ["pey"] = "Petjo", ["pez"] = "Eastern Penan", ["pfa"] = "Pááfang", ["pfe"] = "Peere", ["pga"] = "Sudanese Creole Arabic", ["pgd"] = "Gāndhārī", ["pgg"] = "Pangwali", ["pgi"] = "Pagi", ["pgk"] = "Rerep", ["pgl"] = "Primitive Irish", ["pgn"] = "Paelignian", ["pgs"] = "Pangseng", ["pgu"] = "Pagu", ["pgy"] = "Pongyong", ["pgz"] = "Papua New Guinean Sign Language", ["pha"] = "Pa-Hng", ["phd"] = "Phudagi", ["phg"] = "Phuong", ["phh"] = "Phula", ["phi"] = "Philippine languages", ["phk"] = "Phake", ["phl"] = "Phalura", ["phm"] = "Phimbi", ["phn"] = "Phoenician", ["pho"] = "Phunoi", ["phq"] = "Phana'", ["phr"] = "Pahari-Potwari", ["pht"] = "Phu Thai", ["phu"] = "Phuan", ["phv"] = "Pahlavani", ["phw"] = "Phangduwali", ["pia"] = "Pima Bajo", ["pib"] = "Yine", ["pic"] = "Pinji", ["pid"] = "Piaroa", ["pie"] = "Piro", ["pif"] = "Pingelapese", ["pig"] = "Pisabo", ["pii"] = "Pini", ["pij"] = "Pijao", ["pil"] = "Yom", ["pim"] = "Powhatan", ["pin"] = "Piame", ["pio"] = "Piapoco", ["pip"] = "Pero", ["pir"] = "Piratapuyo", ["pis"] = "Pijin", ["pit"] = "Pitta Pitta", ["piu"] = "Pintupi-Luritja", ["piv"] = "Pileni", ["piw"] = "Pimbwe", ["pix"] = "Piu", ["piy"] = "Piya-Kwonci", ["piz"] = "Pije", ["pjt"] = "Pitjantjatjara", ["pka"] = "Ardhamāgadhī Prākrit", ["pkb"] = "Upper Pokomo", ["pkc"] = "Paekche", ["pkg"] = "Pak-Tong", ["pkh"] = "Pankhu", ["pkn"] = "Pakanha", ["pko"] = "Pökoot", ["pkp"] = "Pukapuka", ["pkr"] = "Attapady Kurumba", ["pks"] = "Pakistan Sign Language", ["pkt"] = "Maleng", ["pku"] = "Paku", ["pla"] = "Miani", ["plb"] = "Polonombauk", ["plc"] = "Central Palawano", ["pld"] = "Polari", ["ple"] = "Palu'e", ["plg"] = "Pilagá", ["plh"] = "Paulohi", ["pli"] = "Pāli", ["plj"] = "Polci", ["plk"] = "Kohistani Shina", ["pll"] = "Shwe Palaung", ["plm"] = "Palembang", ["pln"] = "Palenquero", ["plo"] = "Oluta Popoluca", ["plp"] = "Palpa", ["plq"] = "Palaic", ["plr"] = "Palaka Senoufo", ["pls"] = "San Marcos Tlalcoyalco Popoloca", ["plt"] = "Plateau Malagasy", ["plu"] = "Palikúr", ["plv"] = "Southwest Palawano", ["plw"] = "Brooke's Point Palawano", ["ply"] = "Bolyu", ["plz"] = "Paluan", ["pma"] = "Paama", ["pmb"] = "Pambia", ["pmc"] = "Palumata", ["pmd"] = "Pallanganmiddang", ["pme"] = "Pwaamei", ["pmf"] = "Pamona", ["pmh"] = "Māhārāṣṭri Prākrit", ["pmi"] = "Northern Pumi", ["pmj"] = "Southern Pumi", ["pmk"] = "Pamlico", ["pml"] = "Lingua Franca", ["pmm"] = "Pomo", ["pmn"] = "Pam", ["pmo"] = "Pom", ["pmq"] = "Northern Pame", ["pmr"] = "Paynamar", ["pmt"] = "Tuamotuan", ["pmu"] = "Mirpur Panjabi", ["pmw"] = "Plains Miwok", ["pmx"] = "Poumei Naga", ["pmy"] = "Papuan Malay", ["pmz"] = "Southern Pame", ["pna"] = "Punan Bah-Biau", ["pnc"] = "Pannei", ["pnd"] = "Mpinda", ["pne"] = "Western Penan", ["png"] = "Pongu", ["pnh"] = "Penrhyn", ["pni"] = "Aoheng", ["pnj"] = "Pinjarup", ["pnk"] = "Paunaka", ["pnl"] = "Paleni", ["pnm"] = "Punan Batu 1", ["pnn"] = "Pinai-Hagahai", ["pno"] = "Panobo", ["pnp"] = "Pancana", ["pnq"] = "Burkinabé Pana", ["pnr"] = "Panim", ["pns"] = "Ponosakan", ["pnu"] = "Jiongnai Bunu", ["pnv"] = "Pinigura", ["pnw"] = "Panytyima", ["pnx"] = "Phong-Kniang", ["pny"] = "Pinyin", ["pnz"] = "Central African Pana", ["poa"] = "Eastern Pokomam", ["pob"] = "Western Pokomchí", ["poc"] = "Central Pokomam", ["pod"] = "Ponares", ["poe"] = "San Juan Atzingo Popoloca", ["pof"] = "Poke", ["pog"] = "Potiguára", ["poh"] = "Eastern Pokomchí", ["poi"] = "Highland Popoluca", ["poj"] = "Lower Pokomo", ["pok"] = "Pokangá", ["pol"] = "Polish", ["pom"] = "Southeastern Pomo", ["pon"] = "Pohnpeian", ["poo"] = "Central Pomo", ["pop"] = "Pwapwa", ["poq"] = "Texistepec Popoluca", ["por"] = "Portuguese", ["por-BR"] = "Brazilian Portuguese", ["pos"] = "Sayula Popoluca", ["pot"] = "Potawatomi", ["pou"] = "Southern Pokomam", ["pov"] = "Upper Guinea Crioulo", ["pow"] = "San Felipe Otlaltepec Popoloca", ["pox"] = "Polabian", ["poy"] = "Pogolo", ["ppa"] = "Pao", ["ppe"] = "Papi", ["ppi"] = "Paipai", ["ppk"] = "Uma", ["ppl"] = "Pipil", ["ppm"] = "Papuma", ["ppn"] = "Papapana", ["ppo"] = "Folopa", ["ppp"] = "Pelende", ["ppq"] = "Pei", ["ppr"] = "Piru", ["pps"] = "San Luís Temalacayuca Popoloca", ["ppt"] = "Pare", ["ppu"] = "Papora", ["ppv"] = "Papavô", ["pqa"] = "Pa'a", ["pqm"] = "Malecite-Passamaquoddy", ["pra"] = "Prakrit", ["prb"] = "Lua'", ["prc"] = "Parachi", ["prd"] = "Persian Dari", ["pre"] = "Principense", ["prf"] = "Paranan", ["prh"] = "Porohanon", ["pri"] = "Paicî", ["prk"] = "Parauk", ["prl"] = "Peruvian Sign Language", ["prm"] = "Kibiri", ["prn"] = "Prasuni", ["pro"] = "Old Provençal", ["prog"] = "Programming", ["prp"] = "Persian", ["prq"] = "Ashéninka Perené", ["prr"] = "Puri", ["prs"] = "Dari Persian", ["prt"] = "Phai", ["pru"] = "Puragi", ["prv"] = "Provençal", ["prw"] = "Parawen", ["prx"] = "Purik", ["pry"] = "Pray 3", ["prz"] = "Providencia Sign Language", ["psa"] = "Asue Awyu", ["psc"] = "Persian Sign Language", ["psd"] = "Plains Indian Sign Language", ["pse"] = "Central Malay", ["psg"] = "Penang Sign Language", ["psh"] = "Southwest Pashayi", ["psi"] = "Southeast Pashayi", ["psl"] = "Puerto Rican Sign Language", ["psm"] = "Pauserna", ["psn"] = "Panasuan", ["pso"] = "Polish Sign Language", ["psp"] = "Philippine Sign Language", ["psq"] = "Pasi", ["psr"] = "Portuguese Sign Language", ["pss"] = "Kaulong", ["pst"] = "Central Pashto", ["psu"] = "Sauraseni Prākrit", ["psw"] = "Port Sandwich", ["psy"] = "Piscataway", ["pt-BR"] = "Brazilian Portuguese", ["pta"] = "Pai Tavytera", ["pth"] = "Pataxó-Hãhaãi", ["pti"] = "Pintiini", ["ptn"] = "Patani", ["pto"] = "Zo'é", ["ptp"] = "Patep", ["ptq"] = "Pattapu", ["ptr"] = "Piamatsina", ["ptt"] = "Enrekang", ["ptu"] = "Bambam", ["ptv"] = "Port Vato", ["ptw"] = "Pentlatch", ["pty"] = "Pathiya", ["pua"] = "Western Highland Purepecha", ["pub"] = "Purum", ["puc"] = "Punan Merap", ["pud"] = "Punan Aput", ["pue"] = "Puelche", ["puf"] = "Punan Merah", ["pug"] = "Phuie", ["pui"] = "Puinave", ["puj"] = "Punan Tubu", ["puk"] = "Pu Ko", ["pum"] = "Puma", ["pun"] = "Pubian", ["puo"] = "Puoc", ["pup"] = "Pulabu", ["puq"] = "Puquina", ["pur"] = "Puruborá", ["pus"] = "Pashto", ["put"] = "Putoh", ["puu"] = "Punu", ["puw"] = "Puluwatese", ["pux"] = "Puari", ["puy"] = "Purisimeño", ["puz"] = "Purum Naga", ["pwa"] = "Pawaia", ["pwb"] = "Panawa", ["pwg"] = "Gapapaiwa", ["pwi"] = "Patwin", ["pwm"] = "Molbog", ["pwo"] = "Pwo Western Karen", ["pwr"] = "Powari", ["pww"] = "Pwo Northern Karen", ["pxm"] = "Quetzaltepec Mixe", ["pye"] = "Pye Krumen", ["pym"] = "Fyam", ["pyn"] = "Poyanáwa", ["pys"] = "Paraguayan Sign Language", ["pyu"] = "Puyuma", ["pyx"] = "Burmese Pyu", ["pyy"] = "Pyen", ["pzn"] = "Para Naga", ["qua"] = "Quapaw", ["qub"] = "Huallaga Huánuco Quechua", ["quc"] = "K'iche'", ["qud"] = "Calderón Highland Quichua", ["que"] = "Quechua", ["quf"] = "Lambayeque Quechua", ["quh"] = "South Bolivian Quechua", ["qui"] = "Quileute", ["quj"] = "Joyabaj Quiché", ["quk"] = "Chachapoyas Quechua", ["qul"] = "North Bolivian Quechua", ["qum"] = "Sipacapense", ["qun"] = "Quinault", ["qup"] = "Southern Pastaza Quechua", ["quq"] = "Quinqui", ["qur"] = "Yanahuanca Pasco Quechua", ["qus"] = "Santiago del Estero Quichua", ["qut"] = "West Central Quiché", ["quu"] = "Eastern Quiché", ["quv"] = "Sacapulteco", ["quw"] = "Tena Lowland Quichua", ["qux"] = "Yauyos Quechua", ["quy"] = "Ayacucho Quechua", ["quz"] = "Cusco Quechua", ["qva"] = "Ambo-Pasco Quechua", ["qvc"] = "Cajamarca Quechua", ["qve"] = "Eastern Apurímac Quechua", ["qvh"] = "Huamalíes-Dos de Mayo Huánuco Quechua", ["qvi"] = "Imbabura Highland Quichua", ["qvj"] = "Loja Highland Quichua", ["qvl"] = "Cajatambo North Lima Quechua", ["qvm"] = "Margos-Yarowilca-Lauricocha Quechua", ["qvn"] = "North Junín Quechua", ["qvo"] = "Napo Lowland Quechua", ["qvp"] = "Pacaraos Quechua", ["qvs"] = "San Martín Quechua", ["qvw"] = "Huaylla Wanca Quechua", ["qvy"] = "Queyu", ["qvz"] = "Northern Pastaza Quichua", ["qwa"] = "Corongo Ancash Quechua", ["qwc"] = "Classical Quechua", ["qwh"] = "Huaylas Ancash Quechua", ["qwm"] = "Russian Kuman", ["qws"] = "Sihuas Ancash Quechua", ["qwt"] = "Kwalhioqua-Tlatskanai", ["qxa"] = "Chiquián Ancash Quechua", ["qxc"] = "Chincha Quechua", ["qxh"] = "Panao Huánuco Quechua", ["qxi"] = "San Andrés Quiché", ["qxl"] = "Salasaca Highland Quichua", ["qxn"] = "Northern Conchucos Ancash Quechua", ["qxo"] = "Southern Conchucos Ancash Quechua", ["qxp"] = "Puno Quechua", ["qxq"] = "Qashqa'i", ["qxr"] = "Cañar Highland Quichua", ["qxs"] = "Southern Qiang", ["qxt"] = "Santa Ana de Tusi Pasco Quechua", ["qxu"] = "Arequipa-La Unión Quechua", ["qxw"] = "Jauja Wanca Quechua", ["qya"] = "Quenya", ["qyp"] = "Quiripi", ["raa"] = "Dungmali", ["rab"] = "Camling", ["rac"] = "Rasawa", ["rad"] = "Rade", ["rae"] = "Ranau", ["raf"] = "Western Meohang", ["rag"] = "Logooli", ["rah"] = "Rabha", ["rai"] = "Ramoaaina", ["raj"] = "Rajasthani", ["rak"] = "Tulu-Bohuai", ["ral"] = "Ralte", ["ram"] = "Canela", ["ran"] = "Riantana", ["rao"] = "Rao", ["rap"] = "Rapanui", ["raq"] = "Saam", ["rar"] = "Rarotongan", ["ras"] = "Tegali", ["rat"] = "Razajerdi", ["rau"] = "Raute", ["rav"] = "Sampang", ["raw"] = "Rawang", ["rax"] = "Rang", ["ray"] = "Rapa", ["raz"] = "Rahambuu", ["rbb"] = "Rumai Palaung", ["rbk"] = "Northern Bontok", ["rbl"] = "Miraya Bikol", ["rbp"] = "Barababaraba", ["rcf"] = "Réunion Creole French", ["rdb"] = "Rudbari", ["rea"] = "Rerau", ["reb"] = "Rembong", ["ree"] = "Rejang Kayan", ["reg"] = "Tanzanian Kara", ["rei"] = "Reli", ["rej"] = "Rejang", ["rel"] = "Rendille", ["rem"] = "Remo", ["ren"] = "Rengao", ["rer"] = "Rer Bare", ["res"] = "Reshe", ["ret"] = "Retta", ["rey"] = "Reyesano", ["rga"] = "Roria", ["rge"] = "Romano-Greek", ["rgk"] = "Rangkas", ["rgr"] = "Resígaro", ["rgs"] = "Southern Roglai", ["rgu"] = "Ringgou", ["rhg"] = "Rohingya", ["rhp"] = "Yahang", ["ria"] = "Indian Riang", ["rie"] = "Rien", ["ril"] = "Myanma Riang", ["rim"] = "Nyaturu", ["rin"] = "Nungu", ["rir"] = "Ribun", ["rit"] = "Ritarungo", ["riu"] = "Riung", ["rjb"] = "Rajbanshi", ["rjg"] = "Rajong", ["rji"] = "Raji", ["rjs"] = "Rajbanshi", ["rka"] = "Kraol", ["rkb"] = "Rikbaktsa", ["rkh"] = "Rakahanga-Manihiki", ["rkm"] = "Marka", ["rkt"] = "Rangpuri", ["rkw"] = "Arakwal", ["rma"] = "Rama", ["rmb"] = "Rembarunga", ["rmd"] = "Traveller Danish", ["rme"] = "Angloromani", ["rmf"] = "Kalo Finnish Romani", ["rmg"] = "Traveller Norwegian", ["rmh"] = "Murkim", ["rmi"] = "Lomavren", ["rmk"] = "Romkun", ["rml"] = "Baltic Romani", ["rmm"] = "Roma", ["rmn"] = "Balkan Romani", ["rmo"] = "Sinte Romani", ["rmp"] = "Rempi", ["rmq"] = "Caló", ["rmr"] = "Caló", ["rms"] = "Romanian Sign Language", ["rmt"] = "Domari", ["rmu"] = "Tavringer Romani", ["rmv"] = "Romanova", ["rmw"] = "Welsh Romani", ["rmx"] = "Romam", ["rmz"] = "Marma", ["rna"] = "Runa", ["rnd"] = "Ruund", ["rng"] = "Ronga", ["rnl"] = "Ranglong", ["rnn"] = "Roon", ["rnp"] = "Rongpo", ["rnr"] = "Nari Nari", ["rnw"] = "Rungwa", ["roa"] = "Romance languages", ["roa-Tara"] = "Tarantino", ["rob"] = "Tae'", ["roc"] = "Cacgia Roglai", ["rod"] = "Rogo", ["roe"] = "Ronji", ["rof"] = "Rombo", ["rog"] = "Northern Roglai", ["roh"] = "Romansh", ["rol"] = "Romblomanon", ["rom"] = "Romany", ["ron"] = "Romanian", ["roo"] = "Rotokas", ["rop"] = "Kriol", ["ror"] = "Rongga", ["rou"] = "Runga", ["row"] = "Dela-Oenale", ["rpn"] = "Repanbitip", ["rpt"] = "Rapting", ["rri"] = "Ririo", ["rro"] = "Waima", ["rrt"] = "Arritinngithigh", ["rsb"] = "Romano-Serbian", ["rsi"] = "Rennellese Sign Language", ["rsl"] = "Russian Sign Language", ["rsm"] = "Miriwoong Sign Language", ["rtc"] = "Rungtu Chin", ["rth"] = "Ratahan", ["rtm"] = "Rotuman", ["rts"] = "Yurats", ["rtw"] = "Rathawi", ["rub"] = "Gungu", ["ruc"] = "Ruli", ["ruf"] = "Luguru", ["rug"] = "Roviana", ["ruh"] = "Ruga", ["rui"] = "Rufiji", ["ruk"] = "Che", ["rum"] = "Romanian", ["run"] = "Rundi", ["ruo"] = "Istro Romanian", ["rus"] = "Russian", ["ruu"] = "Lanas Lobu", ["ruy"] = "Nigerian Mala", ["ruz"] = "Ruma", ["rwa"] = "Rawo", ["rwk"] = "Rwa", ["rwm"] = "Ugandan Amba", ["rwo"] = "Rawa", ["rwr"] = "Indian Marwari", ["rws"] = "Rawas", ["rxd"] = "Ngardi", ["rxw"] = "Karuwali", ["ryn"] = "Northern Amami-Oshima", ["rys"] = "Yaeyama", ["rzh"] = "Razihi", ["saa"] = "Saba", ["sab"] = "Buglere", ["sac"] = "Mesquakie", ["sad"] = "Sandawe", ["sae"] = "Sabanês", ["saf"] = "Safaliba", ["sag"] = "Sango", ["sai"] = "South American Indian languages", ["saj"] = "Sahu", ["sak"] = "Sake", ["sal"] = "Salishan languages", ["sam"] = "Samaritan Aramaic", ["san"] = "Sanskrit", ["sao"] = "Sause", ["sap"] = "Sanapaná", ["saq"] = "Samburu", ["sar"] = "Saraveca", ["sas"] = "Sasak", ["sau"] = "Saleman", ["sav"] = "Saafi-Saafi", ["saw"] = "Sawi", ["sax"] = "Sa", ["say"] = "Saya", ["saz"] = "Saurashtra", ["sba"] = "Ngambay", ["sbb"] = "Simbo", ["sbc"] = "Papua New Guinean Kele", ["sbd"] = "Southern Samo", ["sbe"] = "Saliba", ["sbf"] = "Shabo", ["sbg"] = "Seget", ["sbh"] = "Sori-Harengan", ["sbi"] = "Seti", ["sbj"] = "Surbakhal", ["sbk"] = "Safwa", ["sbl"] = "Botolan Sambal", ["sbm"] = "Sagala", ["sbn"] = "Sindhi Bhil", ["sbo"] = "Sabüm", ["sbp"] = "Tanzanian Sangu", ["sbq"] = "Sileibi", ["sbr"] = "Sembakung Murut", ["sbs"] = "Subiya", ["sbt"] = "Kimki", ["sbu"] = "Stod Bhoti", ["sbv"] = "Sabine", ["sbw"] = "Simba", ["sbx"] = "Seberuang", ["sby"] = "Soli", ["sbz"] = "Sara Kaba", ["sca"] = "Sansu", ["scb"] = "Chut", ["scc"] = "Serbian", ["sce"] = "Dongxiang", ["scf"] = "San Miguel Creole French", ["scg"] = "Sanggau", ["sch"] = "Sakechep", ["sci"] = "Sri Lankan Creole Malay", ["sck"] = "Sadri", ["scl"] = "Shina", ["scp"] = "Helambu Sherpa", ["scq"] = "Sa'och", ["scr"] = "Croatian", ["scs"] = "North Slavey", ["sct"] = "Southern Katang", ["scu"] = "Shumcho", ["scv"] = "Sheni", ["scw"] = "Sha", ["scx"] = "Sicel", ["sda"] = "Toraja-Sa'dan", ["sdb"] = "Shabak", ["sdd"] = "Semendo", ["sde"] = "Surubu", ["sdf"] = "Sarli", ["sdg"] = "Savi", ["sdi"] = "Sindang Kelingi", ["sdj"] = "Suundi", ["sdk"] = "Sos Kundi", ["sdl"] = "Saudi Arabian Sign Language", ["sdm"] = "Semandang", ["sdn"] = "Gallurese Sardinian", ["sdo"] = "Bukar Sadong", ["sdp"] = "Sherdukpen", ["sdq"] = "Semandang", ["sdr"] = "Oraon Sadri", ["sds"] = "Sened", ["sdt"] = "Shuadit", ["sdu"] = "Sarudu", ["sdx"] = "Sibu", ["sdz"] = "Sallands", ["sea"] = "Semai", ["seb"] = "Shempire Senoufo", ["sec"] = "Sechelt", ["sed"] = "Sedang", ["see"] = "Seneca", ["sef"] = "Cebaara Senoufo", ["seg"] = "Segeju", ["seh"] = "Sena", ["sej"] = "Sene", ["sek"] = "Sekani", ["sel"] = "Selkup", ["sem"] = "Semitic languages", ["sen"] = "Nanerigé Sénoufo", ["seo"] = "Suarmin", ["sep"] = "Sìcìté Sénoufo", ["seq"] = "Senara Sénoufo", ["ser"] = "Serrano", ["set"] = "Sentani", ["seu"] = "Serui-Laut", ["sev"] = "Nyarafolo Senoufo", ["sew"] = "Sewa Bay", ["sey"] = "Secoya", ["sez"] = "Senthang Chin", ["sfb"] = "Langue des signes de Belgique Francophone", ["sfe"] = "Eastern Subanen", ["sfm"] = "Small Flowery Miao", ["sfs"] = "South African Sign Language", ["sfw"] = "Sehwi", ["sga"] = "Old Irish", ["sgb"] = "Mag-Anchi Ayta", ["sgc"] = "Kipsigis", ["sgd"] = "Surigaonon", ["sge"] = "Segai", ["sgg"] = "Swiss-German Sign Language", ["sgh"] = "Shughni", ["sgi"] = "Suga", ["sgj"] = "Surgujia", ["sgk"] = "Sangkong", ["sgl"] = "Sanglechi-Ishkashimi", ["sgm"] = "Singa", ["sgn"] = "Sign languages", ["sgo"] = "Songa", ["sgp"] = "Singpho", ["sgr"] = "Sangisari", ["sgt"] = "Brokpake", ["sgu"] = "Salas", ["sgw"] = "Sebat Bet Gurage", ["sgx"] = "Sierra Leone Sign Language", ["sgy"] = "Sanglechi", ["sgz"] = "Sursurunga", ["sha"] = "Shall-Zwall", ["shb"] = "Ninam", ["shc"] = "Sonde", ["shd"] = "Kundal Shahi", ["she"] = "Sheko", ["shg"] = "Shua", ["shh"] = "Shoshoni", ["shj"] = "Shatt", ["shk"] = "Shilluk", ["shl"] = "Shendu", ["shm"] = "Shahrudi", ["sho"] = "Shanga", ["shp"] = "Shipibo-Conibo", ["shq"] = "Sala", ["shr"] = "Shi", ["shs"] = "Shuswap", ["sht"] = "Shasta", ["shu"] = "Chadian Arabic", ["shv"] = "Shehri", ["shw"] = "Shwai", ["shx"] = "She", ["shz"] = "Syenara Senoufo", ["sia"] = "Akkala Sami", ["sib"] = "Sebob Kenyah", ["sic"] = "Malinguat", ["sid"] = "Sidamo", ["sie"] = "Simaa", ["sif"] = "Siamou", ["sig"] = "Paasaal", ["sih"] = "Zire", ["sii"] = "Shom Peng", ["sij"] = "Numbami", ["sik"] = "Sikiana", ["sil"] = "Tumulung Sisaala", ["sim"] = "Papua New Guinean Mende", ["sin"] = "Sinhala", ["sio"] = "Siouan languages", ["sip"] = "Sikkimese", ["siq"] = "Sonia", ["sir"] = "Siri", ["sis"] = "Siuslaw", ["sit"] = "Sino-Tibetan languages", ["siu"] = "Sinagen", ["siv"] = "Sumariup", ["siw"] = "Siwai", ["six"] = "Sumau", ["siy"] = "Sivandi", ["siz"] = "Siwi", ["sja"] = "Epena", ["sjb"] = "Sajau Basap", ["sjg"] = "Assangori", ["sjk"] = "Kemi Sami", ["sjl"] = "Sajalong", ["sjm"] = "Mapun", ["sjn"] = "Sindarin", ["sjo"] = "Xibe", ["sjp"] = "Surajpuri", ["sjr"] = "Siar-Lak", ["sjs"] = "Senhaja De Srair", ["sjt"] = "Ter Sami", ["sju"] = "Ume Sami", ["sjw"] = "Shawnee", ["ska"] = "Skagit", ["skb"] = "Saek", ["skc"] = "Sauk", ["skd"] = "Southern Sierra Miwok", ["ske"] = "Vanuatu Seke", ["skf"] = "Sakirabiá", ["skg"] = "Sakalava Malagasy", ["skh"] = "Sikule", ["ski"] = "Sika", ["skj"] = "Nepali Seke", ["skk"] = "Sok", ["skl"] = "Selako", ["skm"] = "Sakam", ["skn"] = "Kolibugan Subanon", ["sko"] = "Seko Tengah", ["skp"] = "Sekapan", ["skq"] = "Sininkere", ["sks"] = "Maia", ["skt"] = "Sakata", ["sku"] = "Sakao", ["skv"] = "Skou", ["skw"] = "Skepi Creole Dutch", ["skx"] = "Seko Padang", ["sky"] = "Sikaiana", ["skz"] = "Sekar", ["sla"] = "Slavic languages", ["slb"] = "Kahumamahon Saluan", ["slc"] = "Sáliba", ["sld"] = "Sissala", ["sle"] = "Sholaga", ["slf"] = "Swiss-Italian Sign Language", ["slg"] = "Selungai Murut", ["slh"] = "Southern Puget Sound Salish", ["slj"] = "Salumá", ["slk"] = "Slovak", ["sll"] = "Salt-Yui", ["slm"] = "Pangutaran Sama", ["sln"] = "Salinan", ["slo"] = "Slovak", ["slp"] = "Lamaholot", ["slq"] = "Salchuq", ["slr"] = "Salar", ["sls"] = "Singapore Sign Language", ["slt"] = "Sila", ["slu"] = "Selaru", ["slv"] = "Slovenian", ["slw"] = "Sialum", ["slx"] = "Salampasu", ["sly"] = "Selayar", ["slz"] = "Ma'ya", ["smb"] = "Simbari", ["smc"] = "Som", ["smd"] = "Sama", ["sme"] = "Northern Sámi", ["smf"] = "Auwe", ["smg"] = "Simbali", ["smh"] = "Samei", ["smi"] = "Sami languages", ["smj"] = "Lule Sami", ["smk"] = "Bolinao", ["sml"] = "Central Sama", ["smm"] = "Musasa", ["smo"] = "Samoan", ["smp"] = "Samaritan", ["smq"] = "Samo", ["smr"] = "Simeulue", ["smt"] = "Simte", ["smu"] = "Somray", ["smv"] = "Samvedi", ["smw"] = "Sumbawa", ["smx"] = "Samba", ["smy"] = "Semnani", ["smz"] = "Simeku", ["sna"] = "Shona", ["snb"] = "Sebuyau", ["snc"] = "Sinaugoro", ["snd"] = "Sindhi", ["sne"] = "Jagoi", ["snf"] = "Noon", ["sng"] = "Congolese Sanga", ["snh"] = "Shinabo", ["sni"] = "Sensi", ["snj"] = "Riverain Sango", ["snk"] = "Soninke", ["snl"] = "Sangil", ["snm"] = "Southern Ma'di", ["snn"] = "Siona", ["sno"] = "Snohomish", ["snp"] = "Siane", ["snq"] = "Gabon Sangu", ["snr"] = "Sihan", ["sns"] = "South West Bay", ["snu"] = "Senggi", ["snv"] = "Sa'ban", ["snw"] = "Selee", ["snx"] = "Sam", ["sny"] = "Saniyo-Hiyewe", ["snz"] = "Sinsauru", ["soa"] = "Thai Song", ["sob"] = "Sobei", ["soc"] = "Congolese So", ["sod"] = "Songoora", ["soe"] = "Songomeno", ["sog"] = "Sogdian", ["soh"] = "Aka", ["soi"] = "Sonha", ["soj"] = "Soi", ["sok"] = "Sokoro", ["sol"] = "Solos", ["som"] = "Somali", ["son"] = "Songhai languages", ["soo"] = "Songo", ["sop"] = "Songe", ["soq"] = "Kanasi", ["sor"] = "Somrai", ["sos"] = "Seeku", ["sot"] = "Sotho", ["sou"] = "Southern Thai", ["sov"] = "Sonsorol", ["sow"] = "Sowanda", ["sox"] = "Cameroonian So", ["soy"] = "Miyobe", ["soz"] = "Temi", ["spa"] = "Spanish", ["spb"] = "Indonesian Sepa", ["spc"] = "Sapé", ["spd"] = "Saep", ["spe"] = "Papua New Guinean Sepa", ["spg"] = "Sian", ["spi"] = "Saponi", ["spk"] = "Sengo", ["spl"] = "Selepet", ["spm"] = "Sepen", ["spn"] = "Sanapaná", ["spo"] = "Spokane", ["spp"] = "Supyire Senoufo", ["spq"] = "Loreto-Ucayali Spanish", ["spr"] = "Saparua", ["sps"] = "Saposa", ["spt"] = "Spiti Bhoti", ["spu"] = "Sapuan", ["spv"] = "Sambalpuri", ["spx"] = "South Picene", ["spy"] = "Sabaot", ["sqa"] = "Shama-Sambuga", ["sqh"] = "Shau", ["sqi"] = "Albanian", ["sqk"] = "Albanian Sign Language", ["sqm"] = "Suma", ["sqn"] = "Susquehannock", ["sqo"] = "Sorkhei", ["sqq"] = "Sou", ["sqr"] = "Siculo Arabic", ["sqs"] = "Sri Lankan Sign Language", ["sqt"] = "Soqotri", ["squ"] = "Squamish", ["sra"] = "Saruga", ["srb"] = "Sora", ["src"] = "Logudorese Sardinian", ["srd"] = "Sardinian", ["sre"] = "Sara", ["srf"] = "Nafi", ["srg"] = "Sulod", ["srh"] = "Sarikoli", ["sri"] = "Siriano", ["srj"] = "Serawai", ["srk"] = "Serudung Murut", ["srl"] = "Isirawa", ["srm"] = "Saramaccan", ["srp"] = "Serbian", ["srq"] = "Sirionó", ["srr"] = "Serer", ["srs"] = "Sarsi", ["srt"] = "Sauri", ["sru"] = "Suruí", ["srv"] = "Waray Sorsogon", ["srw"] = "Serua", ["srx"] = "Sirmauri", ["sry"] = "Sera", ["srz"] = "Shahmirzadi", ["ssa"] = "Nilo-Saharan languages", ["ssb"] = "Southern Sama", ["ssc"] = "Suba-Simbiti", ["ssd"] = "Siroi", ["sse"] = "Balangingi", ["ssf"] = "Thao", ["ssg"] = "Seimat", ["ssh"] = "Shihhi Arabic", ["ssi"] = "Sansi", ["ssj"] = "Sausi", ["ssk"] = "Sunam", ["ssl"] = "Western Sisaala", ["ssm"] = "Semnam", ["ssn"] = "Sanye", ["sso"] = "Sissano", ["ssp"] = "Spanish Sign Language", ["ssq"] = "So'a", ["ssr"] = "Swiss-French Sign Language", ["sss"] = "Sô", ["sst"] = "Sinasina", ["ssu"] = "Susuami", ["ssv"] = "Shark Bay", ["ssw"] = "Swati", ["ssx"] = "Samberigi", ["ssy"] = "Saho", ["ssz"] = "Sengseng", ["sta"] = "Settla", ["stb"] = "Northern Subanen", ["stc"] = "Santa Cruz", ["std"] = "Sentinel", ["ste"] = "Liana-Seti", ["stf"] = "Seta", ["stg"] = "Trieng", ["sth"] = "Shelta", ["sti"] = "Bulo Stieng", ["stj"] = "Matya Samo", ["stk"] = "Arammba", ["stl"] = "Stellingwerfs", ["stm"] = "Setaman", ["stn"] = "Owa", ["sto"] = "Stoney", ["stp"] = "Southeastern Tepehuan", ["str"] = "Straits Salish", ["sts"] = "Shumashti", ["stt"] = "Budeh Stieng", ["stu"] = "Samtao", ["stv"] = "Silt'e", ["stw"] = "Satawalese", ["sua"] = "Sulka", ["sub"] = "Suku", ["suc"] = "Western Subanon", ["sue"] = "Suena", ["suf"] = "Tarpia", ["sug"] = "Suganga", ["suh"] = "Suba", ["sui"] = "Suki", ["suj"] = "Shubi", ["suk"] = "Sukuma", ["sul"] = "Surigaonon", ["sum"] = "Sumo-Mayangna", ["sun"] = "Sundanese", ["suq"] = "Suri", ["sur"] = "Mwaghavul", ["sus"] = "Susu", ["sut"] = "Subtiaba", ["suu"] = "Sungkai", ["suv"] = "Sulung", ["suw"] = "Sumbwa", ["sux"] = "Sumerian", ["suy"] = "Suyá", ["suz"] = "Sunwar", ["sva"] = "Svan", ["svb"] = "Ulau-Suain", ["svc"] = "Vincentian Creole English", ["sve"] = "Serili", ["svk"] = "Slovakian Sign Language", ["svm"] = "Slavomolisano", ["svr"] = "Savara", ["svs"] = "Savosavo", ["svx"] = "Skalvian", ["swa"] = "Swahili", ["swb"] = "Comorian", ["swc"] = "Congo Swahili", ["swe"] = "Swedish", ["swf"] = "Sere", ["swg"] = "Swabian", ["swh"] = "Swahili", ["swi"] = "Sui", ["swj"] = "Sira", ["swk"] = "Malawi Sena", ["swl"] = "Swedish Sign Language", ["swm"] = "Samosa", ["swn"] = "Sawknah", ["swo"] = "Shanenawa", ["swp"] = "Suau", ["swq"] = "Sharwa", ["swr"] = "Saweru", ["sws"] = "Seluwasan", ["swt"] = "Sawila", ["swu"] = "Suwawa", ["swv"] = "Shekhawati", ["sww"] = "Sowa", ["swx"] = "Suruahá", ["swy"] = "Sarua", ["sxb"] = "Suba", ["sxc"] = "Sicanian", ["sxe"] = "Sighu", ["sxg"] = "Shixing", ["sxk"] = "Southern Kalapuya", ["sxl"] = "Selian", ["sxm"] = "Samre", ["sxn"] = "Sangir", ["sxo"] = "Sorothaptic", ["sxr"] = "Saaroa", ["sxs"] = "Sasaru", ["sxu"] = "Upper Saxon", ["sxw"] = "Saxwe Gbe", ["sya"] = "Siang", ["syb"] = "Central Subanen", ["syc"] = "Classical Syriac", ["syi"] = "Seki", ["syk"] = "Sukur", ["sym"] = "Maya Samo", ["syn"] = "Senaya", ["syo"] = "Suoy", ["syr"] = "Syriac languages", ["sys"] = "Sinyar", ["syw"] = "Kagate", ["syx"] = "Samay", ["syy"] = "Al-Sayyid Bedouin Sign Language", ["sza"] = "Semelai", ["szb"] = "Ngalum", ["szc"] = "Semaq Beri", ["szd"] = "Seru", ["sze"] = "Seze", ["szg"] = "Sengele", ["szk"] = "Sizaki", ["szn"] = "Sula", ["szp"] = "Suabo", ["szs"] = "Solomon Islands Sign Language", ["szv"] = "Fako Division Isu", ["szw"] = "Sawai", ["taa"] = "Lower Tanana", ["tab"] = "Tabassaran", ["tac"] = "Lowland Tarahumara", ["tad"] = "Tause", ["tae"] = "Tariano", ["taf"] = "Tapirapé", ["tag"] = "Tagoi", ["tah"] = "Tahitian", ["tai"] = "Tai languages", ["taj"] = "Eastern Tamang", ["tak"] = "Tala", ["tal"] = "Tal", ["tam"] = "Tamil", ["tan"] = "Tangale", ["tao"] = "Yami", ["tap"] = "Taabwa", ["taq"] = "Tamasheq", ["tar"] = "Central Tarahumara", ["tas"] = "Tay Boi", ["tat"] = "Tatar", ["tau"] = "Upper Tanana", ["tav"] = "Tatuyo", ["taw"] = "Tai", ["tax"] = "Tamki", ["taz"] = "Tocho", ["tba"] = "Tubarão", ["tbb"] = "Tapeba", ["tbc"] = "Takia", ["tbd"] = "Kaki Ae", ["tbe"] = "Tanimbili", ["tbf"] = "Mandara", ["tbg"] = "North Tairora", ["tbh"] = "Thurawal", ["tbi"] = "Gaam", ["tbj"] = "Tiang", ["tbk"] = "Calamian Tagbanwa", ["tbl"] = "Tboli", ["tbm"] = "Tagbu", ["tbn"] = "Barro Negro Tunebo", ["tbo"] = "Tawala", ["tbp"] = "Taworta", ["tbr"] = "Tumtum", ["tbs"] = "Tanguat", ["tbt"] = "Kitembo Tembo", ["tbu"] = "Tubar", ["tbv"] = "Tobo", ["tbw"] = "Tagbanwa", ["tbx"] = "Kapin", ["tby"] = "Tabaru", ["tbz"] = "Ditammari", ["tca"] = "Ticuna", ["tcb"] = "Tanacross", ["tcc"] = "Datooga", ["tcd"] = "Tafi", ["tce"] = "Southern Tutchone", ["tcf"] = "Malinaltepec Tlapanec", ["tcg"] = "Tamagario", ["tch"] = "Turks And Caicos Creole English", ["tci"] = "Wára", ["tck"] = "Tchitchege", ["tcl"] = "Myanma Taman", ["tcm"] = "Tanahmerah", ["tcn"] = "Tichurong", ["tco"] = "Taungyo", ["tcp"] = "Tawr Chin", ["tcq"] = "Kaiy", ["tcs"] = "Torres Strait Creole", ["tct"] = "T'en", ["tcu"] = "Southeastern Tarahumara", ["tcw"] = "Tecpatlán Totonac", ["tcx"] = "Toda", ["tcz"] = "Thado Chin", ["tda"] = "Tagdal", ["tdb"] = "Panchpargania", ["tdc"] = "Emberá-Tadó", ["tde"] = "Tiranige Diga Dogon", ["tdf"] = "Talieng", ["tdg"] = "Western Tamang", ["tdh"] = "Thulung", ["tdi"] = "Tomadino", ["tdj"] = "Tajio", ["tdk"] = "Tambas", ["tdl"] = "Sur", ["tdm"] = "Taruma", ["tdn"] = "Tondano", ["tdo"] = "Teme", ["tdq"] = "Tita", ["tdr"] = "Todrah", ["tds"] = "Doutai", ["tdt"] = "Tetun Dili", ["tdu"] = "Tempasuk Dusun", ["tdv"] = "Toro", ["tdx"] = "Tandroy-Mahafaly Malagasy", ["tdy"] = "Tadyawan", ["tea"] = "Temiar", ["teb"] = "Tetete", ["tec"] = "Terik", ["ted"] = "Tepo Krumen", ["tee"] = "Huehuetla Tepehua", ["tef"] = "Teressa", ["teg"] = "Teke-Tege", ["teh"] = "Tehuelche", ["tei"] = "Torricelli", ["tek"] = "Ibali Teke", ["tel"] = "Telugu", ["tem"] = "Temne", ["ten"] = "Colombian Tama", ["teo"] = "Teso", ["tep"] = "Tepecano", ["teq"] = "Temein", ["ter"] = "Tereno", ["tes"] = "Tengger", ["teu"] = "Soo", ["tev"] = "Teor", ["tew"] = "American Tewa", ["tex"] = "Tennet", ["tey"] = "Tulishi", ["tez"] = "Tetserret", ["tfi"] = "Tofin Gbe", ["tfn"] = "Tanaina", ["tfo"] = "Tefaro", ["tfr"] = "Teribe", ["tft"] = "Ternate", ["tga"] = "Sagalla", ["tgb"] = "Tebilung", ["tgc"] = "Tigak", ["tgd"] = "Ciwogai", ["tge"] = "Eastern Gorkha Tamang", ["tgf"] = "Chalikha", ["tgg"] = "Tangga", ["tgh"] = "Tobagonian Creole English", ["tgi"] = "Lawunuia", ["tgj"] = "Tagin", ["tgk"] = "Tajik", ["tgl"] = "Tagalog", ["tgn"] = "Tandaganon", ["tgo"] = "Sudest", ["tgp"] = "Tangoa", ["tgq"] = "Tring", ["tgr"] = "Tareng", ["tgs"] = "Nume", ["tgt"] = "Central Tagbanwa", ["tgu"] = "Tanggu", ["tgv"] = "Tingui-Boto", ["tgw"] = "Tagwana Senoufo", ["tgx"] = "Tagish", ["tgy"] = "Togoyo", ["tgz"] = "Tagalaka", ["tha"] = "Thai", ["thc"] = "Tai Hang Tong", ["thd"] = "Thayore", ["the"] = "Chitwania Tharu", ["thf"] = "Thangmi", ["thh"] = "Northern Tarahumara", ["thi"] = "Tai Long", ["thk"] = "Tharaka", ["thl"] = "Dangaura Tharu", ["thm"] = "Aheu", ["thn"] = "Thachanadan", ["thp"] = "Thompson", ["thq"] = "Kochila Tharu", ["thr"] = "Rana Tharu", ["ths"] = "Thakali", ["tht"] = "Tahltan", ["thu"] = "Thuri", ["thv"] = "Tahaggart Tamahaq", ["thw"] = "Thudam", ["thx"] = "The", ["thy"] = "Tha", ["thz"] = "Tayart Tamajeq", ["tia"] = "Tidikelt Tamazight", ["tib"] = "Tibetan", ["tic"] = "Tira", ["tid"] = "Tidong", ["tie"] = "Tingal", ["tif"] = "Tifal", ["tig"] = "Tigre", ["tih"] = "Timugon Murut", ["tii"] = "Tiene", ["tij"] = "Tilung", ["tik"] = "Tikar", ["til"] = "Tillamook", ["tim"] = "Timbe", ["tin"] = "Tindi", ["tio"] = "Teop", ["tip"] = "Trimuris", ["tiq"] = "Tiéfo", ["tir"] = "Tigrinya", ["tis"] = "Masadiit Itneg", ["tit"] = "Tinigua", ["tiu"] = "Adasen Itneg", ["tiv"] = "Tiv", ["tiw"] = "Tiwi", ["tix"] = "Southern Tiwa", ["tiy"] = "Tiruray", ["tiz"] = "Tai Hongjin", ["tja"] = "Tajuasohn", ["tjg"] = "Tunjung", ["tji"] = "Northern Tujia", ["tjj"] = "Tjungundji", ["tjl"] = "Tai Laing", ["tjm"] = "Timucua", ["tjn"] = "Tonjon", ["tjo"] = "Temacine Tamazight", ["tjp"] = "Tjupany", ["tjs"] = "Southern Tujia", ["tju"] = "Tjurruru", ["tjw"] = "Djabwurrung", ["tka"] = "Truká", ["tkb"] = "Buksa", ["tkd"] = "Tukudede", ["tke"] = "Takwane", ["tkf"] = "Tukumanféd", ["tkg"] = "Tesaka Malagasy", ["tkk"] = "Takpa", ["tkl"] = "Tokelau", ["tkm"] = "Takelma", ["tkn"] = "Toku-No-Shima", ["tkp"] = "Tikopia", ["tkq"] = "Tee", ["tkr"] = "Tsakhur", ["tks"] = "Takestani", ["tkt"] = "Kathoriya Tharu", ["tku"] = "Upper Necaxa Totonac", ["tkv"] = "Mur Pano", ["tkw"] = "Teanu", ["tkx"] = "Tangko", ["tkz"] = "Takua", ["tla"] = "Southwestern Tepehuan", ["tlb"] = "Tobelo", ["tlc"] = "Yecuatla Totonac", ["tld"] = "Talaud", ["tle"] = "Southern Marakwet", ["tlf"] = "Telefol", ["tlg"] = "Tofanma", ["tlh"] = "Klingon", ["tli"] = "Tlingit", ["tlj"] = "Talinga-Bwisi", ["tlk"] = "Taloki", ["tll"] = "Tetela", ["tlm"] = "Tolomako", ["tln"] = "Talondo'", ["tlo"] = "Talodi", ["tlp"] = "Filomena Mata-Coahuitlán Totonac", ["tlq"] = "Tai Loi", ["tlr"] = "Talise", ["tls"] = "Tambotalo", ["tlt"] = "Teluti", ["tlu"] = "Tulehu", ["tlv"] = "Taliabu", ["tlw"] = "South Wemale", ["tlx"] = "Khehek", ["tlz"] = "Toala'", ["tma"] = "Chadian Tama", ["tmb"] = "Katbol", ["tmc"] = "Tumak", ["tmd"] = "Haruai", ["tme"] = "Tremembé", ["tmf"] = "Toba-Maskoy", ["tmg"] = "Ternateño", ["tmh"] = "Tamashek", ["tmi"] = "Tutuba", ["tmj"] = "Samarokena", ["tmk"] = "Northwestern Tamang", ["tml"] = "Tamnim Citak", ["tmm"] = "Tai Thanh", ["tmn"] = "Indonesian Taman", ["tmo"] = "Temoq", ["tmp"] = "Tai Mène", ["tmq"] = "Tumleo", ["tmr"] = "Talmudic Aramaic", ["tms"] = "Tima", ["tmt"] = "Tasmate", ["tmu"] = "Iau", ["tmv"] = "Motembo Tembo", ["tmw"] = "Temuan", ["tmx"] = "Tomyang", ["tmy"] = "Tami", ["tmz"] = "Tamanaku", ["tna"] = "Tacana", ["tnb"] = "Western Tunebo", ["tnc"] = "Tanimuca-Retuarã", ["tnd"] = "Angosturas Tunebo", ["tne"] = "Tinoc Kallahan", ["tnf"] = "Tangshewi", ["tng"] = "Tobanga", ["tnh"] = "Maiani", ["tni"] = "Tandia", ["tnj"] = "Tanjong", ["tnk"] = "Kwamera", ["tnl"] = "Lenakel", ["tnm"] = "Tabla", ["tnn"] = "North Tanna", ["tno"] = "Toromono", ["tnp"] = "Whitesands", ["tnq"] = "Taino", ["tnr"] = "Budik", ["tns"] = "Tenis", ["tnt"] = "Tontemboan", ["tnu"] = "Tay Khang", ["tnv"] = "Tangchangya", ["tnw"] = "Tonsawang", ["tnx"] = "Tanema", ["tny"] = "Tongwe", ["tnz"] = "Thai Tonga", ["tob"] = "Toba", ["toc"] = "Coyutla Totonac", ["tod"] = "Toma", ["toe"] = "Tomedes", ["tof"] = "Gizrra", ["tog"] = "Nyasan Tonga", ["toh"] = "Gitonga", ["toi"] = "Zambian Tonga", ["toj"] = "Tojolabal", ["tokipona"] = "Toki Pona", ["tol"] = "Tolowa", ["tom"] = "Tombulu", ["ton"] = "Tongan", ["too"] = "Xicotepec De Juárez Totonac", ["top"] = "Papantla Totonac", ["toq"] = "Toposa", ["tor"] = "Togbo-Vara Banda", ["tos"] = "Highland Totonac", ["tot"] = "Patla-Chicontla Totonac", ["tou"] = "Tho", ["tov"] = "Upper Taromi", ["tow"] = "Jemez", ["tox"] = "Tobian", ["toy"] = "Topoiyo", ["toz"] = "To", ["tpa"] = "Taupota", ["tpc"] = "Azoyú Tlapanec", ["tpe"] = "Tippera", ["tpf"] = "Tarpia", ["tpg"] = "Kula", ["tpj"] = "Tapieté", ["tpk"] = "Tupinikin", ["tpl"] = "Tlacoapa Tlapanec", ["tpm"] = "Tampulma", ["tpn"] = "Tupinambá", ["tpo"] = "Tai Pao", ["tpp"] = "Pisaflores Tepehua", ["tpq"] = "Tukpa", ["tpr"] = "Tuparí", ["tpt"] = "Tlachichilco Tepehua", ["tpu"] = "Tampuan", ["tpv"] = "Tanapag", ["tpw"] = "Tupí", ["tpx"] = "Acatepec Tlapanec", ["tpy"] = "Trumaí", ["tpz"] = "Tinputz", ["tqb"] = "Tembé", ["tql"] = "Lehali", ["tqm"] = "Turumsa", ["tqn"] = "Tenino", ["tqo"] = "Toaripi", ["tqp"] = "Tomoip", ["tqq"] = "Tunni", ["tqr"] = "Torona", ["tqt"] = "Ozumatlán Totonac", ["tqu"] = "Touo", ["tqw"] = "Tonkawa", ["tra"] = "Tirahi", ["trb"] = "Terebu", ["trc"] = "Copala Triqui", ["trd"] = "Turi", ["tre"] = "East Tarangan", ["trf"] = "Trinidadian Creole English", ["trg"] = "Lishán Didán", ["trh"] = "Turaka", ["tri"] = "Trió", ["trj"] = "Toram", ["trl"] = "Traveller Scottish", ["trm"] = "Tregami", ["trn"] = "Trinitario", ["tro"] = "Tarao Naga", ["trp"] = "Kok Borok", ["trq"] = "San Martín Itunyoso Triqui", ["trr"] = "Taushiro", ["trs"] = "Chicahuaxtla Triqui", ["trt"] = "Tunggare", ["trw"] = "Torwali", ["trx"] = "Tringgus", ["try"] = "Turung", ["trz"] = "Torá", ["tsa"] = "Tsaangi", ["tsb"] = "Tsamai", ["tsc"] = "Tswa", ["tsd"] = "Tsakonian", ["tse"] = "Tunisian Sign Language", ["tsf"] = "Southwestern Tamang", ["tsg"] = "Tausug", ["tsh"] = "Tsuvan", ["tsi"] = "Tsimshian", ["tsj"] = "Tshangla", ["tsk"] = "Tseku", ["tsl"] = "Ts'ün-Lao", ["tsm"] = "Turkish Sign Language", ["tsn"] = "Tswana", ["tso"] = "Tsonga", ["tsp"] = "Northern Toussian", ["tsq"] = "Thai Sign Language", ["tsr"] = "Akei", ["tss"] = "Taiwan Sign Language", ["tst"] = "Tondi Songway Kiini", ["tsu"] = "Tsou", ["tsv"] = "Tsogo", ["tsw"] = "Tsishingini", ["tsx"] = "Mubami", ["tsy"] = "Tebul Sign Language", ["tsz"] = "Purepecha", ["tta"] = "Tutelo", ["ttb"] = "Gaa", ["ttc"] = "Tektiteko", ["ttd"] = "Tauade", ["tte"] = "Bwanabwana", ["ttf"] = "Tuotomb", ["ttg"] = "Tutong 2", ["tth"] = "Upper Ta'oih", ["tti"] = "Tobati", ["ttk"] = "Totoro", ["ttl"] = "Totela", ["ttm"] = "Northern Tutchone", ["ttn"] = "Towei", ["tto"] = "Lower Ta'oih", ["ttp"] = "Tombelala", ["ttq"] = "Tawallammat Tamajaq", ["ttr"] = "Tera", ["tts"] = "Northeastern Thai", ["ttt"] = "Muslim Tat", ["ttu"] = "Torau", ["ttv"] = "Titan", ["ttw"] = "Tutoh Kenyah", ["ttx"] = "Tutong 1", ["tty"] = "Sikaritai", ["ttz"] = "Tsum", ["tua"] = "Wiarumus", ["tub"] = "Tübatulabal", ["tuc"] = "Mutu", ["tud"] = "Tuxá", ["tue"] = "Tuyuca", ["tuf"] = "Central Tunebo", ["tug"] = "Tunia", ["tuh"] = "Taulil", ["tui"] = "Tupuri", ["tuj"] = "Tugutil", ["tuk"] = "Turkmen", ["tul"] = "Tula", ["tun"] = "Tunica", ["tuo"] = "Tucano", ["tup"] = "Tupi languages", ["tuq"] = "Tedaga", ["tur"] = "Turkish", ["tus"] = "Tuscarora", ["tut"] = "Altaic languages", ["tuu"] = "Tututni", ["tuv"] = "Turkana", ["tux"] = "Tuxináwa", ["tuy"] = "North Tugen", ["tuz"] = "Turka", ["tva"] = "Vaghua", ["tvd"] = "Tsuvadi", ["tve"] = "Te'un", ["tvk"] = "Southeast Ambrym", ["tvl"] = "Tuvalu", ["tvm"] = "Tela-Masbuar", ["tvn"] = "Tavoyan", ["tvo"] = "Tidore", ["tvs"] = "Taveta", ["tvt"] = "Tutsa Naga", ["tvu"] = "Tunen", ["tvw"] = "Sedoa", ["tvx"] = "Taivoan", ["tvy"] = "Timor Pidgin", ["twa"] = "Twana", ["twb"] = "Western Tawbuid", ["twc"] = "Teshenawa", ["twd"] = "Twents", ["twe"] = "Indonesian Tewa", ["twf"] = "Northern Tiwa", ["twg"] = "Tereweng", ["twh"] = "Tai Dón", ["twi"] = "Twi", ["twl"] = "Tawara", ["twm"] = "Tawang Monpa", ["twn"] = "Twendi", ["two"] = "Tswapong", ["twp"] = "Ere", ["twq"] = "Tasawaq", ["twr"] = "Southwestern Tarahumara", ["twt"] = "Turiwára", ["twu"] = "Termanu", ["tww"] = "Tuwari", ["twx"] = "Tewe", ["twy"] = "Tawoyan", ["txa"] = "Tombonuwo", ["txb"] = "Tokharian B", ["txc"] = "Tsetsaut", ["txe"] = "Totoli", ["txg"] = "Tangut", ["txh"] = "Thracian", ["txi"] = "Ikpeng", ["txj"] = "Tarjumo", ["txm"] = "Tomini", ["txn"] = "West Tarangan", ["txo"] = "Toto", ["txq"] = "Tii", ["txr"] = "Tartessian", ["txs"] = "Tonsea", ["txt"] = "Citak", ["txu"] = "Kayapó", ["txx"] = "Tatana", ["txy"] = "Tanosy Malagasy", ["tya"] = "Tauya", ["tye"] = "Kyenga", ["tyh"] = "O'du", ["tyi"] = "Teke-Tsaayi", ["tyj"] = "Tai Do", ["tyl"] = "Thu Lao", ["tyn"] = "Kombai", ["typ"] = "Thaypan", ["tyr"] = "Tai Daeng", ["tys"] = "Tày Sa Pa", ["tyt"] = "Tày Tac", ["tyu"] = "Kua", ["tyx"] = "Teke-Tyee", ["tyz"] = "Tày", ["tza"] = "Tanzanian Sign Language", ["tzb"] = "Bachajón Tzeltal", ["tzc"] = "Chamula Tzotzil", ["tze"] = "Chenalhó Tzotzil", ["tzh"] = "Oxchuc Tzeltal", ["tzj"] = "Eastern Tzutujil", ["tzl"] = "Talossan", ["tzn"] = "Tugun", ["tzo"] = "Venustiano Carranza Tzotzil", ["tzs"] = "San Andrés Larrainzar Tzotzil", ["tzt"] = "Western Tzutujil", ["tzu"] = "Huixtán Tzotzil", ["tzx"] = "Tabriak", ["tzz"] = "Zinacantán Tzotzil", ["uam"] = "Uamué", ["uan"] = "Kuan", ["uar"] = "Tairuma", ["uba"] = "Ubang", ["ubi"] = "Ubi", ["ubl"] = "Buhi'non Bikol", ["ubm"] = "Upper Baram Kenyah", ["ubr"] = "Ubir", ["ubu"] = "Umbu-Ungu", ["uby"] = "Ubykh", ["uda"] = "Uda", ["ude"] = "Udihe", ["udg"] = "Muduga", ["udi"] = "Udi", ["udj"] = "Ujir", ["udl"] = "Wuzlam", ["udu"] = "Uduk", ["ues"] = "Kioko", ["ufi"] = "Ufim", ["uga"] = "Ugaritic", ["ugb"] = "Kuku-Ugbanh", ["uge"] = "Ughele", ["ugn"] = "Ugandan Sign Language", ["ugo"] = "Ugong", ["ugy"] = "Uruguayan Sign Language", ["uha"] = "Uhami", ["uhn"] = "Damal", ["uig"] = "Uyghur", ["uis"] = "Uisai", ["uiv"] = "Iyive", ["uji"] = "Tanjijili", ["uka"] = "Kaburi", ["ukg"] = "Ukuriguma", ["ukh"] = "Ukhwejo", ["uki"] = "Kui", ["ukk"] = "Muak Sa-aak", ["ukl"] = "Ukrainian Sign Language", ["ukp"] = "Ukpe-Bayobiri", ["ukq"] = "Ukwa", ["ukr"] = "Ukrainian", ["uks"] = "Urubú-Kaapor Sign Language", ["uku"] = "Ukue", ["ukv"] = "Kuku", ["ukw"] = "Ukwuani-Aboh-Ndoni", ["uky"] = "Kuuk-Yak", ["ula"] = "Fungwa", ["ulb"] = "Ulukwumi", ["ulc"] = "Ulch", ["ule"] = "Lule", ["ulf"] = "Usku", ["uli"] = "Ulithian", ["ulk"] = "Meriam", ["ull"] = "Ullatan", ["ulm"] = "Ulumanda'", ["uln"] = "Unserdeutsch", ["ulu"] = "Uma' Lung", ["ulw"] = "Ulwa", ["uma"] = "Umatilla", ["umb"] = "Umbundu", ["umc"] = "Marrucinian", ["umd"] = "Umbindhamu", ["umg"] = "Umbuygamu", ["umi"] = "Ukit", ["umm"] = "Umon", ["umn"] = "Makyan Naga", ["umo"] = "Umotína", ["ump"] = "Umpila", ["umr"] = "Umbugarla", ["ums"] = "Pendau", ["umu"] = "Munsee", ["una"] = "North Watut", ["und"] = "Undetermined", ["une"] = "Uneme", ["ung"] = "Ngarinyin", ["unk"] = "Enawené-Nawé", ["unm"] = "Unami", ["unn"] = "Kurnai", ["unp"] = "Worora", ["unr"] = "Mundari", ["unu"] = "Unubahe", ["unx"] = "Munda", ["unz"] = "Unde Kaili", ["uok"] = "Uokha", ["upi"] = "Umeda", ["upv"] = "Uripiv-Wala-Rano-Atchin", ["ura"] = "Urarina", ["urb"] = "Urubú-Kaapor", ["urc"] = "Urningangg", ["urd"] = "Urdu", ["ure"] = "Uru", ["urf"] = "Uradhi", ["urg"] = "Urigina", ["urh"] = "Urhobo", ["uri"] = "Urim", ["urk"] = "Urak Lawoi'", ["url"] = "Urali", ["urm"] = "Urapmin", ["urn"] = "Uruangnirin", ["uro"] = "Papua New Guinean Ura", ["urp"] = "Uru-Pa-In", ["urr"] = "Lehalurup", ["urt"] = "Urat", ["uru"] = "Urumi", ["urv"] = "Uruava", ["urw"] = "Sop", ["urx"] = "Urimo", ["ury"] = "Orya", ["urz"] = "Uru-Eu-Wau-Wau", ["usa"] = "Usarufa", ["ush"] = "Ushojo", ["usi"] = "Usui", ["usk"] = "Usaghade", ["usp"] = "Uspanteco", ["uss"] = "us-Saare<!-- lowercase u is not a typo-->", ["usu"] = "Uya", ["uta"] = "Otank", ["ute"] = "Ute-Southern Paiute", ["uth"] = "ut-Hun<!-- lowercase u is not a typo-->", ["utp"] = "Solomon Islands Amba", ["utr"] = "Etulo", ["utu"] = "Utu", ["uum"] = "Urum", ["uun"] = "Kulon-Pazeh", ["uur"] = "Vanuatu Ura", ["uuu"] = "U", ["uve"] = "West Uvean", ["uvh"] = "Uri", ["uvl"] = "Lote", ["uwa"] = "Kuku-Uwanh", ["uya"] = "Doko-Uyanga", ["uzb"] = "Uzbek", ["uzn"] = "Northern Uzbek", ["uzs"] = "Southern Uzbek", ["vaa"] = "Vaagri Booli", ["vae"] = "Vale", ["vaf"] = "Vafsi", ["vag"] = "Vagla", ["vah"] = "Varhadi-Nagpuri", ["vai"] = "Vai", ["vaj"] = "Vasekela Bushman", ["val"] = "Vehes", ["vam"] = "Vanimo", ["van"] = "Valman", ["vao"] = "Vao", ["vap"] = "Vaiphei", ["var"] = "Huarijio", ["vas"] = "Vasavi", ["vau"] = "Vanuma", ["vav"] = "Varli", ["vay"] = "Wayu", ["vbb"] = "Southeast Babar", ["vbk"] = "Southwestern Bontok", ["ved"] = "Veddah", ["vel"] = "Veluws", ["vem"] = "Vemgo-Mabas", ["ven"] = "Venda", ["veo"] = "Ventureño", ["ver"] = "Mom Jango", ["vgr"] = "Vaghri", ["vgt"] = "Vlaamse Gebarentaal", ["vic"] = "Virgin Islands Creole English", ["vid"] = "Vidunda", ["vie"] = "Vietnamese", ["vif"] = "Vili", ["vig"] = "Viemo", ["vil"] = "Vilela", ["vin"] = "Vinza", ["vis"] = "Vishavan", ["vit"] = "Viti", ["viv"] = "Iduna", ["vka"] = "Kariyarra", ["vki"] = "Ija-Zuba", ["vkj"] = "Kujarge", ["vkk"] = "Kaur", ["vkl"] = "Kulisusu", ["vkm"] = "Kamakan", ["vko"] = "Kodeoha", ["vkp"] = "Korlai Creole Portuguese", ["vkt"] = "Tenggarong Kutai Malay", ["vku"] = "Kurrama", ["vky"] = "Kayu Agung", ["vlp"] = "Valpei", ["vlr"] = "Vatrata", ["vma"] = "Martuyhunira", ["vmb"] = "Mbabaram", ["vmc"] = "Juxtlahuaca Mixtec", ["vmd"] = "Mudu Koraga", ["vme"] = "East Masela", ["vmg"] = "Minigir", ["vmh"] = "Maraghei", ["vmi"] = "Miwa", ["vmj"] = "Ixtayutla Mixtec", ["vmk"] = "Makhuwa-Shirima", ["vml"] = "Malgana", ["vmm"] = "Mitlatongo Mixtec", ["vmo"] = "Muko-Muko", ["vmp"] = "Soyaltepec Mazatec", ["vmq"] = "Soyaltepec Mixtec", ["vmr"] = "Marenje", ["vms"] = "Moksela", ["vmu"] = "Muluridyi", ["vmv"] = "Valley Maidu", ["vmx"] = "Tamazola Mixtec", ["vmy"] = "Ayautla Mazatec", ["vmz"] = "Mazatlán Mazatec", ["vnk"] = "Vano", ["vnm"] = "Vinmavis", ["vnp"] = "Vunapu", ["vol"] = "Volapük", ["vor"] = "Voro", ["vra"] = "Vera'a", ["vrs"] = "Varisi", ["vrt"] = "Burmbar", ["vsi"] = "Moldova Sign Language", ["vsl"] = "Venezuelan Sign Language", ["vsv"] = "Valencian Sign Language", ["vto"] = "Vitou", ["vum"] = "Vumbu", ["vun"] = "Vunjo", ["vut"] = "Vute", ["vwa"] = "Chinese Awa", ["waa"] = "Walla Walla", ["wab"] = "Wab", ["wac"] = "Wasco-Wishram", ["wad"] = "Wandamen", ["wae"] = "Walser", ["waf"] = "Wakoná", ["wag"] = "Wa'ema", ["wah"] = "Watubela", ["wai"] = "Wares", ["waj"] = "Waffa", ["wak"] = "Wakashan languages", ["wam"] = "Wampanoag", ["wan"] = "Wan", ["wao"] = "Wappo", ["wap"] = "Wapishana", ["waq"] = "Wageman", ["was"] = "Washo", ["wat"] = "Kaninuwa", ["wau"] = "Waurá", ["wav"] = "Waka", ["waw"] = "Waiwai", ["wax"] = "Watam", ["way"] = "Wayana", ["waz"] = "Wampur", ["wba"] = "Warao", ["wbb"] = "Wabo", ["wbe"] = "Waritai", ["wbf"] = "Wara", ["wbh"] = "Wanda", ["wbi"] = "Wanji", ["wbj"] = "Alagwa", ["wbk"] = "Waigali", ["wbl"] = "Wakhi", ["wbm"] = "Wa", ["wbp"] = "Warlpiri", ["wbq"] = "Waddar", ["wbr"] = "Wagdi", ["wbs"] = "West Bengal Sign Language", ["wbt"] = "Wanman", ["wbv"] = "Wajarri", ["wbw"] = "Woi", ["wca"] = "Yanomámi", ["wci"] = "Waci Gbe", ["wdd"] = "Wandji", ["wdg"] = "Wadaginam", ["wdj"] = "Wadjiginy", ["wdk"] = "Wadikali", ["wdu"] = "Wadjigu", ["wdy"] = "Wadjabangayi", ["wea"] = "Wewaw", ["wec"] = "Wè Western", ["wed"] = "Wedau", ["weg"] = "Wergaia", ["weh"] = "Weh", ["wei"] = "Were", ["wel"] = "Welsh", ["wem"] = "Weme Gbe", ["wen"] = "Sorbian languages", ["weo"] = "North Wemale", ["wep"] = "Westphalien", ["wer"] = "Weri", ["wes"] = "Cameroon Pidgin", ["wet"] = "Perai", ["weu"] = "Welaung", ["wew"] = "Wejewa", ["wfg"] = "Yafi", ["wga"] = "Wagaya", ["wgb"] = "Wagawaga", ["wgg"] = "Wangganguru", ["wgi"] = "Wahgi", ["wgo"] = "Waigeo", ["wgu"] = "Wirangu", ["wgw"] = "Wagawaga", ["wgy"] = "Warrgamay", ["wha"] = "Manusela", ["whg"] = "North Wahgi", ["whk"] = "Wahau Kenyah", ["whu"] = "Wahau Kayan", ["wib"] = "Southern Toussian", ["wic"] = "Wichita", ["wie"] = "Wik-Epa", ["wif"] = "Wik-Keyangan", ["wig"] = "Wik-Ngathana", ["wih"] = "Wik-Me'anha", ["wii"] = "Wiaki", ["wij"] = "Wik-Iiyanh", ["wik"] = "Wikalkan", ["wil"] = "Wilawila", ["wim"] = "Wik-Mungkan", ["win"] = "Ho-Chunk", ["wir"] = "Wiraféd", ["wit"] = "Wintu", ["wiu"] = "Wiru", ["wiv"] = "Muduapa", ["wiw"] = "Wirangu", ["wiy"] = "Wiyot", ["wja"] = "Waja", ["wji"] = "Warji", ["wka"] = "Kw'adza", ["wkb"] = "Kumbaran", ["wkd"] = "Wakde", ["wkl"] = "Kalanadi", ["wkr"] = "Keerray-Woorroong", ["wku"] = "Kunduvadi", ["wkw"] = "Wakawaka", ["wky"] = "Wangkayutyuru", ["wla"] = "Walio", ["wlc"] = "Mwali Comorian", ["wle"] = "Wolane", ["wlg"] = "Kunbarlang", ["wlh"] = "Welaun", ["wli"] = "Waioli", ["wlk"] = "Wailaki", ["wll"] = "Sudanese Wali", ["wlm"] = "Middle Welsh", ["wln"] = "Walloon", ["wlo"] = "Wolio", ["wlr"] = "Wailapa", ["wlu"] = "Wuliwuli", ["wlv"] = "Wichí Lhamtés Vejoz", ["wlw"] = "Walak", ["wlx"] = "Ghanaian Wali", ["wly"] = "Waling", ["wma"] = "Nigerian Mawa", ["wmb"] = "Wambaya", ["wmc"] = "Wamas", ["wmd"] = "Mamaindé", ["wme"] = "Wambule", ["wmh"] = "Waima'a", ["wmi"] = "Wamin", ["wmm"] = "Indonesian Maiwa", ["wmn"] = "Waamwang", ["wmo"] = "Wom", ["wms"] = "Wambon", ["wmt"] = "Walmajarri", ["wmw"] = "Mwani", ["wmx"] = "Womo", ["wnb"] = "Wanambre", ["wnc"] = "Wantoat", ["wnd"] = "Wandarang", ["wne"] = "Waneci", ["wng"] = "Wanggom", ["wni"] = "Ndzwani Comorian", ["wnk"] = "Wanukaka", ["wnm"] = "Wanggamala", ["wnn"] = "Wunumara", ["wno"] = "Wano", ["wnp"] = "Wanap", ["wnu"] = "Usan", ["wnw"] = "Wintu", ["wny"] = "Wanyi", ["woa"] = "Tyaraity", ["wob"] = "Wè Northern", ["woc"] = "Wogeo", ["wod"] = "Wolani", ["woe"] = "Woleaian", ["wof"] = "Gambian Wolof", ["wog"] = "Wogamusin", ["woi"] = "Kamang", ["wok"] = "Longto", ["wol"] = "Wolof", ["wom"] = "Nigerian Wom", ["won"] = "Wongo", ["woo"] = "Manombai", ["wor"] = "Woria", ["wos"] = "Hanga Hundi", ["wow"] = "Wawonii", ["woy"] = "Weyto", ["wpc"] = "Maco", ["wra"] = "Warapu", ["wrb"] = "Warluwara", ["wrd"] = "Warduji", ["wre"] = "Ware", ["wrg"] = "Warungu", ["wrh"] = "Wiradhuri", ["wri"] = "Wariyangga", ["wrk"] = "Garrwa", ["wrl"] = "Warlmanpa", ["wrm"] = "Warumungu", ["wrn"] = "Warnang", ["wro"] = "Worrorra", ["wrp"] = "Waropen", ["wrr"] = "Wardaman", ["wrs"] = "Waris", ["wru"] = "Waru", ["wrv"] = "Waruna", ["wrw"] = "Gugu Warra", ["wrx"] = "Wae Rana", ["wry"] = "Merwari", ["wrz"] = "Australian Waray", ["wsa"] = "Warembori", ["wsg"] = "Adilabad Gondi", ["wsi"] = "Wusi", ["wsk"] = "Waskia", ["wsr"] = "Owenia", ["wss"] = "Wasa", ["wsu"] = "Wasu", ["wsv"] = "Wotapuri-Katarqalai", ["wtf"] = "Dumpu", ["wth"] = "Wathawurrung", ["wti"] = "Berta", ["wtk"] = "Watakataui", ["wtm"] = "Mewati", ["wtw"] = "Wotu", ["wua"] = "Wikngenchera", ["wub"] = "Wunambal", ["wud"] = "Wudu", ["wuh"] = "Wutunhua", ["wul"] = "Silimo", ["wum"] = "Wumbvu", ["wun"] = "Bungu", ["wur"] = "Wurrugu", ["wut"] = "Wutung", ["wuv"] = "Wuvulu-Aua", ["wux"] = "Wulna", ["wuy"] = "Wauyai", ["wwa"] = "Waama", ["wwb"] = "Wakabunga", ["wwo"] = "Wetamut", ["wwr"] = "Warrwa", ["www"] = "Wawa", ["wxa"] = "Waxianghua", ["wxw"] = "Wardandi", ["wya"] = "Wyandot", ["wyb"] = "Wangaaybuwan-Ngiyambaa", ["wyi"] = "Woiwurrung", ["wym"] = "Wymysorys", ["wyr"] = "Wayoró", ["wyy"] = "Western Fijian", ["xaa"] = "Andalusian Arabic", ["xab"] = "Sambe", ["xac"] = "Kachari", ["xad"] = "Adai", ["xae"] = "Aequian", ["xag"] = "Aghwan", ["xah"] = "Kahayan", ["xai"] = "Kaimbé", ["xaj"] = "Ararandewára", ["xak"] = "Máku", ["xam"] = "{{!}}Xam", ["xan"] = "Xamtanga", ["xao"] = "Khao", ["xap"] = "Apalachee", ["xaq"] = "Aquitanian", ["xar"] = "Karami", ["xas"] = "Kamas", ["xat"] = "Katawixi", ["xau"] = "Kauwera", ["xav"] = "Xavánte", ["xaw"] = "Kawaiisu", ["xay"] = "Kayan Mahakam", ["xba"] = "Brazilian Kamba", ["xbb"] = "Lower Burdekin", ["xbc"] = "Bactrian", ["xbd"] = "Bindal", ["xbe"] = "Bigambal", ["xbg"] = "Bunganditj", ["xbi"] = "Kombio", ["xbj"] = "Birrpayi", ["xbm"] = "Middle Breton", ["xbn"] = "Kenaboi", ["xbo"] = "Bolgarian", ["xbp"] = "Bibbulman", ["xbr"] = "Kambera", ["xbw"] = "Kambiwá", ["xbx"] = "Kabixí", ["xby"] = "Batyala", ["xcb"] = "Cumbric", ["xcc"] = "Camunic", ["xce"] = "Celtiberian", ["xcg"] = "Cisalpine Gaulish", ["xch"] = "Chemakum", ["xcl"] = "Classical Armenian", ["xcm"] = "Comecrudo", ["xcn"] = "Cotoname", ["xco"] = "Chorasmian", ["xcr"] = "Carian", ["xct"] = "Classical Tibetan", ["xcu"] = "Curonian", ["xcv"] = "Chuvantsy", ["xcw"] = "Coahuilteco", ["xcy"] = "Cayuse", ["xda"] = "Darkinyung", ["xdc"] = "Dacian", ["xdk"] = "Dharuk", ["xdm"] = "Edomite", ["xdo"] = "Kwandu", ["xdy"] = "Malayic Dayak", ["xeb"] = "Eblan", ["xed"] = "Hdi", ["xeg"] = "{{!}}{{!}}Xegwi", ["xel"] = "Kelo", ["xem"] = "Kembayan", ["xep"] = "Epi-Olmec", ["xer"] = "Xerénte", ["xes"] = "Kesawai", ["xet"] = "Xetá", ["xeu"] = "Keuru", ["xfa"] = "Faliscan", ["xga"] = "Galatian", ["xgb"] = "Gbin", ["xgd"] = "Gudang", ["xgf"] = "Gabrielino-Fernandeño", ["xgg"] = "Goreng", ["xgi"] = "Garingbal", ["xgl"] = "Galindan", ["xgm"] = "Guwinmal", ["xgr"] = "Garza", ["xgu"] = "Unggumi", ["xgw"] = "Guwa", ["xha"] = "Harami", ["xhc"] = "Hunnic", ["xhd"] = "Hadrami", ["xhe"] = "Khetrani", ["xho"] = "Xhosa", ["xhr"] = "Hernican", ["xht"] = "Hattic", ["xhu"] = "Hurrian", ["xhv"] = "Khua", ["xia"] = "Xiandao", ["xib"] = "Iberian", ["xii"] = "Xiri", ["xil"] = "Illyrian", ["xin"] = "Xinca", ["xip"] = "Xipináwa", ["xir"] = "Xiriâna", ["xis"] = "Kisan", ["xiv"] = "Harappan", ["xiy"] = "Xipaya", ["xjb"] = "Minjungbal", ["xjt"] = "Jaitmatang", ["xka"] = "Kalkoti", ["xkb"] = "Manigri-Kambolé Ede Nago", ["xkc"] = "Kho'ini", ["xkd"] = "Mendalam Kayan", ["xke"] = "Kereho-Uheng", ["xkf"] = "Khengkha", ["xkg"] = "Kagoro", ["xkh"] = "Karahawyana", ["xki"] = "Kenyan Sign Language", ["xkj"] = "Kajali", ["xkk"] = "Kaco'", ["xkl"] = "Kelinyau Kenyah", ["xkm"] = "Mahakam Kenyah", ["xkn"] = "Kayan River Kayan", ["xko"] = "Kiorr", ["xkp"] = "Kabatei", ["xkq"] = "Koroni", ["xkr"] = "Xakriabá", ["xks"] = "Kumbewaha", ["xkt"] = "Kantosi", ["xku"] = "Kaamba", ["xkv"] = "Kgalagadi", ["xkw"] = "Kembra", ["xkx"] = "Karore", ["xky"] = "Western Kenyah", ["xkz"] = "Kurtokha", ["xla"] = "Kamula", ["xlb"] = "Loup B", ["xlc"] = "Lycian", ["xld"] = "Lydian", ["xle"] = "Lemnian", ["xlg"] = "Ancient Ligurian", ["xli"] = "Liburnian", ["xln"] = "Alanic", ["xlo"] = "Loup A", ["xlp"] = "Lepontic", ["xls"] = "Lusitanian", ["xlu"] = "Cuneiform Luwian", ["xly"] = "Elymian", ["xma"] = "Mushungulu", ["xmb"] = "Mbonga", ["xmc"] = "Makhuwa-Marrevone", ["xmd"] = "Mbedam", ["xme"] = "Median", ["xmg"] = "Mengaka", ["xmh"] = "Kuku-Muminh", ["xmi"] = "Miarrã", ["xmj"] = "Majera", ["xmk"] = "Ancient Macedonian", ["xml"] = "Malaysian Sign Language", ["xmm"] = "Manado Malay", ["xmn"] = "Manichaean Middle Persian", ["xmo"] = "Morerebi", ["xmp"] = "Kuku-Mu'inh", ["xmq"] = "Kuku-Mangk", ["xmr"] = "Meroitic", ["xms"] = "Moroccan Sign Language", ["xmt"] = "Matbat", ["xmu"] = "Kamu", ["xmv"] = "Antankarana Malagasy", ["xmw"] = "Tsimihety Malagasy", ["xmx"] = "Maden", ["xmy"] = "Mayaguduna", ["xmz"] = "Mori Bawah", ["xna"] = "Ancient North Arabian", ["xnb"] = "Kanakanabu", ["xng"] = "Middle Mongolian", ["xnh"] = "Kuanhua", ["xni"] = "Ngarigu", ["xnk"] = "Nganakarti", ["xnm"] = "Ngumbarl", ["xnn"] = "Northern Kankanay", ["xno"] = "Anglo-Norman", ["xnr"] = "Kangri", ["xns"] = "Kanashi", ["xnt"] = "Narragansett", ["xnu"] = "Nukunul", ["xny"] = "Nyiyaparli", ["xnz"] = "Kenzi", ["xoc"] = "O'chi'chi'", ["xod"] = "Kokoda", ["xog"] = "Soga", ["xoi"] = "Kominimung", ["xok"] = "Xokleng", ["xom"] = "Sudanese Komo", ["xon"] = "Konkomba", ["xoo"] = "Xukurú", ["xop"] = "Kopar", ["xor"] = "Korubo", ["xow"] = "Kowaki", ["xpa"] = "Pirriya", ["xpb"] = "Pyemmairrener Northeastern Tasmanian", ["xpc"] = "Pecheneg", ["xpd"] = "Oyster Bay Tasmanian", ["xpe"] = "Liberia Kpelle", ["xpf"] = "Southeast Tasmanian Nuenonne", ["xpg"] = "Phrygian", ["xph"] = "North Midlands Tasmanian", ["xpi"] = "Pictish", ["xpj"] = "Mpalitjanh", ["xpk"] = "Kulina Pano", ["xpl"] = "Port Sorell Tasmanian", ["xpm"] = "Pumpokol", ["xpn"] = "Kapinawá", ["xpo"] = "Pochutec", ["xpp"] = "Puyo-Paekche", ["xpq"] = "Mohegan-Pequot", ["xpr"] = "Parthian", ["xps"] = "Pisidian", ["xpt"] = "Punthamara", ["xpu"] = "Punic", ["xpv"] = "Northern Tasmanian", ["xpw"] = "Northwestern Tasmanian", ["xpx"] = "Southwestern Tasmanian", ["xpy"] = "Puyo", ["xpz"] = "Bruny Island Tasmanian", ["xqa"] = "Karakhanid", ["xqt"] = "Qatabanian", ["xra"] = "Krahô", ["xrb"] = "Eastern Karaboro", ["xrd"] = "Gundungurra", ["xre"] = "Kreye", ["xrg"] = "Minang", ["xri"] = "Krikati-Timbira", ["xrm"] = "Armazic", ["xrn"] = "Arin", ["xrq"] = "Karranga", ["xrr"] = "Raetic", ["xrt"] = "Aranama-Tamique", ["xru"] = "Marriammu", ["xrw"] = "Karawa", ["xsa"] = "Sabaean", ["xsb"] = "Tinà Sambal", ["xsc"] = "Scythian", ["xsd"] = "Sidetic", ["xse"] = "Sempan", ["xsh"] = "Shamang", ["xsi"] = "Sio", ["xsj"] = "Subi", ["xsk"] = "Sakan", ["xsl"] = "South Slavey", ["xsm"] = "Kasem", ["xsn"] = "Nigerian Sanga", ["xso"] = "Solano", ["xsp"] = "Silopi", ["xsq"] = "Makhuwa-Saka", ["xsr"] = "Sherpa", ["xss"] = "Assan", ["xst"] = "Silt'e", ["xsu"] = "Sanumá", ["xsv"] = "Sudovian", ["xta"] = "Alcozauca Mixtec", ["xtb"] = "Chazumba Mixtec", ["xtc"] = "Katcha-Kadugli-Miri", ["xtd"] = "Diuxi-Tilantongo Mixtec", ["xte"] = "Ketengban", ["xtg"] = "Transalpine Gaulish", ["xth"] = "Yitha Yitha", ["xti"] = "Sinicahua Mixtec", ["xtj"] = "San Juan Teita Mixtec", ["xtl"] = "Tijaltepec Mixtec", ["xtm"] = "Magdalena Peñasco Mixtec", ["xtn"] = "Northern Tlaxiaco Mixtec", ["xto"] = "Tokharian A", ["xtp"] = "San Miguel Piedras Mixtec", ["xtq"] = "Tumshuqese", ["xtr"] = "Early Tripuri", ["xts"] = "Sindihui Mixtec", ["xtt"] = "Tacahua Mixtec", ["xtu"] = "Cuyamecalco Mixtec", ["xtv"] = "Thawa", ["xtw"] = "Tawandê", ["xty"] = "Yoloxochitl Mixtec", ["xtz"] = "Tasmanian", ["xua"] = "Alu Kurumba", ["xub"] = "Betta Kurumba", ["xud"] = "Umiida", ["xuf"] = "Kunfal", ["xug"] = "Kunigami", ["xuj"] = "Jennu Kurumba", ["xul"] = "Ngunawal", ["xum"] = "Umbrian", ["xun"] = "Unggarranggu", ["xuo"] = "Kuo", ["xup"] = "Upper Umpqua", ["xur"] = "Urartian", ["xut"] = "Kuthant", ["xuu"] = "Kxoe", ["xve"] = "Venetic", ["xvi"] = "Kamviri", ["xvn"] = "Vandalic", ["xvo"] = "Volscian", ["xvs"] = "Vestinian", ["xwa"] = "Kwaza", ["xwc"] = "Woccon", ["xwd"] = "Wadi Wadi", ["xwe"] = "Xwela Gbe", ["xwg"] = "Kwegu", ["xwj"] = "Wajuk", ["xwk"] = "Wangkumara", ["xwl"] = "Western Xwla Gbe", ["xwo"] = "Written Oirat", ["xwr"] = "Kwerba Mamberamo", ["xwt"] = "Wotjobaluk", ["xww"] = "Wemba Wemba", ["xxb"] = "Ghanaian Boro", ["xxk"] = "Ke'o", ["xxm"] = "Minkin", ["xxr"] = "Koropó", ["xxt"] = "Tambora", ["xya"] = "Yaygir", ["xyb"] = "Yandjibara", ["xyj"] = "Mayi-Yapi", ["xyk"] = "Mayi-Kulan", ["xyl"] = "Yalakalore", ["xyt"] = "Mayi-Thakurti", ["xyy"] = "Yorta Yorta", ["xzh"] = "Zhang-Zhung", ["xzm"] = "Zemgalian", ["xzp"] = "Ancient Zapotec", ["yaa"] = "Yaminahua", ["yab"] = "Yuhup", ["yac"] = "Pass Valley Yali", ["yad"] = "Yagua", ["yae"] = "Pumé", ["yaf"] = "Congolese Yaka", ["yag"] = "Yámana", ["yah"] = "Yazgulyam", ["yai"] = "Yagnobi", ["yaj"] = "Banda-Yangere", ["yak"] = "Yakima", ["yal"] = "Yalunka", ["yam"] = "Yamba", ["yan"] = "Mayangna", ["yao"] = "Yao", ["yap"] = "Yapese", ["yaq"] = "Yaqui", ["yar"] = "Yabarana", ["yas"] = "Cameroonian Nugunu", ["yat"] = "Yambeta", ["yau"] = "Yuwana", ["yav"] = "Yangben", ["yaw"] = "Yawalapití", ["yax"] = "Yauma", ["yay"] = "Agwagwune", ["yaz"] = "Lokaa", ["yba"] = "Yala", ["ybb"] = "Yemba", ["ybd"] = "Yangbye", ["ybe"] = "West Yugur", ["ybh"] = "Yakha", ["ybi"] = "Yamphu", ["ybj"] = "Hasha", ["ybk"] = "Bokha", ["ybl"] = "Yukuben", ["ybm"] = "Yaben", ["ybn"] = "Yabaâna", ["ybo"] = "Yabong", ["ybx"] = "Yawiyo", ["yby"] = "Yaweyuha", ["ych"] = "Chesu", ["ycl"] = "Central Yi", ["ycn"] = "Yucuna", ["ycp"] = "Chepya", ["yda"] = "Yanda", ["ydd"] = "Eastern Yiddish", ["yde"] = "Yangum Dey", ["ydg"] = "Yidgha", ["ydk"] = "Yoidik", ["yds"] = "Yiddish Sign Language", ["ye"] = "Yeshivish", ["yea"] = "Ravula", ["yec"] = "Yeniche", ["yee"] = "Yimas", ["yei"] = "Yeni", ["yej"] = "Yevanic", ["yel"] = "Yela", ["yen"] = "Yendang", ["yer"] = "Tarok", ["yes"] = "Yeskwa", ["yet"] = "Yetfa", ["yeu"] = "Yerukula", ["yev"] = "Yapunda", ["yey"] = "Yeyi", ["yga"] = "Malyangapa", ["ygi"] = "Yiningayi", ["ygl"] = "Yangum Gel", ["ygm"] = "Yagomi", ["ygp"] = "Gepo", ["ygr"] = "Yagaria", ["ygs"] = "Yolŋu Sign Language", ["ygu"] = "Yugul", ["ygw"] = "Yagwoia", ["yha"] = "Baha Buyang", ["yhd"] = "Judeo-Iraqi Arabic", ["yhl"] = "Hlepho Phowa", ["yhs"] = "Yan-nhaŋu Sign Language", ["yia"] = "Yinggarda", ["yib"] = "Yinglish", ["yid"] = "Yiddish", ["yif"] = "Ache Yi", ["yig"] = "Wusa Yi", ["yih"] = "Western Yiddish", ["yii"] = "Yidiny", ["yij"] = "Yindjibarndi", ["yik"] = "Dongshanba Lalo Yi", ["yil"] = "Yindjilandji", ["yim"] = "Yimchungru Naga", ["yin"] = "Yinchia", ["yio"] = "Dayao Yi", ["yip"] = "Poluo Yi", ["yiq"] = "Miqie Yi", ["yir"] = "North Awyu", ["yis"] = "Yis", ["yit"] = "Eastern Lalu Yi", ["yiu"] = "Awu Yi", ["yiv"] = "Eshan-Xinping Yi", ["yix"] = "Axi Yi", ["yiy"] = "Yir Yoront", ["yiz"] = "Azhe Yi", ["yka"] = "Yakan", ["ykg"] = "Northern Yukaghir", ["yki"] = "Yoke", ["ykk"] = "Yakaikeke", ["ykl"] = "Khlula", ["ykm"] = "Yakamul", ["ykn"] = "Kua-nsi", ["yko"] = "Yasa", ["ykr"] = "Yekora", ["ykt"] = "Kathu", ["yku"] = "Kuamasi", ["yky"] = "Yakoma", ["yla"] = "Yaul", ["ylb"] = "Yaleba", ["yle"] = "Yele", ["ylg"] = "Yelogu", ["yli"] = "Angguruk Yali", ["yll"] = "Yil", ["ylm"] = "Limi Yi", ["yln"] = "Langnian Buyang", ["ylo"] = "Naluo Yi", ["ylr"] = "Yalarnnga", ["ylu"] = "Aribwaung", ["yly"] = "Nyâlayu", ["yma"] = "Yamphe", ["ymb"] = "Yambes", ["ymc"] = "Southern Muji", ["ymd"] = "Muda", ["yme"] = "Yameo", ["ymg"] = "Yamongeri", ["ymh"] = "Mili Yi", ["ymi"] = "Moji", ["ymj"] = "Muji Yi", ["ymk"] = "Makwe", ["yml"] = "Iamalele", ["ymm"] = "Maay", ["ymn"] = "Yamna", ["ymo"] = "Yangum Mon", ["ymp"] = "Yamap", ["ymq"] = "Qila Muji", ["ymr"] = "Malasar", ["yms"] = "Mysian", ["ymt"] = "Mator-Taygi-Karagas", ["ymx"] = "Northern Muji", ["ymz"] = "Muzi", ["yna"] = "Aluo", ["ynd"] = "Yandruwandha", ["yne"] = "Lang'e", ["yng"] = "Yango", ["ynh"] = "Yangho", ["ynk"] = "Naukan Yupik", ["ynl"] = "Yangulam", ["ynn"] = "Yana", ["yno"] = "Yong", ["ynq"] = "Yendang", ["yns"] = "Yansi", ["ynu"] = "Yahuna", ["yob"] = "Yoba", ["yog"] = "Yogad", ["yoi"] = "Yonaguni", ["yok"] = "Yokuts", ["yol"] = "Yola", ["yom"] = "Yombe", ["yon"] = "Yonggom", ["yor"] = "Yoruba", ["yos"] = "Yos", ["yot"] = "Yotti", ["yox"] = "Yoron", ["yoy"] = "Yoy", ["ypa"] = "Phala", ["ypb"] = "Labo Phowa", ["ypg"] = "Phola", ["yph"] = "Phupha", ["ypk"] = "Yupik languages", ["ypl"] = "Pula Yi", ["ypm"] = "Phuma", ["ypn"] = "Ani Phowa", ["ypo"] = "Alo Phola", ["ypp"] = "Phupa", ["ypw"] = "Puwa Yi", ["ypz"] = "Phuza", ["yra"] = "Yerakai", ["yrb"] = "Yareba", ["yre"] = "Yaouré", ["yri"] = "Yarí", ["yrk"] = "Nenets", ["yrm"] = "Yirrk-Mel", ["yrn"] = "Yerong", ["yro"] = "Yaroamë", ["yrs"] = "Yarsun", ["yrw"] = "Yarawata", ["yry"] = "Yarluyandi", ["ysc"] = "Yassic", ["ysd"] = "Samatao", ["ysg"] = "Sonaga", ["ysl"] = "Yugoslavian Sign Language", ["ysn"] = "Sani Yi", ["yso"] = "Southeastern Lolo Yi", ["ysp"] = "Southern Lolopho Yi", ["ysr"] = "Sirenik Yupik", ["yss"] = "Yessan-Mayo", ["ysy"] = "Sanie", ["yta"] = "Talu", ["ytl"] = "Tanglang", ["ytp"] = "Thopho", ["ytw"] = "Yout Wam", ["yty"] = "Yatay", ["yua"] = "Yucatán Maya", ["yub"] = "Yugambal", ["yuc"] = "Yuchi", ["yud"] = "Judeo-Tripolitanian Arabic", ["yuf"] = "Havasupai-Walapai-Yavapai", ["yug"] = "Yug", ["yui"] = "Yurutí", ["yuj"] = "Karkar-Yuri", ["yuk"] = "Yuki", ["yul"] = "Yulu", ["yum"] = "Quechan", ["yun"] = "Nigerian Bena", ["yup"] = "Yukpa", ["yuq"] = "Yuqui", ["yur"] = "Yurok", ["yus"] = "Chan Santa Cruz Maya", ["yut"] = "Yopno", ["yuu"] = "Yugh", ["yuw"] = "Morobe Province Yau", ["yux"] = "Southern Yukaghir", ["yuy"] = "East Yugur", ["yuz"] = "Yuracare", ["yva"] = "Yawa", ["yvt"] = "Yavitero", ["ywa"] = "Kalou", ["ywg"] = "Yinhawangka", ["ywl"] = "Western Lalu Yi", ["ywm"] = "Wumeng Yi", ["ywn"] = "Yawanawa", ["ywq"] = "Wuding-Luquan Yi", ["ywr"] = "Yawuru", ["ywt"] = "Western Yi", ["ywu"] = "Wusa Yi", ["yww"] = "Yawarawarga", ["yxa"] = "Mayawali", ["yxg"] = "Yagara", ["yxl"] = "Yardliyawarra", ["yxm"] = "Yinwum", ["yxu"] = "Yuyu", ["yxy"] = "Yabula Yabula", ["yym"] = "Yuanjiang-Mojiang Yi", ["yyr"] = "Yir Yoront", ["yyu"] = "Sandaun Province Yau", ["yyz"] = "Ayizi", ["yzg"] = "E'ma Buyang", ["yzk"] = "Zokhuo", ["zaa"] = "Sierra de Juárez Zapotec", ["zab"] = "San Juan Guelavía Zapotec", ["zac"] = "Ocotlán Zapotec", ["zad"] = "Cajonos Zapotec", ["zae"] = "Yareni Zapotec", ["zaf"] = "Ayoquesco Zapotec", ["zag"] = "Zaghawa", ["zah"] = "Zangwal", ["zai"] = "Isthmus Zapotec", ["zaj"] = "Zaramo", ["zak"] = "Zanaki", ["zal"] = "Zauzou", ["zam"] = "Miahuatlán Zapotec", ["zao"] = "Ozolotepec Zapotec", ["zap"] = "Zapotec", ["zaq"] = "Aloápam Zapotec", ["zar"] = "Rincón Zapotec", ["zas"] = "Santo Domingo Albarradas Zapotec", ["zat"] = "Tabaa Zapotec", ["zau"] = "Zangskari", ["zav"] = "Yatzachi Zapotec", ["zaw"] = "Mitla Zapotec", ["zax"] = "Xadani Zapotec", ["zay"] = "Zayse-Zergulla", ["zaz"] = "Zari", ["zba"] = "Balaibalan", ["zbc"] = "Central Berawan", ["zbe"] = "East Berawan", ["zbl"] = "Blissymbols", ["zbt"] = "Batui", ["zbw"] = "West Berawan", ["zca"] = "Coatecas Altas Zapotec", ["zch"] = "Central Hongshuihe Zhuang", ["zdj"] = "Ngazidja Comorian", ["zeg"] = "Zenag", ["zeh"] = "Eastern Hongshuihe Zhuang", ["zen"] = "Zenaga", ["zga"] = "Kinga", ["zgb"] = "Guibei Zhuang", ["zgm"] = "Minz Zhuang", ["zgn"] = "Guibian Zhuang", ["zgr"] = "Magori", ["zh-CN"] = "China Chinese", ["zh-HK"] = "Hong Kong Chinese", ["zh-Hans"] = "Simplified Chinese", ["zh-Hans-CN"] = "China Simplified Chinese", ["zh-Hans-HK"] = "Hong Kong Simplified Chinese", ["zh-Hans-TW"] = "Taiwanese Simplified Chinese", ["zh-Hant"] = "Traditional Chinese", ["zh-Hant-CN"] = "China Traditional Chinese", ["zh-Hant-HK"] = "Hong Kong Traditional Chinese", ["zh-Hant-TW"] = "Taiwanese Traditional Chinese", ["zh-TW"] = "Taiwanese Chinese", ["zh-hans-CN"] = "China Simplified Chinese", ["zh-hans-HK"] = "Hong Kong Simplified Chinese", ["zh-hans-TW"] = "Taiwanese Simplified Chinese", ["zh-hant-CN"] = "China Traditional Chinese", ["zh-hant-HK"] = "Hong Kong Traditional Chinese", ["zh-hant-TW"] = "Taiwanese Traditional Chinese", ["zh-s"] = "Simplified Chinese", ["zh-s-CN"] = "China Simplified Chinese", ["zh-s-HK"] = "Hong Kong Simplified Chinese", ["zh-s-TW"] = "Taiwanese Simplified Chinese", ["zh-t"] = "Traditional Chinese", ["zh-t-CN"] = "China Traditional Chinese", ["zh-t-HK"] = "Hong Kong Traditional Chinese", ["zh-t-TW"] = "Taiwanese Traditional Chinese", ["zha"] = "Zhuang", ["zhb"] = "Zhaba", ["zhd"] = "Dai Zhuang", ["zhi"] = "Zhire", ["zhn"] = "Nong Zhuang", ["zho"] = "Chinese", ["zho-CN"] = "China Chinese", ["zho-HK"] = "Hong Kong Chinese", ["zho-TW"] = "Taiwanese Chinese", ["zhw"] = "Zhoa", ["zia"] = "Zia", ["zib"] = "Zimbabwe Sign Language", ["zik"] = "Zimakani", ["zil"] = "Zialo", ["zim"] = "Mesme", ["zin"] = "Zinza", ["zir"] = "Ziriya", ["ziw"] = "Zigula", ["ziz"] = "Zizilivakan", ["zka"] = "Kaimbulawa", ["zkb"] = "Koibal", ["zkd"] = "Kadu", ["zkg"] = "Koguryo", ["zkh"] = "Khorezmian", ["zkk"] = "Karankawa", ["zkn"] = "Kanan", ["zko"] = "Kott", ["zkp"] = "São Paulo Kaingáng", ["zkr"] = "Zakhring", ["zkt"] = "Kitan Khitan", ["zku"] = "Kaurna", ["zkv"] = "Krevinian", ["zkz"] = "Khazar", ["zlj"] = "Liujiang Zhuang", ["zlm"] = "Malay", ["zln"] = "Lianshan Zhuang", ["zlq"] = "Liuqian Zhuang", ["zma"] = "Australian Manda", ["zmb"] = "Zimba", ["zmc"] = "Margany", ["zmd"] = "Maridan", ["zme"] = "Mangerr", ["zmf"] = "Mfinu", ["zmg"] = "Marti Ke", ["zmh"] = "Makolkol", ["zmi"] = "Negeri Sembilan Malay", ["zmj"] = "Maridjabin", ["zmk"] = "Mandandanyi", ["zml"] = "Madngele", ["zmm"] = "Marimanindji", ["zmn"] = "Mbangwe", ["zmo"] = "Molo", ["zmp"] = "Mpuono", ["zmq"] = "Mituku", ["zmr"] = "Maranunggu", ["zms"] = "Mbesa", ["zmt"] = "Maringarr", ["zmu"] = "Muruwari", ["zmv"] = "Mbariman-Gudhinma", ["zmw"] = "Congolese Mbo", ["zmx"] = "Bomitaba", ["zmy"] = "Mariyedi", ["zmz"] = "Mbandja", ["zna"] = "Zan Gula", ["znd"] = "Zande languages", ["zne"] = "Zande", ["zng"] = "Mang", ["znk"] = "Manangkari", ["zns"] = "Mangas", ["zoc"] = "Copainalá Zoque", ["zoh"] = "Chimalapa Zoque", ["zom"] = "Zou", ["zoo"] = "Asunción Mixtepec Zapotec", ["zoq"] = "Tabasco Zoque", ["zor"] = "Rayón Zoque", ["zos"] = "Francisco León Zoque", ["zpa"] = "Lachiguiri Zapotec", ["zpb"] = "Yautepec Zapotec", ["zpc"] = "Choapan Zapotec", ["zpd"] = "Southeastern Ixtlán Zapotec", ["zpe"] = "Petapa Zapotec", ["zpf"] = "San Pedro Quiatoni Zapotec", ["zpg"] = "Guevea De Humboldt Zapotec", ["zph"] = "Totomachapan Zapotec", ["zpi"] = "Santa María Quiegolani Zapotec", ["zpj"] = "Quiavicuzas Zapotec", ["zpk"] = "Tlacolulita Zapotec", ["zpl"] = "Lachixío Zapotec", ["zpm"] = "Mixtepec Zapotec", ["zpn"] = "Santa Inés Yatzechi Zapotec", ["zpo"] = "Amatlán Zapotec", ["zpp"] = "El Alto Zapotec", ["zpq"] = "Zoogocho Zapotec", ["zpr"] = "Santiago Xanica Zapotec", ["zps"] = "Coatlán Zapotec", ["zpt"] = "San Vicente Coatlán Zapotec", ["zpu"] = "Yalálag Zapotec", ["zpv"] = "Chichicapan Zapotec", ["zpw"] = "Zaniza Zapotec", ["zpx"] = "San Baltazar Loxicha Zapotec", ["zpy"] = "Mazaltepec Zapotec", ["zpz"] = "Texmelucan Zapotec", ["zqe"] = "Qiubei Zhuang", ["zra"] = "Korean Kara", ["zrg"] = "Mirgan", ["zrn"] = "Zirenkel", ["zro"] = "Záparo", ["zrp"] = "Zarphatic", ["zrs"] = "Mairasi", ["zsa"] = "Sarasira", ["zsk"] = "Kaskean", ["zsl"] = "Zambian Sign Language", ["zsm"] = "Standard Malay", ["zsr"] = "Southern Rincon Zapotec", ["zsu"] = "Sukurum", ["ztc"] = "Lachirioag Zapotec", ["zte"] = "Elotepec Zapotec", ["ztg"] = "Xanaguía Zapotec", ["ztl"] = "Santiago Lapaguía Zapotec", ["ztm"] = "San Agustín Mixtepec Zapotec", ["ztn"] = "Santa Catarina Albarradas Zapotec", ["ztp"] = "Loxicha Zapotec", ["ztq"] = "Quioquitani-Quierí Zapotec", ["zts"] = "Tilquiapan Zapotec", ["ztt"] = "Tejalapan Zapotec", ["ztu"] = "Güilá Zapotec", ["ztx"] = "Zaachila Zapotec", ["zty"] = "Yatee Zapotec", ["zua"] = "Zeem", ["zuh"] = "Tokano", ["zul"] = "Zulu", ["zum"] = "Kumzari", ["zun"] = "Zuni", ["zuy"] = "Zumaya", ["zwa"] = "Zay", ["zxx"] = "No languages", ["zyb"] = "Yongbei Zhuang", ["zyg"] = "Yang Zhuang", ["zyj"] = "Youjiang Zhuang", ["zyn"] = "Yongnan Zhuang", ["zyp"] = "Zyphe", ["zza"] = "Zaza", ["zzj"] = "Zuojiang Zhuang" } fe5iwg2h4j8xmdfc9p2naucx0yhnvit ಟೆಂಪ್ಲೇಟು:Anchor/styles.css 10 99129 276318 2024-07-06T14:06:21Z ShakespeareFan00 7765 276318 sanitized-css text/css .wst-anchor:target { background-color:rgba(100, 149, 237, 0.1); color: #202122; outline:1px solid cornflowerblue; } 0n8xek5kfey4x5ufnr0q2tj4yrg3foy 276319 276318 2024-11-11T08:44:33Z ~aanzx 6806 ೧ revision imported from [[:en:Template:Anchor/styles.css]] 276318 sanitized-css text/css .wst-anchor:target { background-color:rgba(100, 149, 237, 0.1); color: #202122; outline:1px solid cornflowerblue; } 0n8xek5kfey4x5ufnr0q2tj4yrg3foy ಮಾಡ್ಯೂಲ್:Header/docdata 828 99130 276326 2024-03-04T19:19:37Z CalendulaAsteraceae 6870 276326 Scribunto text/plain require('strict') local p = {} local attr_data = require('Module:Header/attribution').attr_data function p.attrParamList() local params = {} -- formatting from [[Template:Parameter]] for k, v in pairs(attr_data) do params[v['index']] = '** <span class="wst-doc-parameter" style="background:#F0F0F0; color:#008740; font-weight:bold;">' .. v['param_name'] .. '</span>' end return table.concat(params, '\n') end return p lc350avmrbr6zltjxk80qpbwftmyf8t 276327 276326 2024-11-11T08:44:34Z ~aanzx 6806 ೧ revision imported from [[:en:Module:Header/docdata]] 276326 Scribunto text/plain require('strict') local p = {} local attr_data = require('Module:Header/attribution').attr_data function p.attrParamList() local params = {} -- formatting from [[Template:Parameter]] for k, v in pairs(attr_data) do params[v['index']] = '** <span class="wst-doc-parameter" style="background:#F0F0F0; color:#008740; font-weight:bold;">' .. v['param_name'] .. '</span>' end return table.concat(params, '\n') end return p lc350avmrbr6zltjxk80qpbwftmyf8t