<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.stiles.casa/index.php?action=history&amp;feed=atom&amp;title=Module%3ALanguage%2Fdata%2Fiana_languages%2Fmake</id>
	<title>Module:Language/data/iana languages/make - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stiles.casa/index.php?action=history&amp;feed=atom&amp;title=Module%3ALanguage%2Fdata%2Fiana_languages%2Fmake"/>
	<link rel="alternate" type="text/html" href="https://wiki.stiles.casa/index.php?title=Module:Language/data/iana_languages/make&amp;action=history"/>
	<updated>2026-05-18T12:19:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://wiki.stiles.casa/index.php?title=Module:Language/data/iana_languages/make&amp;diff=7365&amp;oldid=prev</id>
		<title>imported&gt;Trappist the monk: include deprecated language subtags;</title>
		<link rel="alternate" type="text/html" href="https://wiki.stiles.casa/index.php?title=Module:Language/data/iana_languages/make&amp;diff=7365&amp;oldid=prev"/>
		<updated>2020-10-03T13:21:07Z</updated>

		<summary type="html">&lt;p&gt;include deprecated language subtags;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;Module:No globals&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[------------------------&amp;lt; G E T _ V A R I A N T _ P A R T S &amp;gt;---------------------------------------------&lt;br /&gt;
&lt;br /&gt;
We get a record that looks more-or-less like this:&lt;br /&gt;
	%%\n&lt;br /&gt;
	Type: variant\n&lt;br /&gt;
	Subtag: bohoric\n&lt;br /&gt;
	Description: Slovene in Bohorič alphabet\n&lt;br /&gt;
	Added: 2012-06-27\n&lt;br /&gt;
	Prefix: sl\n&lt;br /&gt;
&lt;br /&gt;
Each line is terminated with a \n character.&lt;br /&gt;
&lt;br /&gt;
Type, for this function can only be &amp;#039;variant&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Subtag is the code of Type&lt;br /&gt;
&lt;br /&gt;
Prefix is a language code to which this variant applies; one language code per Prefix line.  There can be&lt;br /&gt;
more than one prefix line.&lt;br /&gt;
&lt;br /&gt;
Description associates Subtag with a proper name or names; one name per Description line.  There can be more&lt;br /&gt;
than one Description line and Description lines can wrap to the next line.  When they do, the first two&lt;br /&gt;
characters of the continuation line are spaces.&lt;br /&gt;
&lt;br /&gt;
Comments: lines can also be continued so once in a Comments line (which is otherwise ignored) all further&lt;br /&gt;
continuations in the record are also ignored.  This is a crude mechanism to prevent comment continuations&lt;br /&gt;
from being concatenated onto the end of descriptions and relies on Description line occuring in the record&lt;br /&gt;
before the Comments line.&lt;br /&gt;
&lt;br /&gt;
Records with private use subtags are ignored.&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function get_variant_parts (record)&lt;br /&gt;
	local code;&lt;br /&gt;
	local descriptions = {};&lt;br /&gt;
	local prefixes = {};&lt;br /&gt;
	local in_comments = false;&lt;br /&gt;
&lt;br /&gt;
	if string.find (record, &amp;#039;Deprecated&amp;#039;, 1, true) or string.find (record, &amp;#039;Preferred-Value&amp;#039;, 1, true)&lt;br /&gt;
			or string.find (record, &amp;#039;Private use&amp;#039;, 1, true) then&lt;br /&gt;
		return &amp;#039;skip&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for line in string.gmatch (record, &amp;#039;([^\n]+)\n&amp;#039;) do						-- get a \n terminated line of text (without the \n)&lt;br /&gt;
		local label = string.match(line, &amp;quot;(.-):&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		if not label and string.find (line, &amp;#039;^  .+&amp;#039;) and not in_comments then		-- if a continuation line but not a comments continuation&lt;br /&gt;
			descriptions[#descriptions] = string.gsub (descriptions[#descriptions], &amp;#039;\&amp;quot;$&amp;#039;, &amp;#039;&amp;#039;);		-- remove trailing quote mark from previous description&lt;br /&gt;
			descriptions[#descriptions] = descriptions[#descriptions] .. &amp;#039; &amp;#039; .. string.match (line, &amp;#039;^  (.+)&amp;#039;) .. &amp;#039;\&amp;quot;&amp;#039;;	-- extract and save the continuation with new quote mark&lt;br /&gt;
		elseif label == &amp;#039;Subtag&amp;#039; then						-- if this line is the subtag line&lt;br /&gt;
			code = string.match (line, &amp;#039;Subtag: (%w+)&amp;#039;);				-- extract and save to subtag&amp;#039;s code&lt;br /&gt;
		elseif label == &amp;#039;Description&amp;#039; then					-- if this line is a description line&lt;br /&gt;
			local desc = string.match (line, &amp;#039;Description: (.+)&amp;#039;);			-- extract the description&lt;br /&gt;
			desc = string.gsub (desc, &amp;#039;&amp;quot;&amp;#039;, &amp;#039;\\&amp;quot;&amp;#039;);							-- in case description contains quote marks (see 1959acad)&lt;br /&gt;
			table.insert (descriptions, &amp;#039;\&amp;quot;&amp;#039; .. desc .. &amp;#039;\&amp;quot;&amp;#039;);					-- save the description wrapped in quote marks&lt;br /&gt;
		elseif label == &amp;#039;Prefix&amp;#039; then						-- if this line is a prefix line&lt;br /&gt;
			table.insert (prefixes, &amp;#039;\&amp;quot;&amp;#039; .. string.match (line, &amp;#039;Prefix: (.+)&amp;#039;):lower() .. &amp;#039;\&amp;quot;&amp;#039;);	-- extract and save the prefix wrapped in quote marks&lt;br /&gt;
		elseif label == &amp;#039;Comments&amp;#039; then						-- if this line is a comments line&lt;br /&gt;
			in_comments = true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return code, table.concat (prefixes, &amp;#039;, &amp;#039;), table.concat (descriptions, &amp;#039;, &amp;#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[------------------------&amp;lt; G E T _ L A N G _ S C R I P T _ R E G I O N _ P A R T S &amp;gt;-----------------------&lt;br /&gt;
&lt;br /&gt;
We get a record that looks more-or-less like this:&lt;br /&gt;
	%%\n&lt;br /&gt;
	Type: language\n&lt;br /&gt;
	Subtag: aa\n&lt;br /&gt;
	Description: Afar\n&lt;br /&gt;
	Added: 2005-10-16\n&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
Each line is terminated with a \n character.&lt;br /&gt;
&lt;br /&gt;
Type, for our purposes can be &amp;#039;language&amp;#039;, &amp;#039;script&amp;#039;, or &amp;#039;region&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Subtag is the code of Type&lt;br /&gt;
&lt;br /&gt;
Description associates Subtag with a proper name or names; one name per Description line.  There can be more&lt;br /&gt;
than one Description line and Description lines can wrap to the next line.  When they do, the first two&lt;br /&gt;
characters of the continuation line are spaces.&lt;br /&gt;
&lt;br /&gt;
Comments: lines can also be continued so once in a Comments line (which is otherwise ignored) all further&lt;br /&gt;
continuations in the record are also ignored.  This is a crude mechanism to prevent comment continuations&lt;br /&gt;
from being concatenated onto the end of descriptions and relies on Description line occuring in the record&lt;br /&gt;
before the Comments line.&lt;br /&gt;
&lt;br /&gt;
Records with private use subtags are ignored.&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function get_lang_script_region_parts (record)&lt;br /&gt;
	local code;&lt;br /&gt;
	local suppress;																-- Suppress script for this code if specified&lt;br /&gt;
	local deprecated;															-- boolean; true when subtag is deprecated&lt;br /&gt;
	local descriptions = {};&lt;br /&gt;
	local in_comments = false;&lt;br /&gt;
&lt;br /&gt;
	if record:find (&amp;#039;Private use&amp;#039;) then&lt;br /&gt;
		return &amp;#039;skip&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for line in record:gmatch (&amp;#039;([^\n]+)\n&amp;#039;) do									-- get a \n terminated line of text (without the \n)&lt;br /&gt;
		local label = line:match (&amp;#039;(.-):&amp;#039;);&lt;br /&gt;
		if &amp;#039;Subtag&amp;#039; == label then												-- if this line is the subtag line&lt;br /&gt;
			code = line:match (&amp;#039;Subtag: (%w+)&amp;#039;);								-- extract and save to subtag&amp;#039;s code&lt;br /&gt;
		elseif &amp;#039;Description&amp;#039; == label then										-- if this line is a description line&lt;br /&gt;
			table.insert (descriptions, &amp;#039;\&amp;quot;&amp;#039; .. line:match (&amp;#039;Description: (.+)&amp;#039;) .. &amp;#039;\&amp;quot;&amp;#039;);	-- extract and save the name wrapped in quote marks&lt;br /&gt;
		elseif &amp;#039;Deprecated&amp;#039; == label then&lt;br /&gt;
			deprecated = true;													-- subtag is deprecated; set our flag&lt;br /&gt;
		elseif &amp;#039;Suppress-Script&amp;#039; == label then&lt;br /&gt;
			suppress = line:match (&amp;#039;Suppress%-Script: (%S+)&amp;#039;);&lt;br /&gt;
		elseif &amp;#039;Comments&amp;#039; == label then											-- if this line is a comments line&lt;br /&gt;
			in_comments = true;&lt;br /&gt;
		elseif line:find (&amp;#039;^  .+&amp;#039;) and not in_comments then						-- if a continuation line but not a commnets continuation&lt;br /&gt;
			descriptions[#descriptions] = descriptions[#descriptions]:gsub (&amp;#039;\&amp;quot;$&amp;#039;, &amp;#039;&amp;#039;);		-- remove trailing quote mark from previous description&lt;br /&gt;
			descriptions[#descriptions] = descriptions[#descriptions] .. &amp;#039; &amp;#039; .. line:match (&amp;#039;^  (.+)&amp;#039;) .. &amp;#039;\&amp;quot;&amp;#039;;	-- extract and save the continuation with new quote mark&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return code, table.concat (descriptions, &amp;#039;, &amp;#039;), suppress, deprecated;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[------------------------&amp;lt; I A N A _ E X T R A C T &amp;gt;-------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
read a local copy of the IANA language-subtag-registry file and from it build tables to replace the tables in:&lt;br /&gt;
	[[Module:Language/data/iana languages]]&lt;br /&gt;
	[[Module:Language/data/iana scripts]&lt;br /&gt;
	[[Module:Language/data/iana regions]]&lt;br /&gt;
&lt;br /&gt;
current language-subtag-registry file can be found at: http://www.iana.org/assignments/language-subtag-registry&lt;br /&gt;
archive.org has copies of previous versions see: https://web.archive.org/web/*/http://www.iana.org/assignments/language-subtag-registry&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function iana_extract (frame)&lt;br /&gt;
	local page = mw.title.getCurrentTitle();									-- get a page object for this page&lt;br /&gt;
	local content = page:getContent();											-- get unparsed content&lt;br /&gt;
	local lang_table = {};														-- languages go here&lt;br /&gt;
	local lang_dep_table = {};													-- deprecated languages go here&lt;br /&gt;
	local script_table = {};													-- scripts go here&lt;br /&gt;
	local region_table = {};													-- regions go here&lt;br /&gt;
	local variant_table = {};													-- variants go here&lt;br /&gt;
	local suppress_table = {};													-- here we collect suppressed scripts and associated language codes&lt;br /&gt;
	local iso_639_1_table = {};													-- ISO 639-1 languages; not used by Module:Lang but included here to ensure Module:Language/data/ISO_639-1 gets updated&lt;br /&gt;
	local file_date;															-- first line&lt;br /&gt;
&lt;br /&gt;
	local code;&lt;br /&gt;
	local descriptions;&lt;br /&gt;
	local prefixes;																-- used for language variants only&lt;br /&gt;
	local suppress;																-- a code&amp;#039;s suppress script&lt;br /&gt;
	local deprecated;															-- boolean: true when subtag is deprecated&lt;br /&gt;
&lt;br /&gt;
	file_date = content:match (&amp;#039;(File%-Date: %d%d%d%d%-%d%d%-%d%d)&amp;#039;);			-- get the file date line from this version of the source file&lt;br /&gt;
&lt;br /&gt;
	for record in string.gmatch (content, &amp;#039;%%%%([^%%]+)&amp;#039;) do					-- get a %% delimited &amp;#039;record&amp;#039; from the file; leave off the delimiters&lt;br /&gt;
		local record_type = string.match(record, &amp;#039;Type: (%w+)&amp;#039;)&lt;br /&gt;
		if record_type == &amp;#039;language&amp;#039; then										-- if a language record&lt;br /&gt;
			code, descriptions, suppress, deprecated = get_lang_script_region_parts (record);	-- get the code, description(s), suppress script, and deprecated flag&lt;br /&gt;
			&lt;br /&gt;
			if code and (&amp;#039;skip&amp;#039; ~= code) then&lt;br /&gt;
				if deprecated then&lt;br /&gt;
					table.insert (lang_dep_table, &amp;quot;[\&amp;quot;&amp;quot; .. code .. &amp;quot;\&amp;quot;] = {&amp;quot; .. descriptions .. &amp;quot;}&amp;quot;);		-- make table entries&lt;br /&gt;
				else&lt;br /&gt;
					table.insert (lang_table, &amp;quot;[\&amp;quot;&amp;quot; .. code .. &amp;quot;\&amp;quot;] = {&amp;quot; .. descriptions .. &amp;quot;}&amp;quot;);			-- make table entries&lt;br /&gt;
					if 2 == code:len() then&lt;br /&gt;
						table.insert (iso_639_1_table, &amp;quot;[\&amp;quot;&amp;quot; .. code .. &amp;quot;\&amp;quot;] = {&amp;quot; .. descriptions .. &amp;quot;}&amp;quot;);	-- make table entries&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif not code then&lt;br /&gt;
				table.insert (lang_table, &amp;quot;[\&amp;quot;error\&amp;quot;] = {&amp;quot; .. record .. &amp;quot;}&amp;quot;);	-- code should never be nil, but inserting an error entry in the final output can be helpful&lt;br /&gt;
			end&lt;br /&gt;
																				-- here we collect suppress stript tags and their associated language codes;&lt;br /&gt;
																				-- prettigying the data in this table must wait until all language codes have been read&lt;br /&gt;
			if suppress then													-- if this code has a suppressed script&lt;br /&gt;
				local suppressed_code = table.concat ({&amp;#039;\&amp;quot;&amp;#039;, code, &amp;#039;\&amp;quot;&amp;#039;});		-- wrap the code in quotes&lt;br /&gt;
				&lt;br /&gt;
				if suppress_table[suppress] then								-- if there is an entry for this script&lt;br /&gt;
					table.insert (suppress_table[suppress], suppressed_code);	-- insert the new code&lt;br /&gt;
				else&lt;br /&gt;
					suppress_table[suppress] = {};								-- add new script and empty table&lt;br /&gt;
					table.insert (suppress_table[suppress], suppressed_code);	-- insert the new code&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif record_type == &amp;#039;script&amp;#039; then					-- if a script record&lt;br /&gt;
			code, descriptions = get_lang_script_region_parts (record);			-- get the code and description(s)&lt;br /&gt;
			&lt;br /&gt;
			if code and (&amp;#039;skip&amp;#039; ~= code) then														&lt;br /&gt;
				table.insert (script_table, &amp;quot;[\&amp;quot;&amp;quot; .. code .. &amp;quot;\&amp;quot;] = {&amp;quot; .. descriptions .. &amp;quot;}&amp;quot;);	-- make table entries&lt;br /&gt;
			elseif not code then&lt;br /&gt;
				table.insert (script_table, &amp;quot;[\&amp;quot;error\&amp;quot;] = {&amp;quot; .. record .. &amp;quot;}&amp;quot;);	-- code should never be nil, but ...&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif record_type == &amp;#039;region&amp;#039; then					-- if a region record&lt;br /&gt;
			code, descriptions = get_lang_script_region_parts (record);			-- get the code and description(s)&lt;br /&gt;
			&lt;br /&gt;
			if code and (&amp;#039;skip&amp;#039; ~= code) then														&lt;br /&gt;
				table.insert (region_table, &amp;quot;[\&amp;quot;&amp;quot; .. code .. &amp;quot;\&amp;quot;] = {&amp;quot; .. descriptions .. &amp;quot;}&amp;quot;);	-- make table entries&lt;br /&gt;
			elseif not code then&lt;br /&gt;
				table.insert (region_table, &amp;quot;[\&amp;quot;error\&amp;quot;] = {&amp;quot; .. record .. &amp;quot;}&amp;quot;);	-- code should never be nil, but ...&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif record_type == &amp;#039;variant&amp;#039; then					-- if a variant record&lt;br /&gt;
			code, prefixes, descriptions = get_variant_parts (record);			-- get the code, prefix(es), and description(s)&lt;br /&gt;
&lt;br /&gt;
			if code and (&amp;#039;skip&amp;#039; ~= code) then														&lt;br /&gt;
				table.insert (variant_table,&lt;br /&gt;
					table.concat ({&lt;br /&gt;
						&amp;quot;[\&amp;quot;&amp;quot;,&lt;br /&gt;
						code,&lt;br /&gt;
						&amp;quot;\&amp;quot;] = {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;amp;#9;[\&amp;quot;descriptions\&amp;quot;] = {&amp;quot;,&lt;br /&gt;
						descriptions,&lt;br /&gt;
						&amp;quot;},&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;amp;#9;[\&amp;quot;prefixes\&amp;quot;] = {&amp;quot;,&lt;br /&gt;
						prefixes,&lt;br /&gt;
						&amp;quot;},&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;amp;#9;}&amp;quot;&lt;br /&gt;
						})&lt;br /&gt;
					);&lt;br /&gt;
			elseif not code then&lt;br /&gt;
				table.insert (variant_table, &amp;quot;[\&amp;quot;error\&amp;quot;] = {&amp;quot; .. record .. &amp;quot;}&amp;quot;);	-- code should never be nil, but ...&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
																				-- now prettify the supressed script table&lt;br /&gt;
	local pretty_suppressed = {};&lt;br /&gt;
	&lt;br /&gt;
	for script, code_tbl in pairs (suppress_table) do&lt;br /&gt;
		local LIMIT = 11;														-- max number of subtags on a line before a line break&lt;br /&gt;
		local fragment_tbl = {};												-- groups of LIMIT number of subtags collected here&lt;br /&gt;
		&lt;br /&gt;
		for i=1, #code_tbl, LIMIT do&lt;br /&gt;
			local stop = ((i+LIMIT-1) &amp;gt; #code_tbl) and #code_tbl or i+LIMIT-1;	-- calculate a table.concat stop position&lt;br /&gt;
			table.insert (fragment_tbl, table.concat (code_tbl, &amp;#039;, &amp;#039;, i, stop));	-- get the fragment and save it&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert (pretty_suppressed,										-- and make all pretty&lt;br /&gt;
			table.concat ({&amp;#039;[\&amp;quot;&amp;#039;, script, &amp;#039;\&amp;quot;] = {&amp;#039;, table.concat (fragment_tbl, &amp;#039;,\n\t\t\t\t&amp;#039;), &amp;#039;}&amp;#039;})&lt;br /&gt;
			);&lt;br /&gt;
	end&lt;br /&gt;
	table.sort (pretty_suppressed);&lt;br /&gt;
&lt;br /&gt;
																				-- make final output pretty&lt;br /&gt;
	return &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;pre&amp;gt;------------------------------&amp;lt; I A N A   L A N G U A G E S &amp;gt;--------------------------------------------------&amp;lt;br /&amp;gt;--&amp;#039; ..&lt;br /&gt;
			file_date .. &amp;quot;&amp;lt;br /&amp;gt;local active = {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (lang_table, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; .. &lt;br /&gt;
			&amp;quot;local deprecated = {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (lang_dep_table, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; .. &lt;br /&gt;
			&amp;quot;return {&amp;lt;br /&amp;gt;&amp;amp;#9;active = active,&amp;lt;br /&amp;gt;&amp;amp;#9;deprecated = deprecated,&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; ..&lt;br /&gt;
			&amp;#039;------------------------------&amp;lt; I A N A   S C R I P T S &amp;gt;------------------------------------------------------&amp;lt;br /&amp;gt;--&amp;#039; ..&lt;br /&gt;
			file_date .. &amp;quot;&amp;lt;br /&amp;gt;return {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (script_table, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; ..&lt;br /&gt;
			&amp;#039;------------------------------&amp;lt; I A N A   R E G I O N S &amp;gt;------------------------------------------------------&amp;lt;br /&amp;gt;--&amp;#039; ..&lt;br /&gt;
			file_date .. &amp;quot;&amp;lt;br /&amp;gt;return {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (region_table, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; ..&lt;br /&gt;
			&amp;#039;------------------------------&amp;lt; I A N A   V A R I A N T S &amp;gt;----------------------------------------------------&amp;lt;br /&amp;gt;--&amp;#039; ..&lt;br /&gt;
			file_date .. &amp;quot;&amp;lt;br /&amp;gt;return {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (variant_table, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; ..&lt;br /&gt;
			&amp;#039;------------------------------&amp;lt; I A N A   S U P P R E S S E D   S C R I P T S &amp;gt;--------------------------------&amp;lt;br /&amp;gt;--&amp;#039; ..&lt;br /&gt;
			file_date .. &amp;quot;&amp;lt;br /&amp;gt;return {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (pretty_suppressed, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; ..&lt;br /&gt;
			&amp;#039;------------------------------&amp;lt; I S O   6 3 9 - 1 &amp;gt;------------------------------------------------------------&amp;lt;br /&amp;gt;--&amp;#039; ..&lt;br /&gt;
			file_date .. &amp;quot;&amp;lt;br /&amp;gt;return {&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;quot; .. table.concat (iso_639_1_table, &amp;#039;,&amp;lt;br /&amp;gt;&amp;amp;#9;&amp;#039;) .. &amp;quot;&amp;lt;br /&amp;gt;&amp;amp;#9;}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;quot; .. &amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N &amp;gt;--------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	iana_extract = iana_extract,&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>imported&gt;Trappist the monk</name></author>
	</entry>
</feed>