Changes
sync from sandbox;
['archived-live'] = '$1 from the original on $2',
['archived-missing'] = 'Archived from the original$1 on $2',
['archived-unfit'] = 'Archived from the original on ',
['archived'] = 'Archived',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(in $1)',
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][Aa][%.\"']*$", -- variations on the 'et alia' theme
"[;,]? *%f[%a]and [Oo]thers", -- and alternate to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
'[,%.%s]%f[e]eds?%.?$', -- ed or eds: without '('or ')'; case sensitive (ED could be initials Ed could be name)
'%f[%(%[][%(%[]%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?%s*[%)%]]?$', -- (editor) or (editors): leading '(', case insensitive, optional '.' and/or ')'
'[,%.%s]%f[Ee][Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors: without '('or ')'; case insensitive
-- these patterns match annotations at beginning of name
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%A', -- (editor or (editors: also sq brackets, case insensitive, optional brackets, 's'
'^[%(%[]?%s*[Ee][Dd][Ii][Tt][Ee][Dd]%A', -- (edited: also sq brackets, case insensitive, optional brackets
-- these patterns match annotations that are the 'name'
'^[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors; case insensitive
}
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- (Used by InternetArchiveBot)
['Agency'] = 'agency',
['AirDate'] = {'air-date', 'airdate'},
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- (Used by InternetArchiveBot)
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- (Used by InternetArchiveBot) ['ASINTLD'] = {'ASIN-TLD', 'asin-tld'}, ['At'] = 'at', -- (Used by InternetArchiveBot)
['Authors'] = {'authors', 'people', 'credits'},
['BookTitle'] = {'book-title', 'booktitle'},
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'chapterurl', 'contribution-url', 'contributionurl', 'entry-url', 'article-url', 'section-url', 'sectionurl'},-- (Used by InternetArchiveBot) ['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'},-- (Used by InternetArchiveBot)
['Class'] = 'class', -- cite arxiv and arxiv identifiers
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = {'conference-format', 'event-format'},
['ConferenceURL'] = {'conference-url', 'conferenceurl', 'event-url', 'eventurl'},-- (Used by InternetArchiveBot)
['Contribution'] = 'contribution', -- introduction, foreword, afterword, etc; required when |contributor= set
['Date'] = 'date',
['LayFormat'] = 'lay-format',
['LaySource'] = {'lay-source', 'laysource'},
['LayURL'] = {'lay-url', 'lay-summary', 'layurl', 'laysummary'}, -- (Used by InternetArchiveBot)
['MailingList'] = {'mailinglist', 'mailing-list'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'mapurl', 'map-url'}, -- cite map only-- (Used by InternetArchiveBot) ['MapUrlAccess'] = 'map-url-access', -- cite map only-- (Used by InternetArchiveBot)
['MessageID'] = 'message-id',
['Minutes'] = 'minutes',
['OrigYear'] = {'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'p', 'page'}, -- (Used by InternetArchiveBot) ['Pages'] = {'pp', 'pages'}, -- (Used by InternetArchiveBot)
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work',
'encyclopedia', 'encyclopaedia', 'dictionary', 'mailinglist'}, -- these masquerade as periodicals but aren't TODO: find a better way to handle these?
['Quote'] = {'quote', 'quotation'},
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'},
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'},
['ScriptTitle'] = 'script-title', -- (Used by InternetArchiveBot)
['Section'] = 'section',
['Season'] = 'season',
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = {'time-caption', 'timecaption'},
['Title'] = 'title', -- (Used by InternetArchiveBot) ['TitleLink'] = {'title-link', 'episode-link', 'titlelink', 'episodelink'},-- (Used by InternetArchiveBot)
['TitleNote'] = 'department',
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format', ['TranscriptURL'] = {'transcript-url', 'transcripturl'}, -- (Used by InternetArchiveBot)
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'},
['TransTitle'] = 'trans-title', -- (Used by InternetArchiveBot) ['URL'] = {'url', 'URL'}, -- (Used by InternetArchiveBot) ['UrlAccess'] = {'url-access'}, -- (Used by InternetArchiveBot) ['UrlStatus'] = {'url-status', 'dead-url', 'deadurl'}, -- TODO: remove 'dead-url', 'deadurl' (Used by InternetArchiveBot)
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
local defaults = {
['UrlStatus'] = 'dead', -- (Used by InternetArchiveBot)
}
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[--------------------------< K E Y W O R D S >--------------------------------------------------------------
]]
local keywords = {
['yes_true_yaffirmative'] = {'yes', 'true', 'y'}, -- ignore-isbn-error, last-author-amp, no-tracking, nopp -- (Used by InternetArchiveBot) ['afterword'] = {'afterword'}, registration -- contribution ['bot: unknown'] = {'bot: unknown'}, -- url-status -- (Used by InternetArchiveBot) ['cs1'] = {'cs1'}, -- mode ['cs2'] = {'cs2'}, -- mode ['dead'] = {'dead'}, -- url-status -- (Used by InternetArchiveBot) ['dmy'] = {'dmy'}, -- df ['dmy-all'] = {'dmy-all'}, -- df ['foreword'] = {'foreword'}, -- contribution ['free'] = {'free'}, -- url-access -- (Used by InternetArchiveBot) ['introduction'] = {'introduction'}, subscription -- contribution ['deadurllimited'] = {'yeslimited'}, -- url-access -- (Used by InternetArchiveBot) ['live'true] = {'live'}, -- url-status -- (Used by InternetArchiveBot) ['mdy'] = {'ymdy'}, -- df ['nomdy-all'] = {'mdy-all'}, -- df ['unfitpreface'] = {'preface'}, -- contribution ['usurpedregistration'] = {'registration'}, -- url-access -- (Used by InternetArchiveBot) ['subscription'bot: unknown] = {'subscription'}, -- url-access -- (Used by InternetArchiveBot) ['modeunfit'] = {'cs1unfit'}, -- url-status -- (Used by InternetArchiveBot) ['cs2usurped'] = {'usurped'}, -- url-status -- (Used by InternetArchiveBot) ['vanc'] = {'vanc'}, -- name-list-format ['ymd'] = {'vancymd'}, -- df ['contributionymd-all'] = {'ymd-all'}, -- df-- ['yMd'] = {'afterwordyMd'}, -- df; not supported at en.wiki-- ['yMd-all'] = {'yMd-all'foreword}, -- df; not supported at en.wiki } --[[--------------------------< X L A T E _ K E Y W O R D S >-------------------------------------------------- this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}: ['affirmative'] = {'yes', 'introductiontrue', 'prefacey'}, -- generic contribution titles in keywords{}becomes ['yes'] = 'affirmative', -- in keywords_xlate{} ['true'] = 'affirmative', ['y'] = 'affirmative', the purpose of this function is to act as a translator between a non-English keyword and its English equivalentthat may be used in other modules of this suite ]] local function xlate_keywords () local out_table = {}; -- output goes here for k, keywords_t in pairs (keywords) do -- spin through the keywords table for _, keyword in ipairs (keywords_t) do -- for each keyword out_table[keyword] = k; -- create an entry in the output table where keyword is the key end end return out_table;end local keywords_xlate = xlate_keywords (); -- the list of translated keywords --[[--------------------------< K E Y W O R D S _ L I S T S >-------------------------------------------------- this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this tableare the canonical en.wiki parameter names though some are rendered unquoted contrived because of use in multiple differently namedparameters: ['yes_true_y'], ['id-access']. The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. The lists in this table are used to validate the keyword assignment for the parameters named in this table'chapters keys. ]] local keywords_lists = { ['yes_true_y' position] = make_keywords_list ({keywords.affirmative}), ['date-formatcontribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}), ['df'] = make_keywords_list ({keywords.dmy', keywords['dmy-all'], 'keywords.mdy', keywords['mdy-all'], 'keywords.ymd', keywords['ymd-all']}),-- ['date-formatdf'] = make_keywords_list ({'keywords.dmy', keywords['dmy-all'], 'keywords.mdy', keywords['mdy-all'], 'keywords.ymd', keywords['ymd-all'], 'keywords.yMd', keywords['yMd-all']}), -- not supported at en.wiki ['url-accessmode'] = make_keywords_list ({'subscription'keywords.cs1, 'limited'keywords.cs2}), ['registrationname-list-format'] = make_keywords_list ({keywords.vanc}), - ['url- access level of a URL '] = make_keywords_list ({keywords.subscription required, keywords.limited access, keywords.registration required}); free to read by default, ['url-status'] = make_keywords_list ({'keywords.dead', 'keywords.live', 'keywords.unfit', 'keywords.usurped', keywords['bot: unknown']}), -- replacement for |dead-url= ['id-access'] = make_keywords_list ({'keywords.free'}), -- access level of an identifier (free to read); not free-to-read by default }
--[[--------------------------< L A N G U A G E S U P P O R T >---------------------------------------------- These tables and constants support various language-specific functionality. ]] local this_wiki_code = mw.getContentLanguage():getCode() -- get this wiki's language code local local_lang_cat_enable = false; -- set to true to categorize pages where |language=<local wiki's language> --[[--------------------------< S C R I P T _ L A N G _ C O D E S >--------------------------------------------
This table is used to hold ISO 639-1 two-character language codes that apply only to |script-title= and |script-chapter=
local script_lang_codes = {
'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'eldz', 'fael', 'gufa', -- ISO 639-1 codes only for |script-title= and |script-chapter= 'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'ota', 'ps', 'ru', 'sd', 'si',
'sr', 'ta', 'tg', 'th', 'ug', 'uk', 'ur', 'uz', 'yi', 'zh'
};
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri wWikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['crh'] = 'Crimean Tatar', -- synonymous with Crimean Turkish (return value from {{#language:crh|en}})
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
}
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['bhojpuriblackfoot'] = {'BhojpuriBlackfoot', 'bhobla'}, -- MediaWiki uses /IANA/ISO 639: Siksika; use en.wiki preferred name ['bhcolognian' as a subdomain ] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for Bhojpuri Wikipedia: bh.wikipedia.orgksh
['crimean tatar'] = {'Crimean Tatar', 'crh'}, -- MediaWiki uses 'crh' as a subdomain name for Crimean Tatar Wikipedia: crh.wikipedia.org
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use o instead of ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
-- ['siksika'] = {'Siksika', 'bla'}, -- MediaWiki/IANA/ISO 639 preferred name: Siksika
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-TW'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca'}, -- variant of Catalan; categorizes as Catalan
['extra_text_names'] = 'CS1 maint: extra text: $1', -- $1 is <name>s list; gets value from special_case_translation table
['ignore_isbn_err'] = 'CS1 maint: ignored ISBN errors',
['location'] = 'CS1 maint: location',
['mult_names'] = 'CS1 maint: multiple names: $1', -- $1 is <name>s list; gets value from special_case_translation table
['others'] = 'CS1 maint: others',
local prop_cats = {
['foreign_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign_lang_source_2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['local_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location test'] = 'CS1 location test',
['script'] = 'CS1 uses foreign language script', -- when language specified by |script-title=xx: doesn't have its own category
['script_with_name'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = truefalse
},
doibroken_missing_doi = {
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: ssrn', -- same as bad arxiv
hidden = false
},
separator = ' ',
},
['DOI'] = { -- (Used by InternetArchiveBot)
parameters = { 'doi', 'DOI' },
link = 'Digital object identifier',
custom_access = 'hdl-access',
},
['ISBN'] = { -- (Used by InternetArchiveBot)
parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'},
link = 'International Standard Book Number',
label = 'PMID',
mode = 'manual',
COinS = 'info:pmid',
encode = false,
global_df = global_df,
id_handlers = id_handlers,
stripmarkers=stripmarkers,
invisible_chars = invisible_chars,
indic_script = indic_script,
local_lang_cat_enable = local_lang_cat_enable,
maint_cats = maint_cats,
messages = messages,
lang_code_remap = lang_code_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces,