모듈:Citation/CS1/Configuration

local citation_config = {};
-- override ... styling to remove color, border, and padding.   css is specified here:
-- https://git.wikimedia.org/blob/mediawiki%2Fcore.git/69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199
local code_style="color:inherit; border:inherit; padding:inherit;";
----------------------------------------------------------
List of namespaces that should not be included in citation error categories.  Same as setting notracking = true by default
Note: Namespace names should use underscores instead of spaces.
local uncategorized_namespaces = { '토론', '사용자', '사용자토론', '위키백과토론', '파일토론', '틀토론',
	'도움말토론', '분류', '분류토론', '포털토론', '초안', '초안토론', '모듈토론', '미디어위키토론' };
local uncategorized_subpages = {'/Ssandbox', '/Ttestcases', '/연습장', '/시험장'};		-- list of Lua patterns found in page names of pages we should not categorize
------------------------------------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
local messages = {
	'agency' = '$1 $2',														-- $1 is sepc, $2 is agency
	'archived-dead' = '$2에 $1에서 보존된 문서',
	'archived-live' = '$2에 $1',
	'archived-not-dead' = '$2에 $1',                                          -- DEPRECATED
	'archived-missing' = '$2에 원본$1에서 보존된 문서',
	'archived' = '보존된 문서',
	'by' = 'By',																-- contributions to authored works: introduction, foreword, afterword
	'cartography' = '$1 제작',
	'editor' = '편집.',
	'editors' = '편집.', 
	'edition' = '($1판)', 
	'episode' = '제 $1회',
	'et al' = '외.', 
	'in' = ,																-- edited works
	'inactive' = '년 이후로 접속 불가',
	'inset' = '$1 inset',
	'interview' = '$1의 인터뷰',										
	'lay summary' = '요약문',
	'newsgroup' = '뉴스그룹: $1',
	'original' = '원본 문서',
	'origyear' = ' $1',
	'published' = '$1에 출판됨',
	'retrieved' = '$1에 확인함',
	'season' = '시즌 $1', 
	'section' = '§ $1',
	'sections' = '§§ $1',
	'series' = '$1 $2',
	'seriesnum' = '시리즈 $1',
	'translated' = '$1 번역',
	'type' = ' ($1)',															-- for titletype
	'written' = '$1에서 작성',
	'vol' = '$1 $2권',												-- $1 is sepc; bold journal style volume is in presentation{}
	'vol-no' = '$1 $2권 $3호',									-- sepc, volume, issue
	'issue' = '$1 $2호',												-- $1 is sepc
	'j-vol' = '$1 $2',														-- sepc, volume; bold journal volume is in presentation{}
	'j-issue' = ' ($1)',
	'nopp' = '$1 $2';															-- page(s) without prefix; $1 is sepc
	'p-prefix' = "$1 $2쪽",												-- $1 is sepc
	'pp-prefix' = "$1 $2쪽",											-- $1 is sepc
	'j-page(s)' = ': $1',														-- same for page and pages
	'n-page(s)' = '$1 $2면',														-- same for page and pages -- DEPRECATED
	'sheet' = '$1 Sheet $2',												-- $1 is sepc
	'sheets' = '$1 Sheets $2',											-- $1 is sepc
	'j-sheet' = ': Sheet $1',
	'j-sheets' = ': Sheets $1',
	
	'subscription' = '(구독 필요)' ..
		'분류:구독이 필요한 링크를 포함한 문서', 

	'registration'='(가입 필요)' ..
		'분류:가입이 필요한 링크를 포함한 문서',
	
	'language' = '($1)', 
	'via' = " – $1 경유",
	'event' = '에 발생',
	'minutes' = '분', 
	
	'parameter-separator' = ', ',
	'parameter-final-separator' = ', 및 ',
	'parameter-pair-separator' = ' 및 ',
	
	-- Determines the location of the help page
	'help page link' = '위키백과:인용 오류 도움말',
	'help page label' = '도움말',
	
	-- Internal errors (should only occur if configuration is bad)
	'undefined_error' = 'Called with an undefined error condition',
	'unknown_manual_ID' = 'Unrecognized manual ID mode',
	'unknown_ID_mode' = 'Unrecognized ID mode',
	'unknown_argument_map' = 'Argument map not defined for this variable',
	'bare_url_no_origin' = 'Bare url found but origin indicator is nil or empty',
}
--=---------------------------------------------------------------------------
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.
TODO: detect wikilinked et al.:  et al.
**
local et_al_patterns = {
	";,? *\"'*%f%aEeTt%.? *AaLl%.\"'*$",						-- variations on the 'et al' theme
	";,? *\"'*%f%aEeTt%.? *AaLlIiAa%.\"'*$",				-- variations on the 'et alia' theme
	";,? *%f%aand Oothers",												-- and alternate to et al.
	}
