--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", romanizedLabel = "[[wikipedia:Hepburn romanization|Hepburn]]" }, ["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" }, ["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 if not languagesTable[language] then error("Language with code " .. language .. " not defined") end local output = "" local function textWithMeaning(language,text,meaning) return string.format("<span lang=\"%s\" class=\"tooltip\">%s<span class=\"tooltiptext\" lang=\"en\">%s</span></span>",language,text,meaning) end local romanizedLabel = "romanized" if languagesTable[language]["romanizedLabel"] then romanizedLabel = languagesTable[language]["romanizedLabel"] 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, %s ''%s''",textWithMeaning(language,originalText,meaning),romanizedLabel,romanizedText) else output = output .. string.format("<span lang=\"%s\">%s</span>, %s ''%s''",language,originalText,romanizedLabel,romanizedText) end end return output end return p