CINXE.COM
Module:Lang/data/iana languages/make - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Module:Lang/data/iana languages/make - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"64da9d33-72a1-4419-bafe-5e0747070343","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Module:Lang/data/iana_languages/make","wgTitle":"Lang/data/iana languages/make","wgCurRevisionId":1233719002,"wgRevisionId":1233719002,"wgArticleId":55702751,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Language-related modules"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Module:Lang/data/iana_languages/make","wgRelevantArticleId":55702751,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1} }},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q109846098","wgCheckUserClientHintsHeadersJsApi":["architecture","bitness","brands","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready" ,"user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","wikibase.client.vector-2022","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.3"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Module:Lang/data/iana languages/make - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Module:Lang/data/iana_languages/make"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Module:Lang/data/iana_languages/make&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Module:Lang/data/iana_languages/make"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject mw-editable page-Module_Lang_data_iana_languages_make rootpage-Module_Lang skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Module%3ALang%2Fdata%2Fiana+languages%2Fmake" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Module%3ALang%2Fdata%2Fiana+languages%2Fmake" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Module%3ALang%2Fdata%2Fiana+languages%2Fmake" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Module%3ALang%2Fdata%2Fiana+languages%2Fmake" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Usage" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Usage"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Usage</span> </div> </a> <ul id="toc-Usage-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Module</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Lang/data/iana languages/make</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 9 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-9" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">9 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%D9%85%D8%A7%DA%98%D9%88%D9%84:Language/data/iana_languages/make" title="ماژول:Language/data/iana languages/make – South Azerbaijani" lang="azb" hreflang="azb" data-title="ماژول:Language/data/iana languages/make" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88:Language/data/iana_languages/make" title="모듈:Language/data/iana languages/make – Korean" lang="ko" hreflang="ko" data-title="모듈:Language/data/iana languages/make" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/Modulus:Language/data/iana_languages/make" title="Modulus:Language/data/iana languages/make – Latin" lang="la" hreflang="la" data-title="Modulus:Language/data/iana languages/make" data-language-autonym="Latina" data-language-local-name="Latin" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-mad mw-list-item"><a href="https://mad.wikipedia.org/wiki/Modul:Lang/data/iana_languages/make" title="Modul:Lang/data/iana languages/make – Madurese" lang="mad" hreflang="mad" data-title="Modul:Lang/data/iana languages/make" data-language-autonym="Madhurâ" data-language-local-name="Madurese" class="interlanguage-link-target"><span>Madhurâ</span></a></li><li class="interlanguage-link interwiki-sd mw-list-item"><a href="https://sd.wikipedia.org/wiki/%D9%85%D8%A7%DA%8A%D9%8A%D9%88%D9%84:Lang/data/iana_languages/make" title="ماڊيول:Lang/data/iana languages/make – Sindhi" lang="sd" hreflang="sd" data-title="ماڊيول:Lang/data/iana languages/make" data-language-autonym="سنڌي" data-language-local-name="Sindhi" class="interlanguage-link-target"><span>سنڌي</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D9%85%DB%86%D8%AF%DB%8C%D9%88%D9%88%D9%84:Lang/data/iana_languages/make" title="مۆدیوول:Lang/data/iana languages/make – Central Kurdish" lang="ckb" hreflang="ckb" data-title="مۆدیوول:Lang/data/iana languages/make" data-language-autonym="کوردی" data-language-local-name="Central Kurdish" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/Module:Language/data/iana_languages/make" title="Module:Language/data/iana languages/make – Tamil" lang="ta" hreflang="ta" data-title="Module:Language/data/iana languages/make" data-language-autonym="தமிழ்" data-language-local-name="Tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-kcg mw-list-item"><a href="https://kcg.wikipedia.org/wiki/Module:Language/data/iana_languages/make" title="Module:Language/data/iana languages/make – Tyap" lang="kcg" hreflang="kcg" data-title="Module:Language/data/iana languages/make" data-language-autonym="Tyap" data-language-local-name="Tyap" class="interlanguage-link-target"><span>Tyap</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Module:Language/data/iana_languages/make" title="Module:Language/data/iana languages/make – Chinese" lang="zh" hreflang="zh" data-title="Module:Language/data/iana languages/make" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q109846098#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Module:Lang/data/iana_languages/make" title="View the module page [c]" accesskey="c"><span>Module</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Module_talk:Lang/data/iana_languages/make" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Module:Lang/data/iana_languages/make"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Lang/data/iana_languages/make&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Module:Lang/data/iana_languages/make&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Module:Lang/data/iana_languages/make"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Lang/data/iana_languages/make&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Module:Lang/data/iana_languages/make&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Module:Lang/data/iana_languages/make" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Module:Lang/data/iana_languages/make" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Module:Lang/data/iana_languages/make&oldid=1233719002" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Module:Lang/data/iana_languages/make&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FModule%3ALang%2Fdata%2Fiana_languages%2Fmake"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FModule%3ALang%2Fdata%2Fiana_languages%2Fmake"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-electronpdfservice-sidebar-portlet-heading" class="vector-menu mw-portlet mw-portlet-electronpdfservice-sidebar-portlet-heading" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="electron-print_pdf" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Module%3ALang%2Fdata%2Fiana_languages%2Fmake&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q109846098" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div class="subpages">< <bdi dir="ltr"><a href="/wiki/Module:Lang" title="Module:Lang">Module:Lang</a></bdi> | <bdi dir="ltr"><a href="/wiki/Module:Lang/data" title="Module:Lang/data">data</a></bdi> | <bdi dir="ltr"><a href="/wiki/Module:Lang/data/iana_languages" title="Module:Lang/data/iana languages">iana languages</a></bdi></div></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r1237875617">.mw-parser-output .documentation,.mw-parser-output .documentation-metadata{border:1px solid #a2a9b1;background-color:#ecfcf4;clear:both}.mw-parser-output .documentation{margin:1em 0 0 0;padding:1em}.mw-parser-output .documentation-metadata{margin:0.2em 0;font-style:italic;padding:0.4em 1em}.mw-parser-output .documentation-startbox{padding-bottom:3px;border-bottom:1px solid #aaa;margin-bottom:1ex}.mw-parser-output .documentation-heading{font-weight:bold;font-size:125%}.mw-parser-output .documentation-clear{clear:both}.mw-parser-output .documentation-toolbar{font-style:normal;font-size:85%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .documentation,html.skin-theme-clientpref-night .mw-parser-output .documentation-metadata{background-color:#0b1e1c}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .documentation,html.skin-theme-clientpref-os .mw-parser-output .documentation-metadata{background-color:#0b1e1c}}</style><div class="documentation-container" role="complementary" aria-labelledby="documentation-heading"> <div class="documentation"> <div class="documentation-startbox"> <span class="documentation-heading" id="documentation-heading"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png" decoding="async" width="50" height="22" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/75px-Test_Template_Info-Icon_-_Version_%282%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/100px-Test_Template_Info-Icon_-_Version_%282%29.svg.png 2x" data-file-width="1792" data-file-height="800" /></span></span> Module documentation</span><span class="mw-editsection-like plainlinks">[<a href="/wiki/Module:Lang/data/iana_languages/make/doc" title="Module:Lang/data/iana languages/make/doc">view</a>] [<a href="/wiki/Special:EditPage/Module:Lang/data/iana_languages/make/doc" title="Special:EditPage/Module:Lang/data/iana languages/make/doc">edit</a>] [<a href="/wiki/Special:PageHistory/Module:Lang/data/iana_languages/make/doc" title="Special:PageHistory/Module:Lang/data/iana languages/make/doc">history</a>] [<a href="/wiki/Special:Purge/Module:Lang/data/iana_languages/make" title="Special:Purge/Module:Lang/data/iana languages/make">purge</a>]</span></div> <p>This is a crude tool that reads a local copy of an IANA <a rel="nofollow" class="external text" href="https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry">language-subtag-registry file</a> and extracts the information necessary to create the data tables held by: </p> <ul><li><a href="/wiki/Module:Lang/data/iana_languages" title="Module:Lang/data/iana languages">Module:Lang/data/iana languages</a></li> <li><a href="/wiki/Module:Lang/data/iana_scripts" title="Module:Lang/data/iana scripts">Module:Lang/data/iana scripts</a></li> <li><a href="/wiki/Module:Lang/data/iana_regions" title="Module:Lang/data/iana regions">Module:Lang/data/iana regions</a></li> <li><a href="/wiki/Module:Lang/data/iana_variants" title="Module:Lang/data/iana variants">Module:Lang/data/iana variants</a></li> <li><a href="/wiki/Module:Lang/data/iana_suppressed_scripts" title="Module:Lang/data/iana suppressed scripts">Module:Lang/data/iana suppressed scripts</a></li> <li><a href="/w/index.php?title=Module:Lang/data/ISO_639-1&action=edit&redlink=1" class="new" title="Module:Lang/data/ISO 639-1 (page does not exist)">Module:Lang/data/ISO 639-1</a> – not an IANA file per se, but used by <a href="/wiki/Module:ISO_639_name" title="Module:ISO 639 name">Module:ISO 639 name</a>; included here so that -1 is not neglected when the other files are updated</li></ul> <p>The tool skips records that contain the words: 'Deprecated', 'Preferred-Value', and 'Private use'. </p><p>At this writing, the tool extracts only the subtag code and description(s) from language, script, region, and variant records. </p> <div class="mw-heading mw-heading2"><h2 id="Usage">Usage</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Module:Lang/data/iana_languages/make/doc&action=edit&section=T-1" title="Edit section: Usage"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>To use this tool: </p> <ol><li>Open a blank sandbox page and paste the following at the top: <dl><dd><code>{{#invoke:Language/data/iana languages/make|iana_extract}}</code></dd></dl></li> <li>Go to the current <a rel="nofollow" class="external text" href="https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry">language-subtag-registry file</a> (or any of the files held by <a rel="nofollow" class="external text" href="https://web.archive.org/web/*/https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry">archive.org</a>). Copy the whole (or just as much as you need) and paste it into the sandbox page below the <code>{{#invoke:}}</code>.</li> <li>Click Show preview</li> <li>Wait</li> <li>Copy result</li></ol> <p>There is some crude error checking that will insert an error message in the output. No guarantees that such messaging will be helpful. Search for the word 'error' in the tool's output. </p> <div class="documentation-clear"></div> </div> <div role="note" class="documentation-metadata plainlinks">The above <a href="/wiki/Wikipedia:Template_documentation" title="Wikipedia:Template documentation">documentation</a> is <a href="/wiki/Help:Transclusion" title="Help:Transclusion">transcluded</a> from <a href="/wiki/Module:Lang/data/iana_languages/make/doc" title="Module:Lang/data/iana languages/make/doc">Module:Lang/data/iana languages/make/doc</a>. <span class="documentation-toolbar">(<a href="/wiki/Special:EditPage/Module:Lang/data/iana_languages/make/doc" title="Special:EditPage/Module:Lang/data/iana languages/make/doc">edit</a> | <a href="/wiki/Special:PageHistory/Module:Lang/data/iana_languages/make/doc" title="Special:PageHistory/Module:Lang/data/iana languages/make/doc">history</a>)</span><br />Editors can experiment in this module's sandbox <span class="documentation-toolbar">(<a class="external text" href="https://en.wikipedia.org/w/index.php?title=Module:Lang/data/iana_languages/make/sandbox&action=edit&preload=Template%3ADocumentation%2Fpreload-module-sandbox">create</a> | <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Module:Lang/data/iana_languages/make/sandbox&preload=Module%3ALang%2Fdata%2Fiana+languages%2Fmake&action=edit&summary=Create+sandbox+version+of+%5B%5BModule%3ALang%2Fdata%2Fiana+languages%2Fmake%5D%5D">mirror</a>)</span> and testcases <span class="documentation-toolbar">(<a class="external text" href="https://en.wikipedia.org/w/index.php?title=Module:Lang/data/iana_languages/make/testcases&action=edit&preload=Template%3ADocumentation%2Fpreload-module-testcases">create</a>)</span> pages.<br /> <a href="/wiki/Special:PrefixIndex/Module:Lang/data/iana_languages/make/" title="Special:PrefixIndex/Module:Lang/data/iana languages/make/">Subpages of this module</a>.</div></div> <p><span id="code"></span> </p><div class="mw-highlight mw-highlight-lang-lua mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos" data-line="1"></span></a><span class="nb">require</span><span class="p">(</span><span class="s1">'strict'</span><span class="p">);</span> </span><span id="L-2"><a href="#L-2"><span class="linenos" data-line="2"></span></a> </span><span id="L-3"><a href="#L-3"><span class="linenos" data-line="3"></span></a> </span><span id="L-4"><a href="#L-4"><span class="linenos" data-line="4"></span></a><span class="cm">--[=[------------------------< G E T _ V A R I A N T _ P A R T S >---------------------------------------------</span> </span><span id="L-5"><a href="#L-5"><span class="linenos" data-line="5"></span></a> </span><span id="L-6"><a href="#L-6"><span class="linenos" data-line="6"></span></a><span class="cm">We get a record that looks more-or-less like this:</span> </span><span id="L-7"><a href="#L-7"><span class="linenos" data-line="7"></span></a><span class="cm"> %%\n</span> </span><span id="L-8"><a href="#L-8"><span class="linenos" data-line="8"></span></a><span class="cm"> Type: variant\n</span> </span><span id="L-9"><a href="#L-9"><span class="linenos" data-line="9"></span></a><span class="cm"> Subtag: bohoric\n</span> </span><span id="L-10"><a href="#L-10"><span class="linenos" data-line="10"></span></a><span class="cm"> Description: Slovene in Bohorič alphabet\n</span> </span><span id="L-11"><a href="#L-11"><span class="linenos" data-line="11"></span></a><span class="cm"> Added: 2012-06-27\n</span> </span><span id="L-12"><a href="#L-12"><span class="linenos" data-line="12"></span></a><span class="cm"> Prefix: sl\n</span> </span><span id="L-13"><a href="#L-13"><span class="linenos" data-line="13"></span></a> </span><span id="L-14"><a href="#L-14"><span class="linenos" data-line="14"></span></a><span class="cm">Each line is terminated with a \n character.</span> </span><span id="L-15"><a href="#L-15"><span class="linenos" data-line="15"></span></a> </span><span id="L-16"><a href="#L-16"><span class="linenos" data-line="16"></span></a><span class="cm">Type, for this function can only be 'variant'</span> </span><span id="L-17"><a href="#L-17"><span class="linenos" data-line="17"></span></a> </span><span id="L-18"><a href="#L-18"><span class="linenos" data-line="18"></span></a><span class="cm">Subtag is the code of Type</span> </span><span id="L-19"><a href="#L-19"><span class="linenos" data-line="19"></span></a> </span><span id="L-20"><a href="#L-20"><span class="linenos" data-line="20"></span></a><span class="cm">Prefix is a language code to which this variant applies; one language code per Prefix line. There can be</span> </span><span id="L-21"><a href="#L-21"><span class="linenos" data-line="21"></span></a><span class="cm">more than one prefix line.</span> </span><span id="L-22"><a href="#L-22"><span class="linenos" data-line="22"></span></a> </span><span id="L-23"><a href="#L-23"><span class="linenos" data-line="23"></span></a><span class="cm">Description associates Subtag with a proper name or names; one name per Description line. There can be more</span> </span><span id="L-24"><a href="#L-24"><span class="linenos" data-line="24"></span></a><span class="cm">than one Description line and Description lines can wrap to the next line. When they do, the first two</span> </span><span id="L-25"><a href="#L-25"><span class="linenos" data-line="25"></span></a><span class="cm">characters of the continuation line are spaces.</span> </span><span id="L-26"><a href="#L-26"><span class="linenos" data-line="26"></span></a> </span><span id="L-27"><a href="#L-27"><span class="linenos" data-line="27"></span></a><span class="cm">Comments: lines can also be continued so once in a Comments line (which is otherwise ignored) all further</span> </span><span id="L-28"><a href="#L-28"><span class="linenos" data-line="28"></span></a><span class="cm">continuations in the record are also ignored. This is a crude mechanism to prevent comment continuations</span> </span><span id="L-29"><a href="#L-29"><span class="linenos" data-line="29"></span></a><span class="cm">from being concatenated onto the end of descriptions and relies on Description line occuring in the record</span> </span><span id="L-30"><a href="#L-30"><span class="linenos" data-line="30"></span></a><span class="cm">before the Comments line.</span> </span><span id="L-31"><a href="#L-31"><span class="linenos" data-line="31"></span></a> </span><span id="L-32"><a href="#L-32"><span class="linenos" data-line="32"></span></a><span class="cm">Records with private use subtags are ignored.</span> </span><span id="L-33"><a href="#L-33"><span class="linenos" data-line="33"></span></a> </span><span id="L-34"><a href="#L-34"><span class="linenos" data-line="34"></span></a><span class="cm">]=]</span> </span><span id="L-35"><a href="#L-35"><span class="linenos" data-line="35"></span></a> </span><span id="L-36"><a href="#L-36"><span class="linenos" data-line="36"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">get_variant_parts</span> <span class="p">(</span><span class="n">record</span><span class="p">)</span> </span><span id="L-37"><a href="#L-37"><span class="linenos" data-line="37"></span></a> <span class="kd">local</span> <span class="n">code</span><span class="p">;</span> </span><span id="L-38"><a href="#L-38"><span class="linenos" data-line="38"></span></a> <span class="kd">local</span> <span class="n">descriptions</span> <span class="o">=</span> <span class="p">{};</span> </span><span id="L-39"><a href="#L-39"><span class="linenos" data-line="39"></span></a> <span class="kd">local</span> <span class="n">prefixes</span> <span class="o">=</span> <span class="p">{};</span> </span><span id="L-40"><a href="#L-40"><span class="linenos" data-line="40"></span></a> <span class="kd">local</span> <span class="n">in_comments</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span> </span><span id="L-41"><a href="#L-41"><span class="linenos" data-line="41"></span></a> </span><span id="L-42"><a href="#L-42"><span class="linenos" data-line="42"></span></a> <span class="kr">if</span> <span class="nb">string.find</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="s1">'Deprecated'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">string.find</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="s1">'Preferred-Value'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> </span><span id="L-43"><a href="#L-43"><span class="linenos" data-line="43"></span></a> <span class="ow">or</span> <span class="nb">string.find</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="s1">'Private use'</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-44"><a href="#L-44"><span class="linenos" data-line="44"></span></a> <span class="kr">return</span> <span class="s1">'skip'</span><span class="p">;</span> </span><span id="L-45"><a href="#L-45"><span class="linenos" data-line="45"></span></a> <span class="kr">end</span> </span><span id="L-46"><a href="#L-46"><span class="linenos" data-line="46"></span></a> </span><span id="L-47"><a href="#L-47"><span class="linenos" data-line="47"></span></a> <span class="kr">for</span> <span class="n">line</span> <span class="kr">in</span> <span class="nb">string.gmatch</span> <span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="s1">'([^</span><span class="se">\n</span><span class="s1">]+)</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> <span class="kr">do</span> <span class="c1">-- get a \n terminated line of text (without the \n)</span> </span><span id="L-48"><a href="#L-48"><span class="linenos" data-line="48"></span></a> <span class="kd">local</span> <span class="n">label</span> <span class="o">=</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s2">"(.-):"</span><span class="p">)</span> </span><span id="L-49"><a href="#L-49"><span class="linenos" data-line="49"></span></a> </span><span id="L-50"><a href="#L-50"><span class="linenos" data-line="50"></span></a> <span class="kr">if</span> <span class="ow">not</span> <span class="n">label</span> <span class="ow">and</span> <span class="nb">string.find</span> <span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s1">'^ .+'</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">in_comments</span> <span class="kr">then</span> <span class="c1">-- if a continuation line but not a comments continuation</span> </span><span id="L-51"><a href="#L-51"><span class="linenos" data-line="51"></span></a> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]</span> <span class="o">=</span> <span class="nb">string.gsub</span> <span class="p">(</span><span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">],</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">$'</span><span class="p">,</span> <span class="s1">''</span><span class="p">);</span> <span class="c1">-- remove trailing quote mark from previous description</span> </span><span id="L-52"><a href="#L-52"><span class="linenos" data-line="52"></span></a> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]</span> <span class="o">=</span> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]</span> <span class="o">..</span> <span class="s1">' '</span> <span class="o">..</span> <span class="nb">string.match</span> <span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s1">'^ (.+)'</span><span class="p">)</span> <span class="o">..</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">;</span> <span class="c1">-- extract and save the continuation with new quote mark</span> </span><span id="L-53"><a href="#L-53"><span class="linenos" data-line="53"></span></a> <span class="kr">elseif</span> <span class="n">label</span> <span class="o">==</span> <span class="s1">'Subtag'</span> <span class="kr">then</span> <span class="c1">-- if this line is the subtag line</span> </span><span id="L-54"><a href="#L-54"><span class="linenos" data-line="54"></span></a> <span class="n">code</span> <span class="o">=</span> <span class="nb">string.match</span> <span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s1">'Subtag: (%w+)'</span><span class="p">);</span> <span class="c1">-- extract and save to subtag's code</span> </span><span id="L-55"><a href="#L-55"><span class="linenos" data-line="55"></span></a> <span class="kr">elseif</span> <span class="n">label</span> <span class="o">==</span> <span class="s1">'Description'</span> <span class="kr">then</span> <span class="c1">-- if this line is a description line</span> </span><span id="L-56"><a href="#L-56"><span class="linenos" data-line="56"></span></a> <span class="kd">local</span> <span class="n">desc</span> <span class="o">=</span> <span class="nb">string.match</span> <span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s1">'Description: (.+)'</span><span class="p">);</span> <span class="c1">-- extract the description</span> </span><span id="L-57"><a href="#L-57"><span class="linenos" data-line="57"></span></a> <span class="n">desc</span> <span class="o">=</span> <span class="nb">string.gsub</span> <span class="p">(</span><span class="n">desc</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'</span><span class="se">\\</span><span class="s1">"'</span><span class="p">);</span> <span class="c1">-- in case description contains quote marks (see 1959acad)</span> </span><span id="L-58"><a href="#L-58"><span class="linenos" data-line="58"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">descriptions</span><span class="p">,</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span> <span class="o">..</span> <span class="n">desc</span> <span class="o">..</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">);</span> <span class="c1">-- save the description wrapped in quote marks</span> </span><span id="L-59"><a href="#L-59"><span class="linenos" data-line="59"></span></a> <span class="kr">elseif</span> <span class="n">label</span> <span class="o">==</span> <span class="s1">'Prefix'</span> <span class="kr">then</span> <span class="c1">-- if this line is a prefix line</span> </span><span id="L-60"><a href="#L-60"><span class="linenos" data-line="60"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">prefixes</span><span class="p">,</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span> <span class="o">..</span> <span class="nb">string.match</span> <span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s1">'Prefix: (.+)'</span><span class="p">):</span><span class="n">lower</span><span class="p">()</span> <span class="o">..</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">);</span> <span class="c1">-- extract and save the prefix wrapped in quote marks</span> </span><span id="L-61"><a href="#L-61"><span class="linenos" data-line="61"></span></a> <span class="kr">elseif</span> <span class="n">label</span> <span class="o">==</span> <span class="s1">'Comments'</span> <span class="kr">then</span> <span class="c1">-- if this line is a comments line</span> </span><span id="L-62"><a href="#L-62"><span class="linenos" data-line="62"></span></a> <span class="n">in_comments</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> </span><span id="L-63"><a href="#L-63"><span class="linenos" data-line="63"></span></a> <span class="kr">end</span> </span><span id="L-64"><a href="#L-64"><span class="linenos" data-line="64"></span></a> <span class="kr">end</span> </span><span id="L-65"><a href="#L-65"><span class="linenos" data-line="65"></span></a> </span><span id="L-66"><a href="#L-66"><span class="linenos" data-line="66"></span></a> <span class="kr">return</span> <span class="n">code</span><span class="p">,</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">prefixes</span><span class="p">,</span> <span class="s1">', '</span><span class="p">),</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">descriptions</span><span class="p">,</span> <span class="s1">', '</span><span class="p">);</span> </span><span id="L-67"><a href="#L-67"><span class="linenos" data-line="67"></span></a><span class="kr">end</span> </span><span id="L-68"><a href="#L-68"><span class="linenos" data-line="68"></span></a> </span><span id="L-69"><a href="#L-69"><span class="linenos" data-line="69"></span></a> </span><span id="L-70"><a href="#L-70"><span class="linenos" data-line="70"></span></a><span class="cm">--[=[------------------------< G E T _ L A N G _ S C R I P T _ R E G I O N _ P A R T S >-----------------------</span> </span><span id="L-71"><a href="#L-71"><span class="linenos" data-line="71"></span></a> </span><span id="L-72"><a href="#L-72"><span class="linenos" data-line="72"></span></a><span class="cm">We get a record that looks more-or-less like this:</span> </span><span id="L-73"><a href="#L-73"><span class="linenos" data-line="73"></span></a><span class="cm"> %%\n</span> </span><span id="L-74"><a href="#L-74"><span class="linenos" data-line="74"></span></a><span class="cm"> Type: language\n</span> </span><span id="L-75"><a href="#L-75"><span class="linenos" data-line="75"></span></a><span class="cm"> Subtag: aa\n</span> </span><span id="L-76"><a href="#L-76"><span class="linenos" data-line="76"></span></a><span class="cm"> Description: Afar\n</span> </span><span id="L-77"><a href="#L-77"><span class="linenos" data-line="77"></span></a><span class="cm"> Added: 2005-10-16\n</span> </span><span id="L-78"><a href="#L-78"><span class="linenos" data-line="78"></span></a> </span><span id="L-79"><a href="#L-79"><span class="linenos" data-line="79"></span></a><span class="cm"> </span> </span><span id="L-80"><a href="#L-80"><span class="linenos" data-line="80"></span></a><span class="cm">Each line is terminated with a \n character.</span> </span><span id="L-81"><a href="#L-81"><span class="linenos" data-line="81"></span></a> </span><span id="L-82"><a href="#L-82"><span class="linenos" data-line="82"></span></a><span class="cm">Type, for our purposes can be 'language', 'script', or 'region'</span> </span><span id="L-83"><a href="#L-83"><span class="linenos" data-line="83"></span></a> </span><span id="L-84"><a href="#L-84"><span class="linenos" data-line="84"></span></a><span class="cm">Subtag is the code of Type</span> </span><span id="L-85"><a href="#L-85"><span class="linenos" data-line="85"></span></a> </span><span id="L-86"><a href="#L-86"><span class="linenos" data-line="86"></span></a><span class="cm">Description associates Subtag with a proper name or names; one name per Description line. There can be more</span> </span><span id="L-87"><a href="#L-87"><span class="linenos" data-line="87"></span></a><span class="cm">than one Description line and Description lines can wrap to the next line. When they do, the first two</span> </span><span id="L-88"><a href="#L-88"><span class="linenos" data-line="88"></span></a><span class="cm">characters of the continuation line are spaces.</span> </span><span id="L-89"><a href="#L-89"><span class="linenos" data-line="89"></span></a> </span><span id="L-90"><a href="#L-90"><span class="linenos" data-line="90"></span></a><span class="cm">Comments: lines can also be continued so once in a Comments line (which is otherwise ignored) all further</span> </span><span id="L-91"><a href="#L-91"><span class="linenos" data-line="91"></span></a><span class="cm">continuations in the record are also ignored. This is a crude mechanism to prevent comment continuations</span> </span><span id="L-92"><a href="#L-92"><span class="linenos" data-line="92"></span></a><span class="cm">from being concatenated onto the end of descriptions and relies on Description line occuring in the record</span> </span><span id="L-93"><a href="#L-93"><span class="linenos" data-line="93"></span></a><span class="cm">before the Comments line.</span> </span><span id="L-94"><a href="#L-94"><span class="linenos" data-line="94"></span></a> </span><span id="L-95"><a href="#L-95"><span class="linenos" data-line="95"></span></a><span class="cm">Records with private use subtags are ignored.</span> </span><span id="L-96"><a href="#L-96"><span class="linenos" data-line="96"></span></a> </span><span id="L-97"><a href="#L-97"><span class="linenos" data-line="97"></span></a><span class="cm">]=]</span> </span><span id="L-98"><a href="#L-98"><span class="linenos" data-line="98"></span></a> </span><span id="L-99"><a href="#L-99"><span class="linenos" data-line="99"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">get_lang_script_region_parts</span> <span class="p">(</span><span class="n">record</span><span class="p">)</span> </span><span id="L-100"><a href="#L-100"><span class="linenos" data-line="100"></span></a> <span class="kd">local</span> <span class="n">code</span><span class="p">;</span> </span><span id="L-101"><a href="#L-101"><span class="linenos" data-line="101"></span></a> <span class="kd">local</span> <span class="n">suppress</span><span class="p">;</span> <span class="c1">-- Suppress script for this code if specified</span> </span><span id="L-102"><a href="#L-102"><span class="linenos" data-line="102"></span></a> <span class="kd">local</span> <span class="n">deprecated</span><span class="p">;</span> <span class="c1">-- boolean; true when subtag is deprecated</span> </span><span id="L-103"><a href="#L-103"><span class="linenos" data-line="103"></span></a> <span class="kd">local</span> <span class="n">descriptions</span> <span class="o">=</span> <span class="p">{};</span> </span><span id="L-104"><a href="#L-104"><span class="linenos" data-line="104"></span></a> <span class="kd">local</span> <span class="n">in_comments</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span> </span><span id="L-105"><a href="#L-105"><span class="linenos" data-line="105"></span></a> </span><span id="L-106"><a href="#L-106"><span class="linenos" data-line="106"></span></a> <span class="kr">if</span> <span class="n">record</span><span class="p">:</span><span class="n">find</span> <span class="p">(</span><span class="s1">'Private use'</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-107"><a href="#L-107"><span class="linenos" data-line="107"></span></a> <span class="kr">return</span> <span class="s1">'skip'</span><span class="p">;</span> </span><span id="L-108"><a href="#L-108"><span class="linenos" data-line="108"></span></a> <span class="kr">end</span> </span><span id="L-109"><a href="#L-109"><span class="linenos" data-line="109"></span></a> </span><span id="L-110"><a href="#L-110"><span class="linenos" data-line="110"></span></a> <span class="kr">for</span> <span class="n">line</span> <span class="kr">in</span> <span class="n">record</span><span class="p">:</span><span class="n">gmatch</span> <span class="p">(</span><span class="s1">'([^</span><span class="se">\n</span><span class="s1">]+)</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span> <span class="kr">do</span> <span class="c1">-- get a \n terminated line of text (without the \n)</span> </span><span id="L-111"><a href="#L-111"><span class="linenos" data-line="111"></span></a> <span class="kd">local</span> <span class="n">label</span> <span class="o">=</span> <span class="n">line</span><span class="p">:</span><span class="n">match</span> <span class="p">(</span><span class="s1">'(.-):'</span><span class="p">);</span> </span><span id="L-112"><a href="#L-112"><span class="linenos" data-line="112"></span></a> <span class="kr">if</span> <span class="s1">'Subtag'</span> <span class="o">==</span> <span class="n">label</span> <span class="kr">then</span> <span class="c1">-- if this line is the subtag line</span> </span><span id="L-113"><a href="#L-113"><span class="linenos" data-line="113"></span></a> <span class="n">code</span> <span class="o">=</span> <span class="n">line</span><span class="p">:</span><span class="n">match</span> <span class="p">(</span><span class="s1">'Subtag: (%w+)'</span><span class="p">);</span> <span class="c1">-- extract and save to subtag's code</span> </span><span id="L-114"><a href="#L-114"><span class="linenos" data-line="114"></span></a> <span class="kr">elseif</span> <span class="s1">'Description'</span> <span class="o">==</span> <span class="n">label</span> <span class="kr">then</span> <span class="c1">-- if this line is a description line</span> </span><span id="L-115"><a href="#L-115"><span class="linenos" data-line="115"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">descriptions</span><span class="p">,</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span> <span class="o">..</span> <span class="n">line</span><span class="p">:</span><span class="n">match</span> <span class="p">(</span><span class="s1">'Description: (.+)'</span><span class="p">)</span> <span class="o">..</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">);</span> <span class="c1">-- extract and save the name wrapped in quote marks</span> </span><span id="L-116"><a href="#L-116"><span class="linenos" data-line="116"></span></a> <span class="kr">elseif</span> <span class="s1">'Deprecated'</span> <span class="o">==</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-117"><a href="#L-117"><span class="linenos" data-line="117"></span></a> <span class="n">deprecated</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="c1">-- subtag is deprecated; set our flag</span> </span><span id="L-118"><a href="#L-118"><span class="linenos" data-line="118"></span></a> <span class="kr">elseif</span> <span class="s1">'Suppress-Script'</span> <span class="o">==</span> <span class="n">label</span> <span class="kr">then</span> </span><span id="L-119"><a href="#L-119"><span class="linenos" data-line="119"></span></a> <span class="n">suppress</span> <span class="o">=</span> <span class="n">line</span><span class="p">:</span><span class="n">match</span> <span class="p">(</span><span class="s1">'Suppress%-Script: (%S+)'</span><span class="p">);</span> </span><span id="L-120"><a href="#L-120"><span class="linenos" data-line="120"></span></a> <span class="kr">elseif</span> <span class="s1">'Comments'</span> <span class="o">==</span> <span class="n">label</span> <span class="kr">then</span> <span class="c1">-- if this line is a comments line</span> </span><span id="L-121"><a href="#L-121"><span class="linenos" data-line="121"></span></a> <span class="n">in_comments</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> </span><span id="L-122"><a href="#L-122"><span class="linenos" data-line="122"></span></a> <span class="kr">elseif</span> <span class="n">line</span><span class="p">:</span><span class="n">find</span> <span class="p">(</span><span class="s1">'^ .+'</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">in_comments</span> <span class="kr">then</span> <span class="c1">-- if a continuation line but not a commnets continuation</span> </span><span id="L-123"><a href="#L-123"><span class="linenos" data-line="123"></span></a> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]</span> <span class="o">=</span> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]:</span><span class="n">gsub</span> <span class="p">(</span><span class="s1">'</span><span class="se">\"</span><span class="s1">$'</span><span class="p">,</span> <span class="s1">''</span><span class="p">);</span> <span class="c1">-- remove trailing quote mark from previous description</span> </span><span id="L-124"><a href="#L-124"><span class="linenos" data-line="124"></span></a> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]</span> <span class="o">=</span> <span class="n">descriptions</span><span class="p">[</span><span class="o">#</span><span class="n">descriptions</span><span class="p">]</span> <span class="o">..</span> <span class="s1">' '</span> <span class="o">..</span> <span class="n">line</span><span class="p">:</span><span class="n">match</span> <span class="p">(</span><span class="s1">'^ (.+)'</span><span class="p">)</span> <span class="o">..</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">;</span> <span class="c1">-- extract and save the continuation with new quote mark</span> </span><span id="L-125"><a href="#L-125"><span class="linenos" data-line="125"></span></a> <span class="kr">end</span> </span><span id="L-126"><a href="#L-126"><span class="linenos" data-line="126"></span></a> <span class="kr">end</span> </span><span id="L-127"><a href="#L-127"><span class="linenos" data-line="127"></span></a> </span><span id="L-128"><a href="#L-128"><span class="linenos" data-line="128"></span></a> <span class="kr">return</span> <span class="n">code</span><span class="p">,</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">descriptions</span><span class="p">,</span> <span class="s1">', '</span><span class="p">),</span> <span class="n">suppress</span><span class="p">,</span> <span class="n">deprecated</span><span class="p">;</span> </span><span id="L-129"><a href="#L-129"><span class="linenos" data-line="129"></span></a><span class="kr">end</span> </span><span id="L-130"><a href="#L-130"><span class="linenos" data-line="130"></span></a> </span><span id="L-131"><a href="#L-131"><span class="linenos" data-line="131"></span></a> </span><span id="L-132"><a href="#L-132"><span class="linenos" data-line="132"></span></a><span class="cm">--[=[------------------------< I A N A _ E X T R A C T >-------------------------------------------------------</span> </span><span id="L-133"><a href="#L-133"><span class="linenos" data-line="133"></span></a> </span><span id="L-134"><a href="#L-134"><span class="linenos" data-line="134"></span></a><span class="cm">read a local copy of the IANA language-subtag-registry file and from it build tables to replace the tables in:</span> </span><span id="L-135"><a href="#L-135"><span class="linenos" data-line="135"></span></a><span class="cm"> [[Module:Lang/data/iana languages]]</span> </span><span id="L-136"><a href="#L-136"><span class="linenos" data-line="136"></span></a><span class="cm"> [[Module:Lang/data/iana regions]]</span> </span><span id="L-137"><a href="#L-137"><span class="linenos" data-line="137"></span></a><span class="cm"> [[Module:Lang/data/iana scripts]]</span> </span><span id="L-138"><a href="#L-138"><span class="linenos" data-line="138"></span></a><span class="cm"> [[Module:Lang/data/iana supressed cripts]]</span> </span><span id="L-139"><a href="#L-139"><span class="linenos" data-line="139"></span></a><span class="cm"> [[Module:Lang/data/iana variants]]</span> </span><span id="L-140"><a href="#L-140"><span class="linenos" data-line="140"></span></a> </span><span id="L-141"><a href="#L-141"><span class="linenos" data-line="141"></span></a><span class="cm">current language-subtag-registry file can be found at: http://www.iana.org/assignments/language-subtag-registry</span> </span><span id="L-142"><a href="#L-142"><span class="linenos" data-line="142"></span></a><span class="cm">archive.org has copies of previous versions see: https://web.archive.org/web/*/http://www.iana.org/assignments/language-subtag-registry</span> </span><span id="L-143"><a href="#L-143"><span class="linenos" data-line="143"></span></a> </span><span id="L-144"><a href="#L-144"><span class="linenos" data-line="144"></span></a><span class="cm">]=]</span> </span><span id="L-145"><a href="#L-145"><span class="linenos" data-line="145"></span></a> </span><span id="L-146"><a href="#L-146"><span class="linenos" data-line="146"></span></a><span class="kd">local</span> <span class="kr">function</span> <span class="nf">iana_extract</span> <span class="p">(</span><span class="n">frame</span><span class="p">)</span> </span><span id="L-147"><a href="#L-147"><span class="linenos" data-line="147"></span></a> <span class="kd">local</span> <span class="n">page</span> <span class="o">=</span> <span class="n">mw</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">getCurrentTitle</span><span class="p">();</span> <span class="c1">-- get a page object for this page</span> </span><span id="L-148"><a href="#L-148"><span class="linenos" data-line="148"></span></a> <span class="kd">local</span> <span class="n">content</span> <span class="o">=</span> <span class="n">page</span><span class="p">:</span><span class="n">getContent</span><span class="p">();</span> <span class="c1">-- get unparsed content</span> </span><span id="L-149"><a href="#L-149"><span class="linenos" data-line="149"></span></a> <span class="kd">local</span> <span class="n">lang_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- languages go here</span> </span><span id="L-150"><a href="#L-150"><span class="linenos" data-line="150"></span></a> <span class="kd">local</span> <span class="n">lang_dep_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- deprecated languages go here</span> </span><span id="L-151"><a href="#L-151"><span class="linenos" data-line="151"></span></a> <span class="kd">local</span> <span class="n">script_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- scripts go here</span> </span><span id="L-152"><a href="#L-152"><span class="linenos" data-line="152"></span></a> <span class="kd">local</span> <span class="n">region_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- regions go here</span> </span><span id="L-153"><a href="#L-153"><span class="linenos" data-line="153"></span></a> <span class="kd">local</span> <span class="n">variant_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- variants go here</span> </span><span id="L-154"><a href="#L-154"><span class="linenos" data-line="154"></span></a> <span class="kd">local</span> <span class="n">suppress_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- here we collect suppressed scripts and associated language codes</span> </span><span id="L-155"><a href="#L-155"><span class="linenos" data-line="155"></span></a> <span class="kd">local</span> <span class="n">iso_639_1_table</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- ISO 639-1 languages; not used by Module:Lang but included here to ensure Module:Lang/data/ISO_639-1 gets updated</span> </span><span id="L-156"><a href="#L-156"><span class="linenos" data-line="156"></span></a> <span class="kd">local</span> <span class="n">file_date</span><span class="p">;</span> <span class="c1">-- first line</span> </span><span id="L-157"><a href="#L-157"><span class="linenos" data-line="157"></span></a> </span><span id="L-158"><a href="#L-158"><span class="linenos" data-line="158"></span></a> <span class="kd">local</span> <span class="n">code</span><span class="p">;</span> </span><span id="L-159"><a href="#L-159"><span class="linenos" data-line="159"></span></a> <span class="kd">local</span> <span class="n">descriptions</span><span class="p">;</span> </span><span id="L-160"><a href="#L-160"><span class="linenos" data-line="160"></span></a> <span class="kd">local</span> <span class="n">prefixes</span><span class="p">;</span> <span class="c1">-- used for language variants only</span> </span><span id="L-161"><a href="#L-161"><span class="linenos" data-line="161"></span></a> <span class="kd">local</span> <span class="n">suppress</span><span class="p">;</span> <span class="c1">-- a code's suppress script</span> </span><span id="L-162"><a href="#L-162"><span class="linenos" data-line="162"></span></a> <span class="kd">local</span> <span class="n">deprecated</span><span class="p">;</span> <span class="c1">-- boolean: true when subtag is deprecated</span> </span><span id="L-163"><a href="#L-163"><span class="linenos" data-line="163"></span></a> </span><span id="L-164"><a href="#L-164"><span class="linenos" data-line="164"></span></a> <span class="n">file_date</span> <span class="o">=</span> <span class="n">content</span><span class="p">:</span><span class="n">match</span> <span class="p">(</span><span class="s1">'(File%-Date: %d%d%d%d%-%d%d%-%d%d)'</span><span class="p">);</span> <span class="c1">-- get the file date line from this version of the source file</span> </span><span id="L-165"><a href="#L-165"><span class="linenos" data-line="165"></span></a> </span><span id="L-166"><a href="#L-166"><span class="linenos" data-line="166"></span></a> <span class="kr">for</span> <span class="n">record</span> <span class="kr">in</span> <span class="nb">string.gmatch</span> <span class="p">(</span><span class="n">content</span><span class="p">,</span> <span class="s1">'%%%%([^%%]+)'</span><span class="p">)</span> <span class="kr">do</span> <span class="c1">-- get a %% delimited 'record' from the file; leave off the delimiters</span> </span><span id="L-167"><a href="#L-167"><span class="linenos" data-line="167"></span></a> <span class="kd">local</span> <span class="n">record_type</span> <span class="o">=</span> <span class="nb">string.match</span><span class="p">(</span><span class="n">record</span><span class="p">,</span> <span class="s1">'Type: (%w+)'</span><span class="p">)</span> </span><span id="L-168"><a href="#L-168"><span class="linenos" data-line="168"></span></a> <span class="kr">if</span> <span class="n">record_type</span> <span class="o">==</span> <span class="s1">'language'</span> <span class="kr">then</span> <span class="c1">-- if a language record</span> </span><span id="L-169"><a href="#L-169"><span class="linenos" data-line="169"></span></a> <span class="n">code</span><span class="p">,</span> <span class="n">descriptions</span><span class="p">,</span> <span class="n">suppress</span><span class="p">,</span> <span class="n">deprecated</span> <span class="o">=</span> <span class="n">get_lang_script_region_parts</span> <span class="p">(</span><span class="n">record</span><span class="p">);</span> <span class="c1">-- get the code, description(s), suppress script, and deprecated flag</span> </span><span id="L-170"><a href="#L-170"><span class="linenos" data-line="170"></span></a> </span><span id="L-171"><a href="#L-171"><span class="linenos" data-line="171"></span></a> <span class="kr">if</span> <span class="n">code</span> <span class="ow">and</span> <span class="p">(</span><span class="s1">'skip'</span> <span class="o">~=</span> <span class="n">code</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-172"><a href="#L-172"><span class="linenos" data-line="172"></span></a> <span class="kr">if</span> <span class="n">deprecated</span> <span class="kr">then</span> </span><span id="L-173"><a href="#L-173"><span class="linenos" data-line="173"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">lang_dep_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">"</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">descriptions</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- make table entries</span> </span><span id="L-174"><a href="#L-174"><span class="linenos" data-line="174"></span></a> <span class="kr">else</span> </span><span id="L-175"><a href="#L-175"><span class="linenos" data-line="175"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">lang_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">"</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">descriptions</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- make table entries</span> </span><span id="L-176"><a href="#L-176"><span class="linenos" data-line="176"></span></a> <span class="kr">if</span> <span class="mi">2</span> <span class="o">==</span> <span class="n">code</span><span class="p">:</span><span class="n">len</span><span class="p">()</span> <span class="kr">then</span> </span><span id="L-177"><a href="#L-177"><span class="linenos" data-line="177"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">iso_639_1_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">"</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">descriptions</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- make table entries</span> </span><span id="L-178"><a href="#L-178"><span class="linenos" data-line="178"></span></a> <span class="kr">end</span> </span><span id="L-179"><a href="#L-179"><span class="linenos" data-line="179"></span></a> <span class="kr">end</span> </span><span id="L-180"><a href="#L-180"><span class="linenos" data-line="180"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="n">code</span> <span class="kr">then</span> </span><span id="L-181"><a href="#L-181"><span class="linenos" data-line="181"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">lang_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">error</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">record</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- code should never be nil, but inserting an error entry in the final output can be helpful</span> </span><span id="L-182"><a href="#L-182"><span class="linenos" data-line="182"></span></a> <span class="kr">end</span> </span><span id="L-183"><a href="#L-183"><span class="linenos" data-line="183"></span></a> <span class="c1">-- here we collect suppress stript tags and their associated language codes;</span> </span><span id="L-184"><a href="#L-184"><span class="linenos" data-line="184"></span></a> <span class="c1">-- prettigying the data in this table must wait until all language codes have been read</span> </span><span id="L-185"><a href="#L-185"><span class="linenos" data-line="185"></span></a> <span class="kr">if</span> <span class="n">suppress</span> <span class="kr">then</span> <span class="c1">-- if this code has a suppressed script</span> </span><span id="L-186"><a href="#L-186"><span class="linenos" data-line="186"></span></a> <span class="kd">local</span> <span class="n">suppressed_code</span> <span class="o">=</span> <span class="nb">table.concat</span> <span class="p">({</span><span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">'</span><span class="p">});</span> <span class="c1">-- wrap the code in quotes</span> </span><span id="L-187"><a href="#L-187"><span class="linenos" data-line="187"></span></a> </span><span id="L-188"><a href="#L-188"><span class="linenos" data-line="188"></span></a> <span class="kr">if</span> <span class="n">suppress_table</span><span class="p">[</span><span class="n">suppress</span><span class="p">]</span> <span class="kr">then</span> <span class="c1">-- if there is an entry for this script</span> </span><span id="L-189"><a href="#L-189"><span class="linenos" data-line="189"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">suppress_table</span><span class="p">[</span><span class="n">suppress</span><span class="p">],</span> <span class="n">suppressed_code</span><span class="p">);</span> <span class="c1">-- insert the new code</span> </span><span id="L-190"><a href="#L-190"><span class="linenos" data-line="190"></span></a> <span class="kr">else</span> </span><span id="L-191"><a href="#L-191"><span class="linenos" data-line="191"></span></a> <span class="n">suppress_table</span><span class="p">[</span><span class="n">suppress</span><span class="p">]</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- add new script and empty table</span> </span><span id="L-192"><a href="#L-192"><span class="linenos" data-line="192"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">suppress_table</span><span class="p">[</span><span class="n">suppress</span><span class="p">],</span> <span class="n">suppressed_code</span><span class="p">);</span> <span class="c1">-- insert the new code</span> </span><span id="L-193"><a href="#L-193"><span class="linenos" data-line="193"></span></a> <span class="kr">end</span> </span><span id="L-194"><a href="#L-194"><span class="linenos" data-line="194"></span></a> <span class="kr">end</span> </span><span id="L-195"><a href="#L-195"><span class="linenos" data-line="195"></span></a> </span><span id="L-196"><a href="#L-196"><span class="linenos" data-line="196"></span></a> <span class="kr">elseif</span> <span class="n">record_type</span> <span class="o">==</span> <span class="s1">'script'</span> <span class="kr">then</span> <span class="c1">-- if a script record</span> </span><span id="L-197"><a href="#L-197"><span class="linenos" data-line="197"></span></a> <span class="n">code</span><span class="p">,</span> <span class="n">descriptions</span> <span class="o">=</span> <span class="n">get_lang_script_region_parts</span> <span class="p">(</span><span class="n">record</span><span class="p">);</span> <span class="c1">-- get the code and description(s)</span> </span><span id="L-198"><a href="#L-198"><span class="linenos" data-line="198"></span></a> </span><span id="L-199"><a href="#L-199"><span class="linenos" data-line="199"></span></a> <span class="kr">if</span> <span class="n">code</span> <span class="ow">and</span> <span class="p">(</span><span class="s1">'skip'</span> <span class="o">~=</span> <span class="n">code</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-200"><a href="#L-200"><span class="linenos" data-line="200"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">script_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">"</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">descriptions</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- make table entries</span> </span><span id="L-201"><a href="#L-201"><span class="linenos" data-line="201"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="n">code</span> <span class="kr">then</span> </span><span id="L-202"><a href="#L-202"><span class="linenos" data-line="202"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">script_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">error</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">record</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- code should never be nil, but ...</span> </span><span id="L-203"><a href="#L-203"><span class="linenos" data-line="203"></span></a> <span class="kr">end</span> </span><span id="L-204"><a href="#L-204"><span class="linenos" data-line="204"></span></a> </span><span id="L-205"><a href="#L-205"><span class="linenos" data-line="205"></span></a> <span class="kr">elseif</span> <span class="n">record_type</span> <span class="o">==</span> <span class="s1">'region'</span> <span class="kr">then</span> <span class="c1">-- if a region record</span> </span><span id="L-206"><a href="#L-206"><span class="linenos" data-line="206"></span></a> <span class="n">code</span><span class="p">,</span> <span class="n">descriptions</span> <span class="o">=</span> <span class="n">get_lang_script_region_parts</span> <span class="p">(</span><span class="n">record</span><span class="p">);</span> <span class="c1">-- get the code and description(s)</span> </span><span id="L-207"><a href="#L-207"><span class="linenos" data-line="207"></span></a> </span><span id="L-208"><a href="#L-208"><span class="linenos" data-line="208"></span></a> <span class="kr">if</span> <span class="n">code</span> <span class="ow">and</span> <span class="p">(</span><span class="s1">'skip'</span> <span class="o">~=</span> <span class="n">code</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-209"><a href="#L-209"><span class="linenos" data-line="209"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">region_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">"</span> <span class="o">..</span> <span class="n">code</span> <span class="o">..</span> <span class="s2">"</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">descriptions</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- make table entries</span> </span><span id="L-210"><a href="#L-210"><span class="linenos" data-line="210"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="n">code</span> <span class="kr">then</span> </span><span id="L-211"><a href="#L-211"><span class="linenos" data-line="211"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">region_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">error</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">record</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- code should never be nil, but ...</span> </span><span id="L-212"><a href="#L-212"><span class="linenos" data-line="212"></span></a> <span class="kr">end</span> </span><span id="L-213"><a href="#L-213"><span class="linenos" data-line="213"></span></a> </span><span id="L-214"><a href="#L-214"><span class="linenos" data-line="214"></span></a> <span class="kr">elseif</span> <span class="n">record_type</span> <span class="o">==</span> <span class="s1">'variant'</span> <span class="kr">then</span> <span class="c1">-- if a variant record</span> </span><span id="L-215"><a href="#L-215"><span class="linenos" data-line="215"></span></a> <span class="n">code</span><span class="p">,</span> <span class="n">prefixes</span><span class="p">,</span> <span class="n">descriptions</span> <span class="o">=</span> <span class="n">get_variant_parts</span> <span class="p">(</span><span class="n">record</span><span class="p">);</span> <span class="c1">-- get the code, prefix(es), and description(s)</span> </span><span id="L-216"><a href="#L-216"><span class="linenos" data-line="216"></span></a> </span><span id="L-217"><a href="#L-217"><span class="linenos" data-line="217"></span></a> <span class="kr">if</span> <span class="n">code</span> <span class="ow">and</span> <span class="p">(</span><span class="s1">'skip'</span> <span class="o">~=</span> <span class="n">code</span><span class="p">)</span> <span class="kr">then</span> </span><span id="L-218"><a href="#L-218"><span class="linenos" data-line="218"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">variant_table</span><span class="p">,</span> </span><span id="L-219"><a href="#L-219"><span class="linenos" data-line="219"></span></a> <span class="nb">table.concat</span> <span class="p">({</span> </span><span id="L-220"><a href="#L-220"><span class="linenos" data-line="220"></span></a> <span class="s2">"[</span><span class="se">\"</span><span class="s2">"</span><span class="p">,</span> </span><span id="L-221"><a href="#L-221"><span class="linenos" data-line="221"></span></a> <span class="n">code</span><span class="p">,</span> </span><span id="L-222"><a href="#L-222"><span class="linenos" data-line="222"></span></a> <span class="s2">"</span><span class="se">\"</span><span class="s2">] = {<br />&#9;&#9;[</span><span class="se">\"</span><span class="s2">descriptions</span><span class="se">\"</span><span class="s2">] = {"</span><span class="p">,</span> </span><span id="L-223"><a href="#L-223"><span class="linenos" data-line="223"></span></a> <span class="n">descriptions</span><span class="p">,</span> </span><span id="L-224"><a href="#L-224"><span class="linenos" data-line="224"></span></a> <span class="s2">"},<br />&#9;&#9;[</span><span class="se">\"</span><span class="s2">prefixes</span><span class="se">\"</span><span class="s2">] = {"</span><span class="p">,</span> </span><span id="L-225"><a href="#L-225"><span class="linenos" data-line="225"></span></a> <span class="n">prefixes</span><span class="p">,</span> </span><span id="L-226"><a href="#L-226"><span class="linenos" data-line="226"></span></a> <span class="s2">"},<br />&#9;&#9;}"</span> </span><span id="L-227"><a href="#L-227"><span class="linenos" data-line="227"></span></a> <span class="p">})</span> </span><span id="L-228"><a href="#L-228"><span class="linenos" data-line="228"></span></a> <span class="p">);</span> </span><span id="L-229"><a href="#L-229"><span class="linenos" data-line="229"></span></a> <span class="kr">elseif</span> <span class="ow">not</span> <span class="n">code</span> <span class="kr">then</span> </span><span id="L-230"><a href="#L-230"><span class="linenos" data-line="230"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">variant_table</span><span class="p">,</span> <span class="s2">"[</span><span class="se">\"</span><span class="s2">error</span><span class="se">\"</span><span class="s2">] = {"</span> <span class="o">..</span> <span class="n">record</span> <span class="o">..</span> <span class="s2">"}"</span><span class="p">);</span> <span class="c1">-- code should never be nil, but ...</span> </span><span id="L-231"><a href="#L-231"><span class="linenos" data-line="231"></span></a> <span class="kr">end</span> </span><span id="L-232"><a href="#L-232"><span class="linenos" data-line="232"></span></a> <span class="kr">end</span> </span><span id="L-233"><a href="#L-233"><span class="linenos" data-line="233"></span></a> <span class="kr">end</span> </span><span id="L-234"><a href="#L-234"><span class="linenos" data-line="234"></span></a> <span class="c1">-- now prettify the supressed script table</span> </span><span id="L-235"><a href="#L-235"><span class="linenos" data-line="235"></span></a> <span class="kd">local</span> <span class="n">pretty_suppressed</span> <span class="o">=</span> <span class="p">{};</span> </span><span id="L-236"><a href="#L-236"><span class="linenos" data-line="236"></span></a> </span><span id="L-237"><a href="#L-237"><span class="linenos" data-line="237"></span></a> <span class="kr">for</span> <span class="n">script</span><span class="p">,</span> <span class="n">code_tbl</span> <span class="kr">in</span> <span class="nb">pairs</span> <span class="p">(</span><span class="n">suppress_table</span><span class="p">)</span> <span class="kr">do</span> </span><span id="L-238"><a href="#L-238"><span class="linenos" data-line="238"></span></a> <span class="kd">local</span> <span class="n">LIMIT</span> <span class="o">=</span> <span class="mi">11</span><span class="p">;</span> <span class="c1">-- max number of subtags on a line before a line break</span> </span><span id="L-239"><a href="#L-239"><span class="linenos" data-line="239"></span></a> <span class="kd">local</span> <span class="n">fragment_tbl</span> <span class="o">=</span> <span class="p">{};</span> <span class="c1">-- groups of LIMIT number of subtags collected here</span> </span><span id="L-240"><a href="#L-240"><span class="linenos" data-line="240"></span></a> </span><span id="L-241"><a href="#L-241"><span class="linenos" data-line="241"></span></a> <span class="kr">for</span> <span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="o">#</span><span class="n">code_tbl</span><span class="p">,</span> <span class="n">LIMIT</span> <span class="kr">do</span> </span><span id="L-242"><a href="#L-242"><span class="linenos" data-line="242"></span></a> <span class="kd">local</span> <span class="n">stop</span> <span class="o">=</span> <span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="n">LIMIT</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">></span> <span class="o">#</span><span class="n">code_tbl</span><span class="p">)</span> <span class="ow">and</span> <span class="o">#</span><span class="n">code_tbl</span> <span class="ow">or</span> <span class="n">i</span><span class="o">+</span><span class="n">LIMIT</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span> <span class="c1">-- calculate a table.concat stop position</span> </span><span id="L-243"><a href="#L-243"><span class="linenos" data-line="243"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">fragment_tbl</span><span class="p">,</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">code_tbl</span><span class="p">,</span> <span class="s1">', '</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">stop</span><span class="p">));</span> <span class="c1">-- get the fragment and save it</span> </span><span id="L-244"><a href="#L-244"><span class="linenos" data-line="244"></span></a> <span class="kr">end</span> </span><span id="L-245"><a href="#L-245"><span class="linenos" data-line="245"></span></a> </span><span id="L-246"><a href="#L-246"><span class="linenos" data-line="246"></span></a> <span class="nb">table.insert</span> <span class="p">(</span><span class="n">pretty_suppressed</span><span class="p">,</span> <span class="c1">-- and make all pretty</span> </span><span id="L-247"><a href="#L-247"><span class="linenos" data-line="247"></span></a> <span class="nb">table.concat</span> <span class="p">({</span><span class="s1">'[</span><span class="se">\"</span><span class="s1">'</span><span class="p">,</span> <span class="n">script</span><span class="p">,</span> <span class="s1">'</span><span class="se">\"</span><span class="s1">] = {'</span><span class="p">,</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">fragment_tbl</span><span class="p">,</span> <span class="s1">',</span><span class="se">\n\t\t\t\t</span><span class="s1">'</span><span class="p">),</span> <span class="s1">'}'</span><span class="p">})</span> </span><span id="L-248"><a href="#L-248"><span class="linenos" data-line="248"></span></a> <span class="p">);</span> </span><span id="L-249"><a href="#L-249"><span class="linenos" data-line="249"></span></a> <span class="kr">end</span> </span><span id="L-250"><a href="#L-250"><span class="linenos" data-line="250"></span></a> <span class="nb">table.sort</span> <span class="p">(</span><span class="n">pretty_suppressed</span><span class="p">);</span> </span><span id="L-251"><a href="#L-251"><span class="linenos" data-line="251"></span></a> </span><span id="L-252"><a href="#L-252"><span class="linenos" data-line="252"></span></a> <span class="c1">-- make final output pretty</span> </span><span id="L-253"><a href="#L-253"><span class="linenos" data-line="253"></span></a> <span class="kr">return</span> <span class="s1">'<br /><pre>------------------------------< I A N A L A N G U A G E S >--------------------------------------------------<br />--'</span> <span class="o">..</span> </span><span id="L-254"><a href="#L-254"><span class="linenos" data-line="254"></span></a> <span class="n">file_date</span> <span class="o">..</span> <span class="s2">"<br />local active = {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">lang_table</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-255"><a href="#L-255"><span class="linenos" data-line="255"></span></a> <span class="s2">"local deprecated = {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">lang_dep_table</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-256"><a href="#L-256"><span class="linenos" data-line="256"></span></a> <span class="s2">"return {<br />&#9;active = active,<br />&#9;deprecated = deprecated,<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-257"><a href="#L-257"><span class="linenos" data-line="257"></span></a> <span class="s1">'------------------------------< I A N A S C R I P T S >------------------------------------------------------<br />--'</span> <span class="o">..</span> </span><span id="L-258"><a href="#L-258"><span class="linenos" data-line="258"></span></a> <span class="n">file_date</span> <span class="o">..</span> <span class="s2">"<br />return {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">script_table</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-259"><a href="#L-259"><span class="linenos" data-line="259"></span></a> <span class="s1">'------------------------------< I A N A R E G I O N S >------------------------------------------------------<br />--'</span> <span class="o">..</span> </span><span id="L-260"><a href="#L-260"><span class="linenos" data-line="260"></span></a> <span class="n">file_date</span> <span class="o">..</span> <span class="s2">"<br />return {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">region_table</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-261"><a href="#L-261"><span class="linenos" data-line="261"></span></a> <span class="s1">'------------------------------< I A N A V A R I A N T S >----------------------------------------------------<br />--'</span> <span class="o">..</span> </span><span id="L-262"><a href="#L-262"><span class="linenos" data-line="262"></span></a> <span class="n">file_date</span> <span class="o">..</span> <span class="s2">"<br />return {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">variant_table</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-263"><a href="#L-263"><span class="linenos" data-line="263"></span></a> <span class="s1">'------------------------------< I A N A S U P P R E S S E D S C R I P T S >--------------------------------<br />--'</span> <span class="o">..</span> </span><span id="L-264"><a href="#L-264"><span class="linenos" data-line="264"></span></a> <span class="n">file_date</span> <span class="o">..</span> <span class="s2">"<br />return {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">pretty_suppressed</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> </span><span id="L-265"><a href="#L-265"><span class="linenos" data-line="265"></span></a> <span class="s1">'------------------------------< I S O 6 3 9 - 1 >------------------------------------------------------------<br />--'</span> <span class="o">..</span> </span><span id="L-266"><a href="#L-266"><span class="linenos" data-line="266"></span></a> <span class="n">file_date</span> <span class="o">..</span> <span class="s2">"<br />return {<br />&#9;"</span> <span class="o">..</span> <span class="nb">table.concat</span> <span class="p">(</span><span class="n">iso_639_1_table</span><span class="p">,</span> <span class="s1">',<br />&#9;'</span><span class="p">)</span> <span class="o">..</span> <span class="s2">"<br />&#9;}<br /><br />"</span> <span class="o">..</span> <span class="s2">"</pre>"</span><span class="p">;</span> </span><span id="L-267"><a href="#L-267"><span class="linenos" data-line="267"></span></a><span class="kr">end</span> </span><span id="L-268"><a href="#L-268"><span class="linenos" data-line="268"></span></a> </span><span id="L-269"><a href="#L-269"><span class="linenos" data-line="269"></span></a> </span><span id="L-270"><a href="#L-270"><span class="linenos" data-line="270"></span></a><span class="cm">--[[--------------------------< E X P O R T E D F U N C T I O N >--------------------------------------------</span> </span><span id="L-271"><a href="#L-271"><span class="linenos" data-line="271"></span></a><span class="cm">]]</span> </span><span id="L-272"><a href="#L-272"><span class="linenos" data-line="272"></span></a> </span><span id="L-273"><a href="#L-273"><span class="linenos" data-line="273"></span></a><span class="kr">return</span> <span class="p">{</span> </span><span id="L-274"><a href="#L-274"><span class="linenos" data-line="274"></span></a> <span class="n">iana_extract</span> <span class="o">=</span> <span class="n">iana_extract</span><span class="p">,</span> </span><span id="L-275"><a href="#L-275"><span class="linenos" data-line="275"></span></a> <span class="p">}</span> </span></pre></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐7487b5dd78‐qwn59 Cached time: 20241118085037 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1] CPU time usage: 0.060 seconds Real time usage: 0.080 seconds Preprocessor visited node count: 41/1000000 Post‐expand include size: 5639/2097152 bytes Template argument size: 0/2097152 bytes Highest expansion depth: 5/100 Expensive parser function count: 3/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 1159/5000000 bytes Lua time usage: 0.028/10.000 seconds Lua memory usage: 783637/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 13.591 1 Module:Lang/data/iana_languages/make/doc 100.00% 13.591 1 -total --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Module:Lang/data/iana_languages/make&oldid=1233719002">https://en.wikipedia.org/w/index.php?title=Module:Lang/data/iana_languages/make&oldid=1233719002</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Category</a>: <ul><li><a href="/wiki/Category:Language-related_modules" title="Category:Language-related modules">Language-related modules</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 10 July 2024, at 14:55<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Module:Lang/data/iana_languages/make&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-7487b5dd78-qwn59","wgBackendResponseTime":413,"wgPageParseReport":{"limitreport":{"cputime":"0.060","walltime":"0.080","ppvisitednodes":{"value":41,"limit":1000000},"postexpandincludesize":{"value":5639,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":5,"limit":100},"expensivefunctioncount":{"value":3,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":1159,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 13.591 1 Module:Lang/data/iana_languages/make/doc","100.00% 13.591 1 -total"]},"scribunto":{"limitreport-timeusage":{"value":"0.028","limit":"10.000"},"limitreport-memusage":{"value":783637,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-7487b5dd78-qwn59","timestamp":"20241118085037","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>