--------------------------------------------------------------
This table provides Lua patterns for the phrase "ed" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the
'extra_text_names' message. (It is not the only series of patterns for this message.)
local editor_markup_patterns = {												-- these patterns match annotations at end of name
	'%f%(%%(%%s*EeDdSs?%.?%s*%)%?$',								-- (ed) or (eds): leading '(', case insensitive 'ed', optional 's', '.' and/or ')'
	',%.%s%feeds?%.?$',														-- ed or eds: without '('or ')'; case sensitive (ED could be initials Ed could be name)
	'%f%(%%(%%s*EeDdIiTtOoRrSs?%.?%s*%)%?$',				-- (editor) or (editors): leading '(', case insensitive, optional '.' and/or ')'
	',%.%s%fEeEeDdIiTtOoRrSs?%.?$',							-- editor or editors: without '('or ')'; case insensitive
		
																				-- these patterns match annotations at beginning of name
	'^eds?%.,;',																-- ed. or eds.: lower case only, optional 's', requires '.'
	'^%(%%s*EeDdSs?%.?%s*%)%',										-- (ed) or (eds): also sqare brackets, case insensitive, optional 's', '.'
	'^%(%?%s*EeDdIiTtOoRrSs?%A',								-- (editor or (editors: also sq brackets, case insensitive, optional brackets, 's'
	'^%(%?%s*EeDdIiTtEeDd%A',									-- (edited: also sq brackets, case insensitive, optional brackets
	}
----------------------------------------------------------------------------------
Fixed presentation markup.  Originally part of citation_config.messages it has been moved into its own, more semantically
correct place.
local presentation = 
	{
	-- Error output
	-- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538
	-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
	'hidden-error' = '$1',
	'visible-error' = '$1',
	'hidden-maint' = '$1',
	'accessdate' = '$1$2',			-- to allow editors to hide accessdate using personal css
	'bdi' = '$2',												-- bidirectional isolation used with |script-title= and the like
	'cite' = '$2';									-- |ref= not set so no id="..." attribute
	'cite-id' = '$3';							-- for use when |ref= is set
	'format' = ' ($1)',					-- for |format=, |chapter-format=, etc
	
																				-- various access levels, for |access=, |doi-access=, |arxiv=, ...
																				-- narrow no-break space   may work better than nowrap css. Or not? browser support?
	'ext-link-access-signal' = '$3',		-- external link with appropriate lock icon
		'free' = {class='cs1-lock-free', title='무료로 이용 가능'},			-- classes defined in Module:Citation/CS1/styles.css
		'registration' = {class='cs1-lock-registration', title='등록 필요 (무료)'},
		'limited' = {class='cs1-lock-limited', title='제한적으로 이용 가능 (일반적으로 구독 필요)'},
		'subscription' = {class='cs1-lock-subscription', title='구독 필요 (유료)'},
	'interwiki-icon' = '$3',
		'class-wikisource' = 'cs1-ws-icon',
	'italic-title' = "《$1》",									-- 《 》
	'single-bracket' = '〈$1〉',									-- 〈 〉 
	'italic-title2' = "$1",												--  
	'kern-left' = '$1$2',			-- spacing to use when title contains leading single or double quote mark
	'kern-right' = '$1$2',			-- spacing to use when title contains trailing single or double quote mark
																				-- these for simple wikilinked titles "text, text" and "text"
																				-- span wraps entire wikilink
	'kern-wl-left' = '$1',				-- when title contains leading single or double quote mark
	'kern-wl-right' = '$1',				-- when title contains trailing single or double quote mark
	'kern-wl-both' = '$1',	-- when title contains leading and trailing single or double quote marks
	'nowrap1' = '$1',								-- for nowrapping an item: yyyy-mm-dd
	'nowrap2' = '$1 $2',							-- for nowrapping portions of an item: dd mmmm yyyy (note white space)
	'ocins' = ' ',		-- Note: Using display: none on the COinS span breaks some clients
	'parameter' = '|$1=',
	'ps_cs1' = '.';															-- cs1 style postscript (terminal) character
	'ps_cs2' = ;															-- cs2 style postscript (terminal) character (empty string)
	'quoted-text' = '$1',												-- for wrapping |quote= content
	'quoted-title' = '“$1”',										-- “  ”
	'sep_cs1' = '.',															-- cs1 element separator
	'sep_cs2' = ',',															-- cs2 separator
	'sep_nl' = ';',															-- cs1|2 style name-list separator between authors is a semicolon
	'sep_name' = ', ',														-- cs1|2 style last/first separator is 
	'sep_nl_vanc' = ',',														-- Vancouver style name-list separator between authors is a comma
	'sep_name_vanc' = ' ',													-- Vancouver style last/first separator is a space
	'sep_list' = ', ',														-- used for |language= when list has 3+ items except for last sep which uses sep_list_end
	'sep_list_pair' = ', ',												-- used for |language= when list has 2 items
	'sep_list_end' = ', ',												-- used as last list sep for |language= when list has 3+ items
	'trans-italic-title' = "$1",								--  
	'trans-quoted-title' = "$1",									--  
	'vol-bold' = ' $1',													-- for journal cites; for other cites 'vol' in messages{}
	}
	
--------------------------------------------------------------------------------------------
Aliases table for commonly passed parameters
local aliases = {
	'AccessDate' = {'access-date', 'accessdate', '확인날짜', '확인일자'},
	'Agency' = {'agency', '통신사'},
	'AirDate' = {'air-date', 'airdate', '방송날짜', '방송일자', '방영날짜', '방영일자'},
	'ArchiveDate' = {'archive-date', 'archivedate', '보존날짜', '보존일자'},
	'ArchiveFormat' = 'archive-format',
	'ArchiveURL' = {'archive-url', 'archiveurl', '보존url'},
	'ASINTLD' = {'ASIN-TLD', 'asin-tld'},
	'At' = {'at', '쪽기타'},
	'Authors' = {'authors', 'people', 'host', 'credits', '인물', '제작진'},
	'BookTitle' = {'book-title', 'booktitle'},
	'Callsign' = {'call-sign', 'callsign', '콜사인', '호출부호'},				-- cite interview -- DEPRECATED
	'Cartography' = {'cartography', '지도제작'},
	'Chapter' = {'chapter', 'contribution', 'entry', 'article', 'section', '장', '항목'},
	'ChapterFormat' = {'chapter-format', 'contribution-format', 'section-format'};
	'ChapterURL' = {'chapter-url', 'chapterurl', 'contribution-url', 'contributionurl', 'section-url', 'sectionurl', '장url'},
	'ChapterUrlAccess' = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'},
	'City' = {'city', '도시'},												-- cite interview -- DEPRECATED
	'Class' = {'class', '분류'},												-- cite arxiv and arxiv identifiers
	'Coauthors' = {'coauthors', 'coauthor', '공저자'},						-- coauthor and coauthors are deprecated; remove after 1 January 2015? -- DEPRECATED
	'Collaboration' = 'collaboration',
	'Conference' = {'conference', 'event', '콘퍼런스', '컨퍼런스', '행사'},
	'ConferenceFormat' = {'conference-format', 'event-format'},
	'ConferenceURL' = {'conference-url', 'conferenceurl', 'event-url', 'eventurl', '콘퍼런스url', '컨퍼런스url'},
	'Contribution' = 'contribution', -- introduction, foreword, afterword, etc; required when |contributor= set
	'Date' = {'date', 'air-date', 'airdate', '날짜', '일자'},
	'DeadURL' = {'dead-url', 'deadurl', '깨진링크', '죽은링크', '깨진url', '죽은url'}, -- DEPRECATED
	'Degree' = {'degree', '학위'},
	'DF' = 'df',
	'DisplayAuthors' = {'display-authors', 'displayauthors', '저자표시'},
	'DisplayContributors' = 'display-contributors',
	'DisplayEditors' = {'display-editors', 'displayeditors', '편집자표시'},
	'DisplayInterviewers' = 'display-interviewers',
	'DisplayTranslators' = 'display-translators',
	'Docket' = 'docket',
	'DoiBroken' = {'doi-broken', 'doi-broken-date', 'doi-inactive-date', 'doi_brokendate', 'doi_inactivedate', 'doi_깨진날짜', 'doi깨진날짜'},
	'Edition' = {'edition', '판'},
	'Editors' = 'editors',
	'Embargo' = {'embargo', '엠바고'},
	'Encyclopedia' = {'encyclopedia', 'encyclopaedia', '백과사전'},			-- this one only used by citation
	'Episode' = {'episode', '에피소드'},										-- cite serial only TODO: make available to cite episode? 수정 필요?
	'Format' = {'format', '형식', '포맷'},
	'ID' = {'id', 'ID'},
	'IgnoreISBN' = {'ignore-isbn-error', 'ignoreisbnerror', 'isbn오류무시'},
	'Inset' = {'inset', '삽화'},
	'Issue' = {'issue', 'number', '호', '회', '화'},
	'Language' = {'language', 'in', '언어'},									-- 언어고리, 언어링크 제거 필요
	'LastAuthorAmp' = {'last-author-amp', 'lastauthoramp', '저자앰퍼샌드'},
	'LayDate' = {'lay-date', 'laydate', '요약문날짜'},
	'LayFormat' = 'lay-format',
	'LaySource' = {'lay-source', 'laysource', '요약문출처'},
	'LayURL' = {'lay-url', 'lay-summary', 'layurl', 'laysummary', '요약문', '요약문url'},
	'MailingList' = {'mailinglist', 'mailing-list', '메일링리스트'},			-- cite mailing list only
	'Map' = {'map', '지도'},													-- cite map only
	'MapFormat' = 'map-format',												-- cite map only
	'MapURL' = {'mapurl', 'map-url', '지도url'},								-- cite map only
	'MapUrlAccess' = 'map-url-access',										-- cite map only
	'MessageID' = {'message-id', '메시지id'},
	'Minutes' = {'minutes', '분'},
	'Mode' = {'mode', '모드'},
	'Month' = {'month', '월', '달', '작성월', '발행월'},						-- 임시 -- DEPRECATED
	'NameListFormat' = {'name-list-format', '이름목록형식'},
	'Network' = {'network', '네트워크'},
	'NoPP' = {'no-pp', 'nopp', '쪽숨김'},
	'NoTracking' = {'template-doc-demo', 'template doc demo', 'no-cat', 'nocat', 
		'no-tracking', 'notracking', '분류없음'},
	'Number' = 'number', -- this case only for cite techreport
	'OrigYear' = {'orig-year', 'origyear', '원본연도', '초판연도'},
	'Others' = {'others', 'interviewer', 'interviewers', '기타', '인터뷰어'},
	'Page' = {'p', 'page', '쪽', '페이지', '면'},
	'Pages' = {'pp', 'pages'},
	'Periodical' = {'journal', 'newspaper', 'magazine', 'work',
		'website',  'periodical', 'encyclopedia', 'encyclopaedia', 'dictionary',
		'저널', '뉴스', '신문', '잡지', '작품', '웹사이트', '백과사전', '메일링리스트'},
	'Place' = {'place', 'location', '위치', '장소'},
	'Program' = {'program', '프로그램'},										-- cite interview -- DEPRECATED
	'PostScript' = {'postscript', '추신'},
	'PublicationDate' = {'publicationdate', 'publication-date', '출판날짜', '출판일자'},
	'PublicationPlace' = {'publication-place', 'publicationplace', '출판위치', '출판장소'},
	'PublisherName' = {'publisher', 'distributor', 'institution', 'newsgroup', '출판사', '뉴스그룹'},
	'Quote' = {'quote', 'quotation', '인용', '인용문'},
	'Ref' = 'ref',
	'RegistrationRequired' = {'registration', '등록'},
	'Scale' = {'scale', '축척'},
	'ScriptChapter' = 'script-chapter',
	'ScriptPeriodical' = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'},
	'ScriptTitle' = 'script-title',											-- 수정 필요
	'Section' = 'section',													-- 번역 수정 필요(지도 틀 말고 그 외에서도 쓰이는 듯)
	'Season' = {'season', '시즌'},
	'Sections' = 'sections',													-- cite map only -- 번역 수정 필요
	'Series' = {'series', 'version', '시리즈', '총서'},
	'SeriesSeparator' = 'series-separator',
	'SeriesLink' = {'series-link', 'serieslink', '시리즈링크', '시리즈고리'},
	'SeriesNumber' = {'series-number', 'series-no', 'seriesnumber', 'seriesno', '시리즈번호'},
	'Sheet' = 'sheet',														-- cite map only
	'Sheets' = 'sheets',														-- cite map only
	'Station' = {'station', '방송국'},
	'SubscriptionRequired' = {'subscription', '구독'},
	'Time' = 'time',
	'Time2' = '시간',															-- 임의로 추가함, '분'을 없앰
	'TimeCaption' = {'time-caption', 'timecaption'},
	'Title' = {'title', '제목'},
	'TitleLink' = {'title-link', 'episode-link', 'titlelink', 'episodelink', '제목링크', '제목고리'},
	'NoBracket' = {'이탤릭체'},												-- 임의로 추가함
	'TitleNote' = 'department',												-- 번역 필요
	'TitleType' = {'type', 'medium', '종류', '매체'},
	'TransChapter' = {'trans-chapter', 'trans_chapter', '번역장'},
	'TransMap' = 'trans-map',													-- cite map only
	'TransPeriodical' = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'},
	'Transcript' = {'transcript', '대본'},
	'TranscriptFormat' = 'transcript-format',
	'TranscriptURL' = {'transcript-url', 'transcripturl', '대본url'},
	'TransTitle' = {'trans-title', 'trans_title', '번역제목'},
	'URL' = {'url', 'URL'},
	'UrlAccess' = {'url-access'},
	'UrlStatus' = {'url-status', 'dead-url', 'deadurl', 'url상태'},						-- TODO: remove 'dead-url', 'deadurl'
	'Vauthors' = 'vauthors',
	'Veditors' = 'veditors',
	'Via' = {'via', '경유'},
	'Volume' = {'volume', '권'},
	'Year' = {'year', '연도', '연', '년', '년도'},
	'AuthorList-First' = {"first#", "given#", "author-first#", "author#-first", 
		"이름#"},
	'AuthorList-Last' = {"last#", "author#", "surname#", "author-last#", "author#-last", "subject#", 
		"성#", "저자#", "대상#"},
	'AuthorList-Link' = {"authorlink#", "author-link#", "author#-link", "subjectlink#", "author#link", "subject-link#", "subject#-link", "subject#link", 
		"저자고리#", "저자#고리", "저자링크#", "저자#링크", "대상고리#", "대상링크#", "대상#고리", "대상#링크", 
		"저자-고리#", "저자#-고리", "저자-링크#", "저자#-링크", "대상-고리#", "대상-링크#", "대상#-고리", "대상#-링크"},
	'AuthorList-Mask' = {"author-mask#", "authormask#", "author#mask", "author#-mask", "저자#-숨김", "저자-숨김#", "저자#숨김", "저자숨김#"},
	
	'ContributorList-First' = {'contributor-first#','contributor#-first'},
	'ContributorList-Last' = {'contributor#', 'contributor-last#', 'contributor#-last'},
	'ContributorList-Link' = {'contributor-link#', 'contributor#-link'},
	'ContributorList-Mask' = {'contributor-mask#', 'contributor#-mask'},
	
	'EditorList-First' = {"editor-first#", "editor#-first", "editor-given#", "editor#-given", 
		"편집자-이름#", "편집자#-이름", "편집자이름#", "편집자#이름"},
	'EditorList-Last' = {"editor#", "editor-last#", "editor#-last", "editor-surname#", "editor#-surname", 
		"편집자#", "편집자-성#", "편집자#-성", "편집자성#", "편집자#성"},
	'EditorList-Link' = {"editor-link#", "editor#-link", "editorlink#", "editor#link", 
		"편집자-고리#", "편집자#-고리", "편집자고리#", "편집자#고리", "편집자#-링크", "편집자-링크#", "편집자링크#", "편집자#링크"},
	'EditorList-Mask' = {"editor-mask#", "editor#-mask", "editormask#", "editor#mask", "편집자#-숨김", "편집자-숨김#", "편집자#숨김", "편집자숨김#"},
	
	'InterviewerList-First' = {'interviewer-first#', 'interviewer#-first'},
	'InterviewerList-Last' = {'interviewer#', 'interviewer-last#', 'interviewer#-last'},
	'InterviewerList-Link' = {'interviewer-link#', 'interviewer#-link'},
	'InterviewerList-Mask' = {'interviewer-mask#', 'interviewer#-mask'},
	'TranslatorList-First' = {'translator-first#','translator#-first', 
		'번역자-이름#', '번역자#-이름', '번역자이름#', '번역자#이름'},
	'TranslatorList-Last' = {'translator#', 'translator-last#', 'translator#-last', 
		'번역자#', '번역자-성#', '번역자#-성', '번역자성#', '번역자#성'},
	'TranslatorList-Link' = {'translator-link#', 'translator#-link', 
		'번역자-고리#', '번역자#-고리', '번역자고리#', '번역자#고리', '번역자#-링크', '번역자-링크#', '번역자링크#', '번역자#링크'},
	'TranslatorList-Mask' = {'translator-mask#', 'translator#-mask', "번역자#-숨김", "번역자-숨김#", "번역자#숨김", "번역자숨김#"},
}
--------------------------------------------------------------------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
local punct_skip = {};
local meta_params = {															-- table of aliases keys (meta parameters); each key has a table of parameter names for a value
	'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap',	'TransTitle',	-- title-holding parameters
	'PostScript', 'Quote',																				-- miscellaneous
	'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL',			-- url-holding parameters
	}
	for _, meta_param in ipairs (meta_params) do								-- for each meta parameter key
		local params = aliasesmeta_param;										-- get the parameter or the table of parameters associated with the meta parameter name
		if 'string' == type (params) then
			punct_skipparams = 1;												-- just a single parameter
		else
			for _, param in ipairs (params) do									-- get the parameter name
				punct_skipparam = 1;											-- add the parameter name to the skip table
			end
		end
	end
--------------------------------------------------------
This table is primarily here to support internationalization.  Translations in this table are used, for example,
when an error message, category name, etc is extracted from the English alias key.  There may be other cases where
this translation table may be useful.
local special_case_translation = {
	'AuthorList' = 'authors list',											-- these for multiple names maint categories
	'ContributorList' = 'contributors list',
	'EditorList' = 'editors list',
	'InterviewerList' = 'interviewers list',
	'TranslatorList' = 'translators list',
	
	'authors' = 'authors',													-- used in get_display_names()
	'contributors' = 'contributors',
	'editors' = 'editors',
	'interviewers' = 'interviewers',
	'translators' = 'translators',
	'archived_copy' = '^archived?%s+copy$',									-- lua pattern to match pseudo title used by Internet Archive bot and others as place holder for unknown |title= value
																				-- used with CS1 maint: Archived copy as title
	}
------------------------------------------------------------------------------------------
Default parameter values
TODO: keep this?  Only one default?
local defaults = {
	'DeadURL' = 'yes',    -- DEPRECATED
	'UrlStatus' = 'dead',
}
--2, Christmas is defined here as 99, which
should be out of the ISO DIS 8601:2016 range of uses for a while.
local date_names = {
	'en' = {			-- English
		'long'	= {'January'=1, 'February'=2, 'March'=3, 'April'=4, 'May'=5, 'June'=6, 'July'=7, 'August'=8, 'September'=9, 'October'=10, 'November'=11, 'December'=12},
		'short'	= {'Jan'=1, 'Feb'=2, 'Mar'=3, 'Apr'=4, 'May'=5, 'Jun'=6, 'Jul'=7, 'Aug'=8, 'Sep'=9, 'Oct'=10, 'Nov'=11, 'Dec'=12},
		'season'	= {'Winter'=24, 'Spring'=21, 'Summer'=22, 'Fall'=23, 'Autumn'=23},
		'named'	= {'Christmas'=99},
		},
	'local' = {		-- replace these English date names with the local language equivalents
		'long'	= {'1월'=1, '2월'=2, '3월'=3, '4월'=4, '5월'=5, '6월'=6, '7월'=7, '8월'=8, '9월'=9, '10월'=10, '11월'=11, '12월'=12},
		'short'	= {'1월'=1, '2월'=2, '3월'=3, '4월'=4, '5월'=5, '6월'=6, '7월'=7, '8월'=8, '9월'=9, '10월'=10, '11월'=11, '12월'=12},
		'season'	= {'겨울'=24, '봄'=21, '여름'=22, '가을'=23},
		'named'	= {'크리스마스'=99},
		},
	'inv_local_l' = {},														-- used in date reformatting; copy of date_names'local'.long where k/v are inverted: 1= etc
	'inv_local_s' = {},														-- used in date reformatting; copy of date_names'local'.short where k/v are inverted: 1= etc
	'local_digits' = {'0' = '0', '1' = '1', '2' = '2', '3' = '3', '4' = '4', '5' = '5', '6' = '6', '7' = '7', '8' = '8', '9' = '9'},	-- used to convert local language digits to Western 0-9
	'xlate_digits' = {},
	}
for name, i in pairs (date_names'local'.long) do								-- this table is 'name' = i
	date_names'inv_local_l'i = name;										-- invert to get i = 'name' for conversions from ymd
end
for name, i in pairs (date_names'local'.short) do								-- this table is 'name' = i
	date_names'inv_local_s'i = name;										-- invert to get i = 'name' for conversions from ymd
end
for ld, ed in pairs (date_names.local_digits) do								-- make a digit translation table for simple date translation from en to local language using local_digits table
	date_names.xlate_digits ed = ld;											-- en digit becomes index with local digit as the value
end
local df_template_patterns = {													-- table of redirects to  and 
	'