Documentation for this module may be created at Module:Sandbox/trappist the monk/map non en params/doc

--[[

a crude tool to create most of the necessary data for pt:Predefinição:Citar web and other Portuguese citation
templates for the cs1|2 translator module.  Likely usable for other-language wikis that use some form of 
Module:Citation/CS1.

To use this tool:
	copy the <aliases> table from the other-language wiki's Module:Citation/CS1/Configuration and paste it in this module.
	set the value for <lang_code>
	In the debug console: =p.map_non_en_params()

returns a table of non-English parameter names mapped to their non-English metaparameter names; enumerated
parameters at the end.  When the non-English implementation of Module:Citation/CS1/Configuration uses non-
English metaparameter names, this tool may not be as useful because the non-English metaparameter names won't
match the en.wiki metaparameter names in Module:Citation/CS1/Whitelist

]]

require('strict');

local lang_code = 'pt';

local aliases = {
    ['AccessDate'] = {'acesso', 'acessodata', 'acesso-data', 'accessodata', 'acessadoem', 'dataacesso', 'accessdate', 'access-date', 'dataacesso', 'fechaacceso', 'consulta', 'acessdate'},
    ['Agency'] = {'agencia', 'agency', 'agência'},
    ['AirDate'] = {'transmissão', 'airdate', 'air-date'},
    ['ArchiveDate'] = {'arquivodata', 'arquivo-data', 'archive-date', 'archivedate'},
    ['ArchiveFormat'] = {'formato-arquivo', 'arquivoformato', 'archive-format'},
    ['ArchiveURL'] = {'arquivourl', 'arquivo-url', 'urlarquivo', 'archive-url', 'archiveurl', 'urlarchivo'},
    ['ASINTLD'] = {'ASIN-TLD', 'asin-tld'},
    ['At'] = {'at', 'em', 'en'},
    ['Authors'] = {'autores', 'pessoas', 'authors','people', 'host', 'credits', 'créditos', 'argumentistas', 'persona', 'personas'},
    ['BookTitle'] = {'titulolivro', 'títulolivro', 'título-livro', 'booktitle', 'book-title'},
    ['Callsign'] = {'indicativo', 'callsign', 'call-sign'},
    ['Chapter'] = {'capitulo', 'capítulo', 'artigo', 'chapter', 'article', 'contribuição', 'contribuicao', 'contribution', 'entry'},
    ['ChapterFormat'] = {'formato-capitulo', 'chapter-format', 'contribution-format', 'section-format'},
    ['ChapterURL'] = {'urlcapitulo', 'urlcapítulo', 'capítulourl', 'capítulo-url', 'url-capítulo', 'chapter-url', 'chapterurl', 'contribution-url', 'contributionurl', 'section-url', 'sectionurl'},
    ['City'] = {'cidade', 'city'},
    ['Class'] = {'classe', 'class'},
    ['Coauthors'] = {'coautor', 'coautores', 'coauthors', 'coauthor'},
    ['Collaboration'] = {'colaboração', 'collaboration'},
    ['Conference'] = {'conference', 'event', 'conferencia'},
    ['ConferenceFormat'] = {'conference-format', 'event-format', 'formato-conferencia'},
    ['ConferenceURL'] = {'conference-url', 'conferenceurl', 'event-url', 'eventurl', 'urlconferencia', 'conferencia-url'},
    ['Contribution'] = {'contribuição', 'contribuicao', 'contribution'}, -- introduction, foreword, afterword, etc; required when |contributor= set
    ['Date'] = {'data', 'date', 'airdate', 'dataemissao', 'fecha', 'data2'},
    ['DeadURL'] = {'datali', 'li', 'ligação inativa', 'ligação inactiva', 'urlmorta', 'dead-url', 'deadurl'},
    ['DF'] = 'df',
    ['DisplayAuthors'] = {'numero-autores', 'display-authors', 'displayauthors'},
    ['DisplayEditors'] = {'numero-editores', 'displayeditors', 'display-editors'},
    ['Docket'] = {'expediente', 'docket'},
    ['DoiBroken'] = {'doi-incorrecto', 'doi-broken', 'doi-broken-date', 'doi-inactive-date', 'doi-inactivedate'},
    ['Edition'] = {'edicao', 'edition', 'edição', 'ed', 'Edição', 'edición'},
    ['Editors'] = {'editores', 'editors'},
    ['Embargo'] = 'embargo',
    ['Encyclopedia'] = {'enciclopedia', 'enciclopédia', 'encyclopedia', 'encyclopaedia'},        -- this one only used by citation
    ['Format'] = {'formato', 'format'},
    ['ID'] = {'id', 'ID'},
    ['IgnoreISBN'] = {'ignore-isbn-error', 'ignore-isbn', 'ignoreisbnerror'},
    ['Inset'] = {'requadro','inset'},
    ['Issue'] = {'numero', 'número', 'issue', 'number'},
    ['Interviewers'] = {'interviewer', 'interviewers', 'entrevistador', 'entrevistadores'},
    ['Language'] = {'lingua', 'língua', 'idioma', 'language', 'in', 'língua2', 'lingua2', 'lingua3', 'língua3', 'lang', 'codling', 'ling', 'idioma2', 'idioma3', 'língua4', 'idioma4', 'lingua4'},
    ['LastAuthorAmp'] = {'ultimoamp',  'lastauthoramp', 'last-author-amp'},
    ['LayDate'] = {'resumo-data', 'data-resumo', 'lay-date', 'laydate'},
    ['LayFormat'] = {'resumo-formato', 'formato-resumo', 'lay-format'},
    ['LaySource'] = {'resumo-fonte', 'fonte-resumo', 'lay-source', 'laysource'},
    ['LayURL'] = {'url-resumo', 'resumo-url', 'resumo','lay-url', 'lay-summary', 'layurl', 'laysummary'},
    ['MessageID'] = {'id-mensagem', 'mensagem-id', 'message-id'},
    ['Minutes'] = {'minuto', 'minutos', 'minutes'},
    ['Mode'] = {'modo', 'mode'},
    ['Month'] = {'mes', 'mês', 'month', 'acessomesdia'},    -- obsoleto
    ['NameListFormat'] = {'formato-lista-nomes', 'formato-autor', 'formato-editor', 'name-list-format'},
    ['Network'] = {'rede', 'network'},
    ['NoPP'] = {'nopp', 'no-pp'},
    ['NoTracking'] = {'template-doc-demo', 'template doc demo', 'nocat', 'no-tracking', 'notracking'},
    ['OrigYear'] = {'anooriginal', 'orig-year', 'origyear'},
    ['Others'] = {'outros', 'entrevistador', 'entrevistadores', 'notas', 'Notas', 'interviewer', 'interviewers', 'otros'},
    ['Page'] = {'pagina', 'página', 'page', 'Página'},
    ['Pages'] = {'paginas', 'pp', 'páginas', 'pages'},
    ['TotalPages'] = {'total-paginas', 'total-páginas'},
    ['Periodical'] = {'jornal', 'revista', 'dicionario', 'dicionário', 'publicacao', 'publicação', 'periodico', 'periódico', 'website', 'site', 'obra', 'encyclopedia', 'encyclopaedia', 'enciclopedia', 'enciclopédia', 'trabalho', 'work', 'journal', 'newspaper', 'magazine', 'periodical', 'dictionary', 'publicación', 'diccionario'},
    ['Place'] = {'local', 'location', 'lugar', 'place', 'localização'},
    ['PostScript'] = {'pontofinal', 'postscript'},
    ['Program'] = {'programa', 'program'},
    ['PublicationDate'] = {'data-publicação', 'data-publicacao', 'publication-date', 'publicationdate', 'fecha-publicación'},
    ['PublicationPlace'] = {'publication-place', 'publicationplace', 'local-publicação', 'local-publicacao', 'lugar-publicación', 'Local publicação'},
    ['PublisherName'] = {'publicado', 'produtora', 'editora', 'Editora', 'instituição', 'instituicao', 'universidade', 'publisher', 'grupo-noticias', 'distributor', 'institution', 'newsgroup', 'editorial', 'publicadopor', 'publicado por'},
    ['Quote'] = {'citacao', 'citação', 'cita', 'quote', 'quotation', 'citar'},
    ['Ref'] = 'ref',
    ['RegistrationRequired'] = {'registo', 'registro', 'registration'},
    ['Scale'] = {'escala', 'scale'},
    ['ScriptChapter'] = {'capitulo-translit', 'script-chapter'},
    ['ScriptTitle'] = {'título-translit', 'titulo-translit', 'script-title'},
    ['Section'] = {'secao', 'seccao', 'section', 'seção'},
    ['Season'] = {'temporada', 'season'},
    ['Sections'] = {'seções', 'secoes', 'sections'},
    ['Series'] = {'series', 'serie', 'série', 'séries', 'coleção', 'Coleção', 'colecao', 'versão', 'version'},
    ['SeriesSeparator'] = {'separador-series', 'series-separator'},
    ['SeriesLink'] = {'serieslink', 'series-link', 'sérielink'},
    ['SeriesNumber'] = {'seriesnumber', 'numero-serie', 'series-no', 'seriesno', 'series-number'},
    ['Station'] = {'estacao', 'estação', 'station'},
    ['SubscriptionRequired'] = {'subscription', 'subscrição', 'subscricao', 'suscripción'},
    ['Time'] = {'tempo', 'time', 'tiempo'},
    ['TimeCaption'] = {'time-caption', 'timecaption','lengenda'},
    ['Title'] = {'titulo', 'título', 'title', 'titlo', 'Título'},
    ['TitleLink'] = {'title-link', 'episode-link', 'titlelink', 'episodelink', 'episódiolink', 'titulolink', 'títulolink'},
    ['TitleNote'] = {'departamento', 'subtitulo', 'subtítulo', 'Subtítulo', 'department'},
    ['TitleType'] = {'type', 'medium', 'tipo', 'medio'},
    ['TransChapter'] = {'trad-capitulo', 'trans-chapter', 'trans_chapter', 'capítulo-trad'},
    ['TranscriptFormat'] = {'transcrição-formato', 'transcricao-formato', 'transcript-format'},
    ['Transcript'] = {'transcript', 'transcricao', 'transcrição'},
    ['TranscriptURL'] = {'transcript-url', 'transcripturl', 'urltranscricao', 'transcricaourl', 'transcriçãourl'},
    ['TransTitle'] = {'títulotrad', 'titulotrad', 'trans-title', 'trans_title', 'títulotrad', 'título-trad'},
    ['URL'] = {'url', 'URL'},
    ['UrlAccess'] = {'url-access', 'acesso-url', 'acessourl'},
    ['Vauthors'] = {'vautores', 'vauthors'},
    ['Veditors'] = {'veditores', 'veditors'},
    ['Via'] = 'via',
    ['Volume'] = {'volume', 'volumen'},
    ['Wayb'] = 'wayb',
    ['Year'] = {'ano', 'year', 'Ano', 'año'},

    ['AuthorList-First'] = {"nome#", "primeiro#", "prenome#", "first#", "given#", "author-first#", "author#-first", "nombre#"},
    ['AuthorList-Last'] = {"autor#", "cognome#", "ultimo#", "último#", "sobrenome#", "author#", "last#", "surname#", "author-last#", "author#-last", "subject#", "Autor#", "apelido#", "apellido#", "apellidos#","sujeito#", "entrevistado#"},
    ['AuthorList-Link'] = {"autorlink#", "entrevistadolink#", "authorlink#", "author#-link", "author-link#", "subjectlink#", "author#link", "subject-link#", "subject#-link", "sujeitolink#"},
    ['AuthorList-Mask'] = {"autor-mascara#", "author-mask#", "authormask#", "author#mask", "author#-mask"},

    ['ContributorList-First'] = {'contribuidor#-primeiro', 'contribuidor-primeiro#','contributor-first#','contributor#-first'},
    ['ContributorList-Last'] = {'contribuidor','contributor-ultimo#', 'contribuidor#-ultimo', 'contributor-last#', 'contributor#-last'},
    ['ContributorList-Link'] = {'contribuidor-link#','contributor-link#', 'contributor#-link'},
    ['ContributorList-Mask'] = {'contribuidor-mascara#','contributor-mask#', 'contributor#-mask'},

    ['EditorList-First'] = {"editor-nome#", "editor#-first", "editor-first#", "editor-given#", "editor#-given"},
    ['EditorList-Last'] = {"editor-sobrenome#", "editor#", "editor#-last","editor-last#", "editor-surname#", "editor#-surname"},
    ['EditorList-Link'] = {"editor-link#", "editor#-link", "editorlink#", "editor#link"},
    ['EditorList-Mask'] = {"editor-mascara#", "editor-mask#", "editor#-mask", "editormask#", "editor#mask"},

    ['TranslatorList-First'] = {'tradutor-primeiro#', 'tradutor#-primeiro', 'translator-first#','translator#-first'},
    ['TranslatorList-Last'] = {'tradutor#', 'tradutor-ultimo#', 'tradutor#-ultimo', 'translator#', 'translator-last#', 'translator#-last'},
    ['TranslatorList-Link'] = {'tradutor-link#', 'tradutor#-link', 'translator-link#', 'translator#-link'},
    ['TranslatorList-Mask'] = {'tradutor-mascara#', 'tradutor#-mascara', 'translator-mask#', 'translator#-mask'},
}

