Module:Month translator/data

--[[--< L A N G U A G E S >

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', 'da', 'de', 'es', 'fi', 'fr', 'it', 'nb', 'pl', 'pt', 'ru', 'sv', 'tr'};

--[[--< E N G L I S H  M O N T H   N A M E S >

Table of local language month names filled by month_names_get

]]

local en_months_t = {};

--[[--< P A T T E R N S >--

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?)%. +(%a+) +(%d%d%d%d%a?)$', 'd', 'm', 'y'},						-- dd Mmm yyyy – for Danish {'^(%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 };

--[[--< O V E R R I D E _ N A M E S >--

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 = { [] = ,	}

--[[--< M O N T H _ N A M E S _ G E T >

creates a translation table of non-English month names listed in lang{} mapped to English month names listed in  (which this function also fills).

lang_obj:formatDate must be given a day in addition to  else it will use the current day so, if today is 31 August 2021, without the expicit '1' preceding the month from , when creating a translation for February, April, June, September, or October lang_obj:formatDate will return the 'next' month.

To dump this table: =mw.dumpObject (p.month_names_t)

]]

local function month_names_get local month_names_t = {};

local lang_obj = mw.language.getContentLanguage;							-- make a language object for the local language for i=1, 12 do																-- loop 12x and en_months_t[i] = 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_t) do								-- spin through the English month-names table local en_date = '1 ' .. en_month; local month_name = mw.ustring.lower (lang_obj:formatDate('F', en_date));	-- translate the English date '1 ' to ; ustring requred for tr February (Şubat) month_names_t[month_name] = en_month;								-- add to translations table; first day of month required

-- for pl and other languages that have nominative and genitive forms month_name = mw.ustring.lower (lang_obj:formatDate('xg', en_date));	-- translate the English date '1 ' to  (genitive form) month_names_t[month_name] = en_month;								-- add to translations table; when 'xg' is same as 'F', this overwrites the 'F' month name end end

return month_names_t; end

----< E X P O R T E D  T A B L E S >

return { month_names_t = month_names_get , override_names = override_names, patterns = patterns, }