모듈:Citation/CS1/Configuration/sandbox

----------------------------------------------------------
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', '/^/*Llog', '/Aarchive', '/연습장', '/시험장', '/보존'};		-- 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 from $1 on $2'
	'archived-live' = '$2에 원본에서 보존된 $1',								-- 로컬: '$1 from the original on $2'
	'archived-missing' = '$2에 원본$1에서 보존된 문서',						-- 로컬: 'Archived from the original$1 on $2'
	'archived-unfit' = ' 에 원본에서 보존된 문서',							-- 로컬: 'Archived from the original on '
	'archived' = '보존된 문서',
	'by' = 'By',																-- contributions to authored works: introduction, foreword, afterword
	'cartography' = '$1 제작',												-- 로컬: 'Cartography by $1'
	'editor' = '편집.',
	'editors' = '편집.',
	'edition' = '($1판)',
	'episode' = '제 $1회',
	'et al' = '외.',
	'in' = ,																-- edited works
	'inactive' = '년 이후로 접속 불가',
	'inset' = '$1 삽도',
	'interview' = '$1의 인터뷰',										
	'lay summary' = '요약문',
	'mismatch' = '|$1= / |$2= 불일치',	-- $1 is year param name; $2 is date param name
	'newsgroup' = '뉴스그룹: $1',
	'notitle' = '제목 없음',													-- for |title=(()) and (in the future) |title=none
	'original' = '원본 문서',
	'origdate' = ' $1',
	'published' = ' ($1에 출판됨)',
	'retrieved' = '$1에 확인함',
	'season' = '시즌 $1',
	'section' = '§ $1',
	'sections' = '§§ $1',
	'series' = '$1 $2',														-- $1 is sepc, $2 is series
	'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 (alternatively insert $1 after $2, but then we'd also have to change capitalization)
	'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
	'sheet' = '$1 Sheet $2',												-- $1 is sepc
	'sheets' = '$1 Sheets $2',											-- $1 is sepc
	'j-sheet' = ': Sheet $1',
	'j-sheets' = ': Sheets $1',
	
	'language' = '($1)',
	'via' = " – $1 경유",
	'event' = '에 발생',
	'minutes' = '분',
	
	-- Determines the location of the help page
	'help page link' = '위키백과:인용 오류 도움말',
	'help page label' = '도움말',
	
	-- categories
	'cat wikilink' = '분류:$1',										-- $1 is the category name
	':cat wikilink' = '링크',								-- category name as maintenance message wikilink; $1 is the category name
	-- Internal errors (should only occur if configuration is bad)
	'undefined_error' = 'Called with an undefined error condition',
	'unknown_ID_key' = 'Unrecognized ID key: ',								-- an ID key in id_handlers not found in ~/Identifiers func_map{}
	'unknown_ID_access' = 'Unrecognized ID access keyword: ',					-- an ID access keyword in id_handlers not found in keywords_lists'id-access'{}
	'unknown_argument_map' = 'Argument map not defined for this variable',
	'bare_url_no_origin' = 'Bare URL found but origin indicator is nil or empty',
	
	'warning_msg_e' = '한 개 이상의  틀에 오류가 있습니다. 이 메시지를 숨길 수 있습니다 (도움말).';	-- $1 is template link
	'warning_msg_m' = '한 개 이상의  틀에 관리 항목이 있습니다. 이 메시지를 숨길 수 있습니다 (도움말).';	-- $1 is template link
	}
--CitationClass= values at en.wiki match their canonical template names so are not listed here.
	local citation_class_map_t = {												-- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
		'audio-visual' = '영상',											-- TODO: move to ~/Configuration
		'AV-media-notes' = '영상 설명',
		'encyclopaedia' = '백과사전',
		'mailinglist' = '메일링',
		'pressrelease' = '보도자료'
		}
--=---------------------------------------------------------------------------
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.
**
local et_al_patterns = {
	";,? *\"'*%f%aEeTt%.? *AaLl%.\"'*$",						-- variations on the 'et al' theme
	";,? *\"'*%f%aEeTt%.? *AaLlIiAaIiEe?%.\"'*$",				-- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
	";,? *%f%aand Oothers",												-- an alternative to et al.
	"%% *EeTt%.? *AaLl%.? *%%",										-- a wikilinked form
	"%(%( *EeTt%.? *AaLl%.? *%)%)",									-- a double-bracketed form (to counter partial removal of ((...)) syntax)
	"%(% *EeTt%.? *AaLl%.? *%)%",									-- a bracketed form		-- 로컬: '외'를 추가해야 하는지?
	}
----------------------------------------------------
Fixed presentation markup.  Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.
local presentation = 
	{
	-- .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';									-- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
	'cite-id' = '$3';							-- for use when when |ref= is set or when citation has a namelist
	'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",
	'kern-left' = '$1',					-- spacing to use when title contains leading single or double quote mark
	'kern-right' = '$1',					-- spacing to use when title contains trailing single or double quote mark
	'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' = ,
	
	'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 names is a semicolon
	'sep_nl_and' = ' and ',													-- used as last nl sep when |name-list-style=and and list has 2 items
	'sep_nl_end' = '; and ',													-- used as last nl sep when |name-list-style=and and list has 3+ names
	'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' = ' and ',												-- used for |language= when list has 2 items
	'sep_list_end' = ', and ',												-- used as last list sep for |language= when list has 3+ items
	
	'trans-italic-title' = "$1",
	'trans-quoted-title' = "$1",									-- for |trans-title= and |trans-quote=
	'vol-bold' = '$1 $2',												-- sepc, volume; for bold journal cites; for other cites 'vol' in messages{}
	}
	
-------------------------------------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignments in this table must have been
defined in the Whitelist before they will be recognized as valid parameter names
local aliases = {
	'AccessDate' = {'access-date', 'accessdate', '확인날짜'},								-- Used by InternetArchiveBot
	'Agency' = {'agency', '통신사'},
	'ArchiveDate' = {'archive-date', 'archivedate', '보존날짜'},							-- Used by InternetArchiveBot
	'ArchiveFormat' = 'archive-format',
	'ArchiveURL' = {'archive-url', 'archiveurl', '보존url'},								-- Used by InternetArchiveBot
	'ASINTLD' = 'asin-tld',
	'At' = {'at', '쪽기타'},																-- Used by InternetArchiveBot
	'Authors' = {'authors', 'people', 'credits', '인물', '제작진'},
	'BookTitle' = {'book-title', 'booktitle'},
	'Cartography' = {'cartography', '지도제작'},
	'Chapter' = {'chapter', 'contribution', 'entry', 'article', 'section', '장', '항목'},
	'ChapterFormat' = {'chapter-format', 'contribution-format', 'entry-format',
		'article-format', 'section-format'};
	'ChapterURL' = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl', '장url'},	-- Used by InternetArchiveBot
	'ChapterUrlAccess' = {'chapter-url-access', 'contribution-url-access',
		'entry-url-access', 'article-url-access', 'section-url-access', '장url확인'},		-- Used by InternetArchiveBot
	'Class' = {'class', '분류'},														-- cite arxiv and arxiv identifier
	'Collaboration' = 'collaboration',
	'Conference' = {'conference', 'event', '콘퍼런스', '컨퍼런스'},
	'ConferenceFormat' = 'conference-format',
	'ConferenceURL' = {'conference-url', '콘퍼런스url', '컨퍼런스url'},										-- Used by InternetArchiveBot
	'Date' = {'date', 'air-date', 'airdate', '날짜', '방송날짜', '방영날짜'},									-- air-date and airdate for cite episode and cite serial only
	'Degree' = {'degree', '학위'},
	'DF' = 'df',
	'DisplayAuthors' = {'display-authors', 'display-subjects', '저자표시'},
	'DisplayContributors' = 'display-contributors',
	'DisplayEditors' = {'display-editors', '편집자표시'},
	'DisplayInterviewers' = {'display-interviewers', '인터뷰어표시'},
	'DisplayTranslators' = {'display-translators', '번역자표시'},
	'Docket' = 'docket',
	'DoiBroken' = {'doi-broken-date', 'doi_깨진날짜'},						-- 로컬: 'doi_깨진날짜' 변경?
	'Edition' = {'edition', '판'},
	'Embargo' = {'pmc-embargo-date', 'pmc엠바고날짜'},
	'Encyclopedia' = {'encyclopedia', 'encyclopaedia', 'dictionary', '백과사전'},			-- cite encyclopedia only
	'Episode' = {'episode', '에피소드'},													-- cite serial only TODO: make available to cite episode?
	'Format' = {'format', '형식', '포맷'},
	'ID' = {'id', 'ID'},
	'Inset' = {'inset', '삽도'},
	'Issue' = {'issue', 'number', '호', '회', '화'},							-- 로컬: '회', '화' 제거?
	'Language' = {'language', 'lang', '언어'},
	'LayDate' = 'lay-date',
	'LayFormat' = 'lay-format',
	'LaySource' = 'lay-source',
	'LayURL' = 'lay-url',
	'MailingList' = {'mailing-list', 'mailinglist', '메일링리스트'},							-- cite mailing list only
	'Map' = {'map', '지도'},															-- cite map only
	'MapFormat' = 'map-format',												-- cite map only
	'MapURL' = {'map-url', 'mapurl', '지도url'},											-- cite map only -- Used by InternetArchiveBot
	'MapUrlAccess' = {'map-url-access', '지도url확인'},										-- cite map only -- Used by InternetArchiveBot
	'Minutes' = {'minutes', '분'},
	'Mode' = 'mode',
	'NameListStyle' = {'name-list-style', '이름목록형식'},
	'Network' = {'network', '네트워크'},
	'Newsgroup' = {'newsgroup', '뉴스그룹'},												-- cite newsgroup only
	'NoPP' = {'no-pp', 'nopp', '쪽숨김'},
	'NoTracking' = {'no-tracking', 'template-doc-demo', '분류없음'},			-- 로컬: 수정 필요? nocat은 removed 되었음
	'Number' = 'number',														-- this case only for cite techreport
	'OrigDate' = {'orig-date', 'orig-year', 'origyear', '원본연도', '초판연도'},	-- 로컬: '초판연도' 삭제?
	'Others' = {'others', '기타'},
	'Page' = {'page', 'p', '쪽', '페이지', '면'},													-- Used by InternetArchiveBot
	'Pages' = {'pages', 'pp'},												-- Used by InternetArchiveBot
	'Periodical' = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work', '저널', '뉴스', '신문', '잡지', '작품', '웹사이트'},
	'Place' = {'place', 'location', '장소', '위치'},
	'PostScript' = {'postscript', '추신'},
	'PublicationDate' = {'publication-date', 'publicationdate', '출판날짜'},
	'PublicationPlace' = {'publication-place', 'publicationplace', '출판장소', '출판위치'},
	'PublisherName' = {'publisher', 'institution', '출판사', '기관'},
	'Quote' = {'quote', 'quotation', '인용', '인용문'},
	'QuotePage' = {'quote-page', '인용쪽'},
	'QuotePages' = 'quote-pages',
	'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'},
	'ScriptQuote' = 'script-quote',
	'ScriptTitle' = 'script-title',											-- Used by InternetArchiveBot
	'Season' = {'season', '시즌'},
	'Sections' = 'sections',													-- cite map only
	'Series' = {'series', 'version', '시리즈', '총서'},
	'SeriesLink' = {'series-link', 'serieslink', '시리즈링크'},
	'SeriesNumber' = {'series-number', 'series-no', '시리즈번호'},
	'Sheet' = 'sheet',														-- cite map only
	'Sheets' = 'sheets',														-- cite map only
	'Station' = {'station', '방송국'},
	'Time' = {'time', '시간'},												-- 로컬: 이전에는 Time2를 '시간'으로 설정하여 분을 없앴음
	'TimeCaption' = {'time-caption', '시간설명'},
	'Title' = {'title', '제목'},														-- Used by InternetArchiveBot
	'TitleLink' = {'title-link', 'episode-link', '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', '대본url'},					-- Used by InternetArchiveBot
	'TransMap' = 'trans-map',													-- cite map only
	'TransPeriodical' = {'trans-journal', 'trans-magazine', 'trans-newspaper',
		'trans-periodical', 'trans-website', 'trans-work', '번역저널', '번역뉴스', '번역신문', '번역잡지', '번역작품', '번역웹사이트'},
	'TransQuote' = {'trans-quote', '번역인용'},
	'TransTitle' = {'trans-title', '번역제목'},												-- Used by InternetArchiveBot
	'URL' = {'url', 'URL'},													-- Used by InternetArchiveBot
	'UrlAccess' = {'url-access', 'url확인'},												-- Used by InternetArchiveBot
	'UrlStatus' = {'url-status', 'url상태'},												-- Used by InternetArchiveBot
	'Vauthors' = 'vauthors',
	'Veditors' = 'veditors',
	'Via' = {'via', '경유'},
	'Volume' = {'volume', '권'},
	'Year' = {'year', '연도', '연', '년', '년도'},
	'AuthorList-First' = {"first#", "author-first#", "author#-first", "given#",
		"author-given#", "author#-given",
		"이름#"
	},
	'AuthorList-Last' = {"last#", "author-last#", "author#-last", "surname#",
		"author-surname#", "author#-surname", "author#", "subject#", 'host#',
		"성#", "저자#", "대상#"
	},
	'AuthorList-Link' = {"author-link#", "author#-link", "subject-link#",
		"subject#-link", "authorlink#", "author#link",
		"저자링크#", "저자#링크", "대상링크#", "대상#링크", 
		"저자-링크#", "저자#-링크", "대상-링크#", "대상#-링크"
	},
	'AuthorList-Mask' = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask",
		"저자#-숨김", "저자-숨김#", "저자#숨김", "저자숨김#",
		"대상#-숨김", "대상-숨김#", "대상#숨김", "대상숨김#"
	},
	'ContributorList-First' = {'contributor-first#', 'contributor#-first',
		'contributor-given#', 'contributor#-given'},
	'ContributorList-Last' = {'contributor-last#', 'contributor#-last',
		'contributor-surname#', 'contributor#-surname', 'contributor#'},
	'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-last#", "editor#-last", "editor-surname#",
		"editor#-surname", "editor#",
		"편집자#", "편집자-성#", "편집자#-성", "편집자성#", "편집자#성"
	},
	'EditorList-Link' = {"editor-link#", "editor#-link",
		"편집자#-링크", "편집자-링크#", "편집자링크#", "편집자#링크"
	},
	'EditorList-Mask' = {"editor-mask#", "editor#-mask",
		"편집자#-숨김", "편집자-숨김#", "편집자#숨김", "편집자숨김#"
	},
	
	'InterviewerList-First' = {'interviewer-first#', 'interviewer#-first',
		'interviewer-given#', 'interviewer#-given',
		"인터뷰어-이름#", "인터뷰어#-이름", "인터뷰어이름#", "인터뷰어#이름"
	},
	'InterviewerList-Last' = {'interviewer-last#', 'interviewer#-last',
		'interviewer-surname#', 'interviewer#-surname', 'interviewer#',
		"인터뷰어#", "인터뷰어-성#", "인터뷰어#-성", "인터뷰어성#", "인터뷰어#성"
	},
	'InterviewerList-Link' = {'interviewer-link#', 'interviewer#-link', 
		"인터뷰어#-링크", "인터뷰어-링크#", "인터뷰어링크#", "인터뷰어#링크"},
	'InterviewerList-Mask' = {'interviewer-mask#', 'interviewer#-mask',
		"인터뷰어#-숨김", "인터뷰어-숨김#", "인터뷰어#숨김", "인터뷰어숨김#"
	},
	'TranslatorList-First' = {'translator-first#', 'translator#-first',
		'translator-given#', 'translator#-given',
		'번역자-이름#', '번역자#-이름', '번역자이름#', '번역자#이름'
	},
	'TranslatorList-Last' = {'translator-last#', 'translator#-last',
		'translator-surname#', 'translator#-surname', 'translator#',
		'번역자#', '번역자-성#', '번역자#-성', '번역자성#', '번역자#성'
	},
	'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_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
	'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask',	-- name-list mask may have name separators
	'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref',											-- miscellaneous
	'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL',			-- URL-holding parameters
	}
local url_meta_params = {														-- table of aliases keys (meta parameters); each key has a table of parameter names for a value
	'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'LayURL', 'MapURL', 'TranscriptURL', 'URL',		-- parameters allowed to hold urls
	'Page', 'Pages', 'At', 'QuotePage', 'QuotePages',							-- insource locators allowed to hold urls
	}
local function build_skip_table (skip_t, meta_params)
	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
			skip_tparams = 1;													-- just a single parameter
		else
			for _, param in ipairs (params) do									-- get the parameter name
				skip_tparam = 1;												-- add the parameter name to the skip table
				local count;
				param, count = param:gsub ('#', );							-- remove enumerator marker from enumerated parameters
				if 0 ~= count then												-- if removed
					skip_tparam = 1;											-- add param name without enumerator marker
				end
			end
		end
	end
	return skip_t;
end
local punct_skip = {};
local url_skip = {};
-------------------------
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 is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143';
local special_case_translation = {
	'AuthorList' = '저자 목록',											-- used to assemble maintenance category names
	'ContributorList' = 'contributors list',									-- translation of these names plus translation of the base mainenance category names in maint_cats{} table below
	'EditorList' = '편집자 목록',											-- must match the names of the actual categories
	'InterviewerList' = '인터뷰어 목록',									-- this group or translations used by name_has_ed_markup() and name_has_mult_names()
	'TranslatorList' = '번역자 목록',
	
																				-- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value
	'archived_copy' = {														-- used with CS1 maint: Archived copy as title
		'en' = '^archived?%s+copy$',											-- for English; translators: keep this because templates imported from en.wiki
		'local' = nil,														-- translators: replace 'local' = nil with lowercase translation only when bots or tools create generic titles in your language
		},
																				-- Lua patterns to match generic titles; usually created by bots or reference filling tools
																				-- translators: replace 'local' = nil with lowercase translation only when bots or tools create generic titles in your language
	'generic_titles' = {
		-- generic titles and patterns in this table should be lowercase only
		-- leave 'local' nil except when there is a matching generic title in your language
		-- boolean 'true' for plain-text searches; 'false' for pattern searches
		{'en' = {'^wayback%s+machine$', false},				'local' = nil},
		{'en' = {'are you a robot', true},					'local' = nil},
		{'en' = {'hugedomains.com', true},					'local' = nil},
		{'en' = {'^%(%{}%%)?$', false},		'local' = nil},
		{'en' = {'page not found', true},						'local' = nil},
		{'en' = {'subscribe to read', true},					'local' = nil},
		{'en' = {'^%(%{}%%)?$', false},		'local' = nil},
		{'en' = {'website is for sale', true},				'local' = nil},
		{'en' = {'^404', false},								'local' = nil},
		{'en' = {'internet archive wayback machine', true},	'local' = nil},
		{'en' = {'log into facebook', true},					'local' = nil},
		{'en' = {'login • instagram', true},					'local' = nil},
		{'en' = {'redirecting...', true},						'local' = nil},
		{'en' = {'usurped title', true},						'local' = nil},	-- added by a GreenC bot
		{'en' = {'webcite query result', true},				'local' = nil},
		{'en' = {'wikiwix\'s cache', true},					'local' = nil},
		},
	'generic_names' = {
		-- generic names and patterns in this table should be lowercase only
		-- leave 'local' nil except when there is a matching generic name in your language
		-- boolean 'true' for plain-text searches; 'false' for pattern searches
		{'en' = {'about us', true},										'local' = nil},
		{'en' = {'%f%aAadvisor%f%A', false},						'local' = nil},
		{'en' = {'%f%aAauthor%f%A', false},							'local' = nil},
		{'en' = {'collaborator', true},									'local' = nil},
		{'en' = {'contributor', true},									'local' = nil},
		{'en' = {'contact us', true},										'local' = nil},
		{'en' = {'directory', true},										'local' = nil},
		{'en' = {'%f%(%%(%%s*eds?%.?%s*%)%?$', false},			'local' = nil},
		{'en' = {',%.%s%feeds?%.?$', false},							'local' = nil},
		{'en' = {'^eds?%.,;', false},									'local' = nil},
		{'en' = {'^%(%%s*EeDdSs?%.?%s*%)%', false},			'local' = nil},
		{'en' = {'%f%aEedited%f%A', false},							'local' = nil},
		{'en' = {'%f%aEeditors?%f%A', false},						'local' = nil},
		{'en' = {'%f%aEemail%f%A', false},							'local' = nil},
		{'en' = {'facebook', true},										'local' = nil},
		{'en' = {'google', true},											'local' = nil},
		{'en' = {'home page', true},										'local' = nil},
		{'en' = {'instagram', true},										'local' = nil},
		{'en' = {'interviewer', true},									'local' = nil},
		{'en' = {'linkedIn', true},										'local' = nil},
		{'en' = {'pinterest', true},										'local' = nil},
		{'en' = {'policy', true},											'local' = nil},
		{'en' = {'privacy', true},										'local' = nil},
		{'en' = {'translator', true},										'local' = nil},
		{'en' = {'tumblr', true},											'local' = nil},
		{'en' = {'twitter', true},										'local' = nil},
		{'en' = {'site name', true},										'local' = nil},
		{'en' = {'statement', true},										'local' = nil},
		{'en' = {'submitted', true},										'local' = nil},
		{'en' = {'super.?user', false},									'local' = nil},
		{'en' = {'%f'..is_Latn..'Uuser%f^'..is_Latn.., false},	'local' = nil},
		{'en' = {'verfasser', true},										'local' = nil},
		}
	}
--2,
Easter and Christmas are defined here as 98 and 99, which should be out of the
ISO 8601 (EDTF) 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},
		'quarter' = {'First Quarter' = 33, 'Second Quarter' = 34, 'Third Quarter' = 35, 'Fourth Quarter' = 36},
		'season'	= {'Winter' = 24, 'Spring' = 21, 'Summer' = 22, 'Fall' = 23, 'Autumn' = 23},
		'named'	= {'Easter' = 98, '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},
		'quarter' = {'1분기' = 33, '2분기' = 34, '3분기' = 35, '4분기' = 36},		-- 로컬: 1분기, 1/4분기, 일분기, 일사분기 등의 형식 지원?
		'season'	= {'겨울'=24, '봄'=21, '여름'=22, '가을'=23},
		'named'	= {'부활절' = 98, '크리스마스' = 99, '성탄절' = 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 
	'