--Possibly may change to allow using without romanization (this is why I didn't remove Latin-script languages from the table)
local getArgs = require('Module:Arguments').getArgs
local p = {}
local languagesTable = { --From https://www.w3schools.com/tags/ref_language_codes.asp, with some additional languages added
["aa"] = {
name = "Afar",
wikipediaArticle = "Afar language"
},
["ab"] = {
name = "Abkhazian",
wikipediaArticle = "Abkhaz language"
},
["ae"] = {
name = "Avestan",
wikipediaArticle = "Avestan"
},
["af"] = {
name = "Afrikaans",
wikipediaArticle = "Afrikaans"
},
["ain"] = {
name = "Ainu",
wikipediaArticle = "Ainu language"
},
["ak"] = {
name = "Akan",
wikipediaArticle = "Akan language"
},
["akk"] = {
name = "Akkadian",
wikipediaArticle = "Akkadian language"
},
["am"] = {
name = "Amharic",
wikipediaArticle = "Amharic"
},
["an"] = {
name = "Aragonese",
wikipediaArticle = "Aragonese language"
},
["ar"] = {
name = "Arabic",
wikipediaArticle = "Arabic"
},
["as"] = {
name = "Assamese",
wikipediaArticle = "Assamese language"
},
["av"] = {
name = "Avaric",
wikipediaArticle = "Avar language"
},
["ay"] = {
name = "Aymara",
wikipediaArticle = "Aymara language"
},
["az"] = {
name = "Azerbaijani",
wikipediaArticle = "Azerbaijani language"
},
["ba"] = {
name = "Bashkir",
wikipediaArticle = "Bashkir language"
},
["be"] = {
name = "Belarusian",
wikipediaArticle = "Belarusian language"
},
["bg"] = {
name = "Bulgarian",
wikipediaArticle = "Bulgarian language"
},
["bh"] = {
name = "Bihari",
wikipediaArticle = "Bihari languages"
},
["bi"] = {
name = "Bislama",
wikipediaArticle = "Bislama"
},
["bm"] = {
name = "Bambara",
wikipediaArticle = "Bambara language"
},
["bn"] = {
name = "Bengali",
wikipediaArticle = "Bengali language"
},
["bo"] = {
name = "Tibetan",
wikipediaArticle = "Lhasa Tibetan"
},
["br"] = {
name = "Breton",
wikipediaArticle = "Breton language"
},
["bs"] = {
name = "Bosnian",
wikipediaArticle = "Bosnian language"
},
["ca"] = {
name = "Catalan",
wikipediaArticle = "Catalan language"
},
["ce"] = {
name = "Chechen",
wikipediaArticle = "Chechen language"
},
["ch"] = {
name = "Chamorro",
wikipediaArticle = "Chamorro language"
},
["co"] = {
name = "Corsican",
wikipediaArticle = "Corsican language"
},
["cr"] = {
name = "Cree",
wikipediaArticle = "Cree language"
},
["cs"] = {
name = "Czech",
wikipediaArticle = "Czech language"
},
["cu"] = {
name = "Old Church Slavonic",
wikipediaArticle = "Old Church Slavonic"
},
["cv"] = {
name = "Chuvash",
wikipediaArticle = "Chuvash language"
},
["cy"] = {
name = "Welsh",
wikipediaArticle = "Welsh language"
},
["da"] = {
name = "Danish",
wikipediaArticle = "Danish language"
},
["de"] = {
name = "German",
wikipediaArticle = "German language"
},
["dv"] = {
name = "Dhivehi",
wikipediaArticle = "Maldivian language"
},
["dz"] = {
name = "Dzongkha",
wikipediaArticle = "Dzongkha"
},
["ee"] = {
name = "Ewe",
wikipediaArticle = "Ewe language"
},
["el"] = {
name = "Modern Greek",
wikipediaArticle = "Modern Greek"
},
["en"] = {
name = "English",
wikipediaArticle = "English language"
},
["eo"] = {
name = "Esperanto",
wikipediaArticle = "Esperanto"
},
["es"] = {
name = "Spanish",
wikipediaArticle = "Spanish language"
},
["et"] = {
name = "Estonian",
wikipediaArticle = "Estonian language"
},
["eu"] = {
name = "Basque",
wikipediaArticle = "Basque language"
},
["fa"] = {
name = "Persian",
wikipediaArticle = "Persian language"
},
["ff"] = {
name = "Fula",
wikipediaArticle = "Fula language"
},
["fi"] = {
name = "Finnish",
wikipediaArticle = "Finnish language"
},
["fj"] = {
name = "Fijian",
wikipediaArticle = "Fijian language"
},
["fo"] = {
name = "Faroese",
wikipediaArticle = "Faroese language"
},
["fr"] = {
name = "French",
wikipediaArticle = "French language"
},
["fy"] = {
name = "West Frisian",
wikipediaArticle = "West Frisian language"
},
["ga"] = {
name = "Irish",
wikipediaArticle = "Irish language"
},
["gd"] = {
name = "Scottish Gaelic",
wikipediaArticle = "Scottish Gaelic"
},
["gl"] = {
name = "Galician",
wikipediaArticle = "Galician language"
},
["gn"] = {
name = "Guarani",
wikipediaArticle = "Guarani language"
},
["grc"] = {
name = "Greek",
wikipediaArticle = "Greek language"
},
["gu"] = {
name = "Gujarati",
wikipediaArticle = "Gujarati language"
},
["gv"] = {
name = "Manx",
wikipediaArticle = "Manx language"
},
["ha"] = {
name = "Hausa",
wikipediaArticle = "Hausa language"
},
["he"] = {
name = "Hebrew",
wikipediaArticle = "Hebrew language"
},
["hi"] = {
name = "Hindi",
wikipediaArticle = "Hindi"
},
["ho"] = {
name = "Hiri Motu",
wikipediaArticle = "Hiri Motu"
},
["hr"] = {
name = "Croatian",
wikipediaArticle = "Croatian language"
},
["ht"] = {
name = "Haitian Creole",
wikipediaArticle = "Haitian Creole"
},
["hu"] = {
name = "Hungarian",
wikipediaArticle = "Hungarian language"
},
["hy"] = {
name = "Armenian",
wikipediaArticle = "Armenian language"
},
["hz"] = {
name = "Herero",
wikipediaArticle = "Herero language"
},
["ia"] = {
name = "Interlingua",
wikipediaArticle = "Interlingua"
},
["id"] = {
name = "Indonesian",
wikipediaArticle = "Indonesian language"
},
["ie"] = {
name = "Interlingue",
wikipediaArticle = "Interlingue"
},
["ig"] = {
name = "Igbo",
wikipediaArticle = "Igbo language"
},
["ii"] = {
name = "Nuosu",
wikipediaArticle = "Nuosu language"
},
["ik"] = {
name = "Inupiak",
wikipediaArticle = "Iñupiaq language"
},
["io"] = {
name = "Ido",
wikipediaArticle = "Ido"
},
["is"] = {
name = "Icelandic",
wikipediaArticle = "Icelandic language"
},
["it"] = {
name = "Italian",
wikipediaArticle = "Italian language"
},
["iu"] = {
name = "Inuktitut",
wikipediaArticle = "Inuktitut"
},
["ja"] = {
name = "Japanese",
wikipediaArticle = "Japanese language"
},
["jv"] = {
name = "Javanese",
wikipediaArticle = "Javanese language"
},
["ka"] = {
name = "Georgian",
wikipediaArticle = "Georgian language"
},
["kg"] = {
name = "Kongo",
wikipediaArticle = "Kongo language"
},
["ki"] = {
name = "Kikuyu",
wikipediaArticle = "Kikuyu language"
},
["kj"] = {
name = "Kwanyama",
wikipediaArticle = "Kwanyama"
},
["kk"] = {
name = "Kazakh",
wikipediaArticle = "Kazakh language"
},
["kl"] = {
name = "Greenlandic",
wikipediaArticle = "Greenlandic language"
},
["km"] = {
name = "Khmer",
wikipediaArticle = "Khmer language"
},
["kn"] = {
name = "Kannada",
wikipediaArticle = "Kannada language"
},
["ko"] = {
name = "Korean",
wikipediaArticle = "Korean language"
},
["kr"] = {
name = "Kanuri",
wikipediaArticle = "Kanuri language"
},
["ks"] = {
name = "Kashmiri",
wikipediaArticle = "Kashmiri language"
},
["ku"] = {
name = "Kurdish",
wikipediaArticle = "Kurdish language"
},
["kv"] = {
name = "Komi",
wikipediaArticle = "Komi language"
},
["kw"] = {
name = "Cornish",
wikipediaArticle = "Cornish language"
},
["ky"] = {
name = "Kyrgyz",
wikipediaArticle = "Kyrgyz language"
},
["la"] = {
name = "Latin",
wikipediaArticle = "Latin"
},
["lb"] = {
name = "Luxembourgish",
wikipediaArticle = "Luxembourgish"
},
["lg"] = {
name = "Luganda",
wikipediaArticle = "Luganda"
},
["li"] = {
name = "Limburgish",
wikipediaArticle = "Limburgish"
},
["ln"] = {
name = "Lingala",
wikipediaArticle = "Lingala"
},
["lo"] = {
name = "Lao",
wikipediaArticle = "Lao language"
},
["lt"] = {
name = "Lithuanian",
wikipediaArticle = "Lithuanian language"
},
["lu"] = {
name = "Luba-Katanga",
wikipediaArticle = "Luba-Katanga language"
},
["lv"] = {
name = "Latvian",
wikipediaArticle = "Latvian language"
},
["mg"] = {
name = "Malagasy",
wikipediaArticle = "Malagasy language"
},
["mh"] = {
name = "Marshallese",
wikipediaArticle = "Marshallese language"
},
["mi"] = {
name = "Maori",
wikipediaArticle = "Maori language"
},
["mk"] = {
name = "Macedonian",
wikipediaArticle = "Macedonian language"
},
["ml"] = {
name = "Malayalam",
wikipediaArticle = "Malayalam language"
},
["mn"] = {
name = "Mongolian",
wikipediaArticle = "Mongolian language"
},
["mo"] = {
name = "Moldovan",
wikipediaArticle = "Moldovan language"
},
["mr"] = {
name = "Marathi",
wikipediaArticle = "Marathi language"
},
["ms"] = {
name = "Malay",
wikipediaArticle = "Malay language"
},
["mt"] = {
name = "Maltese",
wikipediaArticle = "Maltese language"
},
["my"] = {
name = "Burmese",
wikipediaArticle = "Burmese language"
},
["na"] = {
name = "Nauru",
wikipediaArticle = "Nauru language"
},
["nb"] = {
name = "Norwegian Bokmål",
wikipediaArticle = "Bokmål"
},
["nd"] = {
name = "Northern Ndebele",
wikipediaArticle = "Northern Ndebele language"
},
["ne"] = {
name = "Nepali",
wikipediaArticle = "Nepali language"
},
["ng"] = {
name = "Ndonga",
wikipediaArticle = "Ndonga"
},
["nl"] = {
name = "Dutch",
wikipediaArticle = "Dutch language"
},
["nn"] = {
name = "Norwegian Nynorsk",
wikipediaArticle = "Nynorsk"
},
["no"] = {
name = "Norwegian",
wikipediaArticle = "Norwegian language"
},
["nr"] = {
name = "Southern Ndebele",
wikipediaArticle = "Southern Ndebele language"
},
["nv"] = {
name = "Navajo",
wikipediaArticle = "Navajo language"
},
["ny"] = {
name = "Chichewa",
wikipediaArticle = "Chichewa language"
},
["oc"] = {
name = "Occitan",
wikipediaArticle = "Occitan language"
},
["oj"] = {
name = "Ojibwe",
wikipediaArticle = "Ojibwe language"
},
["om"] = {
name = "Oromo",
wikipediaArticle = "Oromo language"
},
["or"] = {
name = "Oriya",
wikipediaArticle = "Oriya language"
},
["os"] = {
name = "Ossetian",
wikipediaArticle = "Ossetian language"
},
["pa"] = {
name = "Punjabi",
wikipediaArticle = "Punjabi language"
},
["pi"] = {
name = "Pāli",
wikipediaArticle = "Pali"
},
["pl"] = {
name = "Polish",
wikipediaArticle = "Polish language"
},
["ps"] = {
name = "Pashto",
wikipediaArticle = "Pashto language"
},
["pt"] = {
name = "Portuguese",
wikipediaArticle = "Portuguese language"
},
["qu"] = {
name = "Quechua",
wikipediaArticle = "Quechua language"
},
["rm"] = {
name = "Romansh",
wikipediaArticle = "Romansh language"
},
["rn"] = {
name = "Kirundi",
wikipediaArticle = "Kirundi language"
},
["ro"] = {
name = "Romanian",
wikipediaArticle = "Romanian language"
},
["ru"] = {
name = "Russian",
wikipediaArticle = "Russian language"
},
["rw"] = {
name = "Kinyarwanda",
wikipediaArticle = "Kinyarwanda language"
},
["sa"] = {
name = "Sanskrit",
wikipediaArticle = "Sanskrit"
},
["sd"] = {
name = "Sindhi",
wikipediaArticle = "Sindhi language"
},
["se"] = {
name = "Sami",
wikipediaArticle = "Sami language"
},
["sg"] = {
name = "Sango",
wikipediaArticle = "Sango language"
},
["sh"] = {
name = "Serbo-Croatian",
wikipediaArticle = "Serbo-Croatian"
},
["si"] = {
name = "Sinhalese",
wikipediaArticle = "Sinhalese language"
},
["sk"] = {
name = "Slovak",
wikipediaArticle = "Slovak language"
},
["sl"] = {
name = "Slovenian",
wikipediaArticle = "Slovenian language"
},
["sm"] = {
name = "Samoan",
wikipediaArticle = "Samoan language"
},
["sn"] = {
name = "Shona",
wikipediaArticle = "Shona language"
},
["so"] = {
name = "Somali",
wikipediaArticle = "Somali language"
},
["sq"] = {
name = "Albanian",
wikipediaArticle = "Albanian language"
},
["sr"] = {
name = "Serbian",
wikipediaArticle = "Serbian language"
},
["ss"] = {
name = "Siswati",
wikipediaArticle = "Siswati language"
},
["ss"] = {
name = "Swati",
wikipediaArticle = "Swati language"
},
["st"] = {
name = "Sesotho",
wikipediaArticle = "Sesotho language"
},
["su"] = {
name = "Sundanese",
wikipediaArticle = "Sundanese language"
},
["sux"] = {
name = "Sumerian",
wikipediaArticle = "Sumerian language"
},
["sv"] = {
name = "Swedish",
wikipediaArticle = "Swedish language"
},
["sw"] = {
name = "Swahili",
wikipediaArticle = "Swahili language"
},
["ta"] = {
name = "Tamil",
wikipediaArticle = "Tamil language"
},
["te"] = {
name = "Telugu",
wikipediaArticle = "Telugu language"
},
["tg"] = {
name = "Tajik",
wikipediaArticle = "Tajik language"
},
["th"] = {
name = "Thai",
wikipediaArticle = "Thai language"
},
["ti"] = {
name = "Tigrinya",
wikipediaArticle = "Tigrinya language"
},
["tk"] = {
name = "Turkmen",
wikipediaArticle = "Turkmen language"
},
["tl"] = {
name = "Tagalog",
wikipediaArticle = "Tagalog language"
},
["tn"] = {
name = "Setswana",
wikipediaArticle = "Setswana language"
},
["to"] = {
name = "Tongan",
wikipediaArticle = "Tongan language"
},
["tr"] = {
name = "Turkish",
wikipediaArticle = "Turkish language"
},
["ts"] = {
name = "Tsonga",
wikipediaArticle = "Tsonga language"
},
["tt"] = {
name = "Tatar",
wikipediaArticle = "Tatar language"
},
["tw"] = {
name = "Twi",
wikipediaArticle = "Twi language"
},
["ty"] = {
name = "Tahitian",
wikipediaArticle = "Tahitian language"
},
["ug"] = {
name = "Uyghur",
wikipediaArticle = "Uyghur language"
},
["uga"] = {
name = "Ugaritic",
wikipediaArticle = "Ugaritic"
},
["uk"] = {
name = "Ukrainian",
wikipediaArticle = "Ukrainian language"
},
["ur"] = {
name = "Urdu",
wikipediaArticle = "Urdu language"
},
["uz"] = {
name = "Uzbek",
wikipediaArticle = "Uzbek language"
},
["ve"] = {
name = "Venda",
wikipediaArticle = "Venda language"
},
["vi"] = {
name = "Vietnamese",
wikipediaArticle = "Vietnamese language"
},
["vo"] = {
name = "Volapük",
wikipediaArticle = "Volapük"
},
["wa"] = {
name = "Walloon",
wikipediaArticle = "Walloon language"
},
["wo"] = {
name = "Wolof",
wikipediaArticle = "Wolof language"
},
["xh"] = {
name = "Xhosa",
wikipediaArticle = "Xhosa language"
},
["yi"] = {
name = "Yiddish",
wikipediaArticle = "Yiddish language"
},
["yo"] = {
name = "Yoruba",
wikipediaArticle = "Yoruba language"
},
["za"] = {
name = "Zhuang",
wikipediaArticle = "Zhuang language"
},
["zh"] = {
name = "Chinese",
wikipediaArticle = "Chinese language"
},
["zh-Hans"] = {
name = "Simplified Chinese",
wikipediaArticle = "Simplified Chinese characters"
},
["zh-Hant"] = {
name = "Traditional Chinese",
wikipediaArticle = "Traditional Chinese characters"
},
["zu"] = {
name = "Zulu",
wikipediaArticle = "Zulu language"
}
}
local function wikipediaLink(language)
return string.format("[[wikipedia:%s|%s]]",languagesTable[language]["wikipediaArticle"],languagesTable[language]["name"])
end
function p.main(frame)
local args = getArgs(frame)
local language = args[1]
local originalText = args[2]
local romanizedText = args[3]
local meaning = args[6]
local hideLabel = false
if args[5] ~= nil then --Note: hideLabel purposefully doesn't work for Simplified/Traditional Chinese case
hideLabel = true
end
local output = ""
local function textWithMeaning(language,text,meaning)
return string.format("<span lang=\"%s\" class=\"tooltip\">%s<span class=\"tooltiptext\">%s</span></span>",language,text,meaning)
end
if args[4] then
local script1Text = originalText
local script2Text = romanizedText
romanizedText = args[4]
if language == "zh" then
if args[6] then
output = string.format("%s: %s, %s: %s, romanized: ''%s''", wikipediaLink("zh-Hans"), textWithMeaning("zh-Hans",script1Text,meaning), wikipediaLink("zh-Hant"), textWithMeaning("zh-Hant",script2Text,meaning), romanizedText)
else
output = string.format("%s: <span lang=\"zh-Hans\">%s</span>, %s: <span lang=\"zh-Hant\">%s</span>, romanized: ''%s''", wikipediaLink("zh-Hans"), script1Text, wikipediaLink("zh-Hant"), script2Text, romanizedText)
end
else
error("Argument 4 defined but language is not zh")
end
else
if hideLabel == false then
output = wikipediaLink(language) .. ": "
end
if args[6] then
output = output .. string.format("%s, romanized ''%s''",textWithMeaning(language,originalText,meaning),romanizedText)
else
output = output .. string.format("<span lang=\"%s\">%s</span>, romanized ''%s''",language,originalText,romanizedText)
end
end
return output
end
return p