Module:ListI18n
![]() | This module is rated as alpha. It is ready for third party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome. |
Lua module that renders language list with links by given json file.
UsageUsage
{{#invoke:ListI18n|main|filename.json|link=filename.$lang.js|flags=yes/no}}
{{#invoke:ListI18n|main|filename.json|translatewiki=project-name|flags=yes/no}}
local getArgs = require( 'Module:Arguments' ).getArgs
local yesno = require( 'Module:Yesno' )
local contentLanguage = mw.message.getDefaultLanguage():getCode()
-- Copied from [[meta:Module:Wiki99]]
local langIcons = {
aa = "Flag orb Afar.svg",
ab = "Flag orb Republic of Abkhazia.svg",
abs = "Flag orb Indonesia.svg", -- Ambonese
ace = "Flag of Aceh, Indonesia.svg",
ady = "Flag of Adygea (3-2).svg",
aeb = "Flag orb Tunisia.svg",
af = "Flag orb South Africa.svg",
-- ak = "Akan.??g",
aln = "Flag orb Albania.svg",
-- alt = "Southern Altai.??g",
am = "Flag orb Ethiopia.svg",
ami = "阿米斯音乐节旗.svg",
an = "Flag of Aragon.svg",
ang = "Flag orb England.svg",
ar = "Flag orb Saudi Arabia.svg",
arn = "Lautaro flag.svg", -- Mapudungun (Mapuches Araucanian)
arq = "Flag orb Algeria.svg",
ary = "Flag orb Morocco.svg",
arz = "Flag orb Egypt.svg",
as = "Flag orb India.svg", -- Assamese
ase = "Flag orb United States.svg",
ast = "Flag orb Asturias.svg",
-- atj = "Atikamekw.??g",
av = "Flag of Avars.svg",
avk = "Flag of Kotava.svg",
-- awa = "Awadhi.??g",
ay = "Flag orb Wiphala.svg",
az = "Flag orb Azerbaijan.svg",
azb = "Flag orb Iran.svg",
ba = "Flag orb Bashkortostan.svg",
ban = "Flag of Bali.svg",
bar = "Flag of Bavaria (lozengy).svg",
-- bbc = "Batak Toba.??g",
bcc = "Flag of the Baloch People.svg", -- Southern Balochi (Pakistan)
-- bci = "Baoulé.??g",
-- bcl = "Bicolano.??g",
be = "Flag orb Belarus.svg",
['be-tarask'] = "Flag orb Belarus.svg",
bg = "Flag orb Bulgaria.svg",
bgn = "Flag of the Baloch People.svg", -- Western Balochi (Iran)
-- bho = "Bhojpuri.??g",
bi = "Vanuatu-orb.png",
bjn = "Flag orb Banjar Sultanate.svg",
-- blk = "Pa'o Karen.??g",
bm = "Flag orb Mali.svg",
bn = "Flag orb Bangladesh.svg",
bo = "Flag orb Tibet.svg",
-- bpy = "Bishnupriya Manipuri.??g",
-- bqi = "Bakhtiari.??g",
br = "Flag of Brittany.svg",
-- brh = "Brahui.??g",
-- brx = "Boro.??g",
bs = "Flag orb Bosnia and Herzegovina.svg",
-- btm = "Batak Mandailing.??g",
-- bto = "Iriga Bicolano.??g",
bug = "Flag of South Sulawesi.svg",
bxr = "Flag of Buryatia.svg",
ca = "Flag orb Catalonia.svg",
['cbk-x-zam'] = "Flag of Zamboanga.jpg",
-- cdo = "Min Dong.??g",
ce = "Flag of the Chechen Republic.svg",
ceb = "Flag of Cebu (province).svg",
ch = "Flag orb Guam.svg",
-- cho = "Choctaw.??g",
chr = "Flag of the Cherokee Nation.svg",
chy = "Flag orb Northern Cheyenne.svg",
ckb = "Flag orb Kurdistan.svg", -- Sorani (Persian Kurd)
co = "Flag of Corsica.svg",
-- cps = "Capiznon.??g",
-- cr = "Cree.??g",
crh = "Crimean Tatar tamga icon (blue and gold).svg",
cs = "Flag orb Czech Republic.svg",
csb = "Kashubian flag.svg",
-- cu = "Old Church Slavonic.??g",
cv = "Flag of Chuvashia.svg",
cy = "Flag orb Wales.svg",
da = "Flag orb Denmark.svg",
-- dag = "Dagbani.??g",
de = "Flag orb Germany.svg",
-- din = "South Central Dinka.??g",
diq = "Zazaistanmodernflag.jpg",
dsb = "Dolnoserbski.svg",
-- dtp = "Kadazan Dusun.??g",
-- dty = "Dotyali.??g",
dv = "Flag orb Maldives.svg",
dz = "Flag orb Bhutan.svg",
ee = "Flag orb Ewe.svg",
egl = "Flag of Emilia.svg",
el = "Flag orb Greece.svg",
eml = "Bandiera dell'Emilia.svg",
en = "Flag orb USA and United Kingdom.svg",
eo = "Flag orb Esperanto.svg",
es = "Flag orb Spain.svg",
et = "Flag orb Estonia.svg",
eu = "Flag orb Basque Country.svg",
ext = "Flag orb Extremadura.svg",
fa = "Flag orb Iran.svg",
-- fat = "Fante Akan.??g",
-- ff = "Fula.??g",
fi = "Flag orb Finland.svg",
-- fit = "Tornedalen Finnish.??g",
fj = "Flag orb Fiji.svg",
fo = "Flag orb Faroe Islands.svg",
-- fon = "Fon.??g",
fr = "Flag orb France.svg",
frc = "Flag orb of Acadiana.svg",
frp = "Flag orb Arpitania.svg",
frr = "Flag orb North Friesland.svg",
fur = "Bandiere dal Friûl.svg",
fy = "West-Friesland vlag.svg",
ga = "Flag orb Ireland.svg",
-- gaa = "Ga.??g",
gag = "Flag of Gagauzia.svg",
-- gan = "Gan.??g",
gcf = "Flag of Guadeloupe (Local).svg",
gcr = "Flag of French Guiana.svg",
gd = "Flag orb Scotland.svg",
gil = "Flag orb Kiribati.svg",
gl = "Flag orb Galicia.svg",
-- gld = "Nanai.??g",
glk = "Flag orb Gilaks.svg",
gn = "Guarani flag.svg",
gom = "Flag of Goa, India.svg",
-- gor = "Gorontalo.??g",
got = "Gothic flag.svg",
gpe = "Flag orb Ghana.svg", -- Ghanaian Pidgin English
grc = "Flag orb Greece.svg",
gsw = "Flag orb Switzerland.svg",
gu = "Flag of the Gujarat Sultanate.svg",
-- guc = "Wayuu (Goahiro).??g",
-- gur = "Farefare (Gurenne).??g",
-- guw = "Gun.??g",
gv = "Flag orb Isle of Man.svg",
ha = "Flag orb Hausa.svg",
hak = "Flag orb Taiwan.svg",
haw = "Flag of Hawaii.svg",
he = "Flag orb Israel.svg",
hi = "Flag orb India.svg",
hif = "Flag orb Fiji.svg",
-- hil = "Hiligaynon.??g",
-- ho = "Hiri Motu.??g",
hr = "Flag orb Croatia.svg",
-- hrx = "Hunsrik.??g",
hsb = "Hornjoserbšćina.svg",
-- hsn = "Xi'ang Chinese.??g",
ht = "Flag orb Haiti.svg",
hu = "Flag orb Hungary.svg",
hy = "Flag orb Armenia.svg",
hyw = "Flag orb Armenia.svg",
-- hz = "Herero.??g",
ia = "Flag orb Interlingua.svg",
id = "Flag orb Indonesia.svg",
ie = "Flag orb Interlingue.svg",
ig = "Flag orb Biafra.svg",
-- ii = "Sichuan Yi.??g",
ik = "Flag of Alaska.svg",
-- ilo = "Ilokano.??g",
inh = "Flag orb Ingushetia.svg",
io = "Flag orb Ido.svg",
is = "Flag orb Iceland.svg",
it = "Flag orb Italy.svg",
-- iu = "Inuit.??g",
ja = "Flag orb Japan.svg",
jam = "Flag orb Jamaica.svg",
jbo = "Lojban flag.svg",
jut = "Flag of Jutland.svg",
jv = "Flag orb Indonesia.svg",
['jv-x-bms'] = "Flag orb Indonesia.svg",
ka = "Flag orb Georgia.svg",
kaa = "Flag of Karakalpakstan.svg",
kab = "Flag-kabyle.svg",
-- kbd = "Kabardian.??g",
kbp = "Flag orb Togo.svg",
-- kcg = "Tyap.??g",
kea = "Flag orb Cape Verde.svg",
kg = "Flag of the Kingdom of Kongo according to Giovanni Cavazzi da Montecuccolo.svg",
-- khw = "Khowar.??g",
ki = "Kikuyu Flag (Cowrie on Ochre).svg",
-- kiu = "Kirmanjki.??g",
-- kj = "Kuanyama.??g",
-- kjp = "Pwo Eastern Karen.??g",
kk = "Flag orb Kazakhstan.svg",
kl = "Flag orb Greenland.svg",
km = "Flag orb Cambodia.svg",
kn = "Flag orb Kannada.svg",
ko = "Flag orb South Korea.svg",
koi = "Flag of Komi-Permyak Okrug.svg",
kr = "Flag orb Kanuri.svg",
krc = "Ethnic flag of the Balkar and Karachay peoples (Karachay-Balkaria).svg",
-- kri = "Krio.??g",
-- krj = "Kinaray-a.??g",
krl = "Flag of Karelia.svg",
-- ks = "Kashmiri.??g",
ksh = "Flagge Köln.svg",
-- ksw = "S'gaw Karen.??g",
ku = "Flag orb Kurdistan.svg",
kum = "Flag of Kumyks.svg",
kv = "Flag of Komi.svg",
kw = "Flag of Cornwall.svg",
ky = "Flag orb Kyrgystan.svg",
la = "Latiiiin.jpg",
lad = "Ladino Flag.svg",
lb = "Flag orb Luxembourg.svg",
lbe = "Flag of Laksky rayon (Dagestan).png",
lez = "Lezgian flag.svg",
lfn = "Flag of Lingua Franca Nova.svg",
lg = "Flag orb Uganda.svg",
li = "Flag of Limburg (Netherlands).svg",
lij = "Flag of Liguria.svg",
liv = "Flag of the Livonians.svg",
lki = "Flag orb Kurdistan.svg", -- Laki Kurdish (Lekî, Iran/Turkey)
lld = "Flag of Ladinia.svg",
lmo = "Flag orb Lombardy.svg",
ln = "Flag orb Democratic Republic of the Congo.svg",
lo = "Flag orb Laos.svg",
loz = "Flag orb Barotseland.svg", -- Lozi (Barotse)
-- lrc = "Northern Luri.??g",
lt = "Flag orb Lithuania.svg",
ltg = "Flag of Latgalians.svg",
lus = "Chin or Mizo flag.svg", -- Mizo (Lushai)
-- luz = "Southern Luri.??g",
lv = "Flag orb Latvia.svg",
lzh = "Flag orb China.svg",
lzz = "Borjgala.svg", -- Laz
mad = "Flag of Various Autonomous Indonesian States.svg",
-- mai = "Maithili.??g",
mdf = "Flag of Mokshan (Penza oblast).png",
mg = "Flag orb Madagascar.svg",
mhr = "Flag of Mari El.svg",
mi = "Flag orb New Zealand.svg",
min = "Flag of Minang.svg",
mk = "Flag orb North Macedonia.svg",
ml = "Malayali flag.svg",
mn = "Flag orb Mongolia.svg",
mni = "Flag of Manipur.svg",
mnw = "Flag of Mon State (2018).svg",
mos = "Flag orb Burkina Faso.svg", -- Mossi (Mooré)
mr = "Marathi Flag.svg",
-- mrh = "Mara Chin.??g",
-- mrj = "Western Mari.??g",
ms = "Flag orb Malaysia.svg",
mt = "Flag orb Malta.svg",
-- mus = "Muskogee (Seminole Creek).??g",
mwl = "Flag orb Miranda.svg",
my = "Flag orb Burma.svg",
myv = "Flag orb Erzya.svg",
mzn = "Flag of Tapuria Mazandaran.jpg",
na = "Flag orb Nauru.svg",
nah = "Flag of Nahuas.svg",
-- nan = "Minnan.??g",
nap = "Flag of Naples.svg",
['nap-x-tara'] = "Flag of the Province of Taranto.svg",
nb = "Flag orb Norway.svg",
nd = "Flag orb Zimbabwe.svg",
nds = "Flag of Lower Saxony.svg",
['nds-nl'] = "Flag orb Norway.svg",
ne = "Flag orb Nepal.svg",
new = "Flag of Kathmandu, Nepal.svg",
-- ng = "Ndonga.??g",
nia = "WLANL - 23dingenvoormusea - danseres Nias.jpg",
niu = "Flag orb Niue.svg",
nl = "Flag orb Netherlands.svg",
-- nmz = "Nawdm.??g",
nn = "Flag orb Norway.svg",
-- nod = "Northern Thai.??g",
nov = "Flag of Novial.svg",
-- nqo = "N'ko.??g",
nrf = "Flag of Normandy.svg",
-- nso = "Pedi (Northern Sotho).??g",
nv = "Navajo flag.svg",
ny = "Flag orb Malawi.svg",
nyn = "Flag of Ankole.svg", -- Nyankole
-- nys = "Nyunga.??g",
oc = "Flag orb Occitania.svg",
-- ojb = "Northwestern Ojibwa.??g",
olo = "Flag of Karelia.svg",
om = "Flag of the Oromia Region.svg",
['or'] = "Bandera d'Orissa.svg",
os = "Flag orb North Ossetia.svg",
pa = "Flag orb Punjab.svg",
-- pag = "Pangasinan.??g",
pam = "Proposed Kapampangan flag.svg",
pap = "Netherlands.png",
pcd = "Flag of Picardie.svg",
pdc = "Pennsylvania German Sticker.svg",
pdt = "Proposed flag of Plautdietsch or Mennonite Low German.svg",
pfl = "Wabbe Rhoipalz - Feld.png",
-- pi = "Pali.??g",
pih = "Flag of Norfolk Islanders of Pitcairn descent.svg",
pl = "Flag orb Poland.svg",
pms = "Flag of Piedmont.svg",
-- pnb = "Western Panjabi.??g",
pnt = "Byzantine imperial flag, 14th century according to portolan charts.png",
-- prg = "Old Prussian.??g",
ps = "Flag orb Afghanistan.svg",
pt = "Flag orb Portugal.svg",
-- pwn = "Paiwan.??g",
qu = "Flag orb Wiphala.svg", -- Quechua
-- quq = "Quinqui.??g",
rcf = "Proposed flag of Réunion (VAR).svg",
rgn = "Flag of Romagna.svg",
-- rif = "Tarifiyt-Beni-Iznasen-Eastern Middle Atlas Berber (Riffian).??g",
rm = "Flag orb Switzerland.svg",
-- rmc = "Central Romani.??g",
-- rmy = "Romany.??g",
rn = "Flag orb Burundi.svg",
ro = "Flag orb Romania.svg",
-- rsk = "Pannonian Ruthenian.??g",
ru = "Flag orb Russia.svg",
rue = "Rusyn flag.svg",
rup = "Aromanian flag.svg",
-- ruq = "Megleno Romanian.??g",
rw = "Flag orb Rwanda.svg",
-- ryu = "Okinawan.??g",
sa = "Aum Om black circle gold.svg", -- Sanskrit
-- sah = "Sakha.??g",
-- sat = "Santali.??g",
sc = "Flag of Sardinia.svg",
scn = "Flag of Sicily.svg",
sco = "Flag orb Scotland.svg",
sd = "Flag orb Sindh.svg",
-- sdc = "Sassarese Sardinian.??g",
-- sdh = "Southern Kurdish.??g",
se = "Flag orb Sami.svg",
-- sei = "Seri.??g",
-- ses = "Koyraboro Senni Songhai.??g",
sg = "Flag orb Sango.svg",
sgs = "Flag of Samogitia.svg",
sh = "Flag orb Serbia and Montenegro.svg",
-- shi = "Tachelhit.??g",
shn = "Flag of the Shan State.svg",
-- shy = "Chaouia of the Aures.??g",
si = "Flag orb Sri Lanka.svg",
simple = "Flag orb United-States.svg",
-- sjd = "Kildin Saami.??g",
-- sje = "Pite Saami.??g",
sk = "Flag orb Slovakia.svg",
skr = "Pk seraiki mov.svg",
sl = "Flag orb Slovenia.svg",
-- sli = "Lower Silesian.??g",
sm = "Flag orb Samoa.svg",
-- sma = "South Saami.??g",
smn = "Sami flag.svg", -- Inari Saami
sms = "Sami flag.svg", -- Skolt Saami
sn = "Flag orb Zimbabwe.svg",
so = "Flag orb Somalia.svg",
sq = "Flag orb Albania.svg",
sr = "Flag orb Serbia.svg",
srn = "Flag orb Suriname.svg",
ss = "Flag orb Eswatini.svg",
st = "Lesotho.png",
stq = "DEU Saterland Flag.svg",
-- sty = "Siberian Tatar.??g",
su = "Flag orb Indonesia.svg",
sv = "Flag orb Sweden.svg",
-- sw = "Swahili.??g",
syc = "Flag of the Syriac-Aramaic People.svg",
szl = "Flag of Silesia.svg",
-- szy = "Sakizaya.??g",
ta = "Tamilnadu Flag.png",
tao = "达悟族旗帜.svg",
-- tay = "Atayal.??g",
-- tcy = "Tulunadu.??g",
-- tdd = "Tai Nüa.??g",
te = "Telangana flag.svg",
-- tet = "Tetum.??g",
tg = "Flag orb Tajikistan.svg",
th = "Flag orb Thailand.svg",
ti = "Flag orb Eritrea.svg",
tk = "Flag orb Turkmenistan.svg",
tl = "Flag orb Philippines.svg",
-- tly = "North-Central Talysh.??g",
tn = "Flag orb Botswana.svg",
to = "Flag orb Tonga.svg",
tpi = "Flag orb Papua New Guinea.svg",
tr = "Flag orb Turkey.svg",
-- tru = "Turoyo.??g",
-- trv = "Seediq.??g",
-- ts = "Tsonga.??g",
tt = "Flag orb Tatarstan.svg",
-- tum = "Tumbuka.??g",
tw = "Flag orb Ghana.svg",
ty = "Flag of the Kingdom of Tahiti.svg",
tyv = "Flag of Tuva (1992).svg",
-- tzm = "Tumbuka.??g",
udm = "Flag of Udmurtia.svg",
ug = "Flag of the Uyghurs.svg",
uk = "Flag orb Ukraine.svg",
ur = "Flag orb Pakistan.svg",
uz = "Flag orb Uzbekistan.svg",
vai = "Flag orb Liberia.svg",
ve = "Flag of Venda (1973–1994).svg",
vec = "Flag of Veneto.svg",
vep = "Flag of Vepsia.svg",
vi = "Flag orb Vietnam.svg",
vls = "Flag of Flanders.svg",
vmf = "Flagge Oberfranken.svg",
vo = "Flag of Volapük.svg",
vot = "Votic Flag.svg",
vro = "Flag of Võro.svg",
wa = "Flag of Wallonia.svg",
-- wal = "Wolaytta.??g",
-- war = "Waray.??g",
wls = "Flag orb Wallis and Futuna.svg",
wo = "Flag orb Senegal.svg",
wuu = "Flag orb China.svg",
-- xac = "Kachari.??g",
xal = "Flag of Kalmykia.svg",
xh = "Flag orb South Africa.svg",
xmf = "Flag of The Principality of Mingrelia (Portolan 1560).svg",
-- xsy = "Saisiyat.??g",
-- yi = "Yiddish.??g",
-- yo = "Yoruba.??g",
-- yoi = "Yonaguni.??g",
-- yrk = "Tundra Nenets.??g",
-- yrl = "Nhengatu.??g",
-- yua = "Yucatec Maya.??g",
yue = "Flag orb China.svg",
za = "Flag of the Zhuang people.svg",
zea = "Flag of Zeeland.svg",
-- zgh = "Standard Moroccan Tamazight.??g",
zh = "Flag orb China.svg",
['zh-hant'] = "Flag orb China.svg",
zu = "Flag of KwaZulu.png",
}
local p = {}
local function formatIcon( code, flag, link )
local icon = langIcons[ code ];
if flag and icon ~= nil then
return ' [[File:' .. icon .. '|24px|alt=' .. code .. '|link=' .. link .. ']]'
end
return ''
end
local function formatLink( code, link, flag, external )
local out = '*';
local language
if mw.language.isValidCode( code ) then
language = mw.language.fetchLanguageName( code, contentLanguage )
out = out .. formatIcon( code, flag, link )
else
language = code;
end
if external then
return out .. ' [' .. link .. ' ' .. language .. ']'
else
return out .. ' [[' .. link .. '|' .. language .. ']]'
end
end
local function formatTranslatewiki( code, group, flag )
local link = tostring( mw.uri.fullUrl( 'translatewiki:Special:Translate', 'action=page&group=' .. group .. '&language=' .. code ) )
return formatLink( code, link, flag, true )
end
local function formatLocal( code, link, flag )
local link = string.gsub( link, '$lang', code )
return formatLink( code, link, flag, false )
end
function p.main( frame )
local args = getArgs( frame )
return p._main( args )
end
function p._main( args )
local codes = mw.loadJsonData( args[ 1 ] )
local flags = yesno( args.flags )
local links = {};
for i, code in ipairs( codes ) do
local link;
if args.translatewiki and args.translatewiki ~= nil then
link = formatTranslatewiki( code, args.translatewiki, flags )
elseif args.link and args.link ~= nil then
link = formatLocal( code, args.link, flags )
end
table.insert( links, link )
end
return table.concat( links, '\n' )
end
return p;