Jump to content

Module:User Wikimedia project

Permanently protected module
From Meta, a Wikimedia project coordination wiki
Module documentation

Usage

{{#invoke:User Wikimedia project|user_wikimedia_project}}

See test cases at Template:User Wikimedia project/testcases.

local p = {} --p stands for package

local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local langSwitch = require('Module:Fallback')._langSwitch
local userbox = require('Module:Userbox').userbox

function is_wikimania_number_prefix(prefix)
	local function is_prefix(wm)
		return mw.ustring.sub(prefix, 1, mw.ustring.len(wm)) and mw.ustring.len(prefix) > mw.ustring.len(wm) and tonumber(mw.ustring.sub(prefix, mw.ustring.len(wm) + 1, -1))
	end
	return is_prefix('wm') or is_prefix('wikimania')
end

function project_name(prefix)
	if is_wikimania_number_prefix(prefix) then
		return 'Wikimania ' .. mw.ustring.sub(prefix, -4, -1)
	end
	local names = {
		['b'] = 'Wikibooks',
		['wikibooks'] = 'Wikibooks',
		['c'] = 'Wikimedia Commons',
		['commons'] = 'Wikimedia Commons',
		['d'] = 'Wikidata',
		['wikidata'] = 'Wikidata',
		['f'] = 'Wikifunctions',
		['wikifunctions'] = 'Wikifunctions',
		['incubator'] = 'Incubator',
		['m'] = 'Wikimedia MetaWiki',
		['metawiki'] = 'Wikimedia MetaWiki',
		['metawikimedia'] = 'Wikimedia MetaWiki',
		['metawikipedia'] = 'Wikimedia MetaWiki',
		['mw'] = 'MediaWiki',
		['n'] = 'Wikinews',
		['wikinews'] = 'Wikinews',
		['q'] = 'Wikiquote',
		['wikiquote'] = 'Wikiquote',
		['s'] = 'Wikisource',
		['wikisource'] = 'Wikisource',
		['species'] = 'Wikispecies',
		['wikispecies'] = 'Wikispecies',
		['v'] = 'Wikiversity',
		['wikiversity'] = 'Wikiversity',
		['voy'] = 'Wikivoyage',
		['wikivoyage'] = 'Wikivoyage',
		['w'] = 'Wikipedia',
		['wikipedia'] = 'Wikipedia',
		['wikt'] = 'Wiktionary',
		['wiktionary'] = 'Wiktionary',
		['outreach'] = 'Wikimedia Outreach',
		['wikitech'] = 'Wikitech',
		['wm'] = 'Wikimania',
		['wikimania'] = 'Wikimania'
	}
	return names[prefix] or prefix
end

function project_has_lang(prefix)
	local no_lang_projects = {
		['Wikimedia Commons'] = true,
		['Incubator'] = true,
		['Wikimedia MetaWiki'] = true,
		['MediaWiki'] = true,
		['Wikispecies'] = true,
		['Wikimedia Outreach'] = true,
		['Wikitech'] = true,
		['Wikimania'] = true,
		['Wikidata'] = true,
		['Wikifunctions'] = true
	}
	return no_lang_projects[project_name(prefix)] ~= true and not is_wikimania_number_prefix(prefix)
end

function localized_project_name(prefix, lang_code, display_lang)
	local name = project_name(prefix)
	local project_names = {
		['ang'] = {
			['Wikipedia'] = 'Wicipædie'
		},
		['ar'] = {
			['Wikidata'] = 'ويكي بيانات',
			['Wikimedia Commons'] = 'ويكيميديا كومنز',
			['Wikimedia MetaWiki'] = 'ميتاويكي',
			['Wikiquote'] = 'ويكي اقتباس',
			['Wikipedia'] = 'ويكيبيديا',
			['Wikisource'] = 'ويكي مصدر',
			['Wikispecies'] = 'ويكي أنواع',
			['Wikiversity'] = 'ويكي جامعة',
			['Wikivoyage'] = 'ويكي رحلات',
			['Wiktionary'] = 'ويكاموس'
		},
		['eo'] = {
			['Wikipedia'] = 'Vikipedio'
		},
		['es'] = {
			['Incubator'] = 'la Incubadora de Wikimedia',
			['Wikibooks'] = 'Wikilibros',
			['Wikimania'] = 'Wikimanía',
			['Wikinews'] = 'Wikinoticias',
			['Wikispecies'] = 'Wikiespecies',
			['Wikiversity'] = 'la Wikiversidad',
			['Wikivoyage'] = 'Wikiviajes',
			['Wiktionary'] = 'Wikcionario'
		},
		['fa'] = {
			['Wikisource'] = 'ویکینبشته '
		},
		['fi'] = {
			['Wikidata'] = 'Wikidatassa',
			['Wikiquote'] = 'Wikisitaateissa',
			['Wikipedia'] = 'Wikipediassa'
		},
		['fr'] = {
			['Wikipedia'] = 'Wikipédia',
			['Wiktionary'] = 'Wiktionnaire'
		},
		['he'] = {
			['Wikidata'] = 'ראשי',
			['Wikimedia Commons'] = 'עמוד ראשי',
			['Wikimedia MetaWiki'] = 'במטא-ויקי',
			['Wikisource'] = 'וויקיטקסט',
			['Wiktionary'] = 'וויקימילון'
		},
		['hr'] = {
			['Wikipedia'] = 'Wikipediji'
		},
		['hu'] = {
			['Wikipedia'] = 'Wikipédián'
		},
		['it'] = {
			['Wikinews'] = 'Wikinotizie',
			['Wikiversity'] = 'Wikiversità',
			['Wiktionary'] = 'Wikizionario'
		},
		['ja'] = {
			['Wikidata'] = 'ウィキデータ',
			['Wikimedia Commons'] = 'ウィキメディア・コモンズ',
			['Wikimedia MetaWiki'] = 'メタウィキ',
			['Wikiquote'] = 'ウィキクオート',
			['Wikipedia'] = 'ウィキペディア',
			['Wikisource'] = 'ウィキソース',
			['Wikispecies'] =  'ウィキスピーシーズ',
			['Wikiversity'] = 'ウィキバーシティ',
			['Wikivoyage'] = 'ウィキボヤージュ',
			['Wiktionary'] = 'ウィクショナリー'
		},
		['ko'] = {
			['Wikimedia Commons'] = '위키미디어 공용',
			['Wikimedia MetaWiki'] = '위키미디어 메타',
			['Wikiversity'] = '위키배움터'
		},
		['pa'] = {
			['Wikidata'] = 'ਵਿਕੀਡਾਟਾ',
			['Wikimedia Commons'] = 'ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼',
			['Wikimedia MetaWiki'] = 'ਵਿਕੀਮੀਡੀਆ ਮੈਟਾ-ਵਿਕੀ',
			['Wikipedia'] = 'ਵਿਕੀਪੀਡੀਆ',
			['Wikisource'] = 'ਵਿਕੀਸਰੋਤ'
		},
		['pt'] = {
			['Incubator'] = 'Incubadora da Wikimédia',
			['Wikibooks'] = 'Wikilivros',
			['Wikimania'] = 'Wikimédia',
			['Wikipedia'] = 'Wikipédia',
			['Wikinews'] = 'Wikinotícias',
			['Wikispecies'] = 'Wikiespécies',
			['Wikiversity'] = 'Wikiversidade',
			['Wiktionary'] = 'Wikcionário'
		},
		['ru'] = {
			['Incubator'] = 'Инкубатор',
			['Wikibooks'] = 'Викиучебник',
			['Wikidata'] = 'Викиданные',
			['Wikimedia Commons'] = 'Викисклад',
			['Wikimedia MetaWiki'] = 'Мета-вики',
			['Wikinews'] = 'Викиновости',
			['Wikiquote'] = 'Викицитатник',
			['Wikipedia'] = 'Википедия',
			['Wikisource'] = 'Викитека',
			['Wikispecies'] =  'Викивиды',
			['Wikiversity'] = 'Викиверситет',
			['Wikivoyage'] = 'Викигид',
			['Wiktionary'] = 'Викисловарь'
		},
		['syl'] = {
			['MediaWiki'] = 'ꠝꠤꠒꠤꠀꠃꠁꠇꠤ'
		},
		['ta'] = {
			['Wikipedia'] = 'விக்கிப்பீடியாது',
		},
		['tr'] = {
			['Wikidata'] = 'Vikiveri',
			['Wikimedia MetaWiki'] = 'Wikimedia Meta Viki',
			['Wikispecies'] = 'Vikitür',
			['Wiktionary'] = 'Vikisözlük'
		},
		['uk'] = {
			['Incubator'] = 'Інкубаторі',
			['Wikibooks'] = 'Вікіпідручнику',
			['Wikidata'] = 'Вікіданих',
			['Wikifunctions'] = 'Вікіфункціях',
			['Wikimedia Commons'] = 'Вікісховищі',
			['Wikimedia MetaWiki'] = 'Мета-вікі',
			['Wikimedia Outreach'] = 'Вікімедіа Аутріч',
			['Wikinews'] = 'Вікіновинах',
			['Wikiquote'] = 'Вікіцитатах',
			['Wikipedia'] = 'Вікіпедії',
			['Wikisource'] = 'Вікіджерелах',
			['Wikispecies'] =  'Віківидах',
			['Wikiversity'] = 'Віківерситеті',
			['Wikivoyage'] = 'Вікімандрах',
			['Wiktionary'] = 'Вікісловнику'
		},
		['vec'] = {
			['Wikipedia'] = 'Wikipèdia'
		},
		['zh-hans'] = {
			['Wikidata'] = '维基数据',
			['Wikimedia Commons'] = '维基共享资源',
			['Wikimedia MetaWiki'] = '元维基',
			['Wikiquote'] = '维基语录',
			['Wikipedia'] = '维基百科',
			['Wiktionary'] = '维基词典'
		},
		['zh-hant'] = {
			['Wikidata'] = '維基數據',
			['Wikimedia Commons'] = '維基共享資源',
			['Wikimedia MetaWiki'] = '元維基',
			['Wikiquote'] = '維基語錄',
			['Wikipedia'] = '維基百科',
			['Wiktionary'] = '維基詞典'
		},
		['zh-hk'] = {
			['Wikidata'] = '維基數據',
			['Wikimedia Commons'] = '維基共享資源',
			['Wikimedia MetaWiki'] = '元維基',
			['Wikiquote'] = '維基語錄',
			['Wikipedia'] = '維基百科',
			['Wiktionary'] = '維基詞典'
		},
	}
	project_names['zh'] = project_names['zh-hans']
	project_names['zh-cn'] = project_names['zh-hans']
	project_names['zh-mo'] = project_names['zh-hk']
	project_names['zh-my'] = project_names['zh-hans']
	project_names['zh-sg'] = project_names['zh-hans']
	project_names['zh-tw'] = project_names['zh-hant']
	local localized_name = name
	if project_names[display_lang] then
		if project_names[display_lang][name] then
			localized_name = project_names[display_lang][name]
		elseif mw.ustring.sub(name, 1, 9) == 'Wikimania' and project_names[display_lang]['Wikimania'] then
			localized_name = string.gsub(name, 'Wikimania', project_names[display_lang]['Wikimania'])
		end
	end
	-- prefix should be converted into BCP 47 lang tag or MediaWiki lang tag/lAng code
	if project_has_lang(prefix) and lang_code then
		local language_adjectives = {
			['ang'] = {
				['ang'] = 'Engliscan'
			},
			['ar'] = {
				['ab'] = 'الأبخازية',
				['af'] = 'الأفريكانية',
				['ang'] = 'الإنجليزية القديمة',
				['ar'] = 'العربية',
				['arz'] = 'المصرية',
				['ast'] = 'الأستورية',
				['az'] = 'الأذرية',
				['azb'] = 'الأذرية الجنوبية',
				['be'] = 'البيلاروسية',
				['be-tarask'] = 'البيلاروسية (تاراتسكييفيتسا)',
				['bg'] = 'البلغارية',
				['bn'] = 'البنغالية',
				['br'] = 'البريتونية',
				['bs'] = 'البوسنية',
				['ca'] = 'الكاتالونية',
				['ce'] = 'الشيشانية',
				['ceb'] = 'السيبوانية',
				['ckb'] = 'الكردية السورانية',
				['cs'] = 'التشيكية',
				['cv'] = 'التشوفاش',
				['cy'] = 'الويلزية',
				['da'] = 'الدنماركية',
				['de'] = 'الألمانية',
				['el'] = 'اليونانية',
				['en'] = 'الإنجليزية',
				['eo'] = 'الإسبرانتو',
				['es'] = 'الإسبانية',
				['et'] = 'الإستونية',
				['eu'] = 'الباسكية',
				['fa'] = 'الفارسية',
				['fi'] = 'الفنلندية',
				['fr'] = 'الفرنسية',
				['ga'] = 'الأيرلندية',
				['gl'] = 'الجاليكية',
				['he'] = 'العبرية',
				['hi'] = 'الهندية',
				['hr'] = 'الكرواتية',
				['hu'] = 'الهنغارية',
				['hy'] = 'الأرمنية',
				['ig'] = 'الإيغبو',
				['id'] = 'الإندونيسية',
				['is'] = 'الإيسلندية',
				['it'] = 'الإيطالية',
				['ja'] = 'اليابانية',
				['jv'] = 'الجاوية',
				['ka'] = 'الجورجية',
				['kk'] = 'الكازاخستانية',
				['ko'] = 'الكورية',
				['ky'] = 'القيرغيزية',
				['la'] = 'اللاتينية',
				['lij'] = 'الليغورية',
				['lld'] = 'اللايدينية',
				['lmo'] = 'اللومباردية',
				['lt'] = 'الليتوانية',
				['lv'] = 'اللاتفية',
				['mg'] = 'المالاجاشية',
				['min'] = 'المينانغكاباو',
				['ml'] = 'المالايالامية',
				['mr'] = 'الماراثية',
				['ms'] = 'الملايوية',
				['my'] = 'البورمية',
				['nds'] = 'الألمانية الدنيا',
				['ne'] = 'النيبالية',
				['nl'] = 'الهولندية',
				['nn'] = 'نينوشك',
				['no'] = 'بوكمول',
				['pa'] = 'البنجابية',
				['pl'] = 'البولندية',
				['pt'] = 'البرتغالية',
				['ro'] = 'الرومانية',
				['ru'] = 'الروسية',
				['sd'] = 'السندية',
				['sh'] = 'الصربو-كرواتية',
				['si'] = 'السنهالية',
				['simple'] = 'الإنجليزية المبسطة',
				['sk'] = 'السلوفاكية',
				['sl'] = 'السلوفينية',
				['sq'] = 'الألبانية',
				['sr'] = 'الصربية',
				['sv'] = 'السويدية',
				['sw'] = 'السواحيلية',
				['syl'] = 'السيلهتي',
				['szl'] = 'السيليزية',
				['ta'] = 'التاميلية',
				['te'] = 'التيلجو',
				['tg'] = 'الطاجيكية',
				['th'] = 'التايلاندية',
				['tl'] = 'التاغالوغ',
				['tr'] = 'التركية',
				['tt'] = 'التتارية',
				['uk'] = 'الأوكرانية',
				['ur'] = 'الأردية',
				['uz'] = 'الأوزبكية',
				['vec'] = 'البينيتية',
				['vi'] = 'الفيتنامية',
				['vo'] = 'الفولابوك',
				['war'] = 'الواراي',
				['yi'] = 'اليديشية',
				['zh'] = 'الصينية',
				['zh-min-nan'] = 'الصينية الجنوبية',
				['zh-yue'] = 'الكانتونية',
				['zu'] = 'الزولو'
			},
			['en'] = {
				['ab'] = 'Abkhaz',
				['af'] = 'Afrikaans',
				['ang'] = 'Old English',
				['ar'] = 'Arabic',
				['arz'] = 'Egyptian Arabic',
				['ast'] = 'Asturian',
				['az'] = 'Azerbaijani',
				['azb'] = 'South Azerbaijani',
				['be'] = 'Belarusian',
				['be-tarask'] = 'Belarusian (Taraškievica)',
				['bg'] = 'Bulgarian',
				['bn'] = 'Bengali',
				['br'] = 'Breton',
				['bs'] = 'Bosnian',
				['ca'] = 'Catalan',
				['ce'] = 'Chechen',
				['ceb'] = 'Cebuano',
				['ckb'] = 'Sorani Kurdish',
				['cs'] = 'Czech',
				['cv'] = 'Chuvash',
				['cy'] = 'Welsh',
				['da'] = 'Danish',
				['de'] = 'German',
				['el'] = 'Greek',
				['en'] = 'English',
				['eo'] = 'Esperanto',
				['es'] = 'Spanish',
				['et'] = 'Estonian',
				['eu'] = 'Basque',
				['fa'] = 'Persian',
				['fi'] = 'Finnish',
				['fr'] = 'French',
				['ga'] = 'Irish',
				['gl'] = 'Galician',
				['he'] = 'Hebrew',
				['hi'] = 'Hindi',
				['hr'] = 'Croatian',
				['hu'] = 'Hungarian',
				['hy'] = 'Armenian',
				['ig'] = 'Igbo',
				['id'] = 'Indonesian',
				['is'] = 'Icelandic',
				['it'] = 'Italian',
				['ja'] = 'Japanese',
				['jv'] = 'Javanese',
				['ka'] = 'Georgian',
				['kk'] = 'Kazakh',
				['ko'] = 'Korean',
				['ky'] = 'Kyrgyz',
				['la'] = 'Latin',
				['lij'] = 'Ligurian',
				['lld'] = 'Ladin',
				['lmo'] = 'Lombard',
				['lt'] = 'Lithuanian',
				['lv'] = 'Latvian',
				['mg'] = 'Malagasy',
				['min'] = 'Minangkabau',
				['ml'] = 'Malayalam',
				['mr'] = 'Marathi',
				['ms'] = 'Malay',
				['my'] = 'Burmese',
				['nds'] = 'Low German',
				['ne'] = 'Nepali',
				['nl'] = 'Dutch',
				['nn'] = 'Norwegian (Nynorsk)',
				['no'] = 'Norwegian (Bokmål)',
				['pa'] = 'Punjabi',
				['pl'] = 'Polish',
				['pt'] = 'Portuguese',
				['ro'] = 'Romanian',
				['ru'] = 'Russian',
				['sd'] = 'Sindhi',
				['sh'] = 'Serbo-Croatian',
				['si'] = 'Sinhala',
				['simple'] = 'Simple English',
				['sk'] = 'Slovak',
				['sl'] = 'Slovene',
				['sq'] = 'Albanian',
				['sr'] = 'Serbian',
				['sv'] = 'Swedish',
				['sw'] = 'Swahili',
				['syl'] = 'Sylheti',
				['szl'] = 'Silesian',
				['ta'] = 'Tamil',
				['te'] = 'Telugu',
				['tg'] = 'Tagik',
				['th'] = 'Thai',
				['tl'] = 'Tagalog',
				['tr'] = 'Turkish',
				['tt'] = 'Tatar',
				['uk'] = 'Ukrainian',
				['ur'] = 'Urdu',
				['uz'] = 'Uzbek',
				['vec'] = 'Venetian',
				['vi'] = 'Vietnamese',
				['vo'] = 'Volapük',
				['war'] = 'Waray',
				['yi'] = 'Yiddish',
				['zh'] = 'Chinese',
				['zh-min-nan'] = 'Minnan',
				['zh-yue'] = 'Cantonese',
				['zu'] = 'Zulu'
			},
			['eo'] = {
				['fr'] = 'Franca'
			},
			['es'] = {
				['ang'] = {['m'] = 'anglosajón', ['f'] = 'anglosajona'},
				['ar'] = {['m'] = 'árabe', ['f'] = 'árabe'},
				['az'] = {['m'] = 'azerí', ['f'] = 'azerí'},
				['bn'] = {['m'] = 'bengalí', ['f'] = 'bengalí'},
				['br'] = {['m'] = 'bretón', ['f'] = 'bretona'},
				['cs'] = {['m'] = 'checo', ['f'] = 'checa'},
				['da'] = {['m'] = 'danés', ['f'] = 'danesa'},
				['de'] = {['m'] = 'alemán', ['f'] = 'alemana'},
				['en'] = {['m'] = 'inglés', ['f'] = 'inglesa'},
				['eo'] = {['m'] = 'en esperanto', ['f'] = 'en esperanto'},
				['es'] = {['m'] = 'español', ['f'] = 'española'},
				['fa'] = {['m'] = 'persa', ['f'] = 'persa'},
				['fi'] = {['m'] = 'finés', ['f'] = 'finesa'},
				['fr'] = {['m'] = 'francés', ['f'] = 'francesa'},
				['gl'] = {['m'] = 'gallego', ['f'] = 'gallega'},
				['he'] = {['m'] = 'hebreo', ['f'] = 'hebrea'},
				['hi'] = {['m'] = 'hindi', ['f'] = 'hindi'},
				['hr'] = {['m'] = 'croata', ['f'] = 'croata'},
				['hu'] = {['m'] = 'húngaro', ['f'] = 'húngara'},
				['hy'] = {['m'] = 'armenio', ['f'] = 'armenia'},
				['id'] = {['m'] = 'indonesio', ['f'] = 'indonesia'},
				['it'] = {['m'] = 'italiano', ['f'] = 'italiana'},
				['ja'] = {['m'] = 'japonés', ['f'] = 'japonesa'},
				['ko'] = {['m'] = 'coreano', ['f'] = 'coreana'},
				['ml'] = {['m'] = 'malayalam', ['f'] = 'malayalam'},
				['nl'] = {['m'] = 'holandés', ['f'] = 'holandesa'},
				['no'] = {['m'] = 'en noruego (bokmål)', ['f'] = 'en noruego (bokmål)'},
				['pa'] = {['m'] = 'punjabi', ['f'] = 'punjabi'},
				['pl'] = {['m'] = 'polaco', ['f'] = 'polaca'},
				['ro'] = {['m'] = 'rumano', ['f'] = 'rumana'},
				['ru'] = {['m'] = 'ruso', ['f'] = 'rusa'},
				['simple'] = {['m'] = 'en inglés simple', ['f'] = 'en inglés simple'},
				['sk'] = {['m'] = 'eslovaco', ['f'] = 'eslovaca'},
				['sq'] = {['m'] = 'albanés', ['f'] = 'albanesa'},
				['sv'] = {['m'] = 'sueco', ['f'] = 'sueca'},
				['ta'] = {['m'] = 'támil', ['f'] = 'támil'},
				['tr'] = {['m'] = 'turco', ['f'] = 'turca'},
				['uk'] = {['m'] = 'ucraniano', ['f'] = 'ucraniana'},
				['vec'] = {['m'] = 'véneto', ['f'] = 'véneta'},
				['vi'] = {['m'] = 'vietnamita', ['f'] = 'vietnamita'},
				['zh'] = {['m'] = 'chino', ['f'] = 'china'}
			},
			['fi'] = {
				['fi'] = 'suomenkielisessä',
				['fr'] = 'ranskankielisessä'
			},
			['fr'] = {
				['fr'] = 'Français'
			},
			['it'] = {
				['ab'] = 'abcaso',
				['af'] = 'afrikaans',
				['ang'] = 'inglese antico',
				['ar'] = 'arabo',
				['arz'] = 'arabo egiziano',
				['ast'] = 'asturiano',
				['az'] = 'azero',
				['azb'] = 'azero meridionale',
				['be'] = 'bielorusso',
				['be-tarask'] = 'bielorusso (taraškievica)',
				['bg'] = 'bulgaro',
				['bn'] = 'bengalese',
				['br'] = 'bretone',
				['bs'] = 'bosniaco',
				['ca'] = 'catalano',
				['ce'] = 'ceceno',
				['ceb'] = 'cebuano',
				['ckb'] = 'soranî',
				['cs'] = 'ceco',
				['cv'] = 'ciuvascio',
				['cy'] = 'gallese',
				['da'] = 'danese',
				['de'] = 'tedesco',
				['el'] = 'greco',
				['en'] = 'inglese',
				['eo'] = 'esperanto',
				['es'] = 'spagnolo',
				['et'] = 'estone',
				['eu'] = 'basco',
				['fa'] = 'persiano',
				['fi'] = 'finlandese',
				['fr'] = 'francese',
				['ga'] = 'irlandese',
				['gl'] = 'galiziano',
				['he'] = 'ebraico',
				['hi'] = 'hindī',
				['hr'] = 'croato',
				['hu'] = 'ungherese',
				['hy'] = 'armeno',
				['ig'] = 'igbo',
				['id'] = 'indonesiano',
				['is'] = 'islandese',
				['it'] = 'italiano',
				['ja'] = 'giapponese',
				['jv'] = 'giavanese',
				['ka'] = 'georgiano',
				['kk'] = 'kazako',
				['ko'] = 'coreano',
				['ky'] = 'kirghiso',
				['la'] = 'latino',
				['lij'] = 'ligure',
				['lld'] = 'ladino',
				['lmo'] = 'lombardo',
				['lt'] = 'lituano',
				['lv'] = 'lettone',
				['mg'] = 'malgascio',
				['min'] = 'minangkabau',
				['ml'] = 'malayālaṃ',
				['mr'] = 'marāṭhi',
				['ms'] = 'malese',
				['my'] = 'birmano',
				['nds'] = 'basso-tedesco',
				['ne'] = 'nepalese',
				['nl'] = 'olandese',
				['nn'] = 'norvegese (nynorsk)',
				['no'] = 'norvegese (bokmål)',
				['pa'] = 'punjabi',
				['pl'] = 'polacco',
				['pt'] = 'portoghese',
				['ro'] = 'romeno',
				['ru'] = 'russo',
				['sd'] = 'sindhi',
				['sh'] = 'serbo-croato',
				['si'] = 'singalese',
				['simple'] = 'inglese semplificato',
				['sk'] = 'slovacco',
				['sl'] = 'sloveno',
				['sq'] = 'albanese',
				['sr'] = 'serbo',
				['sv'] = 'svedese',
				['sw'] = 'swahili',
				['syl'] = 'sylheti',
				['szl'] = 'slesiano',
				['ta'] = 'tamil',
				['te'] = 'telugu',
				['tg'] = 'tagico',
				['th'] = 'thailandese',
				['tl'] = 'tagalog',
				['tr'] = 'turco',
				['tt'] = 'tataro',
				['uk'] = 'ucraino',
				['ur'] = 'urdu',
				['uz'] = 'uzbeco',
				['vec'] = 'veneto',
				['vi'] = 'vietnamita',
				['vo'] = 'volapük',
				['war'] = 'waray-waray',
				['yi'] = 'yiddish',
				['zh'] = 'cinese',
				['zh-min-nan'] = 'min nan',
				['zh-yue'] = 'cantonese',
				['zu'] = 'zulu'
			},
			['ja'] = {
				['ang'] = '古英語版',
				['ar'] = 'アラビア語版',
				['az'] = 'アゼルバイジャン語版',
				['bn'] = 'ベンガル語版',
				['br'] = 'ブルトン語版',
				['cs'] = 'チェコ語版',
				['da'] = 'デンマーク語版',
				['de'] = 'ドイツ語版',
				['en'] = '英語版',
				['eo'] = 'エスペラント語版',
				['es'] = 'スペイン語版',
				['fa'] = 'ペルシア語版',
				['fi'] = 'フィンランド語版',
				['fr'] = 'フランス語版',
				['gl'] = 'ガリシア語版',
				['he'] = 'ヘブライ語版',
				['hi'] = 'ヒンディー語版',
				['hr'] = 'クロアチア語版',
				['hu'] = 'ハンガリー語版',
				['hy'] = 'アルメニア語版',
				['id'] = 'インドネシア語版',
				['it'] = 'イタリア語版',
				['ja'] = '日本語版',
				['ko'] = '韓国語版',
				['ml'] = 'マラヤーラム語版',
				['nl'] = 'オランダ語版',
				['no'] = 'ノルウェー語版 (Bokmål)',
				['pa'] = 'パンジャブ語版',
				['pl'] = 'ポーランド語版',
				['ro'] = 'ルーマニア語版',
				['ru'] = 'ロシア語版',
				['simple'] = 'シンプル英語版',
				['sk'] = 'スロバキア語版',
				['sq'] = 'アルバニア語版',
				['sv'] = 'スウェーデン語版',
				['ta'] = 'タミル語版',
				['tr'] = 'トルコ語版',
				['uk'] = 'ウクライナ語版',
				['vec'] = 'ヴェネト語版',
				['vi'] = 'ベトナム語版',
				['zh'] = '中国語版'
			},
			['pa'] = {
				['pa'] = 'ਪੰਜਾਬੀ'
			},
			['ta'] = {
				['ta'] = 'தமிழ்'
			},
			['zh-hans'] = {
				['en'] = '英语',
				['zh'] = '中文',
			},
			['zh-hant'] = {
				['en'] = '英語',
				['zh'] = '中文',
			},
			['zh-hk'] = {
				['en'] = '英語',
				['zh'] = '中文',
			},
		}
		language_adjectives['zh'] = language_adjectives['zh-hans']
		language_adjectives['zh-cn'] = language_adjectives['zh-hans']
		language_adjectives['zh-mo'] = language_adjectives['zh-hk']
		language_adjectives['zh-my'] = language_adjectives['zh-hans']
		language_adjectives['zh-sg'] = language_adjectives['zh-hans']
		language_adjectives['zh-tw'] = language_adjectives['zh-hant']
		if language_adjectives[display_lang] and language_adjectives[display_lang][lang_code] then
			if display_lang == 'en' then
				localized_name = 'the ' .. language_adjectives[display_lang][lang_code] .. " " .. localized_name
			elseif display_lang == 'ang' then
				localized_name = 'þæm ' .. language_adjectives[display_lang][lang_code] .. " " .. localized_name
			elseif display_lang == 'eo' then
				localized_name = 'la ' .. language_adjectives[display_lang][lang_code] .. " " .. localized_name
			elseif display_lang == 'es' then
				if localized_name == 'la Incubadora de Wikimedia' or localized_name == 'la Wikiversidad' then
					localized_name = localized_name .. ' ' .. language_adjectives[display_lang][lang_code]['f']
				elseif localized_name == 'Wikinoticias' or localized_name == 'Wikiespecies' or localized_name == 'Wikimanía' then
					localized_name = 'la ' .. localized_name .. ' ' .. language_adjectives[display_lang][lang_code]['f']
				else
					localized_name = 'el ' .. localized_name .. ' ' .. language_adjectives[display_lang][lang_code]['m']
				end
			elseif display_lang == 'fi' or display_lang == 'ta' then
				localized_name = language_adjectives[display_lang][lang_code] .. " " .. localized_name
			elseif display_lang == 'fr' then
				localized_name = 'le ' .. localized_name .. ' ' .. language_adjectives[display_lang][lang_code]
			elseif display_lang == 'it' then
				localized_name = ' ' .. localized_name .. ' in ' .. language_adjectives[display_lang][lang_code]
			end
		else
			-- Wikipedia-zh is more common than zh-Wikipedia
			localized_name = localized_name .. '-' .. lang_code
		end
	end
	
	return localized_name
end

function project_link_prefix(prefix, lang_code)
	if project_name(prefix) == 'Wikimedia MetaWiki' then
		return 'm:'
	else
		local link_prefix = prefix
		if project_has_lang(prefix) and lang_code then
			link_prefix = link_prefix .. ':' .. lang_code
		end
		link_prefix = link_prefix .. ':'
		return link_prefix
	end
end

function project_userpage_link(prefix, lang_code, username)
	return project_link_prefix(prefix, lang_code) .. 'User:' .. username
end

function project_project_link(prefix, lang_code)
	local link_target = project_link_prefix(prefix, lang_code) .. 'Special:MyLanguage/'

    if prefix == 'wikidata' then
        return link_target .. 'Wikidata:Main_Page'
    else
        return link_target .. 'Main_Page'
    end
end

function project_text(prefix, lang_code, username, gender, display_lang, frame)
	local tmb = require 'mw.ext.translate.messageBundle'
	local this_user_key = 'this-user-has'
	local mb_page_title = 'Module:User Wikimedia project/i18n'

	local lang1 = lang_code

	if lang1 == 'simple' or not lang_code then
		lang1 = 'en'
	end

	local mb_lang1 = tmb.new( mb_page_title, lang1 )
	local this_user_translation_lang1 = frame:preprocess(mb_lang1:t( this_user_key ):params(
		-- Workaround for the missing functionality to pass lang tag/lang code, especially for "Template:LC zh".
		-- {{LC zh|lang = {{{lang|$1}}}|...}}
		-- Without this, asking zh-hans translations would still get zh-hant, zh-hk (and vice versa)
		-- and LC zh cannot handle this case without the lang parameter due to being frame:preprocess'd
		lang1,
		username,
		project_userpage_link(prefix, lang_code, username),
		project_project_link(prefix, lang_code),
		localized_project_name(prefix, lang_code, display_lang)
	):plain())
	
	local lang2 = display_lang or mw.getCurrentFrame():preprocess("{{Int:Lang}}")

	if lang2 == 'simple' then
		lang2 = 'en'
	end

	local mb_lang2 = tmb.new( mb_page_title, lang2 )
	local this_user_translation_lang2 = frame:preprocess(mb_lang2:t( this_user_key ):params(
		-- Workaround for the missing functionality to pass lang tag/lang code, especially for "Template:LC zh".
		-- {{LC zh|lang = {{{lang|$1}}}|...}}
		-- Without this, asking zh-hans translations would still get zh-hant, zh-hk (and vice versa)
		-- and LC zh cannot handle this case without the lang parameter due to being frame:preprocess'd
		lang2,
		username,
		project_userpage_link(prefix, lang_code, username),
		project_project_link(prefix, lang_code),
		localized_project_name(prefix, lang_code, lang2)
	):plain())

	local lang2_object = mw.language.new( lang2 )
	local lang2_dir = lang2_object:getDir()
	
	if lang1 == lang2 or not project_has_lang(prefix) then
		return '<p lang="' .. lang2 .. '" dir="' .. lang2_dir .. '">' .. this_user_translation_lang2 .. '</p>'
	else
		local lang1_object = mw.language.new( lang1 )
		local lang1_dir = lang1_object:getDir()
	
		return '<p lang="' .. lang1 .. '" dir="' .. lang1_dir .. '">' .. this_user_translation_lang1 .. '</p>\n----\n<p lang="' .. lang2 .. '" dir="' .. lang2_dir .. '">' .. this_user_translation_lang2 .. '</p>'
	end
end

function project_image(prefix)
	local filename
	local name = project_name(prefix)
	if name == 'Wikimedia MetaWiki' then
		filename = 'Wikimedia Community Logo.svg'
	elseif name == 'Wikimedia Commons' then
		filename = 'Commons-logo.svg'
	elseif name == 'Wikimedia Outreach' then
		filename = 'Wikimedia-logo.svg'
	elseif name == 'Wikitech' then
		filename = 'Wikitech-2021-blue-icon.svg'
	elseif name == 'MediaWiki' then
		filename = 'MediaWiki-2020-icon.svg'
	elseif name == 'Wikiversity' then
		filename = 'Wikiversity logo 2017.svg'
	elseif name == 'Wikimania' or is_wikimania_number_prefix(prefix) then
		filename = 'Wikimania.svg'
	else
		filename = mw.title.makeTitle('File', name .. '-logo.svg').text
	end
	return '[[File:' .. filename .. '|40px]]'
end

function p._user_wikimedia_project(args, frame)
	local prefix = string.lower(args[1] or args.prefix or "metawiki")
	local lang_code = args[2] or args.lang_code or args['lang code'] or 'en'
	local username = args[3] or args.username or mw.title.getCurrentTitle().rootText
	local gender = args.gender or username
	local display_lang = args.display_lang or args['display lang']
	
	local userbox_args = {
		['border-c'] = '#bbbbbb',
		['id'] = args.image or project_image(prefix),
		['id-c'] = '#ffffff',
		['info'] = project_text(prefix, lang_code, username, gender, display_lang, frame),
		['info-c'] = '#f6f6f6',
		['usercategory'] = args.usercategory,
		['usercategory2'] = args.usercategory2,
		['usercategory3'] = args.usercategory3,
		['nocat'] = args.nocat
	}
	return mw.getCurrentFrame():expandTemplate {
		['title'] = 'Userbox sister project',
		['args'] = userbox_args
	}
	--return userbox(userbox_args)
end

function p.user_wikimedia_project(frame)
	return p._user_wikimedia_project(getArgs(frame), frame)
end

return p