--
-- INTRO:   (!!! DO NOT RENAME THIS PAGE !!!)
--    This module allows any template or module to be copy/pasted between
--    wikis without any translation changes. All translation text is stored
--    in the global  Data:*.tab  pages on Commons, and used everywhere.
--
-- ATTENTION:
--
-- DESCRIPTION:
--    This module allows templates to use translations from the shared Datasets on Commons
--
--    The "msg" function uses a Commons dataset to translate a message
--    with a given key (e.g. source-table), plus optional arguments
--    to the wiki markup in the current content language.
--    Use lang=xx to set language.  Example:
--
--         {{#invoke:TNT | msg--     | I18nOriginal/Template:Graphs.tab  <!| source-table | param1 }}- -            uses https://commons.wikimedia.org/wiki/Data:I18nOriginal/Template:Graphs.tab -->--     | source-table              <!-- uses a translation message with id = "source-table" -->--     | param1 }}                 <!-- optional parameter -->
--   
--    
--    The "doc" function will generate the <templatedata> parameter documentation for templates.
--    This way all template parameters can be stored and localized in a single Commons dataset.
--    NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
--         {{#invoke:TNT | doc | Graph:Lines {{BASEPAGENAME}} }}--                   uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab--                   if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18ni18n/Module:TNT.tab'
function p.msg(frame)
	local dataset, id
	local params = {}
	local lang = nil
	for k, v in pairs(frame.args) do
		if k == 1 then
		elseif type(k) == 'number' then
			table.insert(params, v)
		elseif k == 'lang' and v ~= '_' then
			lang = v
		end
	end
	return formatMessage(dataset, id, params, lang)
end
function p.doc(frame)
	dataset = 'Templatedata/' .. normalizeDataset(frame.args[1])	-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages	local data = loadData('templatedata/' .. dataset)
	local names = {}
	for _, field in pairs(data.schema.fields) do
	templateData = mw.text.jsonEncode(templateData)
	return frame:extensionTag('templatedata', templateData) .. tntMessage('edit_doc', {link(dataset)})
end
function formatMessage(dataset, key, params, lang)    for _, row in pairs(loadData(dataset, lang).data) do
    	local id, msg = unpack(row)
    	if id == key then
end
function loadData(dataset, lang)	local data = mw.ext.data.get(dataset, lang)
	if data == false then
		if dataset == i18nDataset then