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}}

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'
		},
		['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'] = 'ਵਿਕੀਸਰੋਤ'
		},
		['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'] = {
			['Wikipedia'] = 'Вікіпедії'
		},
		['vec'] = {
			['Wikipedia'] = 'Wikipèdia'
		}
	}
	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
	
	if project_has_lang(prefix) and lang_code then
		local language_adjectives = {
			['ang'] = {
				['ang'] = 'Engliscan'
			},
			['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'] = 'Southern Min',
				['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'] = 'தமிழ்'
			}
		}
		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
			localized_name = lang_code .. '-' .. localized_name
		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, page_word)
	return "'''[[" .. project_link_prefix(prefix, lang_code) .. 'User:' .. username .. '|<span title="User:' .. username .. '">' .. page_word .. "</span>]]'''"
end

function project_project_link(prefix, lang_code, display_lang)
    if prefix == 'wikidata' then
        return '[[' .. project_link_prefix(prefix, lang_code) .. 'Special:MyLanguage/Wikidata:Main_Page|' .. localized_project_name(prefix, lang_code, display_lang) .. ']]'
    else
        return '[[' .. project_link_prefix(prefix, lang_code) .. 'Special:MyLanguage/Main_Page|' .. localized_project_name(prefix, lang_code, display_lang) .. ']]'
    end
end

