Modul:InLang
Aspect

Documentația poate fi citită și modificată la Modul:InLang/doc
Modul realizat pentru a înlocui funcționalitatea formatului {{Limba}}. Folosește Modul:Lang pentru afișarea efectivă a textului.
Testele unitare sunt la Discuție Modul:InLang/testcases.
local getArgs = require('Modul:Arguments').getArgs
local illWd = require('Modul:Ill-wd')
local StringUtils = require('Modul:StringUtils')
local wikidata = require('Modul:Wikidata')
local lang = require('Modul:Lang')
local p = {}
p.fromArgs = function(langId, langText, langTranslit, latinVariantName, italics)
local languageLinkl
if mw.ustring.match(langId, 'Q?%d+') then
languageLink = illWd.fromArgs(langId, StringUtils._removeStart({StringUtils._removeStart({wikidata.findLabel(langId), 'Limba '}), 'limba '}), nil)
local langISOcode = wikidata.findOneValue('P218', langId) or wikidata.findOneValue('P219', langId) or wikidata.findOneValue('P305', langId)
languageAlphabets = wikidata.getBestEntityIdsList(langId, 'P282')
local languageDir = nil
if languageAlphabets and languageAlphabets[1] then
languageDirectionalities = wikidata.getBestEntityIdsList(languageAlphabets[1], 'P1406')
if languageDirectionalities and languageDirectionalities[1] then
languageDir = (languageDirectionalities[1] == 7333457) and 'rtl'
end
end
local out = languageLink .. ' '
if langText then
if langISOcode then
local htmlText = lang.fromArgs(langISOcode, languageDir, langText, italics)
out = out .. htmlText
else
out = out .. '\'\'' .. langTranslit .. '\'\''
end
end
if langTranslit then
out = out .. ', ' .. latinVariantName .. ' '
if langISOcode then
local htmlText = tostring(mw.html.create('span'):attr('lang', langISOcode):wikitext('\'\'' .. langTranslit .. '\'\''))
out = out .. htmlText
else
out = out .. '\'\'' .. langTranslit .. '\'\''
end
end
return out
else
languageLink = '[[Limba ' .. langId .. '|' .. langId .. ']]'
return languageLink .. ' ' .. (langText and ((italics and '\'\'' or '') .. langText .. (italics and '\'\'' or '')) or '') .. (langTranslit and (', ' .. latinVariantName .. ' ' .. '\'\'' .. langTranslit .. '\'\'') or '')
end
end
p.fromArray = function(args)
local languageId = args[1]
local languageText = args[2]
local languageTranslit = args[3]
local latinVariantName = args[4] or 'transliterat'
local italics = (args['italics'] ~= 'no')
return p.fromArgs(languageId, languageText, languageTranslit, latinVariantName, italics)
end
p.fromFrame = function(frame)
argsOptions = {frameOnly = false, parentOnly = false}
if frame.args['args'] then
argsOptions.frameOnly = (frame.args['args'] == 'frameOnly')
argsOptions.parentOnly = (frame.args['args'] == 'parentOnly')
end
local args = getArgs(frame, argsOptions)
return p.fromArray(args)
end
return p