Module:I18n/ordinal
local p = {}
  
 --[[ Different languages use different schemes for ordinals, and some of these schemes are shared between languages. 
 &quot;SchemeFromLang&quot; picks an ordinal scheme based on a specified language. 
 All unlisted languages default to the &quot;period-scheme&quot;, i.e. &quot;104.&quot; is the ordinal for the value &quot;104&quot;.
 Languages will follow the regular language fallback chain. For example, &quot;de-formal&quot; would fallback to scheme for &quot;de&quot;, 
 and only if that does not exist would the &quot;period-scheme&quot; be used.
 ]]
  
 p.SchemeFromLang = {
 	['ast'] 	= 'ast-scheme', 	-- Asturian
 	['bn'] 		= 'bn-scheme', 		-- Bengali
 	['br']		= 'br-scheme',		-- Breton
 	['ca'] 		= 'ca-scheme', 		-- Catalan
 	['co']		= 'co-scheme',		-- Corsu
 	['cs'] 		= 'period-scheme',	-- Czech
 	['da']		= 'period-scheme',	-- Danish
 	['de'] 		= 'period-scheme',	-- German
 	['el']		= 'el-scheme',		-- Greek
 	['en-gb'] 	= 'en-scheme', 		-- British English
 	['en-ca'] 	= 'en-scheme', 		-- Canadian English
 	['en'] 		= 'en-scheme', 		-- English
 	['eo'] 		= 'eo-scheme', 		-- Esperanto
 	['es'] 		= 'es-scheme',		-- Spanish
 	['et']		= 'period-scheme',	-- Estonian
 	['eu'] 		= 'roman-scheme',	-- Basque
 	['fa'] 		= 'fa-scheme',		-- Persian
 	['fi'] 		= 'period-scheme',	-- Finnish
 	['fr'] 		= 'fr-scheme',		-- French
 	['hr']		= 'period-scheme',	-- Croatian
 	['hu'] 		= 'period-scheme',	-- Hungarian
 	['hy']		= 'hy-scheme',		-- Armenian
 	['ia'] 		= 'ia-scheme',		-- Interlingua
 	['it']		= 'romance-scheme',	-- Italian
 	['ja']		= 'ja-scheme',		-- Japanese
 	['km']		= 'km-scheme',		-- Khmer
 	['ko'] 		= 'ko-scheme',		-- Korean
 	['la']		= 'la-scheme',		-- Latin
 	['lo']		= 'lo-scheme',		-- Laothian
 	['mk'] 		= 'mk-scheme',		-- Macedonian
 	['ml'] 		= 'ml-scheme',		-- Malayalam
 	['ms']		= 'ms-scheme',		-- Malay
 	['nds']		= 'period-scheme',	-- Low German
 	['nb']		= 'period-scheme',	-- Norwegian Bokmål
 	['nl']		= 'nl-scheme',		-- Dutch
 	['nn']		= 'period-scheme',	-- Norwegian Nynorsk
 	['no']		= 'period-scheme',	-- Norwegian
 	['pl'] 		= 'pl-scheme',		-- Polish
 	['pt']		= 'romance-scheme',	-- Portuguese
 	['ru'] 		= 'ru-scheme',		-- Russian
 	['sk']		= 'period-scheme',	-- Slovak
 	['sl']		= 'period-scheme',	-- Slovene
 	['sv']		= 'sv-scheme',		-- Swedish
 	['ta'] 		= 'ta-scheme',		-- Tamil
 	['th'] 		= 'th-scheme',		-- Thai
 	['uk']  	= 'uk-scheme',		-- Ukrainian
 	['vi'] 		= 'vi-scheme',		-- Vietnamese
 	['zh-hans'] = 'zh-scheme',		-- Simplified Chinese
 	['zh-hant'] = 'zh-scheme',		-- Traditional Chinese
 }
  
 --[[ Text used to internationalize the various schemes. 
 Styles are supported by suffixing &quot;/style&quot; to key. 
 Styles that are superscripted set &quot;superscript&quot; to true (this style can be disabled, e.g. in category and page names not supporting HTML styling tags).
 Scheme set was developed to match the output of the pre-Lua {{Ordinal}} template, preserved as {{Ordinal/old}}
 ]]
 p.Scheme = {
 	-- the null scheme, i.e. just the number (normally not used except in technical contexts expecting only numbers)
 	['null-scheme'] = {
 	},
 
 	-- the period scheme, i.e. &quot;&lt;value&gt;.&quot; used for at least: cs, de, fi, hu
 	['period-scheme'] = {
 		rules = 'suffix',
 		suffix = '.'
 	},
 	
 	-- Roman (Basque, Galician, Italian, and Classical Latin)
 	['roman-scheme'] = {
 		period = false,
 		superscript = false,
 		formatlang = 'roman'
 	},
 
 	-- Romance (Italian, Portuguese)
 	['romance-scheme'] = {
 		rules = 'gendered-suffix',
 		superscript = true,
 		period = false,
 		suffix = 'o',
 		suffix_m = 'o',
 		suffix_f = 'a',
 		suffix_n = 'o',
 	},
 	
 	-- Asturian
 	['ast-scheme'] = {
 		rules = 'gendered-suffix',
 		superscript = true,
 		period = false,
 		suffix = 'u',
 		suffix_m = 'u',
 		suffix_f = 'a',
 		suffix_n = 'o',
 	},
 
 	-- Bengali (reference: https://www.bissoy.com/701365/)
 	['bn-scheme'] = {
 		rules = 'suffix',
 		suffix = 'তম', 
 		suffix_0 = 'ম',
 		suffix_1 = 'ম',
 		suffix_2 = 'য়',
 		suffix_3 = 'য়',
 		suffix_4 = 'র্থ়',
 		suffix_5 = 'ম',
 		suffix_6 = 'ষ্ঠ',
 		suffix_7 = 'ম',
 		suffix_8 = 'ম',
 		suffix_9 = 'ম',
 	},
 
 	-- Breton
 	['br-scheme'] = {
 		-- non-breaking hyphen (&quot;‑&quot;, U+2011) is used below
 		rules = 'suffix',
 		suffix = '‑vet', 
 		formatlang = 'eo' -- pre-Lua {{Ordinal}} template used &quot;eo&quot; number formatting for &quot;br&quot; ordinals (???FIXME???)
 	},
 
 	-- Catalan
 	['ca-scheme'] = {
 		rules = 'gendered-suffix-n',
 		superscript = false,
 		period = false,
 		suffix = 'è',
 		suffix_f = 'a',
 		suffix_1 = 'r',
 		suffix_1_f = 'a',
 		suffix_2 = 'n',
 		suffix_2_f = 'a',
 		suffix_3 = 'r',
 		suffix_3_f = 'a',
 		suffix_4 = 't',
 		suffix_4_f = 'a'
 	},
 
 	-- Greek
 	['el-scheme'] = {
 		rules = 'gendered-suffix',
 		suffix = 'ος',
 		suffix_m = 'ος',
 		suffix_f = 'η',
 		suffix_n = 'ο',
 	},
 
 	-- the English scheme, i.e. &quot;1st&quot;, &quot;2nd&quot;, &quot;3rd&quot;, &quot;4th&quot;.
 	['en-scheme'] = {
 		rules = 'skip-tens',
 		superscript = true,
 		suffix = 'th',
 		suffix_1 = 'st',
 		suffix_2 = 'nd',
 		suffix_3 = 'rd',
 	},
 
 	-- the English scheme using the &quot;d&quot; style, i.e. &quot;23d&quot;.
 	['en-scheme/d'] = {
 		rules = 'suffix',
 		suffix = 'd'
 	},
 	
 	-- Esperanto
 	['eo-scheme'] = {
 		rules = 'suffix',
 		-- non-breaking hyphen (&quot;‑&quot;, U+2011) is used below
 		suffix = '‑a', 
 	},
 	
 	-- Spanish (period plus Romance)
 	['es-scheme'] = {
 		rules = 'gendered-suffix',
 		superscript = true,
 		period = true,
 		suffix = 'o',
 		suffix_m = 'o',
 		suffix_f = 'a',
 		suffix_n = 'o',
 	},
 	
 	-- Persian
 	['fa-scheme'] = {
 		rules = 'suffix',
 		suffix = 'م', 
 	},
 	
 	-- French
 	['fr-scheme'] = {
 		rules = 'gendered-suffix-one',
 		superscript = true,
 		suffix = 'e',
 		suffix_1 = 'e', -- there's NO neutral gender in French (this is only for unspecified gender)
 		suffix_1_m = 'er',
 		suffix_1_f = 're',
 	},
 	
 	-- French alternate specific style for 2nd (used only when the 2nd is also the *last* one in a pair, including World Wars)
 	['fr-scheme/pair'] = {
 		rules = 'gendered-suffix-n',
 		superscript = true,
 		suffix = 'e',
 		suffix_1 = 'e',
 		suffix_1_m = 'er',
 		suffix_1_f = 're',
 		suffix_2 = 'e',
 		suffix_2_m = 'nd',
 		suffix_2_f = 'de',
 	},
 	
 	-- Corsu
 		['co-scheme'] = {
 		rules = 'suffix',
 		suffix = 'è'
 	},
 
 	-- the French scheme using the &quot;roman&quot; style (&quot;roman year&quot; is a supported alias for &quot;roman&quot;)
 	['fr-scheme/roman'] = {
 		rules = 'gendered-suffix-one',
 		superscript = true,
 		suffix = 'e',
 		suffix_1 = 'e',
 		suffix_1_m = 'er',
 		suffix_1_f = 're',
 		formatlang = 'roman' -- styled normally in small capitals (except milleniums using big capitals)
 	},
 	
 	-- French specific roman ordinal style after names of personal titles (kings/queens/popes…) and of book chapters (suffixed only for 1st)
 	['fr-scheme/roman-title'] = {
 		rules = 'gendered-suffix-one',
 		superscript = true,
 		suffix = '', -- no suffix except for 1st
 		suffix_1 = 'e',
 		suffix_1_m = 'er',
 		suffix_1_f = 're',
 		suffix_1_n = 'е',
 		formatlang = 'roman' -- style using only big capitals
 	},
 	
 	-- Armenian
 	['hy-scheme'] = {
 		rules = 'suffix-one',
 		-- non-breaking hyphens (&quot;‑&quot;, U+2011) are used below
 		suffix = '‑րդ',
 		suffix_1 = '‑ին',
 	},
 	
 	-- Interlingua
 	['ia-scheme'] = {
 		rules = 'mod10-suffix',
 		superscript = true,
 		suffix_0 = 'te',
 		suffix_1 = 'me',
 		suffix_2 = 'nde',
 		suffix_3 = 'tie',
 		suffix_4 = 'te',
 		suffix_5 = 'te',
 		suffix_6 = 'te',
 		suffix_7 = 'me',
 		suffix_8 = 've',
 		suffix_9 = 'ne',
 	},
 
 	-- Japanese
 	-- this is for the adjective in undetermined order before noun; otherwise Japanese use: &lt;cardinal number&gt;&lt;noun&gt;目
 	['ja-scheme'] = {
 		rules = 'prefix',
 		prefix = '第', 
 	},
 
 	-- Khmer
 	['km-scheme'] = {
 		rules = 'prefix',
 		prefix = 'ទ', 
 	},
 
 	-- Korean
 	['ko-scheme'] = {
 		rules = 'suffix',
 		suffix = '째', 
 	},
 
 	-- Latin
 	['la-scheme'] = {
 		rules = 'suffix',
 		superscript = true,
 		suffix = 'o', 
 		formatlang = 'roman'
 	},
 
 	-- Laothian
 	['lo-scheme'] = {
 		rules = 'prefix',
 		prefix = 'ທີ່', 
 	},
 	
 	-- Macedonian
 	['mk-scheme'] = {
 		rules = 'mod10-suffix',
 		-- non-breaking hyphens (&quot;‑&quot;, U+2011) are used below
 		suffix_0 = '‑тиот',
 		suffix_1 = '‑виот',
 		suffix_2 = '‑риот',
 		suffix_3 = '‑иот',
 		suffix_4 = '‑иот',
 		suffix_5 = '‑тиот',
 		suffix_6 = '‑иот',
 		suffix_7 = '‑миот',
 		suffix_8 = '‑миот',
 		suffix_9 = '‑тиот',
 	},
 
 	-- Malayalam
 	['ml-scheme'] = {
 		rules = 'suffix',
 		-- non-breaking hyphen (&quot;‑&quot;, U+2011) is used below
 		suffix = '‑മത്തെ', 
 	},
 
 	-- Malay
 	['ms-scheme'] = {
 		rules = 'prefix',
 		-- non-breaking hyphen (&quot;‑&quot;, U+2011) is used below
 		prefix = 'ke‑', 
 	},
 	
 	-- Dutch
 	['nl-scheme'] = {
 		rules = 'suffix',
 		suffix = 'e',
 	},
 	
 	-- Polish
 	['pl-scheme'] = {
 		rules = 'mod10-gendered-suffix-skip-tens',
 		-- non-breaking hyphens (&quot;‑&quot;, U+2011) are used below
 		suffix = '‑ty',
 		suffix_f = '‑ta',
 		suffix_n = '‑te',
 		suffix_1 = '‑szy',
 		suffix_1_f = '‑sza',
 		suffix_1_n = '‑sze',
 		suffix_2 = '‑gi',
 		suffix_2_f = '‑ga',
 		suffix_2_n = '‑gie',
 		suffix_3 = '‑ci',
 		suffix_3_f = '‑cia',
 		suffix_3_n = '‑cie',
 		suffix_7 = '‑my',
 		suffix_7_f = '‑ma',
 		suffix_7_n = '‑me',
 		suffix_8 = '‑my',
 		suffix_8_f = '‑ma',
 		suffix_8_n = '‑me',
 	},
 
 	-- Russian
 	['ru-scheme'] = {
 		rules = 'gendered-suffix',
 		-- non-breaking hyphens (&quot;‑&quot;, U+2011) are used below
 		suffix = '‑й',
 		suffix_m = '‑й',
 		suffix_f = '‑я',
 		suffix_n = '‑е',
 	},
 	
 	-- Swedish
 	['sv-scheme'] = {
 		rules = 'skip-tens',
 		suffix = ':e',
 		suffix_1 = ':a',
 		suffix_2 = ':a',
 	},
 	
 	-- Thai
 	['th-scheme'] = {
 		rules = 'prefix',
 		prefix = 'ที่', 
 	},
 	
 	-- Modern Tamil (using European digits for all numbers, with a hyphen before the suffix)
 	['ta-scheme'] = {
 		rules = 'suffix',
 		-- non-breaking hyphen (&quot;‑&quot;, U+2011) is used below
 		suffix = '‑ஆம்',
 		formatlang = 'en',
 	},
 	
 	-- Traditional Tamil (using Tamil digits without any hyphen before the suffix, but a distinct prefix and suffix for 1st)
 	['ta-scheme/trad'] = {
 		rules = 'suffix-one',
 		suffix = 'ஆம்',
 		prefix_1 = 'மு',
 		suffix_1 = 'லாம்',
 	},
 
 	-- Ukrainian: see [[:uk:Вікіпедія:Стиль/Нарощення порядкових числівників#Нарощення]] and [[:uk:Шаблон:-й]]
 	-- FIXME: 0?
 	['uk-scheme'] = {
 		rules = 'uk-rules',
 		-- non-breaking hyphens (&quot;‑&quot;, U+2011) are used below
 		suffix = '‑й',
 		suffix_f = '‑та',
 		suffix_n = '‑те',
 		suffix_1_f = '‑ша',
 		suffix_1_n = '‑ше',
 		suffix_2_f = '‑га',
 		suffix_2_n = '‑ге',
 		suffix_3_f = '‑тя',
 		suffix_3_n = '‑тє',
 		suffix_7_f = '‑ма',
 		suffix_7_n = '‑ме',
 		suffix_8_f = '‑ма',
 		suffix_8_n = '‑ме',
 		suffix_40_f = '‑ва',
 		suffix_40_n = '‑ве',
 		suffix_1000_f = '‑на',
 		suffix_1000_n = '‑не',
 	},
 	
 	-- Vietnamese
 	['vi-scheme'] = {
 		rules = 'prefix',
 		prefix = 'thứ ',
 	},
 	
 	-- Chinese
 	['zh-scheme'] = {
 		rules = 'prefix',
 		prefix = '第', 
 	},
 }