Module:I18n/complex date

Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Documentation for this module may be created at Module:I18n/complex date/doc

--[[
  __  __           _       _        ___ _  ___           __                        _                 _       _       
 |  \/  | ___   __| |_   _| | ___ _|_ _/ |( _ ) _ __    / /__ ___  _ __ ___  _ __ | | _____  __   __| | __ _| |_ ___ 
 | |\/| |/ _ \ / _` | | | | |/ _ (_)| || |/ _ \| '_ \  / / __/ _ \| '_ ` _ \| '_ \| |/ _ \ \/ /  / _` |/ _` | __/ _ \
 | |  | | (_) | (_| | |_| | |  __/_ | || | (_) | | | |/ / (_| (_) | | | | | | |_) | |  __/>  <  | (_| | (_| | ||  __/
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)___|_|\___/|_| |_/_/ \___\___/|_| |_| |_| .__/|_|\___/_/\_\  \__,_|\__,_|\__\___|
                                                                            |_|    
This code was copied from Commons please request changes there. 
																																						
Maintainers:
*Jarekt																																						
]]

local Ordinal    = require('Module:Ordinal')._Ordinal
local Roman      = require('Module:Roman')._Numeral

-- ==========================================================================
-- ===  Local Helper functions ==============================================
-- ==========================================================================
-- form of French "of" based on "precision", which is wikibase compatible date precision format: 
-- 6=millennium, 7=century, 8=decade, 9=year, 10=month, 11=day
--             1    2    3    4    5    mill  cent  deca  year  month  day
local frOf = {'du','du','du','du','du', 'du', 'du', 'de', 'de', 'de', 'du'}

local function decYear(state,lang,case)
--Declension of word "year" in several languages
if state.precision == 9 then
	yearCase = {
		fi={xxx='vuosien', gen='vuoden', ill='vuoteen', ptv='vuotta', ela='vuodesta', ine='vuonna'},
		sl={insP='letoma', ins='letom', gen='leta', loc='letu'},
		hsb={insP='lětami', ins='lětom', gen='lěta', loc='lěće'}
	}
	return yearCase[lang][case] .. ' '
else
	return ''
end
end

local function decCentury(lang,case)
--Declension of word "century" in several languages
	centuryCase = {
		pl={nom='wiek', gen='wieku', ins='wiekiem', loc='wieku', default = 'wiek'},
		hsb={nom='lětstotk', gen='lětstotka', ins='lětstotkom', loc='lětstotku', default = 'lětstotk'}
	}
	return centuryCase[lang][case] or centuryCase[lang]['default']
end

local function decMillennium(lang,case)
--Declension of word "century" in several languages
	millenniumCase = {
		pl={nom='tysiąclecie', gen='tysiąclecia', ins='tysiącleciem', loc='tysiącleciu', default = 'tysiąclecie'},
		hsb={nom='lěttysac', gen='lěttysaca', ins='lěttysacom', loc='lěttysacu', default = 'lěttysac'}
	}
	return millenniumCase[lang][case] or millenniumCase[lang]['default']
end

-- ==========================================================================
-- ===  Output data structure ===============================================
-- ==========================================================================
local p = {} 