local whitelist = mw.loadData ('Module:Citation/CS1/Whitelist');

local out_t = {};
local enum_out_t = {};

local function map_non_en_params ()
	for meta_param, params_t in pairs (aliases) do
		if 'string' == type (params_t) then
			params_t = params_t:lower();										-- force to lower case
			if not whitelist.basic_arguments[params_t] then
				table.insert (out_t, '[\'' .. params_t .. '\'] = \'' .. meta_param .. '\',');
			end
		else			
			for _, param in ipairs (params_t) do
				param = param:lower();											-- force to lower case
				if param:find ('#') then
					if not whitelist.numbered_arguments[param] then
						table.insert (enum_out_t, '[\'' .. param .. '\'] = \'' .. meta_param .. '\',');
					end
					
				elseif not whitelist.basic_arguments[param] then
					table.insert (out_t, '[\'' .. param .. '\'] = \'' .. meta_param .. '\',');
				end
			end
		end
	end
	table.sort (out_t);
	table.sort (enum_out_t);

	table.insert (out_t, 1, '\t' .. lang_code .. ' = {');
	table.insert (out_t, '-- enumerated parameters');
	table.insert (out_t, table.concat (enum_out_t, '\n\t\t'))
	table.insert (out_t, '},');
	return table.concat (out_t, '\n\t\t');
end


return {
	map_non_en_params = map_non_en_params,
	}