<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3AYear_in_other_calendars</id>
	<title>وحدة:Year in other calendars - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%88%D8%AD%D8%AF%D8%A9%3AYear_in_other_calendars"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Year_in_other_calendars&amp;action=history"/>
	<updated>2026-06-07T08:13:43Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Year_in_other_calendars&amp;diff=247&amp;oldid=prev</id>
		<title>عبد العزيز: استرجاع تعديلات Redaking (نقاش) حتى آخر نسخة بواسطة عبد الله</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%88%D8%AD%D8%AF%D8%A9:Year_in_other_calendars&amp;diff=247&amp;oldid=prev"/>
		<updated>2020-12-21T12:21:48Z</updated>

		<summary type="html">&lt;p&gt;استرجاع تعديلات &lt;a href=&quot;/%D8%AE%D8%A7%D8%B5:%D9%85%D8%B3%D8%A7%D9%87%D9%85%D8%A7%D8%AA/Redaking&quot; title=&quot;خاص:مساهمات/Redaking&quot;&gt;Redaking&lt;/a&gt; (&lt;a href=&quot;/index.php?title=%D9%86%D9%82%D8%A7%D8%B4_%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85:Redaking&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;نقاش المستخدم:Redaking (الصفحة غير موجودة)&quot;&gt;نقاش&lt;/a&gt;) حتى آخر نسخة بواسطة &lt;a href=&quot;/index.php?title=%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85:%D8%B9%D8%A8%D8%AF_%D8%A7%D9%84%D9%84%D9%87&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;مستخدم:عبد الله (الصفحة غير موجودة)&quot;&gt;عبد الله&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Load dependencies.&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local numToRoman = require( &amp;#039;Module:Roman&amp;#039; ).main&lt;br /&gt;
local getOlympiad = require( &amp;#039;Module:Ancient Olympiads&amp;#039; )._main&lt;br /&gt;
local getDynasty = require( &amp;#039;Module:Ancient Egypt era&amp;#039; )._main&lt;br /&gt;
local getPharaoh = require( &amp;#039;Module:Ancient Egypt kings&amp;#039; )._main&lt;br /&gt;
local numToArmenian = require( &amp;#039;Module:Armenian&amp;#039; ).main&lt;br /&gt;
local getRegnal = require( &amp;#039;Module:British regnal year&amp;#039; ).main&lt;br /&gt;
local japaneseEra = require( &amp;#039;Module:Japanese calendar&amp;#039; ).era()&lt;br /&gt;
&lt;br /&gt;
-- Define constants.&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
local currentYear = tonumber( lang:formatDate( &amp;#039;Y&amp;#039; ) )&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function isInteger( num )&lt;br /&gt;
	-- Checks if a value is an integer. If so, returns the value converted to a number.&lt;br /&gt;
	-- If not, returns false.&lt;br /&gt;
	num = tonumber( num )&lt;br /&gt;
	if num and math.floor( num ) == num and num ~= math.huge then&lt;br /&gt;
		return num&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function BCToNum( s )&lt;br /&gt;
	-- Converts strings of the format &amp;quot;n BC&amp;quot; to their corresponding&lt;br /&gt;
	-- numerical values.&lt;br /&gt;
	if type( s ) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	s = mw.ustring.match( mw.ustring.upper( s ), &amp;#039;^([1-9]%d*)%s*ق م$&amp;#039; )&lt;br /&gt;
	if not s then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local num = tonumber( s )&lt;br /&gt;
	num = ( num - 1 ) * -1&lt;br /&gt;
	return num&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function numToBC( num )&lt;br /&gt;
	-- For BC years, returns a string with the year name appended with &amp;quot; BC&amp;quot;.&lt;br /&gt;
	-- Otherwise returns nil.&lt;br /&gt;
	num = isInteger( num )&lt;br /&gt;
	if not num then return end&lt;br /&gt;
	if num &amp;lt;= 0 then&lt;br /&gt;
		return string.format( &amp;#039;%d ق م&amp;#039;, 1 - num )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatNegative(s)&lt;br /&gt;
	-- Replaces hyphens in a string with minus signs if the hyphen comes before a number.&lt;br /&gt;
	s = mw.ustring.gsub( s, &amp;#039;%-(%d)&amp;#039;, &amp;#039;−%1&amp;#039; )&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
-- Calendar box class definition&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local calendarBox = {}&lt;br /&gt;
calendarBox.__index = calendarBox&lt;br /&gt;
&lt;br /&gt;
function calendarBox:new( init )&lt;br /&gt;
	init = type( init ) == &amp;#039;table&amp;#039; and init or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	local pagename = mw.title.getCurrentTitle().text&lt;br /&gt;
&lt;br /&gt;
	-- Set the year. If the year is specified as an argument, use that.&lt;br /&gt;
	-- Otherwise, use the page name if it is valid. If the pagename isn&amp;#039;t&lt;br /&gt;
	-- valid, use the current year.&lt;br /&gt;
	local yearNum = isInteger( init.year )&lt;br /&gt;
	if yearNum then -- First, see if the year parameter is a number.&lt;br /&gt;
		self.year = yearNum&lt;br /&gt;
	else&lt;br /&gt;
		local yearBC = BCToNum( init.year )&lt;br /&gt;
		if yearBC then -- Second, see if the year parameter is a &amp;quot;yyyy ق م&amp;quot; string.&lt;br /&gt;
			self.year = yearBC&lt;br /&gt;
		else&lt;br /&gt;
			local pageNum = isInteger( pagename )&lt;br /&gt;
			if pageNum then -- Third, see if the pagename is an integer.&lt;br /&gt;
				self.year = pageNum&lt;br /&gt;
			else&lt;br /&gt;
				local pageBC = BCToNum( pagename )&lt;br /&gt;
				if pageBC then -- Fourth, see if the pagename is a &amp;quot;yyyy ق م&amp;quot; string.&lt;br /&gt;
					self.year = pageBC&lt;br /&gt;
				else&lt;br /&gt;
					self.year = currentYear -- If none of the above apply, use the current year.&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set year text values.&lt;br /&gt;
	self.BCYearName = numToBC( self.year )&lt;br /&gt;
	if self.BCYearName then&lt;br /&gt;
		self.yearText = self.BCYearName&lt;br /&gt;
	else&lt;br /&gt;
		self.yearText = tostring( self.year )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set other fields.&lt;br /&gt;
	self.caption = self.yearText&lt;br /&gt;
	self.footnotes = init.footnotes&lt;br /&gt;
	self.navbar = init.navbar&lt;br /&gt;
&lt;br /&gt;
	return setmetatable( obj, {&lt;br /&gt;
			__index = self&lt;br /&gt;
		})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendarBox:setCaption( s )&lt;br /&gt;
	-- Sets the calendar box caption.&lt;br /&gt;
	if type( s ) ~= &amp;#039;string&amp;#039; or s == &amp;#039;&amp;#039; then return end&lt;br /&gt;
	self.caption = s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendarBox:addCalendar( obj )&lt;br /&gt;
	-- Adds a calendar or a calendar group.&lt;br /&gt;
	if type( obj ) ~= &amp;#039;table&amp;#039; and type( obj.new ) ~= &amp;#039;function&amp;#039; then return end -- Exit if the object is invalid.&lt;br /&gt;
	self.calendars = self.calendars or {}&lt;br /&gt;
	table.insert( self.calendars, obj )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Add an alias for adding calendar groups. The function is the same, but it might be confusing for users&lt;br /&gt;
-- to have to use the name &amp;quot;addCalendar&amp;quot; for a calendar group.&lt;br /&gt;
calendarBox.addCalendarGroup = calendarBox.addCalendar&lt;br /&gt;
&lt;br /&gt;
function calendarBox:export()&lt;br /&gt;
	-- Outputs the calendar box wikitext.&lt;br /&gt;
	local root = mw.html.create( &amp;#039;table&amp;#039; )&lt;br /&gt;
	-- Export the calendar box headers.&lt;br /&gt;
	root&lt;br /&gt;
	:addClass( &amp;#039;infobox vevent&amp;#039; )&lt;br /&gt;
	:css( &amp;#039;width&amp;#039;, &amp;#039;22em&amp;#039; )&lt;br /&gt;
	:tag( &amp;#039;caption&amp;#039; )&lt;br /&gt;
	:css( &amp;#039;font-size&amp;#039;, &amp;#039;125%&amp;#039; )&lt;br /&gt;
	:tag( &amp;#039;span&amp;#039; )&lt;br /&gt;
	:addClass( &amp;#039;summary dtstart&amp;#039; )&lt;br /&gt;
	:wikitext( self.caption )&lt;br /&gt;
&lt;br /&gt;
	-- Export the calendars and calendar groups. &amp;quot;calendar:export()&amp;quot; works for both kinds&lt;br /&gt;
	-- of objects. Some export functions can return nil, so we need to check for that.&lt;br /&gt;
	if type( self.calendars ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		for _, calendar in ipairs( self.calendars ) do&lt;br /&gt;
			local calendarText = calendar:export()&lt;br /&gt;
			if type( calendarText ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				root:wikitext( calendarText )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add footnotes.&lt;br /&gt;
	if type( self.footnotes ) == &amp;#039;string&amp;#039; and self.footnotes ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root&lt;br /&gt;
		:tag( &amp;#039;tr&amp;#039; )&lt;br /&gt;
		:tag( &amp;#039;td&amp;#039; )&lt;br /&gt;
		:attr( &amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039; )&lt;br /&gt;
		:wikitext( string.format( &amp;#039;&amp;lt;small&amp;gt;%s&amp;lt;/small&amp;gt;&amp;#039;, self.footnotes ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add navbar.&lt;br /&gt;
	if type( self.navbar ) == &amp;#039;string&amp;#039; and self.navbar ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root&lt;br /&gt;
		:tag( &amp;#039;tr&amp;#039; )&lt;br /&gt;
		:tag( &amp;#039;td&amp;#039; )&lt;br /&gt;
		:attr( &amp;#039;colspan&amp;#039;, &amp;#039;2&amp;#039; )&lt;br /&gt;
		:css( &amp;#039;text-align&amp;#039;, &amp;#039;center&amp;#039; )&lt;br /&gt;
		:wikitext( require(&amp;#039;Module:Navbar&amp;#039;)._navbar{ self.navbar } )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring( root )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
-- Calendar group class definition&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--  Calendar groups are used to group different calendars together. &lt;br /&gt;
--  Previously, the template did this by including a table row with&lt;br /&gt;
--  no year value. By using objects we can do the same thing more&lt;br /&gt;
--  semantically.&lt;br /&gt;
&lt;br /&gt;
local calendarGroup = {}&lt;br /&gt;
calendarGroup.__index = calendarGroup&lt;br /&gt;
&lt;br /&gt;
function calendarGroup:new( init )&lt;br /&gt;
	init = type( init ) == &amp;#039;table&amp;#039; and init or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get the heading and throw an error if it is invalid.&lt;br /&gt;
	obj.heading = init.heading&lt;br /&gt;
	if type( obj.heading ) ~= &amp;#039;string&amp;#039; then&lt;br /&gt;
		error( &amp;#039;calendarGroup: no heading detected&amp;#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the metatable and return the object.&lt;br /&gt;
	self.__index = self&lt;br /&gt;
	return setmetatable( obj, {&lt;br /&gt;
			__index = self&lt;br /&gt;
		})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendarGroup:addCalendar( calendar )&lt;br /&gt;
	-- Adds a calendar object to the calendar group.&lt;br /&gt;
	self.calendars = self.calendars or {}&lt;br /&gt;
	if type( calendar ) == &amp;#039;table&amp;#039; and type( calendar.getLink ) == &amp;#039;function&amp;#039; then&lt;br /&gt;
		table.insert( self.calendars, calendar )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendarGroup:export()&lt;br /&gt;
	-- Exports the calendar group&amp;#039;s wikitext.&lt;br /&gt;
	-- Indent and italicise each calendar&amp;#039;s link if it exists.&lt;br /&gt;
	for i, calendar in ipairs( self.calendars ) do&lt;br /&gt;
		local link = calendar:getLink()&lt;br /&gt;
		if type( link ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
			self.calendars[ i ]:setRawLink( string.format( &amp;quot;&amp;amp;nbsp;- &amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;quot;, link ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Create the heading row html and export the calendar objects.&lt;br /&gt;
	local ret = mw.html.create()&lt;br /&gt;
	ret&lt;br /&gt;
	:tag( &amp;#039;tr&amp;#039; )&lt;br /&gt;
	:tag( &amp;#039;td&amp;#039; )&lt;br /&gt;
	:wikitext( self.heading )&lt;br /&gt;
	:done()&lt;br /&gt;
	:tag( &amp;#039;td&amp;#039; ) -- Use a blank tag to make the html look nice.&lt;br /&gt;
	:allDone()&lt;br /&gt;
	for _, calendar in ipairs( self.calendars ) do&lt;br /&gt;
		ret:wikitext( calendar:export() )&lt;br /&gt;
	end&lt;br /&gt;
	return tostring( ret )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
-- Calendar class definition&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local calendar = {}&lt;br /&gt;
calendar.__index = calendar&lt;br /&gt;
calendar.type = &amp;#039;calendar&amp;#039;&lt;br /&gt;
&lt;br /&gt;
function calendar:new()&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	return setmetatable( obj, {&lt;br /&gt;
			__index = self&lt;br /&gt;
		})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:setLink( link, display )&lt;br /&gt;
	-- Sets the calendar&amp;#039;s wikilink, with optional display text and italics.&lt;br /&gt;
	if type( link ) ~= &amp;#039;string&amp;#039; or link == &amp;#039;&amp;#039; then return end&lt;br /&gt;
	display = type( display ) == &amp;#039;string&amp;#039; and display ~= &amp;#039;&amp;#039; and display&lt;br /&gt;
	if display then&lt;br /&gt;
		self.link = string.format( &amp;#039;[[%s|%s]]&amp;#039;, link, display )&lt;br /&gt;
	else&lt;br /&gt;
		self.link = string.format( &amp;#039;[[%s]]&amp;#039;, link )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:setRawLink( s )&lt;br /&gt;
	-- Sets the calendar&amp;#039;s wikilink as raw wikitext.&lt;br /&gt;
	if type( s ) ~= &amp;#039;string&amp;#039; or s == &amp;#039;&amp;#039; then return end&lt;br /&gt;
	self.link = s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:getLink()&lt;br /&gt;
	-- Returns the calendar&amp;#039;s link value.&lt;br /&gt;
	return self.link&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:setYear( year )&lt;br /&gt;
	-- Sets a single year. Can be passed either a string or a number.&lt;br /&gt;
	-- If passed as a number, it is formatted with minus signs instead of hyphens.&lt;br /&gt;
	-- If passed as a string, no minus-sign formatting occurs; this should be done in the individual calendar definitions.&lt;br /&gt;
	if type( year ) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		year = tostring( year )&lt;br /&gt;
		self.year = formatNegative( year )&lt;br /&gt;
	elseif type( year ) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		self.year = year&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:setYearRange( year1, year2 )&lt;br /&gt;
	-- Sets a year range. Must be passed two numbers.&lt;br /&gt;
	if type( year1 ) == &amp;#039;number&amp;#039; and type( year2 ) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		local year&lt;br /&gt;
		if year1 &amp;lt; 0 or year2 &amp;lt; 0 then -- Leave a gap for negative years to avoid having a minus sign and a dash right next to each other.&lt;br /&gt;
			year = string.format( &amp;#039;%d – %d&amp;#039;, year1, year2 )&lt;br /&gt;
			year = formatNegative( year )&lt;br /&gt;
		else&lt;br /&gt;
			year = string.format( &amp;#039;%d–%d&amp;#039;, year1, year2 )&lt;br /&gt;
		end&lt;br /&gt;
		self.year = year&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:setYearCouple( year1, year2 )&lt;br /&gt;
	-- Same as setYearRange, only with a slash (/) in the middle. Must be passed two numbers. &lt;br /&gt;
	-- Additional text possible, must be defined as follows: addtext = string.format( &amp;#039;additional text or link&amp;#039;)&lt;br /&gt;
	-- See example in Seleucid era calendar&lt;br /&gt;
	if type( year1 ) == &amp;#039;number&amp;#039; and type( year2 ) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		local year&lt;br /&gt;
		if year1 &amp;lt; 0 or year2 &amp;lt; 0 then -- Leave no gap for negative years.&lt;br /&gt;
			year = string.format( &amp;#039;%d/%d %s&amp;#039;, year1, year2, addtext )&lt;br /&gt;
			year = formatNegative( year )&lt;br /&gt;
		else&lt;br /&gt;
			year = string.format( &amp;#039;%d/%d %s&amp;#039;, year1, year2, addtext )&lt;br /&gt;
		end&lt;br /&gt;
		self.year = year&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function calendar:export()&lt;br /&gt;
	-- Outputs the calendar wikitext.&lt;br /&gt;
	-- Exit if no link has been specified.&lt;br /&gt;
	local link = self.link&lt;br /&gt;
	if type( link ) ~= &amp;#039;string&amp;#039; or link == &amp;#039;&amp;#039; then return end&lt;br /&gt;
&lt;br /&gt;
	-- If no year has been specified, set the year value to N/A.&lt;br /&gt;
	local year = self.year&lt;br /&gt;
	if type( year ) ~= &amp;#039;string&amp;#039; or year == &amp;#039;&amp;#039; then&lt;br /&gt;
		year = &amp;quot;&amp;#039;&amp;#039;غ/م&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Build the table row.&lt;br /&gt;
	local ret = mw.html.create()&lt;br /&gt;
	ret&lt;br /&gt;
	:tag( &amp;#039;tr&amp;#039; )&lt;br /&gt;
	:tag( &amp;#039;td&amp;#039; )&lt;br /&gt;
	:wikitext( link )&lt;br /&gt;
	:done()&lt;br /&gt;
	:tag( &amp;#039;td&amp;#039; )&lt;br /&gt;
	:wikitext( year )&lt;br /&gt;
	:allDone()&lt;br /&gt;
	return tostring( ret )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
-- Build the box&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeCalendarBox( args )&lt;br /&gt;
	-- Initiate the box and get the year values.&lt;br /&gt;
	local init = args&lt;br /&gt;
	init.navbar = &amp;#039;السنة في التقاويم الأخرى&amp;#039;&lt;br /&gt;
	local box = calendarBox:new( init )&lt;br /&gt;
	local year = box.year&lt;br /&gt;
	local yearText = box.yearText&lt;br /&gt;
&lt;br /&gt;
	-- Set the caption.&lt;br /&gt;
	box:setCaption( box.caption .. &amp;#039; في التقاويم الأخرى&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الميلادي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local gregorian = calendar:new()&lt;br /&gt;
	gregorian:setLink( &amp;#039;تقويم ميلادي&amp;#039; )&lt;br /&gt;
	-- Get the year link.&lt;br /&gt;
	local gregcal = args.gregcal&lt;br /&gt;
	if type( gregcal ) == &amp;#039;string&amp;#039; and gregcal ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		gregorian.yearLink = string.format( &amp;#039;[[%s|%s]]&amp;#039;, gregcal, yearText )&lt;br /&gt;
	else&lt;br /&gt;
		gregorian.yearLink = yearText&lt;br /&gt;
	end&lt;br /&gt;
	-- Set the year.&lt;br /&gt;
	gregorian.romanYear = numToRoman{ math.abs(year) } .. (year &amp;lt; 0 and &amp;#039; ق م&amp;#039; or &amp;#039;&amp;#039;)	if gregorian.romanYear then&lt;br /&gt;
		gregorian:setYear( string.format(&lt;br /&gt;
				[[%s&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-family: serif;&amp;quot;&amp;gt;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;]],&lt;br /&gt;
				gregorian.yearLink, gregorian.romanYear&lt;br /&gt;
				) )&lt;br /&gt;
	else&lt;br /&gt;
		gregorian:setYear( gregorian.yearLink )&lt;br /&gt;
	end&lt;br /&gt;
	box:addCalendar( gregorian ) &lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الإسلامي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local islamic = calendar:new()&lt;br /&gt;
	islamic:setLink( &amp;#039;تقويم هجري&amp;#039; )&lt;br /&gt;
	local islamicMult = 1.030684 -- the factor to multiply by&lt;br /&gt;
	local islamicSub = 621.5643 -- the factor to subtract by&lt;br /&gt;
	if year - 621 &amp;gt; 0 then&lt;br /&gt;
		local year1 = math.floor( islamicMult * ( year - islamicSub ) )&lt;br /&gt;
		local year2 = math.floor( islamicMult * ( year - islamicSub + 1 ) )&lt;br /&gt;
		islamic:setYearRange( year1, year2 )&lt;br /&gt;
	else&lt;br /&gt;
		local year1 = math.ceil( -islamicMult * ( year - islamicSub ) )&lt;br /&gt;
		local year2 = math.ceil( -islamicMult * ( year - islamicSub + 1 ) )&lt;br /&gt;
		islamic:setYear( string.format( &amp;#039;%d [[قبل الهجرة|ق هـ]]&amp;amp;nbsp;– %d [[قبل الهجرة|ق هـ]]&amp;#039;, year1, year2 ) )&lt;br /&gt;
	end&lt;br /&gt;
	box:addCalendar( islamic )&lt;br /&gt;
	&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الهجري الشمسي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local iranian = calendar:new()&lt;br /&gt;
	iranian:setLink( &amp;#039;تقويم هجري شمسي&amp;#039;, &amp;#039;تقويم هجري شمسي&amp;#039; )&lt;br /&gt;
	if year - 621 &amp;gt; 0 then&lt;br /&gt;
		iranian:setYearRange( year - 622, year - 621 )&lt;br /&gt;
	else&lt;br /&gt;
		iranian:setYear( string.format( &amp;#039;%d BP&amp;amp;nbsp;– %d BP&amp;#039;, 622 - year, 621 - year ) )&lt;br /&gt;
	end&lt;br /&gt;
	box:addCalendar( iranian )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الأمازيغي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local berber = calendar:new()&lt;br /&gt;
	berber:setLink( &amp;#039;تقويم أمازيغي&amp;#039; )&lt;br /&gt;
	berber:setYear( year + 950 )&lt;br /&gt;
	box:addCalendar( berber )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الجمهوري الفرنسي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- displays only in years 1793 - 1805 and 1871&lt;br /&gt;
	-- This calendar was in use and had defined years only for the short period on display.&lt;br /&gt;
	-- Its importance during these few years is also the reason why it should stay out of the alphabetic order.&lt;br /&gt;
	-- See discussion on talk page.&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	&lt;br /&gt;
	if year &amp;gt;= 1793 and year &amp;lt; 1806 or year == 1871 then&lt;br /&gt;
		local republican = calendar:new()&lt;br /&gt;
		republican:setLink(&amp;#039;تقويم جمهوري فرنسي&amp;#039;)&lt;br /&gt;
		if year &amp;lt;= 1870 then&lt;br /&gt;
			republican:setYearRange( year - 1792, year - 1791 )&lt;br /&gt;
		elseif year == 1871 then&lt;br /&gt;
			republican:setYear( year - 1792 ) -- Paris Commune, May&lt;br /&gt;
		end&lt;br /&gt;
		box:addCalendar( republican )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- Ab urbe condita&lt;br /&gt;
	-- Varro&amp;#039;s correlation, from 1 AUC&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	if year &amp;gt;= -752 then&lt;br /&gt;
		local abUrbe = calendar:new()&lt;br /&gt;
		abUrbe:setLink( &amp;#039;من بداية روما&amp;#039; )&lt;br /&gt;
		abUrbe:setYear( year + 753 )&lt;br /&gt;
		box:addCalendar( abUrbe )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- Ancient Egypt era &lt;br /&gt;
	-- Displays dynasty between 1549 BC and 30 BC&lt;br /&gt;
	-- Displays pharaoh or king between 752 BC and 30 BC&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	if year &amp;gt; -1549 and year &amp;lt;= -29 then&lt;br /&gt;
	local ancEgypt = calendar:new()&lt;br /&gt;
	ancEgypt:setLink(&lt;br /&gt;
			&amp;#039;Egyptian chronology&amp;#039;,&lt;br /&gt;
			&amp;#039;حقبة مصر القديمة&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	ancEgypt:setYear( getDynasty( year ) )&lt;br /&gt;
	box:addCalendar( ancEgypt )&lt;br /&gt;
	end&lt;br /&gt;
	if year &amp;gt; - 752 and year &amp;lt;= -29 then&lt;br /&gt;
	local ancPharaoh = calendar:new()&lt;br /&gt;
	ancPharaoh:setLink(&lt;br /&gt;
			&amp;#039;قائمة ملوك مصر القديمة&amp;#039;,&lt;br /&gt;
			&amp;#039;&amp;lt;i&amp;gt;- الفرعون&amp;lt;/i&amp;gt;&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	ancPharaoh:setYear( getPharaoh( year ) )&lt;br /&gt;
	box:addCalendar( ancPharaoh )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- أولمبياد القديمة&lt;br /&gt;
	-- Currently only the first 194 Olympiads&lt;br /&gt;
	-- May be expanded until 394 AD when data available&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	if year &amp;gt;= -1300 and year &amp;lt; 1 then&lt;br /&gt;
	local ancOlympiads = calendar:new()&lt;br /&gt;
	ancOlympiads:setLink(&lt;br /&gt;
			&amp;#039;تقويم اليونان القديم&amp;#039;,&lt;br /&gt;
			&amp;#039;حقبة اليونان القديم&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	ancOlympiads:setYear( getOlympiad( year ) )&lt;br /&gt;
	box:addCalendar( ancOlympiads )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	--  التقويم الأرمني&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	if year &amp;gt; 551 then&lt;br /&gt;
	local armenian = calendar:new()&lt;br /&gt;
	armenian:setLink( &amp;#039;تقويم أرمني&amp;#039; )&lt;br /&gt;
		local armenianYear = year - 551&lt;br /&gt;
		armenian:setYear( string.format( &amp;#039;%s&amp;lt;br /&amp;gt;ԹՎ %s&amp;#039;, armenianYear, numToArmenian( armenianYear ) ) )&lt;br /&gt;
	box:addCalendar( armenian )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم السرياني&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local assyrian = calendar:new()&lt;br /&gt;
	assyrian:setLink( &amp;#039;تقويم سرياني&amp;#039; )&lt;br /&gt;
	assyrian:setYear( year + 4750 )&lt;br /&gt;
	box:addCalendar( assyrian )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	--تقويم بهائي&lt;br /&gt;
	-- displays only after 1843&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	&lt;br /&gt;
	if year &amp;gt;= 1844 then&lt;br /&gt;
		local bahai = calendar:new()&lt;br /&gt;
		bahai:setLink( &amp;#039;تقويم بهائي&amp;#039; )&lt;br /&gt;
		bahai:setYearRange( year - 1844, year - 1843 )&lt;br /&gt;
		box:addCalendar( bahai )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم البنغالي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local bengali = calendar:new()&lt;br /&gt;
	bengali:setLink( &amp;#039;تقويم بنغالي&amp;#039; )&lt;br /&gt;
	bengali:setYear( year - 593 )&lt;br /&gt;
	box:addCalendar( bengali )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- سنة العرش&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	if year &amp;gt;= 1000 then&lt;br /&gt;
		local regnal = calendar:new()&lt;br /&gt;
		local regnalName&lt;br /&gt;
		if year &amp;gt; 1706 then&lt;br /&gt;
			regnalName = &amp;#039;بريطاني&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			regnalName = &amp;#039;إنجليزي&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		regnal:setLink( &amp;#039;Regnal years of English monarchs&amp;#039;, &amp;#039; سنة عرش &amp;#039; .. regnalName )&lt;br /&gt;
		regnal:setYear( getRegnal( year ) )&lt;br /&gt;
		box:addCalendar( regnal )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم البوذي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local buddhist = calendar:new()&lt;br /&gt;
	buddhist:setLink( &amp;#039;تقويم بوذي&amp;#039; )&lt;br /&gt;
	buddhist:setYear( year + 544 )&lt;br /&gt;
	box:addCalendar( buddhist )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم البورمي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local burmese = calendar:new()&lt;br /&gt;
	burmese:setLink( &amp;#039;تقويم بورمي&amp;#039; )&lt;br /&gt;
	burmese:setYear( year - 638 )&lt;br /&gt;
	box:addCalendar( burmese )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم البيزنطي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local byzantine = calendar:new()&lt;br /&gt;
	byzantine:setLink( &amp;#039;تقويم بيزنطي&amp;#039; )&lt;br /&gt;
	byzantine:setYearRange( year + 5508, year + 5509 )&lt;br /&gt;
	box:addCalendar( byzantine )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الصيني&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local chinese = calendar:new()&lt;br /&gt;
	chinese:setLink( &amp;#039;تقويم صيني&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	-- Define the information for the &amp;quot;heavenly stems&amp;quot; and &amp;quot;earthly branches&amp;quot; year cycles.&lt;br /&gt;
	-- انظر [[تقويم صيني#زمر السنوات]] للمعلومات.&lt;br /&gt;
&lt;br /&gt;
	local heavenlyStems = {&lt;br /&gt;
		{ &amp;#039;甲&amp;#039;, &amp;#039;الخشبي&amp;#039; },   -- 1&lt;br /&gt;
		{ &amp;#039;乙&amp;#039;, &amp;#039;الخشبي&amp;#039; },   -- 2&lt;br /&gt;
		{ &amp;#039;丙&amp;#039;, &amp;#039;الناري&amp;#039; },   -- 3&lt;br /&gt;
		{ &amp;#039;丁&amp;#039;, &amp;#039;الناري&amp;#039; },   -- 4&lt;br /&gt;
		{ &amp;#039;戊&amp;#039;, &amp;#039;الأرضي&amp;#039; },  -- 5&lt;br /&gt;
		{ &amp;#039;己&amp;#039;, &amp;#039;الأرضي&amp;#039; },  -- 6&lt;br /&gt;
		{ &amp;#039;庚&amp;#039;, &amp;#039;المعدني&amp;#039; },  -- 7&lt;br /&gt;
		{ &amp;#039;辛&amp;#039;, &amp;#039;المعدني&amp;#039; },  -- 8&lt;br /&gt;
		{ &amp;#039;壬&amp;#039;, &amp;#039;المائي&amp;#039; },  -- 9&lt;br /&gt;
		{ &amp;#039;癸&amp;#039;, &amp;#039;المائي&amp;#039; }   -- 10&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local earthlyBranches = {&lt;br /&gt;
		{ &amp;#039;子&amp;#039;, &amp;#039;[[برج الفأر|الفأر]]&amp;#039; },           -- 1&lt;br /&gt;
		{ &amp;#039;丑&amp;#039;, &amp;#039;[[برج الثور الصيني|الثور]]&amp;#039; },             -- 2&lt;br /&gt;
		{ &amp;#039;寅&amp;#039;, &amp;#039;[[برج النمر|النمر]]&amp;#039; },       -- 3&lt;br /&gt;
		{ &amp;#039;卯&amp;#039;, &amp;#039;[[برج الأرنب|الأرنب]]&amp;#039; },     -- 4&lt;br /&gt;
		{ &amp;#039;辰&amp;#039;, &amp;#039;[[برج التنين|التنين]]&amp;#039; },     -- 5&lt;br /&gt;
		{ &amp;#039;巳&amp;#039;, &amp;#039;[[برج الأفعى|الأفعى]]&amp;#039; },       -- 6&lt;br /&gt;
		{ &amp;#039;午&amp;#039;, &amp;#039;[[برج الحصان|الحصان]]&amp;#039; },       -- 7&lt;br /&gt;
		{ &amp;#039;未&amp;#039;, &amp;#039;[[برج العنزة|العنزة]]&amp;#039; },         -- 8&lt;br /&gt;
		{ &amp;#039;申&amp;#039;, &amp;#039;[[برج القرد|القرد]]&amp;#039; },     -- 9&lt;br /&gt;
		{ &amp;#039;酉&amp;#039;, &amp;#039;[[برج الديك|الديك]]&amp;#039; },   -- 10&lt;br /&gt;
		{ &amp;#039;戌&amp;#039;, &amp;#039;[[برج الكلب|الكلب]]&amp;#039; },           -- 11&lt;br /&gt;
		{ &amp;#039;亥&amp;#039;, &amp;#039;[[برج الخنزير|الخنزير]]&amp;#039; }            -- 12&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	-- Calculate the cycle numbers from the year. The first sexagenary year corresponds to the &amp;#039;&amp;#039;previous&amp;#039;&amp;#039; year&amp;#039;s entry&lt;br /&gt;
	-- in [[Chinese calendar correspondence table]], as the Chinese New Year doesn&amp;#039;t happen until Jan/Feb in&lt;br /&gt;
	-- Gregorian years.&lt;br /&gt;
	local sexagenaryYear1 = ( year - 4 ) % 60&lt;br /&gt;
	local sexagenaryYear2 = ( year - 3 ) % 60&lt;br /&gt;
	local heavenlyNum1 = (sexagenaryYear1 - 1) % 10 + 1 -- amod, since lua arrays are 1-indexed&lt;br /&gt;
	local heavenlyNum2 = (sexagenaryYear2 - 1) % 10 + 1&lt;br /&gt;
	local earthlyNum1 = (sexagenaryYear1 - 1) % 12 + 1&lt;br /&gt;
	local earthlyNum2 = (sexagenaryYear2 - 1) % 12 + 1&lt;br /&gt;
&lt;br /&gt;
	-- Get the data tables for each permutation.&lt;br /&gt;
	local heavenlyTable1 = heavenlyStems[ heavenlyNum1 ]&lt;br /&gt;
	local heavenlyTable2 = heavenlyStems[ heavenlyNum2 ]&lt;br /&gt;
	local earthlyTable1 = earthlyBranches[ earthlyNum1 ]&lt;br /&gt;
	local earthlyTable2 = earthlyBranches[ earthlyNum2 ]&lt;br /&gt;
&lt;br /&gt;
	-- Work out the continously-numbered year. (See [[تقويم صيني]].)&lt;br /&gt;
	local year1 = year + 2696&lt;br /&gt;
	local year2 = year + 2697&lt;br /&gt;
	local year1Alt = year1 - 60&lt;br /&gt;
	local year2Alt = year2 - 60&lt;br /&gt;
&lt;br /&gt;
	-- Format any negative numbers.&lt;br /&gt;
	year1 = formatNegative( tostring( year1 ) )&lt;br /&gt;
	year2 = formatNegative( tostring( year2 ) )&lt;br /&gt;
	year1Alt = formatNegative( tostring( year1Alt ) )&lt;br /&gt;
	year2Alt = formatNegative( tostring( year2Alt ) )&lt;br /&gt;
&lt;br /&gt;
	-- Return all of that data in a (hopefully) reader-friendly format.&lt;br /&gt;
	chinese:setYear( string.format(&lt;br /&gt;
			[=[[[Sexagenary cycle|%s%s]]年 &amp;lt;small&amp;gt;(%s&amp;amp;nbsp;%s)&amp;lt;/small&amp;gt;&amp;lt;br /&amp;gt;%s أو %s&amp;lt;br /&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;#039;&amp;#039;—&amp;amp;nbsp;إلى&amp;amp;nbsp;—&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;%s%s年 &amp;lt;small&amp;gt;(%s&amp;amp;nbsp;%s)&amp;lt;/small&amp;gt;&amp;lt;br /&amp;gt;%s أو %s]=],&lt;br /&gt;
			heavenlyTable1[ 1 ],&lt;br /&gt;
			earthlyTable1[ 1 ],&lt;br /&gt;
			earthlyTable1[ 2 ],&lt;br /&gt;
			heavenlyTable1[ 2 ],&lt;br /&gt;
			year1,&lt;br /&gt;
			year1Alt,&lt;br /&gt;
			heavenlyTable2[ 1 ],&lt;br /&gt;
			earthlyTable2[ 1 ],&lt;br /&gt;
			earthlyTable2[ 2 ],&lt;br /&gt;
			heavenlyTable2[ 2 ],&lt;br /&gt;
			year2,&lt;br /&gt;
			year2Alt&lt;br /&gt;
			) )&lt;br /&gt;
&lt;br /&gt;
	box:addCalendar( chinese )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم القبطي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local coptic = calendar:new()&lt;br /&gt;
	coptic:setLink( &amp;#039;تقويم قبطي&amp;#039; )&lt;br /&gt;
	coptic:setYearRange( year - 284, year - 283 )&lt;br /&gt;
	box:addCalendar( coptic )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الديسكوردي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local discordian = calendar:new()&lt;br /&gt;
	discordian:setLink( &amp;#039;تقويم ديسكوردي&amp;#039; )&lt;br /&gt;
	discordian:setYear( year + 1166 )&lt;br /&gt;
	box:addCalendar( discordian )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الإثيوبي&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local ethiopian = calendar:new()&lt;br /&gt;
	ethiopian:setLink( &amp;#039;تقويم إثيوبي&amp;#039; )&lt;br /&gt;
	ethiopian:setYearRange( year - 8, year - 7 )&lt;br /&gt;
	box:addCalendar( ethiopian )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم العبري&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local hebrew = calendar:new()&lt;br /&gt;
	hebrew:setLink( &amp;#039;تقويم عبري&amp;#039; )&lt;br /&gt;
	hebrew:setYearRange( year + 3760, year + 3761 )&lt;br /&gt;
	box:addCalendar( hebrew )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويمات الهندية&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local hindu = calendarGroup:new{ heading = &amp;#039;[[تقويم هندي|تقويمات هندية]]&amp;#039; }&lt;br /&gt;
&lt;br /&gt;
	-- بيكرم سامفات&lt;br /&gt;
&lt;br /&gt;
	local vikramSamvat = calendar:new()&lt;br /&gt;
	vikramSamvat:setLink( &amp;#039;بيكرم سامفات&amp;#039; )&lt;br /&gt;
	vikramSamvat:setYearRange( year + 56, year + 57 )&lt;br /&gt;
	hindu:addCalendar( vikramSamvat )&lt;br /&gt;
&lt;br /&gt;
	-- شاكا سامفات&lt;br /&gt;
&lt;br /&gt;
	local shakaSamvat = calendar:new()&lt;br /&gt;
	shakaSamvat:setLink( &amp;#039;تقويم هندي وطني&amp;#039;, &amp;#039;شاكا سامفات&amp;#039; )&lt;br /&gt;
	if year - 76 &amp;gt; 0 then&lt;br /&gt;
		shakaSamvat:setYearRange( year - 78, year - 77 )&lt;br /&gt;
	end&lt;br /&gt;
	hindu:addCalendar( shakaSamvat )&lt;br /&gt;
&lt;br /&gt;
	-- كالي يوغا&lt;br /&gt;
&lt;br /&gt;
	local kaliYuga = calendar:new()&lt;br /&gt;
	kaliYuga:setLink( &amp;#039;كالي يوغا&amp;#039; ) -- use italics&lt;br /&gt;
	kaliYuga:setYearRange( year + 3101, year + 3102 )&lt;br /&gt;
	hindu:addCalendar( kaliYuga )&lt;br /&gt;
&lt;br /&gt;
	box:addCalendarGroup( hindu )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الهولوسين&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local holocene = calendar:new()&lt;br /&gt;
	holocene:setLink( &amp;#039;تقويم هولوسين&amp;#039; )&lt;br /&gt;
	holocene:setYear( year + 10000 )&lt;br /&gt;
	box:addCalendar( holocene )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الإغبو&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	-- In the old template this was a calendar group with just one calendar; intentionally adding this as a single&lt;br /&gt;
	-- calendar here, as the previous behaviour looked like a mistake.&lt;br /&gt;
	if year &amp;gt;= 1000 then&lt;br /&gt;
		local igbo = calendar:new()&lt;br /&gt;
		igbo:setLink( &amp;#039;تقويم إغبو&amp;#039; )&lt;br /&gt;
		igbo:setYearRange( year - 1000, year - 999 )&lt;br /&gt;
		box:addCalendar( igbo )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الإيراني&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local iranian = calendar:new()&lt;br /&gt;
	iranian:setLink( &amp;#039;تقويمات إيرانية&amp;#039;, &amp;#039;تقويم إيراني&amp;#039; )&lt;br /&gt;
	if year - 621 &amp;gt; 0 then&lt;br /&gt;
		iranian:setYearRange( year - 622, year - 621 )&lt;br /&gt;
	else&lt;br /&gt;
		iranian:setYear( string.format( &amp;#039;%d BP&amp;amp;nbsp;– %d BP&amp;#039;, 622 - year, 621 - year ) )&lt;br /&gt;
	end&lt;br /&gt;
	box:addCalendar( iranian )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الياباني&lt;br /&gt;
	-- starting 600&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	&lt;br /&gt;
	if year &amp;gt;= 600 then&lt;br /&gt;
	local japanese = calendar:new()&lt;br /&gt;
	japanese:setLink( &amp;#039;تقويم ياباني&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	japanese.thisEra = japaneseEra:new{ year = year }&lt;br /&gt;
	if japanese.thisEra then&lt;br /&gt;
		local japaneseYearText = {}&lt;br /&gt;
		japanese.oldEra = japanese.thisEra:getOldEra()&lt;br /&gt;
		if japanese.oldEra and japanese.oldEra.eraYear and japanese.thisEra.article ~= japanese.oldEra.article then&lt;br /&gt;
			japanese.oldText = string.format( &amp;#039;%s %d&amp;#039;, japanese.oldEra.link, japanese.oldEra.eraYear )&lt;br /&gt;
			table.insert( japaneseYearText, japanese.oldText )&lt;br /&gt;
			table.insert( japaneseYearText, &amp;#039; / &amp;#039; )&lt;br /&gt;
		end&lt;br /&gt;
		if japanese.thisEra.eraYear then&lt;br /&gt;
			table.insert( japaneseYearText, string.format( &amp;#039;%s %d&amp;#039;, japanese.thisEra.link, japanese.thisEra.eraYear ) )&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( japaneseYearText, string.format( &amp;#039;&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;(%s%s年)&amp;lt;/small&amp;gt;&amp;#039;, japanese.thisEra.kanji, japanese.thisEra.eraYearKanji ) )&lt;br /&gt;
		japanese:setYear( table.concat( japaneseYearText ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	box:addCalendar( japanese )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الجوتشي&lt;br /&gt;
	-- displays only after 1910&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	if year &amp;gt;= 1910 then&lt;br /&gt;
		local juche = calendar:new()&lt;br /&gt;
		juche:setLink( &amp;#039;تقويم كوريا الشمالية&amp;#039;, &amp;#039;تقويم جوتشي&amp;#039; )&lt;br /&gt;
		if year &amp;gt; 1911 then&lt;br /&gt;
			juche:setYear( year - 1911 )&lt;br /&gt;
		end&lt;br /&gt;
		box:addCalendar( juche )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم اليولياني&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local julian = calendar:new()&lt;br /&gt;
	julian:setLink( &amp;#039;تقويم يولياني&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	if year &amp;gt;= -45 and year &amp;lt; 1582 then&lt;br /&gt;
		julian:setYear(gregorian.year)&lt;br /&gt;
	elseif year &amp;gt;= 1582 then&lt;br /&gt;
		local diff = math.floor(year/100-2) - math.floor(year/400)&lt;br /&gt;
		if year % 100 == 0 and year % 400 ~= 0 then&lt;br /&gt;
			julian:setYear(&amp;#039;متأخر &amp;#039; .. diff-1 .. &amp;#039; or &amp;#039; .. diff .. &amp;#039;  يوما عن التقويم الميلادي &amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			julian:setYear(&amp;#039;متأخر &amp;#039; .. diff .. &amp;#039; يوما عن التقويم الميلادي&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	box:addCalendar( julian )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم الكوري&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local korean = calendar:new()&lt;br /&gt;
	korean:setLink( &amp;#039;تقويم كوري&amp;#039; )&lt;br /&gt;
	korean:setYear( year + 2333 )&lt;br /&gt;
	box:addCalendar( korean )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم المينغوو&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local minguo = calendar:new()&lt;br /&gt;
	minguo:setLink( &amp;#039;تقويم مينغوو&amp;#039; )&lt;br /&gt;
	if year &amp;gt; 1911 then&lt;br /&gt;
		local minguoYear = year - 1911&lt;br /&gt;
		minguo:setYear( string.format( &amp;#039;%d على إعلان [[تايوان|جمهورية الصين]]&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;民國%d年&amp;lt;/small&amp;gt;&amp;#039;, minguoYear, minguoYear ) )&lt;br /&gt;
	else&lt;br /&gt;
		local minguoYear = 1911 - year + 1&lt;br /&gt;
		minguo:setYear( string.format( &amp;#039;%d قبل إعلان [[تايوان|جمهورية الصين]]&amp;lt;br /&amp;gt;&amp;lt;small&amp;gt;民前%d年&amp;lt;/small&amp;gt;&amp;#039;, minguoYear, minguoYear ) )&lt;br /&gt;
	end&lt;br /&gt;
	box:addCalendar( minguo )&lt;br /&gt;
	&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- الحقبة السلوقيية&lt;br /&gt;
	-- تبدأ من  312 قبل الميلاد حتى 1200 بعد الميلاد&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	&lt;br /&gt;
	if year &amp;gt;= -311 and year &amp;lt; 1200 then&lt;br /&gt;
		local seleucid = calendar:new()&lt;br /&gt;
			seleucid:setLink( &amp;#039;تقويم سلوقي&amp;#039; )&lt;br /&gt;
			addtext = string.format( &amp;#039;[[Anno Graecorum|AG]]&amp;#039;)&lt;br /&gt;
		seleucid:setYearCouple( year + 311, year + 312, addtext )&lt;br /&gt;
		box:addCalendar( seleucid )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- التقويم التايلندي الشمسي &lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local thai = calendar:new()&lt;br /&gt;
	thai:setLink( &amp;#039;تقويم تايلندي&amp;#039; )&lt;br /&gt;
	if year &amp;gt;= 1941 then&lt;br /&gt;
		thai:setYear( year + 543 )&lt;br /&gt;
	else -- if year &amp;gt;= 1912 or year &amp;lt;= 1887 -- year started in March/April&lt;br /&gt;
		thai:setYearRange( year + 542, year + 543 )&lt;br /&gt;
	-- else -- Rattanakosin Era, 1888?-1912&lt;br /&gt;
	--			thai:setYear( string.format( &amp;#039;%d &amp;amp;nbsp;– %d &amp;lt;small&amp;gt;([[Rattanakosin Kingdom|Rattanakosin Era]])&amp;lt;/small&amp;gt;&amp;#039;, year - 1782 , year - 1781 ) )&lt;br /&gt;
	end&lt;br /&gt;
	box:addCalendar( thai )&lt;br /&gt;
&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
	-- توقيت يونكس&lt;br /&gt;
	----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	local unix = calendar:new()&lt;br /&gt;
&lt;br /&gt;
	local function getUnixTime( year )&lt;br /&gt;
		if year &amp;lt; 1970 then return end&lt;br /&gt;
		local noError, unixTime = pcall( lang.formatDate, lang, &amp;#039;U&amp;#039;, &amp;#039;1 Jan &amp;#039; .. tostring( year ) )&lt;br /&gt;
		if not noError or noError and not unixTime then return end&lt;br /&gt;
		unixTime = tonumber( unixTime )&lt;br /&gt;
		if unixTime and unixTime &amp;gt;= 0 then&lt;br /&gt;
			return unixTime&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	unix.thisYear = getUnixTime( year )&lt;br /&gt;
	unix.nextYear = getUnixTime( year + 1 )&lt;br /&gt;
	if unix.thisYear and unix.nextYear then&lt;br /&gt;
		unix:setLink( &amp;#039;توقيت يونكس&amp;#039; )&lt;br /&gt;
		unix:setYearRange( unix.thisYear, unix.nextYear - 1 )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	box:addCalendar( unix )&lt;br /&gt;
&lt;br /&gt;
	return box:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
-- Process arguments from #invoke&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main( frame )&lt;br /&gt;
	-- Process the arguments and pass them to the box-building function.&lt;br /&gt;
	local args = getArgs( frame )&lt;br /&gt;
	-- Pass year argument with &amp;#039;year&amp;#039; parameter or without any name but first argument&lt;br /&gt;
	args.year = args.year or args[1]&lt;br /&gt;
	return makeCalendarBox( args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>