Difference between revisions of "Module:Language"
m |
m |
||
(3 intermediate revisions by the same user not shown) | |||
Line 24: | Line 24: | ||
-- See {{L}} |
-- See {{L}} |
||
p.link = function( f ) |
p.link = function( f ) |
||
− | local args = processArgs. |
+ | local args = processArgs.normDefault( f ) |
-- Get language suffix for links |
-- Get language suffix for links |
||
Line 44: | Line 44: | ||
-- See {{Language}} |
-- See {{Language}} |
||
p.name = function( f ) |
p.name = function( f ) |
||
− | local args = processArgs. |
+ | local args = processArgs.normDefault( f ) |
− | local langCode = |
+ | local langCode = args[1] or 'en' |
-- Get language code for specified title or current page |
-- Get language code for specified title or current page |
||
Line 66: | Line 66: | ||
-- See {{ML}} |
-- See {{ML}} |
||
p.modlink = function( f ) |
p.modlink = function( f ) |
||
− | local args = processArgs. |
+ | local args = processArgs.normDefault( f ) |
local modname = require([[Module:Mods]]).getData(args[2]).name |
local modname = require([[Module:Mods]]).getData(args[2]).name |
||
Line 80: | Line 80: | ||
p.code = function( f ) |
p.code = function( f ) |
||
− | local args = processArgs. |
+ | local args = processArgs.normDefault( f ) |
-- 'de' and 'Main Page/de' will be correctly processed regardless of the arg name |
-- 'de' and 'Main Page/de' will be correctly processed regardless of the arg name |
Latest revision as of 07:51, 27 December 2020
Documentation for this module may be created at Module:Language/doc
local langNames = require( [[Module:Language/Names]] )
local processArgs = require( [[Module:ProcessArgs]] )
local function code( title )
local titleObj = title or mw.title.getCurrentTitle()
if not titleObj.isSubpage then
return nil
end
local subPage = titleObj.subpageText:lower()
if langNames[subPage] then
return subPage
end
end
local function pageSuffix()
local langCode = code()
if langCode then
return '/' .. langCode
end
return ''
end
local p = {}
-- See {{L}}
p.link = function( f )
local args = processArgs.normDefault( f )
-- 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
-- See {{Language}}
p.name = function( f )
local args = processArgs.normDefault( f )
local langCode = 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 in English if the 2nd arg or 'en' arg is set
if (args[2] and args[2] ~= '') or (args.en and args.en ~= '') then
return langName[1]
end
-- Get language name in that language (autonym)
return langName[2]
end
-- See {{ML}}
p.modlink = function( f )
local args = processArgs.normDefault( f )
local modname = require([[Module:Mods]]).getData(args[2]).name
if not modname then
return 'No mod found'
end
local disambiguated = string.format("%s (%s)", args[1], modname)
return p.link{disambiguated, args.title or args[1]}
end
p.code = function( f )
local args = processArgs.normDefault( f )
-- 'de' and 'Main Page/de' will be correctly processed regardless of the arg name
-- These aliases are mainly to keep a standard
local selected = args.code or args.title
local code = code( selected and mw.title.new(selected) or mw.title.getCurrentTitle() )
if not code then
return args.default or ''
end
return code
end
return p