function project_text(prefix, lang_code, username, gender, display_lang)
	local args = {
		['ang'] = 'Þes brūcend hæfþ ' .. project_userpage_link(prefix, lang_code, username, 'tramet') .. ' on ' .. project_project_link(prefix, lang_code, 'ang') .. '.',
		['da'] = 'Denne bruger har ' .. project_userpage_link(prefix, lang_code, username, 'en side') .. ' på ' .. project_project_link(prefix, lang_code, 'da') .. '.',
		['de'] = 'Dieser Benutzer hat ' .. project_userpage_link(prefix, lang_code, username, 'eine Seite') .. ' auf ' .. project_project_link(prefix, lang_code, 'en') .. '.',
		['en'] = 'This user has ' .. project_userpage_link(prefix, lang_code, username, 'a page') .. ' on ' .. project_project_link(prefix, lang_code, 'en') .. '.',
		['eo'] = 'Ĉi tiu uzanto havas ' .. project_userpage_link(prefix, lang_code, username, 'retpaĝo') .. ' en ' .. project_project_link(prefix, lang_code, 'eo') .. '.',
		['es'] = mw.language.getContentLanguage():gender(gender, 'Este usuario', 'Esta usuaria', 'Esta persona') .. ' tiene ' .. project_userpage_link(prefix, lang_code, username, 'una página') .. ' en ' .. project_project_link(prefix, lang_code, 'es') .. '.',
		['fa'] = 'کاربر دارای' .. project_userpage_link(prefix, lang_code, username, 'یک صفحه') .. ' در ' .. project_project_link(prefix, lang_code, 'fa') .. ' است.',
		['fi'] = 'Tällä käyttäjällä on ' .. project_userpage_link(prefix, lang_code, username, 'käyttäjäsivu') .. ' projektissa ' .. project_project_link(prefix, lang_code, 'fi') .. '.',
		['fr'] = mw.language.getContentLanguage():gender(gender, 'Cet utilisateur', 'Cette utilisatrice', 'Cette personne') .. ' a ' .. project_userpage_link(prefix, lang_code, username, 'une page') .. ' sur ' .. project_project_link(prefix, lang_code, 'fr') .. '.',
		['he'] = '<div style="text-align:right; direction:rtl;">' .. 'יש ' .. mw.language.getContentLanguage():gender(gender, 'למשתמש זה', 'למשתמשת זו', 'למשתמש זה') .. ' ' ..  project_userpage_link(prefix, lang_code, username, 'דף משתמש') .. ' ' .. 'ב' .. project_project_link(prefix, lang_code, 'he') .. '.</div>',
		['hr'] = 'Ovaj suradnik ima ' .. project_userpage_link(prefix, lang_code, username, 'suradničku stranicu') .. ' na ' .. project_project_link(prefix, lang_code, 'hr') .. '.',
		['hu'] = 'Ennek a szerkesztőnek a ' .. project_project_link(prefix, lang_code, 'hu') .. ' oldalán is van ' .. project_userpage_link(prefix, lang_code, username, 'fiókja') .. '.',
		['id'] = 'Pengguna ini memiliki ' .. project_userpage_link(prefix, lang_code, username, 'akun') .. ' di ' .. project_project_link(prefix, lang_code, 'id') .. '.',
		['it'] = mw.language.getContentLanguage():gender(gender, 'Questo utente', 'Questa utente', "Quest'utente") .. ' ha ' .. project_userpage_link(prefix, lang_code, username, 'una pagina') .. ' su ' .. project_project_link(prefix, lang_code, 'it') .. '.',
		['ja'] = 'この利用者は' .. project_project_link(prefix, lang_code, 'ja') .. 'に' .. project_userpage_link(prefix, lang_code, username, '利用者ページ') .. 'を持っています。',
		['ko'] = '이 사용자는 ' .. project_project_link(prefix, lang_code, 'ko') .. '에 ' .. project_userpage_link(prefix, lang_code, username, '사용자 문서') .. '가 있습니다. ',
		['la'] = mw.language.getContentLanguage():gender(gender, 'Hic usor', 'Haec ustrix', 'Hic usor/Haec ustrix') .. ' habet ' .. project_userpage_link(prefix, lang_code, username, 'paginam') .. ' apud ' .. project_project_link(prefix, lang_code, 'la') .. '.',
		['nl'] = 'Deze gebruiker heeft ' .. project_userpage_link(prefix, lang_code, username, 'een pagina') .. ' op ' .. project_project_link(prefix, lang_code, 'nl') .. '.',
		['pa'] = 'ਇਸ ਵਰਤੋਂਕਾਰ ਦਾ ' .. project_project_link(prefix, lang_code, 'pa') .. ' ਉੱਤੇ ' .. project_userpage_link(prefix, lang_code, username, 'ਵਰਤੋਂਕਾਰ ਸਫ਼ਾ') .. ' ਹੈ।',
		['pl'] = mw.language.getContentLanguage():gender(gender, 'Ten użytkownik', 'Ta użytkowniczka', 'Ta osoba') .. ' posiada własną ' .. project_userpage_link(prefix, lang_code, username, 'stronę') .. ' na ' .. project_project_link(prefix, lang_code, 'pl') .. '.',
		['syl'] = 'ꠁ ꠛꠦꠛꠀꠞꠇ꠆ꠞꠣꠞ ' .. project_userpage_link(prefix, lang_code, username, 'ꠄꠉꠥ ꠄꠇꠣꠃꠘ ꠀꠍꠦ') .. ' ꠅꠃ' .. project_project_link(prefix, lang_code, 'syl') .. '.',
		['ta'] = 'இந்தப் பயனருக்கு ' .. project_project_link(prefix, lang_code, 'ta') .. ' ' .. project_userpage_link(prefix, lang_code, username, 'பக்கம் உள்ளது') .. '.',
		['tr'] = 'Bu kullanıcının ' .. project_project_link(prefix, lang_code, 'tr') .. "'da " .. project_userpage_link(prefix, lang_code, username, 'bir sayfası') .. ' var.',
		['uk'] = mw.language.getContentLanguage():gender(gender, 'Цей користувач', 'Ця користувачка') .. ' має ' .. project_userpage_link(prefix, lang_code, username, 'сторінку') .. ' у ' .. project_project_link(prefix, lang_code, 'uk') .. '.',
		['vec'] = 'Sta utensa cuà ' .. project_userpage_link(prefix, lang_code, username, 'ła ga na pàzena') .. ' so ' .. project_project_link(prefix, lang_code, 'vec') .. '.'
	}
	
	local lang1 = lang_code
	if lang1 == 'simple' or not lang_code or not args[lang1] then
		lang1 = 'en'
	end
	
	local lang2 = display_lang or mw.getCurrentFrame():preprocess("{{Int:Lang}}")
	if lang2 == 'simple' or not args[lang2] then
		lang2 = 'en'
	end
	
	if lang1 == lang2 or not project_has_lang(prefix) then
		return '<p lang="' .. lang2 .. '">' .. args[lang2] .. '</p>'
	else
		return '<p lang="' .. lang1 .. '">' .. args[lang1] .. '</p>\n----\n<p lang="' .. lang2 .. '">' .. args[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)
	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),
		['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))
end

return p