--[[
 Multiple formats are possible:
  1) string with key words "$date1" and "$date2" which will be replaced later by the date strings
  2) function which can be used to create output string
    * Function INPUTS: 
	  - date1 and date2 string with date strings. "$date1" and "$date2" can also be used which will be replaced latter
	  - state is a table with full description of the phrase we are trying to construct. It includes state.precision1 (and 2) 
		which is wikibase compatible date precision format: 6=millennium, 7=century, 8=decade, 9=year, 10=month, 11=day
  3) table with following fields:
    * table[1] is either string or a function
    * table.case is a 2 element table with Grammatical cases used by given language to alter 
	    month name or other adjective related to date # 1 and 2
]]
p.Translations = {

	-- ==========================================
	-- === Two date phrases =====================
	-- ==========================================
	['from-until'] = {
		nDates = 2, 
		ar='من $date1 إلى $date2',
		['be-tarask']={'з $date1 да $date2', case={'gen','gen'}},
		bn='$date1 থেকে $date2 পর্যন্ত',
		ca='$date1 fins $date2',
		cs='$date1 až $date2',
		da='fra $date1 til $date2',
		de='$date1 bis $date2',
		el='από $date1 έως $date2',
		en='from $date1 until $date2',
		['en-gb']='from $date1 until $date2',
		['en-ca']='from $date1 until $date2',
		eo='de $date1 al $date2',
		es='de $date1 a $date2',
		et='$date1 kuni $date2',
		fa='از $date1 تا $date2',
		fi='$date1–$date2', -- välisenä aikana
		fr=function(date1, date2, state) -- could actually be better should be "d'octobre à mars 2013' not "de octore 2013 à mars 2013" 
			if state.precision > 10 then -- precision > month
				return 'du $date1 au $date2'
			else				-- "DE septebmbre" / "D'octobre"
				return require("Module:Linguistic").of(date1, 'fr') .. " à $date2"
			end
		end,
		gl='de $date1 a $date2', --Template:From until used 'desde $date1 ata $date2'
		he='מ- $date1 עד $date2',
		hr='od $date1 do $date2',
		hsb={'wot $date1 do $date2', case={'gen','gen'}},
		hu='$date1 – $date2',
		it='dal $date1 al $date2',
		ja='$date1から$date2まで',
		mk='од $date1 до $date2',
		ml='$date1 മുതൽ $date2 വരെ',
		nb='fra $date1 til $date2',
		nds='$date1 bet $date2',
		nn='fra $date1 til $date2',
		nl='$date1 tot $date2',
		no='fra $date1 til $date2',
		pl={'od $date1 do $date2', case={'gen','gen'}},
		ro='din $date1 până în $date2',
		pt='de $date1 a $date2',
		qu="$date1 p'unchawmanta $date2 p\'unchawkama",
		ru={'с $date1 по $date2', case={'gen','gen'}},
		sk={'od $date1 do $date2', case={'gen','gen'}},
		sl={'od $date1 do $date2', case={'gen','gen'}},
		sv='från $date1 till $date2',
		uk={'з $date1 до $date2', case={'gen','gen'}},
		ur='از $date1 تا $date2',
		vi='từ $date1 đến $date2',
		['zh-hans']='从$date1到$date2',
		['zh-hant']='從$date1到$date2',
		default='<span style="color:red">$date1 - $date2</span>',
	},

	['between']={
		nDates = 2,
		ar='بين $date1 و $date2',
		['be-tarask']={'між $date1 і $date2', case={'ins','ins'}},
		bn='$date1 এবং $date2-এর মাঝামাঝি',
		ca='entre $date1 i $date2',
		cs={'mezi $date1 a $date2', case={'ins','ins'}},
		da='mellem $date1 og $date2',
		de='zwischen $date1 und $date2',
		el='μεταξύ $date1 και $date2',
		en='between $date1 and $date2',
		['en-gb']='between $date1 and $date2',
		['en-ca']='between $date1 and $date2',
		eo='inter $date1 kaj $date2',
		es='entre $date1 y $date2',
		et='$date1 ja $date2 vahel',
		fa='بین $date1 و $date2',
		fi={function(date1, date2, state) return decYear(state,'fi','xxx') .. '$date1 ja $date2 välisenä aikana'	end, case={'gen','gen'}},
		fr='entre $date1 et $date2',
		gl='entre $date1 e $date2',
		he='בין $date1 ו- $date2',
		hr='između $date1 i $date2',
		hsb={'mjez $date1 a $date2', case={'ins','ins'}},
		hu='$date1 és $date2 között',
		hi='$date1 और $date2 के बीच',
		it='tra il $date1 e il $date2',
		ja='$date1と$date2の間',
		mk='помеѓу $date1 и $date2',
		ml='$date1, $date2 എന്നിവയ്ക്കിടയ്ക്ക്',
		nb='mellom $date1 og $date2',
		nds='twischen $date1 un $date2',
		nn='mellom $date1 og $date2',
		nl='tussen $date1 en $date2',
		no='mellom $date1 og $date2',
		pl={'między $date1 a $date2', case={'ins','ins'}},
		ro='între $date1 și $date2',
		pt='entre $date1 e $date2',
		qu="$date1 p'unchawpa $date2 p'unchawpapas chawpin",
		ru={'между $date1 и $date2', case={'ins','ins'}},
		sk={'medzi $date1 a $date2', case={'ins','ins'}},
		sl={function(date1, date2, state) return 'med ' .. decYear(state,'sl','insP') .. '$date1 in $date2'	end, case={'ins','ins'}},
		sv='mellan $date1 och $date2',
		uk={'між $date1 та $date2', case={'ins','ins'}},
		ur='بین $date1 و $date2',
		vec='tra el $date1 e el $date2',
		vi='giữa $date1 và $date2',
		['zh-hans']='在$date1到$date2之间',
		['zh-hant']='在$date1到$date2之間',
		default='<span style="color:red">$date1 - $date2</span>',
	},

	['or'] = {
		nDates = 2,
		ar='$date1 أو $date2',
		['be-tarask']='$date1 ці $date2',
		bn='$date1 অথবা $date2',
		ca='$date1 o $date2',
		cs='$date1 nebo $date2',
		da='$date1 eller $date2',
		de='$date1 oder $date2',
		el='$date1 ή $date2',
		en='$date1 or $date2',
		['en-gb']='$date1 or $date2',
		['en-ca']='$date1 or $date2',
		eo='$date1 aŭ $date2',
		es='$date1 o $date2',
		et='$date1 või $date2',
		fa='$date1 یا $date2',
		fi='$date1 tai $date2',
		fr='$date1 ou $date2',
		gl='$date1 ou $date2',
		he='$date1 או $date2',
		hr='$date1 ili $date2',
		hsb='$date1 abo $date2',
		hu='$date1 vagy $date2',
		it='$date1 o $date2',
		ja='$date1または$date2',
		mk='$date1 или $date2',
		ml='$date1 അഥവാ $date2',
		nb='$date1 eller $date2',
		nn='$date1 eller $date2',
		nds='$date1 oder $date2',
		nl='$date1 of $date2',
		no='$date1 eller $date2',
		pl='$date1 lub $date2',
		pt='$date1 ou $date2',
		qu='$date1 icha $date2',
		ro='$date1 sau $date2',
		ru='$date1 или $date2',
		sk='$date1 alebo $date2',
		sl='$date1 ali $date2',
		sv='$date1 eller $date2',
		uk='$date1 або $date2',
		ur='$date1 یا $date2',
		th='$date1 หรือ $date2',
		vi='$date1 hoặc $date2',
		['zh-hans']='$date1或$date2',
		['zh-hant']='$date1或$date2',
		default=function(date1, date2, state) return require("Module:Linguistic").conj({date1, date2}, state.lang, 'or') end,
	}, 

	['and'] = {
		nDates = 2,
		ar='$date1 و $date2',
		['be-tarask']='$date1 і $date2',
		bn='$date1 এবং $date2',
		ca='$date1 i $date2',
		cs='$date1 a $date2',
		da='$date1 og $date2',
		de='$date1 und $date2',
		el='$date1 και $date2',
		en='$date1 and $date2',
		['en-gb']='$date1 and $date2',
		['en-ca']='$date1 and $date2',
		eo='$date1 kaj $date2',
		es='$date1 y $date2',
		et='$date1 ja $date2',
		fa='$date1 و $date2',
		fi='$date1 ja $date2',
		fr='$date1 et $date2',
		gl='$date1 e $date2',
		he='$date1 ו- $date2',
		hu='$date1 és $date2',
		hsb='$date1 a $date2',
		it='$date1 e $date2',
		ja='$date1および$date2',
		mk='$date1 и $date2',
		ml='$date1 ഒപ്പം $date2',
		nb='$date1 og $date2',
		nn='$date1 og $date2',
		nds='$date1 un $date2',
		nl='$date1 en $date2',
		no='$date1 og $date2',
		pl='$date1 i $date2',
		pt='$date1 e $date2',
		qu='$date1wan $date2pas',
		ro='$date1 și $date2',
		ru='$date1 и $date2',
		sk='$date1 a $date2',
		sl='$date1 in $date2',
		sv='$date1 och $date2',
		uk='$date1 та $date2',
		ur='$date1 و $date2',
		vi='$date1 và $date2',
		['zh-hans']='$date1和$date2',
		['zh-hant']='$date1和$date2',
		default=function(date1, date2, state) return require("Module:Linguistic").conj({date1, date2}, state.lang, 'and') end,
	},

	-- ==========================================
	-- === Prepositions =========================
	-- ==========================================
	['by'] = {
		nDates = 1,
		ar='حوالي $date1',
		['be-tarask']={'да $date1', case={'gen',''}},
		bn='$date1 কর্তৃক',
		ca='vers $date1',
		cs={'kolem $date1', case={'gen',''}},
		da='mod $date1',
		de='spätestens $date1',
		el='έως $date1',
		en='by $date1',
		['en-gb']='by $date1',
		['en-ca']='by $date1',
		eo='ne post $date1',
		es='para $date1',
		et='hiljemalt $date1',
		fa='توسط $date1',
		fi={function(date1, state) return decYear(state,'fi','ill') .. '$date1 mennessä' end, case={'ill',''}},
		fr='$date1 (au plus tard)',
		gl='cara a $date1',
		he='עד $date1',
		hr='do $date1',
		hsb={'do $date1', case={'gen',''}},
		it='entro il $date1',
		ja='$date1まで',
		mk='кон $date1',
		ml='$date1-ൽ',
		nb='innen $date1',
		nn='innan $date1',
		nds='$date1 oder vördem al',
		nl='tegen $date1',
		no='innen $date1',
		pl={'przed $date1', case={'ins',''}},
		pt='por $date1',
		qu="$date1 p'unchawkama",
		ro='de $date1',
		ru={'к $date1', case={'dat',''}},
		sk={'okolo $date1', case={'gen',''}},
		sl={function(date1, state) return 'najpozneje ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='senast $date1',
		uk={'до $date1', case={'dat',''}},
		ur='توسط $date1',
		vi='vào $date1', -- need to insert "đã" somewhere later in the sentence -->
		['zh-hans']='$date1前后',
		['zh-hant']='$date1前后',
		default='<span style="color:red">by $date1</span>',
	},

	['before'] = {
		nDates = 1,
		ar='قبل $date1',
		['be-tarask']={'перад $date1', case={'ins',''}},
		bn='$date1-এর আগে',
		bg='Преди $date1',
		ca='abans $date1',
		cs={'před $date1', case={'ins',''}},
		da='før $date1',
		de='vor $date1',
		el='πριν από $date1',
		en='before $date1',
		['en-gb']='before $date1',
		['en-ca']='before $date1',
		eo='antaŭ $date1',
		es='antes de $date1',
		et='enne $date1',
		fa='پیش از $date1',
		fi={function(date1, state) return 'ennen ' .. decYear(state,'fi','ptv') .. '$date1' end, case={'ptv',''}},
		fr='avant $date1',
		gl='antes do $date1',
		he='לפני $date1',
		hr='prije $date1',
		hsb={'do $date1', case={'gen',''}},
		hu='$date1 előtt',
		it='prima del $date1',
		ja='$date1より前',
		mk='пред $date1',
		ml='$date1-നു മുമ്പ്',
		nb='før $date1',
		nn='før $date1',
		nds='vör $date1',
		nl='voor $date1',
		no='før $date1',
		pl={'przed $date1', case={'ins',''}},
		pt='antes de $date1',
		qu="$date1 p'unchaw ñawpan",
		ro='înainte de $date1',
		ru={'ранее $date1', case={'gen',''}},
		sk={'pred $date1', case={'ins',''}},
		sl={function(date1, state) return 'pred ' .. decYear(state,'sl','ins') .. ' $date1' end, case={'ins',''}},
		sv='före $date1',
		uk={'до $date1', case={'gen',''}},
		ur='قبل $date1',
		vi='trước $date1',
		['zh-hans']='在$date1之前',
		['zh-hant']='在$date1之前',
		default='<span style="color:red">before $date1</span>',
	},

	['from'] = {
		nDates = 1,
		ar='من $date1',
		['be-tarask']={'з $date1', case={'gen',''}},
		bn='$date1 থেকে',
		cs={'od $date1', case={'gen',''}},
		de='Seit $date1',
		el='από $date1',
		en='from $date1',
		['en-gb']='from $date1',
		['en-ca']='from $date1',
		eo='ekde $date1',
		es='desde $date1',
		et='alates $date1',
		fa='از $date1',
		fi={function(date1, state) return decYear(state,'fi','ela') .. '$date1 alkaen' end, case={'ela',''}},
		fr= function(date1, state) return 'à partir '.. frOf[state.precision] ..' $date1' end,
		gl='desde o $date1',
		he='מ- $date1',
		hr='od $date1',
		hsb={'wot $date1', case={'gen',''}},
		it='dal $date1',
		ja='$date1から',
		nds='vonaf $date1',
		mk='од $date1',
		nb='fra $date1',
		nn='frå $date1',
		ml='$date1 മുതൽ',
		nl='vanaf $date1',
		no='fra $date1',
		pl={'od $date1', case={'gen',''}},
		qu="$date1 p'unchawmanta",
		ro='din $date1',
		ru={'С $date1', case={'gen',''}},
		sk={'od $date1', case={'gen',''}},
		sl={function(date1, state) return 'od ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='från $date1',
		uk={'з $date1', case={'gen',''}},
		ur='از $date1',
		vi='từ $date1',
		['zh-hans']='自$date1',
		['zh-hant']='自$date1',
		default='<span style="color:red">from $date1</span>',
	},

	['until'] = {
		nDates = 1,
		['be-tarask']={'усутыч да $date1', case={'gen',''}},
		bn='$date1 পর্যন্ত',
		cs={'do $date1', case={'gen', ''}},
		de='bis $date1',
		en='until $date1',
		['en-gb']='until $date1',
		['en-ca']='until $date1',
		eo='ĝis $date1',
		es='hasta $date1',
		fr=function(date1, state)
			if state.precision > 10 then -- precision > month
				return "jusqu'au $date1"
			else 
				return "jusqu'à $date1" 
			end
		end,
		hr='do $date1',
		hsb={'do $date1', case={'gen',''}},
		it='al $date1',
		nb= 'til $date1',
		nl= 'tot $date1',
		nn= 'til $date1',
		pl={'do $date1', case={'gen',''}},
		ru={'вплоть до $date1', case={'gen',''}},
		sk={'do $date1', case={'gen', ''}},
		uk={'аж до $date1', case={'gen',''}},
		ur='تک $date1',
		['zh-hans']='直到$date1',
		['zh-hant']='直到$date1',
		default='<span style="color:red">until $date1</span>',
	},
	
	['after'] = {
		nDates = 1,
		ar='بعد $date1',
		['be-tarask']={'пасьля $date1', case={'gen',''}},
		bn='$date1-এর পরে',
		ca='desprès $date1',
		cs={'po $date1', case={'loc',''}},
		de='nach $date1',
		da='efter $date1',
		el='μετά από $date1',
		en='after $date1',
		['en-gb']='after $date1',
		['en-ca']='after $date1',
		eo='post $date1',
		es='después de $date1',
		et='pärast $date1',
		fa='پس از $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 jälkeen' end, case={'gen',''}},
		fr='après $date1',
		gl='despois do $date1',
		he='לאחר $date1',
		hr='nakon $date1',
		hu='$date1 után',
		hsb={'po $date1', case={'loc',''}},
		it='dopo il $date1',
		ja='$date1より後',
		mk='по $date1',
		ml='$date1-നു ശേഷം',
		nb='etter $date1',
		nn='etter $date1',
		nds='na $date1',
		nl='na $date1',
		no='etter $date1',
		pl={'po $date1', case={'loc',''}},
		pt='após $date1',
		qu="$date1 p'unchaw qhipan",
		ro='după $date1',
		ru={'после $date1', case={'gen',''}},
		sk={'po $date1', case={'loc',''}},
		sl={function(date1, state) return 'po ' .. decYear(state,'sl','loc') .. ' $date1' end, case={'loc',''}},
		sv='efter $date1',
		uk={'після $date1', case={'gen',''}},
		ur='بعد $date1',
		vi='sau $date1',
		['zh-hans']='在$date1之后',
		['zh-hant']='在$date1之後',
		default='<span style="color:red">after $date1</span>',
	},

	-- ==========================================
	-- === Adjectives ===========================
	-- ==========================================
	['early'] = {
		nDates = 1,
		ar='بداية $date1',
		['be-tarask']={'пачатак $date1', case={'gen',''}},
		bn='$date1-এর শুরুতে',
		ca='al principi de $date1',
		cs={'začátek $date1', case={'gen',''}},
		da='tidlig $date1',
		de='Anfang $date1',
		el='αρχές του $date1',
		en='early $date1',
		['en-gb']='early $date1',
		['en-ca']='early $date1',
		eo='komence de $date1',
		es='a principios de $date1',
		et='$date1 algus',
		fa='اوایل $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 alku' end, case={'gen',''}},
		fr='début $date1',
		gl='a principios de $date1',
		he='תחילת $date1',
		hr='početak $date1',
		hsb={'spočatk $date1', case={'gen',''}},
		hu='$date1 elején',
		it='inizio del $date1',
		ja='$date1初頭',
		mk='почеток на $date1',
		ml='$date1 ആദ്യപാദം',
		nb='tidlig $date1',
		nn='tidleg $date1',
		nds='Anfang $date1',
		nl='begin $date1',
		no='tidlig $date1',
		pl={'początek $date1', case={'gen',''}},
		pt='a princípios de $date1',
		qu="$date1 ñawpaq p'unchawkunapi",
		ro='începând cu $date1',
		ru={'начало $date1', case={'gen',''}},
		sk={'začiatok $date1', case={'gen',''}},
		sl=function(date1, state)-- could actually be better should be "d'octobre à mars 2013' not "de octore 2013 à mars 2013" 
			if state.precision == 9 then -- precision > month
				return 'zgodnje leto $date1'
			else				-- "DE septebmbre" / "D'octobre"
				return 'zgodnji $date1'
			end
		end, 
		sv='början av $date1',
		uk={'початок $date1', case={'gen',''}},
		ur='ابتدا $date1',
		vi='đầu năm $date1',
		['zh-hans']='$date1早期',
		['zh-hant']='$date1早期',
		default='<span style="color:red">early $date1</span>',
	},

	['mid'] = {
		nDates = 1,
		ar='منتصف $date1',
		['be-tarask']={'сярэдзіна $date1', case={'gen',''}},
		bn='$date1-এর মাঝামাঝি',
		ca='a mitjan $date1',
		cs={'polovina $date1', case={'gen',''}},
		da='midten af $date1',
		de='Mitte $date1',
		el='μέσα του $date1',
		en='mid $date1',
		['en-gb']='mid $date1',
		['en-ca']='mid $date1',
		eo='meze de $date1',
		es='a mediados de $date1',
		et='$date1 keskel',
		fa='اواسط $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 puoliväli' end, case={'gen',''}},
		fr='mi $date1',
		gl='a mediados de $date1',
		he='אמצע $date1',
		hr='sredina $date1',
		hsb={'srjedź $date1', case={'gen',''}},
		hu='$date1 közepén',
		it='metà del $date1',
		ja='$date1半ば',
		mk='средина на $date1',
		ml='$date1 മദ്ധ്യം',
		nb='midten av $date1',
		nn='midten av $date1',
		nds='Midd $date1',
		nl='midden $date1',
		no='midten av $date1',
		pl={'środek $date1', case={'gen',''}},
		pt='meados de $date1',
		qu="$date1 chawpin p'unchawkunapi",
		ro='mijlocul lui $date1',
		ru={'середина $date1', case={'gen',''}},
		sk={'polovica $date1', case={'gen',''}},
		sl={function(date1, state) return 'sredina ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='mitten av $date1',
		uk={'середина $date1', case={'gen',''}},
		ur='وسط $date1',
		vi='giữa năm $date1',
		['zh-hans']='$date1中期',
		['zh-hant']='$date1中期',
		default='<span style="color:red">mid $date1</span>',
	},

	['late'] = {
		nDates = 1,
		ar='نهاية $date1',
		bn='$date1-এর শেষে',
		['be-tarask']={'канец $date1', case={'gen',''}},
		ca='al final de $date1',
		cs='konec $date1',
		da='sen $date1',
		de='Ende $date1',
		el='τέλη του $date1',
		en='late $date1',
		['en-gb']='late $date1',
		['en-ca']='late $date1',
		eo='fine de $date1',
		es='a fines de $date1',
		et='$date1 lõpp',
		fa='اواخر $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 loppu' end, case={'gen',''}},
		fr='fin $date1',
		gl='a finais de $date1',
		he='סוף $date1',
		hr='kraj $date1',
		hsb={'kónc $date1', case={'gen',''}},
		hu='$date1 végén',
		it='fine del $date1',
		ja='$date1末',
		mk='крајот на $date1',
		ml='$date1 അന്ത്യപാദം',
		nb='sent $date1',
		no='seint $date1',
		nds='Enn $date1',
		nl='eind $date1',
		no='sent $date1',
		pl={'koniec $date1', case={'gen',''}},
		pt='ao final de $date1',
		qu="$date1 qhipaq p'unchawkunapi",
		ro='sfârșitul lui $date1',
		ru={'конец $date1', case={'gen',''}},
		sk={'koniec $date1', case={'gen',''}},
		sl={function(date1, state) return 'pozno ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='slutet av $date1',
		uk={'кінець $date1', case={'gen',''}},
		ur='اخیر $date1',
		vi='cuối năm $date1',
		['zh-hans']='$date1晚期',
		['zh-hant']='$date1晚期',
		default='<span style="color:red">late $date1</span>',
	},
	
	['circa'] = {
		nDates = 1,
		ar='حوالي $date1',
		['be-tarask']={'каля $date1', case={'gen',''}},
		bn='প্রায় $date1',
		ca='cap a $date1',
		cs='cca $date1',
		da='ca. $date1',
		de='etwa $date1',
		el='περ. $date1',
		en='circa $date1',
		['en-gb']='circa $date1',
		['en-ca']='circa $date1',
		eo='ĉirkaŭ $date1',
		es='hacia $date1', -- suggestion use "hacia"/"hacia el" or leave the latin circa or ca. 
		et='ca. $date1',
		fa='حوالی $date1', -- template:Circa used 'حدود $date1'
		fi={function(date1, state) return 'suunnilleen ' .. decYear(state,'fi','ine') .. '$date1' end, case={'ine',''}}, -- template:Circa used 'noin $date1'
		fr=function(date1, state) 			
			if state.precision >= 11 then -- precision >= day
				return 'vers le $date1'
			else
				return 'vers $date1'
			end
		end,
		gl='entre $date1', -- template:Circa used 'cara a $date1'
		he='בסביבות $date1',
		hr='oko $date1',
		hsb={'wokoło $date1', case={'gen',''}},
		hu='$date1 körül',
		it='$date1 circa',
		ja='$date1頃',
		ko='$date1경',
		mk='~ $date1', -- template:Circa used 'o. $date1'
		nb='ca. $date1',
		nn='ca. $date1',
		nds='üm un bi $date1',
		nl='ca. $date1',
		no='ca. $date1',
		pl={'około $date1', case={'gen',''}},
		pt='cerca de $date1',
		qu='$date1chá',
		ro='circa $date1',
		ru={'около $date1', case={'gen',''}},
		sk='cca $date1',
		sl={function(date1, state) return 'ok. ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='c:a $date1', -- template:Circa used 'ca $date1'
		uk={'близько $date1', case={'gen', ''}},
		ur='قریباً $date1',
		vi='vào khoảng $date1',
		['zh-hans']='约$date1',
		['zh-hant']='約$date1',
		default='<span style="color:red">circa $date1</span>',
	},
	
	['uncertain'] = {
		nDates = 1,
		['zh-hans']='$date1(?)',
		['zh-hant']='$date1(?)',
		default='$date1 (?)',
	},
	
	probably = { -- see Q56644435
		nDates = 1,
		ast = 'probablemente $date1',
		bn = 'সম্ভবত $date1',
		ca = 'probablement $date1',
		cs = 'pravděpodobně $date1',
		de = 'wahrscheinlich $date1',
		el = 'πιθανόν $date1',
		en = 'probably $date1',
		['en-gb']='probably $date1',
		['en-ca']='probably $date1',
		eo = 'probable $date1',
		es = 'probable $date1',
		fa = 'احتمالاً $date1',
		fr = 'probablement $date1',
		he = 'כפי הנראה $date1',
		hu = 'feltehetőleg $date1',
		it = 'probabile $date1',
		mk = 'веројатно $date1',
		nl = 'waarschijnlijk $date1',
		pl = 'prawdopodobnie $date1',
		pt = 'provavelmente $date1',
		ru = 'вероятно $date1',
		sv = 'antagligen $date1',
		default='<span style="color:red">probably $date1</span>',
	},
	
	possibly = { -- see Q30230067
		nDates = 1,
		ast = 'posiblemente $date1',
		bn = 'যথাসম্ভব $date1',
		cs = 'možná $date1',
		de = 'möglicherweise $date1',
		en = 'possibly $date1',
		['en-gb']='possibly $date1',
		['en-ca']='possibly $date1',
		eo = 'eble $date1',
		el = 'πιθανόν $date1',
		fa = 'احتمالاً $date1',
		fr = 'peut-être $date1',
		hu = 'talán $date1',
		mk = 'можеби $date1',
		nl = 'mogelijk $date1',
		pl = 'być może $date1',
		pt = 'possivelmente $date1',
		ro = 'poate $date1',
		ru = 'возможно $date1',
		sv = 'möjligen $date1',
		default='<span style="color:red">possibly $date1</span>',
	},
	
	presumably = { -- see Q18122778
		nDates = 1,
		ast = 'presumiblemente $date1',
		de = 'vermutlich $date1',
		en = 'presumably $date1',
		['en-gb']='presumably $date1',
		['en-ca']='presumably $date1',
		fr = 'présumé $date1',
		it = 'presumibilmente $date1',
		ru = 'предположительно $date1',
		pl = 'przypuszczalnie $date1',
		default='<span style="color:red">presumably $date1</span>',
	},

	['year unknown']= {
		nDates = 0,
		ca='Any desconegut',
		['be-tarask']='Год невядомы',
		bn='অজানা বছর',
		cs='neznámý rok',
		de='Jahr unbekannt',
		el='άγνωστο έτος',
		en='year unknown',
		['en-gb']='year unknown',
		['en-ca']='year unknown',
		eo='jaro nesciata',
		es='Año desconocido',
		fa='سال نامعلوم',
		fi='tuntematon vuosi',
		fr='Année inconnue',
		he='שנה לא ידועה',
		hsb='lěto njeznate',
		hr='nepoznata godina',
		it='anno sconosciuto',
		ja='年代不明',
		la='Sine anno',
		ml='വർഷം ലഭ്യമല്ല',
		mk='непозната година',
		nb='ukjent år',
		nn='ukjent år',
		nl='zonder jaar',
		no='ukjent år',
		pl='rok nieznany',
		qu='Mana riqsisqa wata',
		ru='Год неизвестен',
		sk='neznámy rok',
		sl='neznano leto',
		sv='Okänt år',
		uk='рік невідомий',
		ur='سال نامعلوم',
		vi='không rõ năm',
		['zh-hans']='年份未知',
		['zh-hant']='年份未知',
		default='<span style="color:red">year unknown</span>',
	},

	-- ==========================================
	-- === Parts of a whole =====================
	-- ==========================================
	['firsthalf'] = {
		nDates = 1,
		ar='النصف الأول من $date1',
		['be-tarask']={'першая палова $date1', case={'gen',''}},
		bn='$date1-এর প্রথমার্ধ',
		ca='1a meitat de $date1',
		cs={'1. polovina $date1', case={'gen',''}},
		da='1. halvdel af $date1',
		de='1. Hälfte $date1',
		el='πρώτο μισό του $date1',
		en='first half of $date1',
		['en-gb']='first half of $date1',
		['en-ca']='first half of $date1',
		eo='unua duono de $date1',
		es='primera mitad de $date1',
		et='$date1 esimene pool',
		fa='نیمهٔ نخست $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 alkupuolisko' end, case={'gen',''}},
		fr='1<sup>re</sup> moitié de $date1',
		gl='primeira metade de $date1',
		he='במחצית הראשונה של $date1',
		hsb={'prěnja połojca $date1', case={'gen',''}},
		hu='$date1 első felében',
		hr='prva polovina $date1',
		it='prima metà del $date1',
		ja='$date1上半期',
		mk='прва половина на $date1',
		ml='$date1 ആദ്യപകുതി',
		nb='første halvdel av $date1',
		nn='fyrste halvdelen av $date1',
		nds='1. Helft $date1',
		nl='eerste helft $date1',
		no='første halvdel av $date1',
		pl={'pierwsza połowa $date1', case={'gen',''}},
		pt='primeira metade de $date1',
		qu='$date1 ñawpaq kuskanpi',
		ro='prima jumătate a lui $date1',
		ru={'первая половина $date1', case={'gen',''}},
		sk={'1. polovica $date1', case={'gen',''}},
		sl={function(date1, state) return 'prva polovica ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='första halvan av $date1',
		uk={'перша половина $date1', case={'gen',''}},
		ur='نصف اول $date1',
		vi='nửa đầu năm $date1',
		['zh-hans']='$date1上半期',
		['zh-hant']='$date1上半期',
		default='<span style="color:red">first half of $date1</span>',
	},

	['secondhalf'] = {
		nDates = 1,
		ar='النصف الثاني من $date1',
		['be-tarask']={'другая палова $date1', case={'gen',''}},
		bn='$date1-এর দ্বিতীয়ার্ধ',
		ca='2a meitat de $date1',
		cs={'2. polovina $date1', case={'gen',''}},
		da='2. halvdel af $date1',
		de='2. Hälfte $date1',
		el='δεύτερο μισό του $date1',
		en='second half of $date1',
		['en-gb']='second half of $date1',
		['en-ca']='second half of $date1',
		eo='dua duono de $date1',
		es='segunda mitad de $date1',
		et='$date1 teine pool',
		fa='نیمهٔ دوم $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 loppupuolisko' end, case={'gen',''}},
		fr='2<sup>e</sup> moitié de $date1',
		gl='segunda metade de $date1',
		he='במחצית השנייה של $date1',
		hsb={'druha połojca $date1', case={'gen',''}},
		hr='druga polovina $date1',
		hu='$date1 második felében',
		it='seconda metà del $date1',
		ja='$date1下半期',
		mk='втора половина на $date1',
		ml='$date1 രണ്ടാം പകുതി',
		nb='andre halvdel av $date1',
		nn='andre halvdelen av $date1',
		nds='2. Helft vun $date1',
		nl='tweede helft $date1',
		no='andre halvdel av $date1',
		pl={'druga połowa $date1', case={'gen',''}},
		pt='segunda metade de $date1',
		qu='$date1 qhipaq kuskanpi',
		ro='a doua jumătate a lui $date1',
		ru={'вторая половина $date1', case={'gen',''}},
		sk={'2. polovica $date1', case={'gen',''}},
		sl={'druga polovica {{IfNum | $date0 | leta}} $date1', case={'gen',''}},
		sv='andra halvan av $date1',
		uk={'друга половина $date1', case={'gen',''}},
		ur='نصف آخر $date1',
		vi='nửa cuối năm $date1',
		['zh-hans']='$date1下半期',
		['zh-hant']='$date1下半期',
		default='<span style="color:red">second half of $date1</span>',
	},

	['1quarter']= {
		nDates = 1,
		bn='$date1-এর প্রথম ত্রৈমাসিক',
		['be-tarask']={'першая чвэрць $date1', case={'gen',''}},
		cs={'1. čtvrtina $date1', case={'gen',''}},
		de='erstes Viertel $date1',
		en='first quarter of $date1',
		['en-gb']='first quarter of $date1',
		['en-ca']='first quarter of $date1',
		eo='unua kvarono de $date1',
		es='primer cuarto del $date1',
		fa='ربع نخست $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 ensimmäinen neljännes' end, case={'gen',''}},
		fr= function(date1, state) return 'premier quart '.. frOf[state.precision] ..' $date1' end, 
		he='רבעון ראשון של $date1',
		hsb={'prěnja štwórćina $date1', case={'gen',''}},
		hr='prva četvrtina $date1',
		it='primo quarto del $date1',
		ja='$date1第1四半期',
		nb='første kvartal av $date1',
		nl='eerste kwart $date1',
		nn='fyrste kvartalet av $date1',
		no='første kvartal av $date1',
		pl={'pierwsza ćwiartka $date1', case={'gen',''}},
		qu='$date1 ñawpaq ñiqin tawa phatmanpi',
		ru={'первая четверть $date1', case={'gen',''}},
		sk={'1. štvrtina $date1', case={'gen',''}},
		sl={'prva četrtina {{IfNum | $date0 | leta}} $date1', case={'gen',''}},
		sl={function(date1, state) return 'prva četrtina ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='första kvartalet av $date1',
		uk={'1-ша чверть $date1', case={'gen',''}},
		ur='پہلی سہ ماہی $date1',
		vi='quý 1 năm $date1',
		['zh-hans']='$date1第一季度',
		['zh-hant']='$date1第一季度',
		default='<span style="color:red">first quarter of $date1</span>',
	},

	['2quarter']= {
		nDates = 1,
		['be-tarask']={'другая чвэрць $date1', case={'gen',''}},
		bn='$date1-এর দ্বিতীয় ত্রৈমাসিক',
		cs={'2. čtvrtina $date1', case={'gen',''}},
		de='zweites Viertel $date1',
		en='second quarter of $date1',
		['en-gb']='second quarter of $date1',
		['en-ca']='second quarter of $date1',
		eo='dua kvarono de $date1',
		es='segundo cuarto del $date1',
		fa='ربع دوم $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 toinen neljännes' end, case={'gen',''}},
		fr= function(date1, state) return 'deuxième quart '.. frOf[state.precision] ..' $date1' end, 
		he='רבעון שני של $date1',
		hsb={'druha štwórćina $date1', case={'gen',''}},
		hr='druga četvrtina $date1',
		it='secondo quarto del $date1',
		ja='$date1第2四半期',
		nb='andre kvartal av $date1',
		nl='tweede kwart $date1',
		nn='andre kvartalet av $date1',
		no='andre kvartal av $date1',
		pl={'druga ćwiartka $date1', case={'gen',''}},
		qu='$date1 iskay ñiqin tawa phatmanpi',
		ru={'вторая четверть $date1', case={'gen',''}},
		sk={'2. štvrtina $date1', case={'gen',''}},
		sl={function(date1, state) return 'druga četrtina ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='andra kvartalet av $date1',
		uk={'2-га чверть $date1', case={'gen',''}},
		ur='دوسری سہ ماہی $date1',
		vi='quý 2 năm $date1',
		['zh-hans']='$date1第二季度',
		['zh-hant']='$date1第二季度',
		default='<span style="color:red">second quarter of $date1</span>',
	},

	['3quarter']= {
		nDates = 1,
		['be-tarask']={'трэцяя чвэрць $date1', case={'gen',''}},
		bn='$date1-এর তৃতীয় ত্রৈমাসিক',
		cs={'3. čtvrtina $date1', case={'gen',''}},
		de='drittes Viertel $date1',
		en='third quarter of $date1',
		['en-gb']='third quarter of $date1',
		['en-ca']='third quarter of $date1',
		eo='tria kvarono de $date1',
		es='tercer cuarto del $date1',
		fa='ربع سوم $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 kolmas neljännes' end, case={'gen',''}},
		fr= function(date1, state) return 'troisième quart '.. frOf[state.precision] ..' $date1' end, 
		he='רבעון שלישי של $date1',
		hsb={'třeća štwórćina $date1', case={'gen',''}},
		hr='treća četvrtina $date1',
		it='terzo quarto del $date1',
		ja='$date1第3四半期',
		nb='tredje kvartal av $date1',
		nl='derde kwart $date1',
		nn='tredje kvartalet av $date1',
		no='tredje kvartal av $date1',
		pl={'trzecia ćwiartka $date1', case={'gen',''}},
		qu='$date1 kimsa ñiqin tawa phatmanpi',
		sk={'3. štvrtina $date1', case={'gen',''}},
		sl={function(date1, state) return 'tretja četrtina ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		ru={'третья четверть $date1', case={'gen',''}},
		sv='tredje kvartalet av $date1',
		uk={'3-тя чверть $date1', case={'gen',''}},
		ur='تیسری سہ ماہی $date1',
		vi='quý 3 năm $date1',
		['zh-hans']='$date1第三季度',
		['zh-hant']='$date1第三季度',
		default='<span style="color:red">third quarter of $date1</span>',
	},

	['4quarter']= {
		nDates = 1,
		['be-tarask']={'чацьвёртая чвэрць $date1', case={'gen',''}},
		bn='$date1-এর চতুর্থ ত্রৈমাসিক',
		cs={'4. čtvrtina $date1', case={'gen',''}},
		de='letztes Viertel $date1',
		en='fourth quarter of $date1',
		['en-gb']='fourth quarter of $date1',
		['en-ca']='fourth quarter of $date1',
		eo='kvara kvarono de $date1',
		es='último cuarto del $date1',
		fa='ربع چهارم $date1',
		fi={function(date1, state) return decYear(state,'fi','gen') .. '$date1 viimeinen neljännes' end, case={'gen',''}},
		fr= function(date1, state) return 'quatrième quart '.. frOf[state.precision] ..' $date1' end, 
		he='רבעון רביעי של $date1',
		hsb={'poslednja štwórćina $date1', case={'gen',''}},
		hr='četvrta četvrtina $date1',
		it='quarto quarto del $date1',
		ja='$date1第4四半期',
		nb='fjerde kvartal av $date1',
		nl='vierde kwart $date1',
		nn='tredje kvartalet av $date1',
		no='fjerde kvartal av $date1',
		pl={'czwarta ćwiartka $date1', case={'gen',''}},
		qu='$date1 qhipaq ñiqin tawa phatmanpi',
		ru={'последняя четверть $date1', case={'gen',''}},
		sk={'4. štvrtina $date1', case={'gen',''}},
		sl={function(date1, state) return 'zadnja četrtina ' .. decYear(state,'sl','gen') .. ' $date1' end, case={'gen',''}},
		sv='fjärde kvartalet av $date1',
		uk={'4-та чверть $date1', case={'gen',''}},
		ur='چوتھی سہ ماہی $date1',
		vi='quý 4 năm $date1',
		['zh-hans']='$date1第四季度',
		['zh-hant']='$date1第四季度',
		default='<span style="color:red">forth quarter of $date1</span>',
	},

	-- ==========================================
	-- === Seasons ==============================
	-- ==========================================
 	['spring'] = {
		nDates = 1,
		ar='ربيع $date1',
		['be-tarask']='вясна $date1',
		bn='বসন্তকাল $date1',
		ca='primavera $date1',
		cs={'jaro $date1', case={'gen', ''}},
		da='Forår $date1',
		de='Frühling $date1',
		en='Spring $date1',
		['en-gb']='Spring $date1',
		['en-ca']='Spring $date1',
		eo='printempo $date1',
		es='primavera de $date1',
		et='$date1 kevad',
		fa='بهار $date1',
		fi='Kevät $date1',
		fr='printemps $date1',
		gl='primavera $date1',
		he='אביב $date1',
		hr='proljeće $date1',
		hsb='nalěćo $date1',
		hu='$date1 tavasza',
		it='primavera $date1',
		ja='{{#if:$date1|$date1年}}春',
		mk='пролет $date1',
		ml='$date1 വസന്തം',
		nb='våren $date1',
		nds='Vörjohr $date1',
		nn='våren $date1',
		nl='voorjaar $date1',
		no='våren $date1',
		pl='wiosna $date1',
		pt='primavera de $date1',
		ro='primăvara lui $date1',
		ru='весна $date1',
		sk={'jar $date1', case={'gen', ''}},
		sl='pomlad $date1',
		sv='våren $date1',
		uk='весна $date1',
		ur='بہار $date1',
		vi='mùa đông năm $date1',
		['zh-hans']='{{#if:$date1|$date1年}}春季',
		['zh-hant']='{{#if:$date1|$date1年}}春季',
		default='<span style="color:red">Spring $date1</span>',
	},

	['summer'] = {
		nDates = 1,
		ar='صيف $date1',
		['be-tarask']='лета $date1',
		bn='গ্রীষ্মকাল $date1',
		ca='estiu $date1',
		cs={'léto $date1', case={'gen', ''}},
		da='Sommer $date1',
		de='Sommer $date1',
		en='Summer $date1',
		['en-gb']='Summer $date1',
		['en-ca']='Summer $date1',
		eo='somero $date1',
		es='verano de $date1',
		et='$date1 suvi',
		fa='تابستان $date1',
		fi='Kesä $date1',
		fr='été $date1',
		gl='verán $date1',
		he='קיץ $date1',
		hr='ljeto $date1',
		hsb='lěćo $date1',
		hu='$date1 nyara',
		it='estate $date1',
		ja='{{#if:$date1|$date1年}}夏',
		mk='лето $date1',
		ml='$date1 വേനൽ',
		nb='sommeren $date1',
		nds='Sommer $date1',
		nn='sumaren $date1',
		nl='zomer $date1',
		no='sommeren $date1',
		pl='lato $date1',
		pt='verão de $date1',
		ro='vara lui $date1',
		ru='лето $date1',
		sk={'leto $date1', case={'gen', ''}},
		sl='poletje $date1',
		sv='sommaren $date1',
		uk='літо $date1',
		ur='گرما $date1',
		vi='mùa hè năm $date1',
		['zh-hans']='{{#if:$date1|$date1年}}夏季',
		['zh-hant']='{{#if:$date1|$date1年}}夏季',
		default='<span style="color:red">Summer $date1</span>',
	},

	['autumn'] = {
		nDates = 1,
		ar='خريف $date1',
		['be-tarask']='восень $date1',
		bn='শরত্কাল $date1',
		ca='tardor $date1',
		cs={'podzim $date1', case={'gen', ''}},
		da='Efterår $date1',
		de='Herbst $date1',
		en='Autumn $date1',
		['en-gb']='Autumn $date1',
		['en-ca']='Autumn $date1',
		eo='aŭtuno $date1',
		es='otoño de $date1',
		et='$date1 sügis',
		fa='پاییز $date1',
		fi='Syksy $date1',
		fr='automne $date1',
		gl='outono $date1',
		he='סתיו $date1',
		hr='jesen $date1',
		hsb='nazyma $date1',
		hu='$date1 ősze',
		it='autunno $date1',
		ja='{{#if:$date1|$date1年}}秋',
		mk='есен $date1',
		ml='$date1 ശരത്കാലം',
		nb='høsten $date1',
		nds='Harvst $date1',
		nn='hausten $date1',
		nl='herfst $date1',
		no='høsten $date1',
		pl='jesień $date1',
		pt='outono de $date1',
		ro='toamna lui $date1',
		ru='осень $date1',
		sk={'jeseň $date1', case={'gen', ''}},
		sl='jesen $date1',
		sv='hösten $date1',
		uk='осінь $date1',
		ur='خزاں $date1',
		vi='mùa thu năm $date1',
		['zh-hans']='{{#if:$date1|$date1年}}秋季',
		['zh-hant']='{{#if:$date1|$date1年}}秋季',
		default='<span style="color:red">Autumn $date1</span>',
	},

	['winter'] = {
		nDates = 1,
		ar='شتاء $date1',
		['be-tarask']='зіма $date1',
		bn='শীতকাল $date1',
		ca='hivern $date1',
		cs={'zima $date1', case={'gen', ''}},
		da='Vinter $date1',
		de='Winter $date1',
		en='Winter $date1',
		['en-gb']='Winter $date1',
		['en-ca']='Winter $date1',
		eo='vintro $date1',
		es='invierno de $date1',
		et='$date1 talv',
		fa='زمستان $date1',
		fi='Talvi $date1',
		fr='hiver $date1',
		gl='inverno $date1',
		he='חורף $date1',
		hr='zima $date1',
		hsb='zyma $date1',
		hu='$date1 tele',
		it='inverno $date1',
		ja='{{#if:$date1|$date1年}}冬',
		mk='зима $date1',
		ml='$date1 ശൈത്യകാലം',
		nds='Winter $date1',
		nl='winter $date1',
		nb='vinteren $date1',
		nn='vinteren $date1',
		no='vinteren $date1',
		pl='zima $date1',
		pt='inverno de $date1',
		ro='iarna lui $date1',
		ru='зима $date1',
		sk={'zima $date1', case={'gen', ''}},
		sl='zima $date1',
		sv='vintern $date1',
		uk='зима $date1',
		ur='سرما $date1',
		vi='mùa đông năm $date1',
		['zh-hans']='{{#if:$date1|$date1年}}冬季',
		['zh-hant']='{{#if:$date1|$date1年}}冬季',
		default='<span style="color:red">Winter $date1</span>',
	},

	-- ==========================================
	-- === Decade/Century/Millennium ============
	-- ==========================================
	['decade'] = {
		nDates = 1,
		ar='أعوام $date1',
		['be-tarask']='$date1-я гады',
		bn='$date1-এর দশক',
		ca='dècada del $date1',
		cs=function(date1, state) return ((date1 % 100 == 0) and 'první dekáda' or ((date1 % 100) .. '. léta')) .. ' ' .. (math.floor(date1 / 100) + 1) .. '. století' end,
		da="$date1'erne",
		de='$date1er-Jahre',
		el='δεκαετία του $date1',
		en='$date1s',
		['en-gb']='$date1s',
		['en-ca']='$date1s',
		eo='$date1-aj jaroj',
		es='años $date1',
		et='$date1ndad',
		fa='دههٔ $date1',
		fi='$date1-luvulla',
		fr='années $date1',
		gl='anos $date1',
		he='שנות ה-$date1',
		hr='$date1-ih',
		hsb='$date1te lěta',
		hu='$date1-s évek',
		it="{{#ifexpr: $date1 mod 100 = 0 | primo decennio del {{Roman|{{#expr: ($date1 / 100) + 1}}}} sec. | anni '{{#expr: $date1 mod 100 }} del {{Roman|{{#expr: floor($date1 / 100) + 1}}}} sec.}}",
		ja='$date1年代',
		mk='$date1-ти',
		ml='ദശകം $date1-ൽ',
		nb='$date1-årene',
		nn='$date1-åra',
		nds='Johren $date1',
		nl='jaren $date1',
		no='$date1-årene',
		pl=function(date1, state) 
			local str = 'lata '..(date1 % 100)..'. '
			if (date1 % 100 == 0) then
				str = 'pierwsza dekada '
			elseif (date1 % 100 == 10) then
				str = 'druga dekada '
			end
			return str .. Roman(math.floor(date1 / 100) + 1) .. ' wieku' 
		end,
		pt='década de $date1',
		qu='$date1 watakuna',
		ro='anii $date1',
		ru='$date1-е годы',
		sk=function(date1, state) return ((date1 % 100 == 0) and 'prvé desaťročie' or ((date1 % 100) .. '. roky')) .. ' ' .. (math.floor(date1 / 100) + 1) .. '. storočia' end,
		sl='$date1-ta leta',
		sv='$date1-talet{{#switch:$date1|1300|1400|1500|1600|1700|1800|1900|2000|2100=&nbsp;(decennium)}}',
		uk='$date1-ті роки',
		ur='دہائی $date1',
		vi='thập niên $date1',
		['zh-hans']='$date1年代',
		['zh-hant']='$date1年代',
		default='<span style="color:red">$date1s</span>',
	},

	['century'] = {
		nDates = 1,
		ar='القرن $date1',
		['be-tarask']=function(date1, state) return Ordinal(date1, 'be-tarask') .. ' стагодзьдзе' end,
		bn=function(date1, state) return Ordinal(date1, 'bn') .. ' শতাব্দী' end,
		ca='segle {{small-caps|{{lc:{{Roman year|$date1}}}}}}',
		cs='$date1. století',
		da='$date1. århundrede',
		de='$date1. Jahrhundert',
		el='$date1ος αιώνας',
		en=function(date1, state) return Ordinal(date1, 'en') .. ' century' end,
		['en-gb']=function(date1, state) return Ordinal(date1, 'en-gb') .. ' century' end,
		['en-ca']=function(date1, state) return Ordinal(date1, 'en-ca') .. ' century' end,
		eo='$date1-a jarcento',
		es=function(date1, state) return 'siglo ' .. Roman(date1) end,
		et='$date1. sajand',
		fa='سدهٔ $date1',
		fi='{{#expr: ($date1 - 1) * 100}}-luvulla',
		fr=function(date1, state) return Ordinal(date1, 'fr', 'roman', 'm') .. ' siècle' end,
		gl=function(date1, state) return 'século ' .. Roman(date1) end,
		he='המאה ה-$date1',
		hr='$date1. stoljeće',
		hsb='$date1. lětstotk',
		hu='$date1. évszázad',
		it=function(date1, state) return Roman(date1) .. ' sec.' end,
		ja='$date1世紀',
		la='saeculum $date1',
		mk=function(date1, state) return Roman(date1) .. ' век' end,
		ml='$date1-ആം നൂറ്റാണ്ട്',
		nb=function(date1, state) return Ordinal(date1, 'nb') .. ' århundre' end,
		nn=function(date1, state) return 'det ' .. Ordinal(date1, 'no') .. ' århundre' end,
		nds='$date1. Johrhunnert',
		nl='$date1e eeuw',
		no=function(date1, state) return Ordinal(date1, 'no') .. ' århundre' end,
		pl=function(date1, state) return Roman(date1) .. ' ' .. decCentury('pl',state.case) end,
		pt=function(date1, state) return 'século ' .. Roman(date1) end,
		qu='$date1 ñiqin pachakwata',
		ro='secolul al $date1-lea',
		ru=function(date1, state) return Roman(date1) .. ' век' end,
		sk='$date1. storočie',
		sl=function(date1, state) return Ordinal(date1, 'sl') .. '. stoletje' end,
		sv='{{#expr:$date1 - 1}}00-talet',
		tt=function(date1, state) return Roman(date1) .. ' гасыр' end,
		uk=function(date1, state) return Roman(date1) .. ' ст.' end,
		ur='صدی $date1',
		vi='thế kỷ $date1',
		['zh-hans']='$date1世纪',
		['zh-hant']='$date1世紀',
		default='<span style="color:red">$date1 century</span>',
	},

	['millennium'] = {
		nDates = 1,
		['be-tarask']=function(date1, state) return Ordinal(date1, 'be-tarask') .. ' тысячагодзьдзе' end,
		bn=function(date1, state) return Ordinal(date1, 'bn') .. ' সহস্রাব্দ' end,
		cs='$date1. tisíciletí',
		de='$date1. Jahrtausend',
		en=function(date1, state) return Ordinal(date1, 'en') .. ' millennium' end,
		['en-gb']=function(date1, state) return Ordinal(date1, 'en-gb') .. ' millennium' end,
		['en-ca']=function(date1, state) return Ordinal(date1, 'en-ca') .. ' millennium' end,
		eo='$date1-a jarmilo',
		es=function(date1, state) return Roman(date1) .. ' milenio' end,
		fa=function(date1, state) return 'هزارهٔ ' .. Ordinal(date1, 'fa') end,
		fr=function(date1, state) return Ordinal(date1, 'fr', 'roman', 'm') .. ' millénaire' end,
		hr='$date1. tisućljeće',
		hsb='$date1. lěttysac',
		it=function(date1, state) return Roman(date1) .. ' millennio' end,
		ja='$date1千年紀',
		la='millennium $date1',
		nb=function(date1, state) return Ordinal(date1, 'nb') .. ' årtusen' end,
		nn=function(date1, state) return Ordinal(date1, 'no') .. ' tusenår' end,
		nl='$date1e millennium',
		no=function(date1, state) return Ordinal(date1, 'no') .. ' årtusen' end,
		pl=function(date1, state) return Roman(date1) .. ' ' .. decMillennium('pl',state.case) end,
		pt=function(date1, state) return Roman(date1) .. ' milénio' end,
		qu='$date1 ñiqin waranqawata',
		ru=function(date1, state) return Roman(date1) .. ' тысячелетие' end,
		sk='$date1. tisícročie',
		sl=function(date1, state) return Ordinal(date1, 'sl') .. '. tisočletje' end,
		sv=function(date1, state) return Ordinal(date1, 'sv') .. ' årtusendet' end,
		uk=function(date1, state) return Roman(date1) .. ' тис.' end,
		ur=function(date1, state) return 'ہزارہ ' .. Ordinal(date1, 'ur') end,
		vi='thiên niên kỷ $date1',
		['zh-hans']=function(date1, state) return Ordinal(date1, 'zh-hans') .. '千年' end,
		['zh-hant']=function(date1, state) return Ordinal(date1, 'zh-hant') .. '千年' end,
		--default='{{Please translate|$date1 millennium|Module:I18n/complex date}}',
		default='<span style="color:red">$date1 millennium</span>',
	},

	['million'] = {
		de = '$date1 Millionen Jahre',
		en = '$date1 million years',
		['en-gb'] = '$date1 million years',
		['en-ca'] = '$date1 million years',
		eo = '$date1 milionoj da jaroj',
		es = '$date1 millones de años',
		nl = '$date1e miljoen jaar',
		fr = '$date1 millions d’années',
		it = '$date1 milioni di anni',
		nb = '$date1 millioner år',
		nl = '$date1 miljoen jaar',
		nn = '$date1 millionar år',
		pl = '$date1 milionów lat',
		pt = '$date1 milhões de anos',
		ru = '$date1 миллиона лет',
		uk = '$date1 мільйони років',
		ur = '$date1 ملین سال',
		['zh-hans'] = '$date1百万年',
		['zh-hant'] = '$date1百万年',
		default='<span style="color:red">$date1 million years</span>',
		nDates = 1,
	},
	
	['billion'] = {
		de = '$date1 Milliarden Jahre',
		en = '$date1 billion years',
		['en-gb'] = '$date1 billion years',
		['en-ca'] = '$date1 billion years',
		es = '$date1 mil millones de años',
		nl = '$date1e miljard jaar',
		fr = '$date1 milliard d’années',
		it = '$date1 miliardi di anni',
		nb = '$date1 milliarder år',
		nl = '$date1 miljard jaar',
		nn = '$date1 milliardar år',
		pl = '$date1 miliardów lat',
		pt = '$date1 mil milhões de anos',
		ru = '$date1 миллиардов лет',
		uk = '$date1 мільярдів років',
		ur = '$date1 بلین سال',
		['zh-hans'] = '$date1十亿年',
		['zh-hant'] = '$date1十億年',
		default='<span style="color:red$date1 billion years</span>',
		nDates = 1,
	},

	-- ==========================================
	-- === Complex phrases ======================
	-- ==========================================
	-- Phrases which for some languages can be build out of simpler phrases
	-- Their "default" state, used when no translation in the requested language was found, returns a "state" like 
	-- table which is used to call the function again and built the phrase out of simple phrases

	-- $date1 - original date - 1
	-- $date2 - original date 
	-- if era is BC than $date1 and $date2 are swapped
	['turn of the century'] = { 
		nDates = 2,
		['be-tarask']=function(date1, date2, state) return 'канец ' .. Roman(date1) ..' — пачатак ' .. Roman(date2) ..' стагодзьдзя' end,
		bn=function(date1, date2, state) return '$date1/' .. Ordinal(date2, 'bn') .. ' শতাব্দীর পালাবদলে' end,
		cs='přelom $date1. a $date2. století',
		de=function(date1, date2, state) return 'Jahrhundertwende $date1/' .. Ordinal(date2, 'de') end,
		en=function(date1, date2, state) return 'turn of the $date1/' .. Ordinal(date2, 'en') .. ' century' end,
		['en-gb']=function(date1, date2, state) return 'turn of the $date1/' .. Ordinal(date2, 'en-gb') .. ' century' end,
		['en-ca']=function(date1, date2, state) return 'turn of the $date1/' .. Ordinal(date2, 'en-ca') .. ' century' end,
		eo='ŝanĝo de la $date1-a al la $date2-a jarcentoj',
		es=function(date1, date2, state) return 'hacia finales del siglo ' .. Roman(date1) .. ' y principios del siglo ' .. Roman(date2) .. '' end,
		fi='{{#expr: $date1 * 100-100}}-luvun loppu ja {{#expr: $date2 * 100-100}}-luvun alku',
		fr=function(date1, date2, state) return 'fin du ' .. Ordinal(date1, 'fr', 'roman', 'm') .. ' siècle / début du ' .. Ordinal(date2, 'fr', 'roman', 'm') end,
		hr='kraj $date1. i početak $date2. stoljeća',
		hsb=function(date1, date2, state) return 'přechod ' .. Roman(date1) ..' do ' .. Roman(date2) ..' lětstotka' end,
		it=function(date1, date2, state) return 'fine del ' .. Roman(date1) .. ' sec. e inizio del ' .. Roman(date2) .. ' sec.' end,
		ja='$date1世紀から$date2世紀への変わり目',
		nb=function(date1, date2, state) return 'slutten av det ' .. Ordinal(date1, 'nb') .. ' århundre/begynnelsen av det ' .. Ordinal(date2, 'nb') .. ' århundre' end,
		nl=function(date1, date2, state) return 'eind $date1e/begin $date2e eeuw' end,
		nn=function(date1, date2, state) return 'slutten av det ' .. Ordinal(date1, 'nn') .. ' hundreåret/byrjinga av det ' .. Ordinal(date2, 'nn') .. ' hundreåret' end,
		pl=function(date1, date2, state) return 'przełom ' .. Roman(date1) ..' i ' .. Roman(date2) ..' wieku' end,
		qu="$date1 ñiqin waranqawatamanta $date2 ñiqin waranqawataman t'ikrasqanpi",
		ru=function(date1, date2, state) return 'конец ' .. Roman(date1) ..' — начало ' .. Roman(date2) ..' века' end,
		sk='prelom $date1. a $date2. storočia',
		sl=function(date1, date2, state) return 'pozno ' .. Ordinal(date1, 'sl') .. '. in zgodnje ' .. Ordinal(date2, 'sl') .. '. stoletje' end,
		sv=function(date1, date2, state) return '$date1/' .. Ordinal(date2, 'sv') .. ' årtusendets sekelskifte' end,
		uk=function(date1, date2, state) return 'кін. ' .. Roman(date1) ..' ст. — поч. ' .. Roman(date2) ..' ст.' end,
		vi='bước sang thế kỷ $date2',
		['zh-hans']=function(date1, date2, state) return '$date1世纪末' .. Ordinal(date2, 'zh-hans') .. '世纪初' end,
		['zh-hant']=function(date1, date2, state) return '$date1世紀末' .. Ordinal(date2, 'zh-hant') .. '世紀初' end,
		default=function(date1, date2, state) return {conj='and', adj1 = 'late', unit1='century', era1=state.era1, adj2 = 'early',  unit2='century', era2=state.era2} end,
	},

	-- $date1 - original date - 10
	-- $date2 - original date 
	-- if era is BC than $date1 and $date2 are swapped
	['turn of the decade']={
		nDates = 2,
		['be-tarask']='канец $date1-х — пачатак $date2-х гг.',
		bn='$date1-এর দশকের শেষে এবং $date2-এর দশকের শুরুতে',
		cs=function(date1, date2, state)
			local decade1  = math.floor((date1 % 100) / 10)
			local decade2  = math.floor((date2 % 100) / 10)
			local century1 = math.floor( date1 / 100) + 1
			local century2 = math.floor( date2 / 100) + 1
			if decade1 == 0 and date1 < date2 then
				return "přelom 1. a 2. dekády " .. century1 .. ". století"
			elseif decade2 == 0 and date2 < date1 then
				return "přelom 9. a 10. dekády " .. century1 .. ". století"
			elseif (decade1 == 9 and date1 < date2) or (decade2 == 9 and date2 < date1) then
				return "přelom " .. century1 .. ". a " .. century2 .. ". století"
			else
				return "přelom " .. decade1 .. "0. a " .. decade2 .. "0. let " .. century1 .. ". století"
			end
		end,
		de='späte $date1er und frühe $date2er',
		en='late $date1s and early $date2s',
		['en-gb']='late $date1s and early $date2s',
		['en-ca']='late $date1s and early $date2s',
		eo='ŝanĝo de la $date1-a al la $date2-a jardekoj',
		es='finales de los años $date1 y principios de los años $date2',
		fa='اواخر دههٔ $date1 و اوایل دههٔ $date2',
		fi='$date1-luvun loppu ja $date2-luvun alku',
		fr='fin des années $date1 / début des années $date2',
		hr='kraj $date1-ih i početak $date2-ih',
		hsb='pózdnje $date1te a zažne $date2te lěta',
		it='fine degli anni $date1 / inizio degli anni $date2',
		ja='$date1年代末から$date2年代初頭',
		nb = 'sent på $date1-tallet og tidlig på $date2-tallet',
		nl = 'eind $date1e/begin $date2e decennium',
		nn = 'seint på $date1-talet og tidleg på $date2-talet',
		pl=function(date1, date2, state)
			local decade1  = math.floor(date1 % 100)
			local decade2  = math.floor(date2 % 100)
			local century1 = Roman(math.floor( date1 / 100) + 1)
			local century2 = Roman(math.floor( date2 / 100) + 1)
			if decade1 == 0 and date1 < date2  then
				return "przełom pierwszej i drugiej dekady " .. century1 .. " wieku"
			elseif decade1 == 10 and date1 < date2  then
				return "przełom drugiej dekady i lat 20. " .. century1 .. " wieku"
			elseif decade1 == 90 and decade2 == 0 then
				return "przełom ostatniej dekady " .. century1 .. " i pierwszej dekady " .. century2 .. " wieku"
			else
				return "przełom lat " .. decade1 .. ". i " .. decade2 .. ". " .. century1 .. " wieku"
			end
		end,
		qu='qhipaq $date1 watakuna ñawpaq $date2 watakunapas',
		ru='конец $date1-х — начало $date2-х гг.',
		sv='sena $date1-talet och tidiga $date2-talet',
		sk=function(date1, date2, state)
			local decade1  = math.floor((date1 % 100) / 10)
			local decade2  = math.floor((date2 % 100) / 10)
			local century1 = math.floor( date1 / 100) + 1
			local century2 = math.floor( date2 / 100) + 1
			if decade1 == 0 and date1 < date2 then
				return "prelom 1. a 2. desaťročia " .. century1 .. ". storočia"
			elseif decade2 == 0 and date2 < date1 then
				return "prelom 9. a 10. desaťročia " .. century1 .. ". storočia"
			elseif (decade1 == 9 and date1 < date2) or (decade2 == 9 and date2 < date1) then
				return "prelom " .. century1 .. ". a " .. century2 .. ". storočia"
			else
				return "prelom " .. decade1 .. "0. a " .. decade2 .. "0. rokov " .. century1 .. ". storočia"
			end
		end,
		sl='pozna $date1-ta in zgodnja $date2-ta leta',
		uk='кінець $date1-х — початок $date2-х рр.',
		ur='اخیر دہائی $date1 و ابتدا دہائی $date2',
		vi='bước sang thập niên $date2',
		['zh-hans']='$date1年代末$date2年代初',
		['zh-hant']='$date1年代末$date2年代初',
		default=function(date1, date2, state) return {conj='and', adj1 = 'late', unit1='decade', era1=state.era1, adj2 = 'early',  unit2='decade', era2=state.era2} end,
	},

	-- $date1 - original date - 1
	-- $date2 - original date
	-- if era is BC than $date1 and $date2 are swapped
	['turn of the year']={
		nDates = 2,
		['be-tarask']='канец $date1 — пачатак $date2 г.',
		bn='$date1-এর শেষে এবং $date2-এর শুরুতে',
		cs='přelom roku $date1/$date2',
		de='Jahreswechsel $date1/$date2',
		en='late $date1 and early $date2',
		['en-gb']='late $date1 and early $date2',
		['en-ca']='late $date1 and early $date2',
		eo='jarŝanĝo $date1 / $date2',
		es='finales de $date1 y principios de $date2',
		fa='اواخر $date1 و اوایل $date2',
		fi='vuoden $date1 loppu ja vuoden $date2 alku',
		fr='fin $date1 / début $date2',
		hsb='kónc $date1/spočatk $date2',
		ja='$date1年末から$date2年初め',
		nb='årsskiftet $date1/$date2',
		nl='eind $date1 en begin $date2',
		nn='årsskiftet $date1/$date2',
		pl='koniec $date1 i początek $date2 roku',
		qu="$date1 qhipaq p'unchawkuna $date2 ñawpaq p'unchawkunapas",
		ru='конец $date1 — начало $date2 г.',
		sk='prelom rokov $date1/$date2',
		sl='konec leta $date1 in začetek $date2',
		sv='sena $date1 och tidiga $date2',
		uk='кінець $date1 — початок $date2 р.',
		ur='اخیر $date1 و ابتدا $date2',
		vi='bước sang năm $date2',
		['zh-hans']='$date1年末$date2年初',
		['zh-hant']='$date1年末$date2年初',
		default=function(date1, date2, state) return {conj='and', adj1 = 'late', unit1='year', era1=state.era1, adj2 = 'early',  unit2='year', era2=state.era2} end,
	},

	['circa2'] = {
		nDates = 2,
		ar='حوالي $date1 – $date2',
		['be-tarask']={'прыкладна з $date1 да прыкладна $date2', case={'gen','gen'}},
		bn='প্রায় $date1 এবং প্রায় $date2-এর মাঝামাঝি',
		ca='cap a $date1 o $date2',
		cs='cca $date1 až $date2',
		da='ca. mellem $date1 og $date2',
		de='etwa $date1 bis $date2',
		el='περίπου μεταξύ $date1 και $date2',
		en='between circa $date1 and circa $date2',
		['en-gb']='between circa $date1 and circa $date2',
		['en-ca']='between circa $date1 and circa $date2',
		eo='proksimume de $date1 ĝis $date2',
		es='hacia $date1 o $date2',
		et='ca. $date1 ja $date2 vahel',
		fa='حدوداً بین $date1 و $date2', 
		fi={function(date1, date2, state) return 'suunnilleen ' .. decYear(state,'fi','xxx') .. '$date1 ja $date2 välisenä aikana' end, case={'gen','gen'}},
		fr='vers $date1-$date2',
		gl='entre $date1 e $date2',
		he='בסביבות ה- $date1 עד $date2',
		hr='oko između $date1 i $date2',
		hsb={'wot něhdźe $date1 do něhdźe $date2', case={'gen','gen'}},
		hu='$date1 és $date2 között',
		it='tra il $date1 e il $date2 circa',
		ja='$date1頃と$date2頃の間',
		mk='~ помеѓу $date1 и $date2',
		nb='ca. mellom $date1 og $date2',
		nn='ca. mellom $date1 og $date2',
		nds='üm un bi $date1 bet $date2',
		nl='ca. $date1 tot $date2',
		no='ca. mellom $date1 og $date2',
		pl={'od około $date1 do około $date2', case={'gen','gen'}},
		pt='cerca de $date1 a $date2',
		qu="$date1 p'unchawmantachá $date2 p'unchawkamachá",
		ro='circa $date1 – $date2',
		ru={'с около $date1 до, примерно, $date2', case={'gen','gen'}},
		sk='cca $date1 až $date2',
		sl={function(date1, date2, state) return 'ok. ' .. decYear(state,'sl','gen') .. ' $date1 do $date2' end, case={'gen','gen'}},
		sv='c:a $date1 till $date2',
		uk={'з близько $date1 до, приблизно, $date2', case={'gen','gen'}},
		ur='قریباً بین $date1 و $date2', 
		vi='giữa vào khoảng $date1 và vào khoảng $date2',
		['zh-hans']='约$date1~$date2间',
		['zh-hant']='約$date1~$date2間',
		default=function(date1, date2, state) return {conj='between', adj1 = 'circa', unit1=state.unit1, era1=state.era1, adj2 = 'circa',  unit2=state.unit2, era2=state.era2} end,
	},

	-- ==========================================
	-- === Eras and calendars ===================
	-- ==========================================
	['julian'] = {
		nDates = 2,
		ar='$date1 ($date2 حسب [[w:ar:التقويم اليولياني|تقويم يولياني]])',
		['be-tarask']='$date1 ($date2 паводле [[w:be-tarask:Юліянскі каляндар|ст. ст.]]',
		bn='$date1 (জুলিয়ান ক্যালেন্ডারে $date2)',
		ca='$date1 ($date2 segons el [[w:ca:Calendari julià|calendari julià]])',
		cs='$date1 ($date2 podle [[w:cs:Juliánský kalendář|juliánského kalendáře]])',
		da='$date1 ($date2 [[w:da:Julianske kalender|Julianske kalender]])',
		de='$date1 ($date2 [[w:de:Julianischer Kalender|Julianischer Kalender]])',
		el='$date1 ($date2 με το [[w:el:Ιουλιανό ημερολόγιο|Ιουλιανό ημερολόγιο]])',
		en='$date1 ($date2 in [[w:Old Style and New Style dates|Julian calendar]])',
		['en-gb']='$date1 ($date2 in [[w:Old Style and New Style dates|Julian calendar]])',
		['en-ca']='$date1 ($date2 in [[w:Old Style and New Style dates|Julian calendar]])',
		fa='$date1 ($date2 در [[w:fa:Old Style and New Style dates|تقویم جولیان]])',
		eo='$date1 ($date2 laŭ la [[w:eo:Julia kalendaro|Julia Kalendaro]])',
		es='$date1 ($date2 según el [[w:es:Calendario juliano|calendario juliano]])',
		et='$date1 ($date2 [[w:et:Juliuse kalender|Juliuse kalendris]])',
		fi='$date1 ($date2 [[w:fi:juliaaninen kalenteri|juliaanisen kalenterin]] mukaan)',
		fr='$date1 ($date2 dans le [[w:fr:calendrier julien|calendrier julien]])',
		gl='$date1 ($date2 segundo o [[w:gl:Calendario xuliano|calendario xuliano]])',
		hu='$date1 ($date2 a [[w:hu:Julianus-naptár|Julián naptárban]])',
		hr='$date1 ($date2 prema [[w:hr:Julijanski kalendar|julijanskom kalendaru]])',
		he='$date1 ($date2 ב[[w:he:לוח היוליאני|הלוח היוליאני]])',
		hsb='$date1 ($date2 po julianiskej protyce)',
		it='$date1 ($date2 secondo il [[w:it:Calendario giuliano|calendario giuliano]])',
		ja='$date1([[w:ja:ユリウス暦|ユリウス暦]] $date2)',
		mk='$date1 ($date2 по [[w:mk:Јулијански календар|Јулијанскиот календар]])',
		ml='$date1 ([[w:Old Style and New Style dates|ജൂലിയൻ കാലഗണനാരീതിയിൽ]] $date2)',
		nds='$date1 ($date2 na’n [[w:nds:Juliaansch Klenner|Juliaanschen Klenner]])',
		nb='$date1 ($date2 etter [[w:no:Juliansk kalender|den julianske kalenderen]])',
		nn='$date1 ($date2 etter [[w:no:Juliansk kalender|den julianske kalenderen]])',
		nl='$date1 ($date2 volgens de [[w:nl:Juliaanse kalender|Juliaanse kalender]])',
		no='$date1 ($date2 etter [[w:no:Juliansk kalender|den julianske kalender]])',
		pl='$date1 ($date2 wedle [[w:pl:Daty nowego i starego porządku|kalendarza juliańskiego]])',
		pt='$date1 ($date2 no [[w:pt:Mudança para o calendário gregoriano|calendário juliano]])',
		qu='$date1 ($date2 [[w:qu:Hulyanu kalindaryu|Hulyanu kalindaryupi]])',
		ro='$date1 ($date2 în [[w:ro:calendarul iulian|calendarul iulian]])',
		ru='$date1 ($date2 [[w:ru:Юлианский календарь|по ст. ст.]])',
		sk='$date1 ($date2 podľa [[w:sk:Juliánsky kalendár|juliánskeho kalendára]])',
		sl='$date1 ($date2 po [[w:sl:Julijanski koledar|julijanskem koledarju]])',
		sv='$date1 ($date2 [[w:sv:Gamla stilen|gamla stilen]])',
		uk='$date1 ($date2 [[w:uk:Юліанський календар|Юліанський календар]])',
		ur='$date1 ($date2 حسب [[w:ur:نئے اور پانے انداز کی تاریخ|جولین تقویم]])',
		vi='$date1 ($date2 trong [[w:vi:Lịch Julius|lịch Juliêng]])',
		['zh-hans']='$date1([[w:Old Style and New Style dates|格里历]]$date2)',
		['zh-hant']='$date1([[w:Old Style and New Style dates|格里曆]]$date2)',		
		default='<span style="color:red">$date1 ($date2 in [[w:Old Style and New Style dates|Julian calendar]])</span>',
	},
	
	['ad'] = {
		nDates = 1,
		['be-tarask']='$date1 [[w:be-tarask:ад Нараджэньня Хрыста|пасьля Н. Х.]]',
		bn ='$date1 খ্রিস্টাব্দ',
		ca ='$date1 dC',
		cs ='$date1 n. l.',
		de ='$date1 n. Chr.',
		el ='$date1 μ.Χ.',
		en ='$date1 [[w:en:Anno Domini|AD]]',
		['en-gb'] ='$date1 [[w:en:Anno Domini|AD]]',
		['en-ca'] ='$date1 [[w:en:Anno Domini|AD]]',
		eo ='$date1 pK',
		es ='$date1 [[w:es:Anno Dómini|d. C.]]',
		fa ='$date1 م.',
		fi ='$date1 jaa.',
		fr ='$date1 ap. J.-C.',
		gl ='$date1 d.C.',
		he ='$date1 לספירה',
		hu ='i. sz. $date1',
		hr ='$date1 p. Kr.',
		hsb='$date1 po Chr.',
		it ='$date1 d.C.',
		ja ='西暦$date1',
		mk ='$date1 н.е.',
		ml ='ക്രി.വ. $date1',
		nb ='$date1 e.Kr.',
		nl ='$date1 n.Chr.',
		nn ='$date1 e.Kr.',
		no ='$date1 e.Kr.',
		pl ='$date1 [[w:pl:naszej ery|n.e.]]',
		ro ='$date1 d.Hr.',
		ru ='$date1 н. э.',
		sk ='$date1 po Kr.',
		sl ='$date1 n. št.',
		sv ='$date1 [[w:sv:Efter Kristus|e.Kr.]]',
		uk ='$date1 н. е.',
		ur ='$date1 ء',
		vi ='$date1 [[w:vi:Công Nguyên|CN]]',
		['zh-hans'] ='[[w:zh:基督纪年|公元]]$date1',
		['zh-hant'] ='[[w:zh:基督纪年|公元]]$date1',
		default='<span style="color:red">$date1 [[w:en:Anno Domini|AD]]</span>',
	}, 
	
	['ah'] = {
		nDates = 1,
		['be-tarask']='$date1 [[w:be-tarask:Ісламскі каляндар|хіджры]]',
		bn ='$date1 [[w:bn:ইসলামি বর্ষপঞ্জি|হিজরী]]',
		cs ='$date1 [[w:cs:Anno Hegirae|AH]]',
		en ='$date1 [[w:en:Hijri year|AH]]',
		['en-gb'] ='$date1 [[w:en:Hijri year|AH]]',
		['en-ca'] ='$date1 [[w:en:Hijri year|AH]]',
		eo ='$date1 post la [[w:eo:Heĝiro|Heĝiro]]',
		fa ='$date1 ه.ق.',
		fr ='$date1 [[w:fr:Calendrier musulman|A.H.]]',
		he ="$date1 [[w:he:הלוח המוסלמי|להג'רה]]",
		hr ='$date1 god. hidžre',
		ja ='[[w:ja:ヒジュラ暦|ヒジュラ暦]]$date1',
		nb ='$date1 [[w:no:Den muslimske kalenderen|A.H.]]',
		nn ='$date1 [[w:nn:Den muslimske kalenderen|A.H.]]',
		pl ='$date1 [[w:pl:Kalendarz muzułmański|A.H.]]',
		ru ='$date1 [[w:ru:Исламский календарь|хиджры]]',
		sk ='$date1 [[w:sk:A. H.|A. H.]]',
		sv ='$date1 [[w:sv:Muslimska kalendern|A.H.]]',
		uk ='$date1 [[w:uk:Мусульманський календар|хіджри]]',
		ur ='$date1 ھ',
		vi ='$date1 [[w:vi:Lịch Hồi giáo|AH]]',
		['zh-hans'] ='[[w:en:Hijri year|Hijri历]]$date1',
		['zh-hant'] ='[[w:en:Hijri year|Hijri曆]]$date1',
		default='<span style="color:red">$date1 [[w:en:Hijri year|AH]]</span>',
	},
	
 	['bc'] = {
		nDates = 1,
		ar ='$date1 ق.م.',
		['be-tarask']='$date1 [[w:be-tarask:да Нараджэньня Хрыста|да Н. Х.]]',
		bn ='খ্রিস্টপূর্ব $date1',
		ca ='$date1 [[w:ca:Abans de Crist|aC]]',
		cs ='$date1 [[w:cs:Př. n. l.|př. n. l.]]',
		de ='$date1 [[w:de:v. Chr.|v. Chr.]]',
		el ='$date1 π.Χ.',
		en ='$date1 [[w:en:Ante Christum Natum|BC]]',
		['en-gb'] ='$date1 [[w:en:Ante Christum Natum|BC]]',
		['en-ca'] ='$date1 [[w:en:Ante Christum Natum|BC]]',
		eo ='$date1 aK',
		es ='$date1 [[w:es:Antes de Cristo|a. C.]]',
		fa ='$date1 پ.م.',
		fi ='$date1 eaa.',
		fr ='$date1 av. J.-C.',
		gl ='$date1 [[w:gl:Antes de Cristo|a.C.]]',
		he ='$date1 לפני הספירה',
		hr ='$date1 [[w:hr:Pr. Kr.|pr. Kr.]]',
		hsb='$date1 do Chr.',
		hu ='i. e. $date1',
		it ='$date1 [[w:it:Avanti Cristo|a.C.]]',
		ja ='[[w:ja:紀元前|紀元前]]$date1',
		mk ='$date1 п.н.е.',
		ml ='ക്രി.മു. $date1',
		nds='$date1 vör uns Tied',
		nb ='$date1 f.Kr.',
		nl ='$date1 v.Chr.',
		nn ='$date1 f.Kr.',
		no ='$date1 f.Kr.',
		pl ='$date1 [[w:pl:przed naszą erą|p.n.e.]]',
		ro ='$date1 î.Hr.',
		ru ='$date1 до н. э.',
		sk ='$date1 [[w:sk:Pred Kristom|pred Kr.]]',
		sl ='$date1 pr. n. št.',
		sv ='$date1 [[w:sv:Före Kristus|f.Kr.]]',
		uk ='$date1 до н. е.',
		ur ='$date1 ق م',
		vi ='$date1 [[w:vi:Trước Công Nguyên|TCN]]',
		['zh-hans'] ='[[w:zh:基督纪年|公元前]]$date1',
		['zh-hant'] ='[[w:zh:基督纪年|公元前]]$date1',
		default='<span style="color:red">$date1 [[w:en:Ante Christum Natum|BC]]</span>',
	}, 
	
	['bp'] = {
		nDates = 1,
		ar ='$date1 [[w:ar:قبل الحاضر|قبل الحاضر]]',
		be ='$date1 [[w:be-tarask:Да нашых дзён|Да нашых дзён]]',
		['be-tarask']='$date1 [[w:be-tarask:Да нашых дзён|Да нашых дзён]]',
		bn ='বর্তমানের আগে $date1',
		ca ='$date1 [[w:ca:BP (unitat de temps)|BP]]',
		cs ='$date1 [[w:cs:B. P.|B. P.]]',
		de ='$date1 [[w:de:Before Present|BP]]',
		el ='$date1 [[w:en:Before Present|BP]]',
		en ='$date1 [[w:en:Before Present|BP]]',
		['en-gb'] ='$date1 [[w:en:Before Present|BP]]',
		['en-ca'] ='$date1 [[w:en:Before Present|BP]]',
		eo='$date1 [[w:eo:Before Present|BP]]',
		es ='$date1 [[w:es:Before Present|BP]]',
		et ='$date1 [[w:et:Before Present|BP]]',
		fa ='$date1 پیش از اکنون',
		fi ='$date1 [[w:fi:BP (ajanlasku)|BP]]',
		fr ='$date1 [[w:fr:Avant le présent|avant le présent]]',
		hr ='$date1 [[w:hr:BP|prije današnjice]]',
		it ='$date1 [[w:it:Before Present|BP]]',
		ja ='$date1 [[w:ja:BP (年代測定)|BP]]',
		lv ='$date1 [[w:lv:Pirms mūsdienām|Pirms mūsdienām]]',
		mk ='$date1 [[w:mk:Пред сегашноста|п.с.]]',
		ml ='[[w:en:Before Present|ഇന്നത്തെ കാലത്തിനു മുമ്പ്]] $date1',
		nb ='$date1 [[w:no:Before Present|BP]]',
		nn ='$date1 [[w:nn:Before Present|BP]]',
		nl ='$date1 [[w:nl:Before Present|BP]]',
		no ='$date1 [[w:no:Before Present|BP]]',
		pl ='$date1 [[w:pl:Before Present|BP]]',
		pt ='$date1 [[w:pt:Antes do Presente|Antes do Presente]]',
		ru ='$date1 [[w:ru:До настоящего времени|до н. в.]]',
		sk ='$date1 [[w:sk:BP (čas)|BP]]',
		sl ='$date1 [[w:sl:pred sedanjostjo|p. s.]]',
		sr ='$date1 [[w:sr:Прије садашњости|Прије садашњости]]',
		sv ='$date1 [[w:sv:B.P.|B.P.]]',
		uk ='$date1 [[w:uk:Років тому|Років тому]]',
		ur ='$date1 قبل حاضر',
		vi ='$date1 [[w:en:Before Present|trước ngày nay]]',
		['zh-hans'] ='[[w:zh:距今|距今]]$date1',
		['zh-hant'] ='[[w:zh:距今|距今]]$date1',
		default='<span style="color:red">$date1 [[w:en:Before Present|BP]]</span>',
	},
}

