Module:Lang/name to tag
From Zoophilia Wiki
Jump to navigationJump to search
This module creates language name (key) to language tag (value) support tables used by Module:Lang:
rev_lang_name_table
– data from Module:Language/name/data particularly thelang
table which is assembled from data in Module:Language/data/wp languages, Module:Language/data/ISO 639-3, and Module:Language/data/iana languages.rev_lang_data
– data from Module:Lang/data particularly theoverride
table.
These reversed data tables are loaded and used by _tag_from_name()
.
--[[--------------------------< N A M E - T O - T A G D A T A >----------------------------------------------
Creates name-to-tag tables from the data in Module:Language/name/data (from Module:Language/data/iana languages,
Module:Language/data/ISO 639-3, Module:Language/data/wp languages) and Module:Lang/data so that templates can
get language tags from the same names as the {{lang}} templates get from those tags. The conversion prefers
ISO 639-1 codes.
]]
local rev_lang_name_table = {}; -- same as Module:Language/name/data except reversed so language name is key and language tag is value
local rev_lang_data = {}; -- same as Module:Lang/data except reversed
local raw_data = mw.loadData ('Module:Language/name/data') -- load the data from the standard source module
for tag, name_table in pairs (raw_data.lang) do
local name = name_table[1]; -- there can be multiple names, always take the first name
name = name:gsub ('%s+%b()', ''):lower(); -- remove parenthetical disambiguators or qualifiers from names that have them
if rev_lang_name_table[name] then -- if already set
if 2 == tag:len() then -- is this is an ISO 639-1 code?
rev_lang_name_table[name] = tag; -- yes, overwrite ISO 639-3 language name (key) and tag (value) pair in the output table
end
else -- here when not yet set
rev_lang_name_table[name] = tag; -- add language name (key) and tag (value) pair to the output table
end
end
raw_data = mw.loadData ('Module:Lang/data') -- load the data from the override source module
for tag, name_table in pairs (raw_data.override) do
local name = name_table[1]; -- there can be multiple names, always take the first name
name = name:gsub ('%s+%b()', ''):lower(); -- remove parenthetical disambiguators or qualifiers from names that have them
rev_lang_data[name] = tag; -- add language name (key) and tag (value) pair to the output table
end
raw_data = {}; -- init back to an empty table?
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
rev_lang_name_table = rev_lang_name_table,
rev_lang_data = rev_lang_data,
}