Template:R:ps:NEVP
{{reference template cat|ira-pro|title=Template:R:ps:NEVP}}
[[ප්‍රවර්ගය: Pashto මූලාශ්‍ර සැකිලි|NEVP]][[ප්‍රවර්ගය: Proto-Iranian මූලාශ්‍ර සැකිලි|NEVP]]
Template:R:ine:LIV
{{reference template cat|title=Template:R:ine:LIV}}
[[ප්‍රවර්ගය: ප්‍රොටෝ-ඉන්දු-යුරෝපීය මූලාශ්‍ර සැකිලි|LIV]]
Template:R:bat:EDBIL
{{reference template cat|ine-bsl-pro|lv|lt|title=Template:R:bat:EDBIL}}
[[ප්‍රවර්ගය: Proto-Balto-Slavic මූලාශ්‍ර සැකිලි|EDBIL]][[ප්‍රවර්ගය: Latvian මූලාශ්‍ර සැකිලි|EDBIL]][[ප්‍රවර්ගය: Lithuanian මූලාශ්‍ර සැකිලි|EDBIL]]
Template:R:ine:LIV
{{reference template cat|ine-bsl-pro|lv|lt|sort=Rix, Helmut|title=Template:R:ine:LIV}}
[[ප්‍රවර්ගය: ප්‍රොටෝ-ඉන්දු-යුරෝපීය මූලාශ්‍ර සැකිලි|Rix, Helmut]][[ප්‍රවර්ගය: Proto-Balto-Slavic මූලාශ්‍ර සැකිලි|Rix, Helmut]][[ප්‍රවර්ගය: Latvian මූලාශ්‍ර සැකිලි|Rix, Helmut]][[ප්‍රවර්ගය: Lithuanian මූලාශ්‍ර සැකිලි|Rix, Helmut]]

local m_sinhala = require("Module:sinhala")

local export = {}

local Array = require("Module:array")
local m_lang = require("Module:languages")

local prefixes = {
	['reference'] = 'R',
	['quotation'] = 'RQ',
}

function export.categorize(title, langs, sortkey, what)
	what = what or 'reference';
	langs = Array(langs):slice()
	local name = title.text:gsub("^" .. prefixes[what] .. ":", "")
	local lang_in_title, rest = name:match("^(%l[%l-]*%l):(.+)$")
	if lang_in_title then
		if not m_lang.getByCode(lang_in_title) then
			lang_in_title = lang_in_title .. "-pro"
		end
		
		if m_lang.getByCode(lang_in_title) and not langs:contains(lang_in_title) then
			langs:insert(1, lang_in_title)
		end
		
		name = rest
	end
	
	sortkey = sortkey or name
	
	return langs
		:map(
			function (langCode)
				local lang = m_lang.getByCode(langCode, true)
				return ("[[ප්‍රවර්ගය: %s %s|%s]]"):format(lang:getCanonicalName(),
					m_sinhala.sinhala(what .. " templates"), sortkey)
			end)
		:concat ""
end

function export.main(frame)
	local current_title = mw.title.getCurrentTitle()
	if current_title.nsText == "" or current_title.nsText == "Reconstruction" then
		error("This template is meant to be used in the Template namespace.")
	end

	local what = frame.args.what or 'reference'; -- can be either 'reference' or 'quotation'
	
	local args = frame:getParent().args
	
	local sortkey = args.sort
	
	local args = Array.shallowCopy(args)
	local title = current_title
	local is_demo = current_title.nsText == "Module"
		or (current_title.nsText == "සැකිල්ල"
		and current_title.baseText == what .. " template cat")
	if is_demo and args.title then
		title = mw.title.new(args.title)
		args.title = nil
	end
	
	args.sort = nil
	
	local langs = args
	if not langs:is_array() then
		error("Sequential positional parameters expected")
	end
	
	local categories = export.categorize(title, langs, sortkey, what)
	if is_demo then
		categories = mw.text.nowiki(categories)
	end
	
	return categories
end

return export
"https://si.wiktionary.org/w/index.php?title=Module:reference_template_cat&oldid=199898" වෙතින් සම්ප්‍රවේශනය කෙරිණි