모듈:Month translator/data

----------------------------------------------------------------------------------------
Table of ISO 639 codes for languages supported by this module.    List of MediaWiki supported languages and their
codes can be found at: Template:Citation_Style_documentation/language/doc
local langs = {'ca', 'de', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru', 'sv'};
--------------------------------------------------------------------
Table of local language month names filled by month_names_get()
local en_months = {};
------------------------------------------------------------------------------------------
table of tables that hold pattern and other information used to extract date parts for translation and reconstrution
Tables have the form:
	1 - pattern for a particular date format; must include captures for the requiste date components:
			day, month, year which ever are included in the date format
	2 - a letter 'd', 'm', or 'y' that identified the content of the first (left-most) capture
	3 - same as 2 for the second capture
	4 - same as 2 for the last (right-most) capture
ymd numeric dates have no hames so are not translated; use |df= parameter in the cs1|2 template for that.
local patterns = {
	{'^(%d%d?) +(%a+) +(%d%d%d%d%a?)$', 'd', 'm', 'y'},							-- dd Mmm yyyy
	{'^(%d%d?) +de +(%a+) +de +(%d%d%d%d%a?)$', 'd', 'm', 'y'},					-- dd de Mmm de yyyy
	{'^(%a+) +(%d%d%d%d%a?)$', 'm', 'y'},										-- Mmm yyyy
	{'^(%a+) +de +(%d%d%d%d%a?)$', 'm', 'y'},									-- Mmm de yyyy
	{'^(%a+) +(%d%d?) *, +(%d%d%d%d%a?)$', 'm', 'd', 'y'},						-- Mmm dd, yyyy
	{'^(%a+)$', 'm'},															-- month only; mostly for debug purposes
	};
------------------------------------------------------------------------------
table of non-English month names that are valid but are not in the list of names taken from MediaWiki with 
month_names_get().  Items in this list have the form:
	 = 'English month name',
		 must be lowercase
local override_names = {
	 = ,
	}
----------------------------------------------------------------------------
creates a translation table of non-English month names listed in lang{} mapped to English month names listed in
en_months{} (which this function also fills).
local function month_names_get ()
	local month_names = {};
	local lang_obj = mw.language.getContentLanguage();							-- make a language object for the local language 
	for i=1, 12 do																-- loop 12x and 
		en_monthsi = lang_obj:formatDate('F', '2018-' .. i)					-- get month names for each i
	end
	
	for _, lang in ipairs (langs) do											-- spin through the languages table
		lang_obj = mw.getLanguage (lang);										-- make a language object for the current language
		for i, en_month in ipairs (en_months) do								-- spin through the English month-names table
			month_nameslang_obj:formatDate('F', en_month):lower() = en_month;	-- translate the English name to the current language and store in the translations table
			if 'pl' == lang then												-- for polish and other languages that have nominative and genitive forms
				month_nameslang_obj:formatDate('xg', en_month):lower() = en_month;	-- translate English to genitive form and save
			end
		end
	end
	return month_names;
end
----------------------------------------------------------------------------
return {
	month_names = month_names_get (),
	override_names = override_names,
	patterns = patterns,
	}