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 = {'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 reconstruction
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:
['<non-English month name>'] = 'English month name',
'<non-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
<en_months_t> (which this function also fills).
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_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 <en month>' to <month_name>; 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 <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_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,
}
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.