Module:Month translator/data: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
 
(12 intermediate revisions by 2 users not shown)
Line 1:
local langs = {'ca', 'de', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'sv'};
 
--[[--------------------------< L A N G U A G E S >------------------------------------------------------------
local en_months = {'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'};
 
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 = {'ar', '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 reconstrutionreconstruction
 
Tables have the form:
Line 14 ⟶ 29:
[3] - same as [2] for the second capture
[4] - same as [2] for the last (right-most) capture
[5] - string identifier that specified the format of the matching date:
'dmy' - day month year
'm' - month only (mostly for debug)
'mdy' - month day, year
'my' - month year
 
ymd numeric dates have no hames so are not translated; use |df= parameter in the cs1|2 template for that.
Line 26 ⟶ 36:
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', 'dmy'}, -- 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
Line 31 ⟶ 42:
{'^(%a+) +(%d%d?) *, +(%d%d%d%d%a?)$', 'm', 'd', 'y'}, -- Mmm dd, yyyy
{'^(%a+)$', 'm'}, -- month only; mostly for debug purposes
 
-- {'^(%d%d?) +(%a+) +(%d%d%d%d%a?)$', 'd', 'm', 'y', 'dmy'}, -- dd Mmm yyyy
-- {'^(%d%d?) +de +(%a+) +de +(%d%d%d%d%a?)$', 'd', 'm', 'y', 'dmy'}, -- dd de Mmm de yyyy
-- {'^(%a+) +(%d%d%d%d%a?)$', 'm', 'y', nil, 'my'}, -- Mmm yyyy
-- {'^(%a+) +de +(%d%d%d%d%a?)$', 'm', 'y', nil, 'my'}, -- Mmm de yyyy
-- {'^(%a+) +(%d%d?) *, +(%d%d%d%d%a?)$', 'm', 'd', 'y', 'mdy'}, -- Mmm dd, yyyy
-- {'^(%a+)$', 'm', nil, nil, 'm'}, -- month only; mostly for debug purposes
};
 
Line 46 ⟶ 50:
month_names_get(). Items in this list have the form:
['<non-English month name>'] = 'English month name',
'<non-English month name>' must be lowercase
]]
 
Line 51 ⟶ 56:
[''] = '',
}
 
 
--[[--------------------------< 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
<en_months_t> (which this function also fills).
en_months{}.
 
lang_obj:formatDate() must be given a day in addition to <en_month> else it will use the current day so, if today
is 31 August 2021, without the expicit '1' preceding the month from <en_month>, 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_namesmonth_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
local lang_obj = mw.getLanguage (lang); -- make a language object for the current language
for i, en_month in ipairs (en_monthsen_months_t) do -- spin through the English month-names table
local en_date = '1 ' .. en_month;
month_names[lang_obj:formatDate('F', en_month):lower()] = en_month; -- translate the English name to the current language and store in the translations table
local month_name = mw.ustring.lower (lang_obj:formatDate('F', en_date)); -- translate the English date '1 <en month>' to <month_name>; ustring requred for tr February (Şubat)
if 'pl' == lang then -- for polish and other languages that have nominative and genitive forms
month_names_t[month_name] = en_month; -- add to translations table; first day of month required
month_names[lang_obj:formatDate('xg', en_month):lower()] = en_month; -- translate English to genitive form and save
 
end
if 'pl' == lang then -- for polishpl 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 <en month>' to <month_name> (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_namesmonth_names_t;
end
 
Line 79 ⟶ 100:
 
return {
month_namesmonth_names_t = month_names_get (),
override_names = override_names,
patterns = patterns,