-- List of possible string inputs to "adj", "junction", "era", and "precision" fields
-- Each term is matched to its synonym and the role: a - adjective, e - era
-- p - precision, c - calendar and combos, r - certainty and j - conjunction
p.Synonyms = {
	-- adjectives and prepositions
	['quarter1']={'1quarter','a'},
	['1stquarter']={'1quarter','a'},
	['1st quarter']={'1quarter','a'},
	['first quarter']={'1quarter','a'},
	['1quarter']={'1quarter','a'},
	['quarter2']={'2quarter','a'},
	['2ndquarter']={'2quarter','a'},
	['2nd quarter']={'2quarter','a'},
	['second quarter']={'2quarter','a'},
	['2quarter']={'2quarter','a'},
	['quarter3']={'3quarter','a'},
	['3rdquarter']={'3quarter','a'},
	['3rd quarter']={'3quarter','a'},
	['third quarter']={'3quarter','a'},
	['3quarter']={'3quarter','a'},
	['quarter4']={'4quarter','a'},
	['4thquarter']={'4quarter','a'},
	['4th quarter']={'4quarter','a'},
	['fourth quarter']={'4quarter','a'},
	['4quarter']={'4quarter','a'},
	['spring']={'spring','a'},
	['summer']={'summer','a'},
	['fall']={'autumn','a'},
	['autumn']={'autumn','a'},
	['winter']={'winter','a'},
	['beginning']={'early','a'},
	['early']={'early','a'},
	['1half']={'firsthalf','a'},
	['1sthalf']={'firsthalf','a'},
	['1st half']={'firsthalf','a'},
	['firsthalf']={'firsthalf','a'},
	['first half']={'firsthalf','a'},
	['end']={'late','a'},
	['late']={'late','a'},
	['middle']={'mid','a'},
	['mid']={'mid','a'},
	['2half']={'secondhalf','a'},
	['2ndhalf']={'secondhalf','a'},
	['2nd half']={'secondhalf','a'},
	['secondhalf']={'secondhalf','a'},
	['second half']={'secondhalf','a'},
	['<']={'before','a'},
	['b']={'before','a'},
	['before']={'before','a'},
	['>']={'after','a'},
	['a']={'after','a'},
	['after']={'after','a'},
	['~']={'circa','a'},
	['c']={'circa','a'},
	['ca']={'circa','a'},
	['circa']={'circa','a'},
	['by']={'by','a'},
	['from']={'from','a'},
	['until']={'until','a'},
	['uncertain']={'uncertain','r'},
	['possibly']={'possibly','r'},
	['probably']={'probably','r'},
	['presumably']={'presumably','r'},

	-- eras
	['bc']={'bc','e'},
	['bce']={'bc','e'},
	['before present']={'bp','e'},
	['bp']={'bp','e'},
	['ce']={'ad','e'},
	['ad']={'ad','e'},
	['ah']={'ah','e'},

	-- conjunctions
	['&']={'and','j'},
	['and']={'and','j'},
	['or']={'or','j'},
	['-']={'from-until','j'},
	['–']={'from-until','j'},
	['from-until']={'from-until','j'},
	['between']={'between','j'},
	['circa2']={'circa2','a'},
	
	-- precision
	['day']={'day','p'},
	['month']={'month','p'},
	['year']={'year','p'},
	['s']={'decade','p'},
	['decade']={'decade','p'},
	['century']={'century','p'},
	['millennium']={'millennium','p'},
	['million']={'million','p'},
	['billion']={'billion','p'},

	-- calendar
	['julian']={'julian','c'},
	['islamic']={'islamic','c'},
	['hijri']={'islamic','c'},
	
	-- "Turn of the ..." options are a combos which will be handled in similar way as calendars
	['turn of the century']={'turn of the century','c'},
	['century turn']={'turn of the century','c'},
	['turn of the decade']={'turn of the decade','c'},
	['decade turn']={'turn of the decade','c'},
	['turn of the year']={'turn of the year','c'},
	['year turn']={'turn of the year','c'},

	-- other dates which will be handled in similar way as calendars
	['?']={'unknown','c'},
	['unknown']={'unknown','c'},
	['unknown year']={'year unknown','c'},
	['year unknown']={'year unknown','c'},
}

return p