Module:Sandbox/trappist the monk/map non en params

--[[

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 table from the other-language wiki's Module:Citation/CS1/Configuration and paste it in this module. set the value for  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, }