Hello there! We are conducting a survey to better understand the user experience in making a first edit. If you have ever made an edit on Gamepedia, please fill out the survey. Thank you!

Module:Language

(tagline)
(jumpto) (jumptonavigation)(comma-separator) (jumptosearch)

Documentation for this module may be created at Module:Language/doc

local langNames = mw.loadData( [[Module:Language/Names]] )
local code = function( title )
	local subPage = ( title or mw.title.getCurrentTitle() ).subpageText:lower()
	if langNames[subPage] then
		return subPage
	end
end
local pageSuffix = function()
	local langCode = code()
	if langCode then
		return '/' .. langCode
	end
	return ''
end

local p = {}

p.link = function( f )
	local args = f or {}
	if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
	
	-- Get language suffix for links
	if not args[1] or args[1]:lower() == 't' then
		return pageSuffix()
	end
	
	local page = args[1] .. pageSuffix()
	-- Get page name with suffix
	if args.dest then
		return page
	end
	-- Get page link with suffix and specified text
	return '[[' .. page .. '|' .. ( args.o or args[2] or args[1] ) .. ']]'
end

p.name = function( f )
	local args = f
	if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
	
	local langCode = code( args[1] and mw.title.new( args[1] ) ) or 'en'
	
	-- Get language code for specified title or current page
	if args.code then
		return langCode
	end
	
	local langName = langNames[langCode]
	-- Get language name
	if args.en then
		return langName[1]
	end
	-- Get native name
	return langName[2]
end

-- This is not a communist function
p.modlink = function(f)
	local args = f or {}
	if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
	
	local name = require([[Module:Mods]]).getName(args[2])
	
	if not name then
		return 'No mod found'
	end
	
	args[2] = args[1]
	args[1] = args[1] .. ' (' .. name .. ')'
	
	return p.link(args)
end

return p