Neater way to work with data modules with string keys, similar to Module:array.
-- Get data tables for languages with transliteration modules.
local Map = require("Module:User:Erutuon/lang stuff/map")
local has_transliteration_module = Map:new(require 'Module:languages/data/2')
:filter(function (data) return data.translit_module ~= nil end)
-- Create list of their canonical names and codes.
has_transliteration_module
:map(function (data, code) return ("%s (%s)"):format(data, code) end)
:values() -- Returns array from Module:array.
:sort()
:concat(", ")
--> "Abkhaz (ab), Amharic (am), Arabic (ar), Armenian (hy), Assamese (as), Avar (av), Avestan (ae), Bashkir (ba), Belarusian (be), Bengali (bn), Bulgarian (bg), Burmese (my), Chechen (ce), Chuvash (cv), Cree (cr), Dhivehi (dv), Dzongkha (dz), Georgian (ka), Greek (el), Gujarati (gu), Hindi (hi), Inuktitut (iu), Javanese (jv), Kannada (kn), Kashmiri (ks), Kazakh (kk), Khmer (km), Korean (ko), Kurdish (ku), Kyrgyz (ky), Lao (lo), Macedonian (mk), Malayalam (ml), Marathi (mr), Mongolian (mn), Nepali (ne), Old Church Slavonic (cu), Odia (or), Ossetian (os), Punjabi (pa), Russian (ru), Sanskrit (sa), Sichuan Yi (ii), Sinhalese (si), Sundanese (su), Tajik (tg), Tamil (ta), Tatar (tt), Telugu (te), Thai (th), Tibetan (bo), Tigrinya (ti), Ukrainian (uk), Uyghur (ug), Yiddish (yi)"