Module:Translit: Difference between revisions

Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
--Possibly may allow using without romanization (this is why I didn't remove Latin-script languages from the table)
--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 getArgs = require('Module:Arguments').getArgs

Revision as of 23:40, 14 September 2024

--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"
	},
	["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"
	},
	["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
		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