local p = {}
--[[ Different languages use different schemes for ordinals, and some of these schemes are shared between languages.
"SchemeFromLang" picks an ordinal scheme based on a specified language.
All unlisted languages default to the "period-scheme", i.e. "104." is the ordinal for the value "104".
Languages will follow the regular language fallback chain. For example, "de-formal" would fallback to scheme for "de",
and only if that does not exist would the "period-scheme" be used.
]]
p.SchemeFromLang = {
['bn'] = 'bn-scheme', -- Bengali
['br'] = 'br-scheme', -- Breton
['cs'] = 'period-scheme', -- Czech
['da'] = 'period-scheme', -- Danish
['de'] = 'period-scheme', -- German
['el'] = 'el-scheme', -- Greek
['en'] = 'en-scheme', -- English
['eo'] = 'eo-scheme', -- Esperanto
['es'] = 'es-scheme', -- Spanish
['et'] = 'period-scheme', -- Estonian
['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
['nl'] = 'nl-scheme', -- Dutch
['no'] = 'no-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
['th'] = 'th-scheme', -- Thai
['zh'] = 'zh-scheme', -- Chinese
}
--[[ Text used to internationalize the various schemes.
Styles are supported by suffixing "/style" to key.
Styles that are superscripted set "superscript" to true.
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
['null-scheme'] = {
},
-- the period scheme, i.e. "<value>." used for at least: cs, de, fi, hu
['period-scheme'] = {
rules = 'suffix',
suffix = '.'
},
-- the English scheme, i.e. "1st", "2nd", "3rd", "4th".
['en-scheme'] = {
rules = 'skip-tens',
superscript = true,
suffix = 'th',
suffix_1 = 'st',
suffix_2 = 'nd',
suffix_3 = 'rd',
},
-- the English scheme using the "d" style, i.e. "23d".
['en-scheme/d'] = {
rules = 'suffix',
suffix = 'd'
},
-- Bengali
['bn-scheme'] = {
rules = 'mod10-suffix',
superscript = true,
suffix_0 = 'ম',
suffix_1 = 'ম',
suffix_2 = 'য়',
suffix_3 = 'য়',
suffix_4 = 'র্থ়',
suffix_5 = 'ম',
suffix_6 = 'ষ্ঠ',
suffix_7 = 'ম',
suffix_8 = 'ম',
suffix_9 = 'ম',
},
-- Breton
['br-scheme'] = {
rules = 'suffix',
suffix = '-vet',
formatlang = 'eo' -- pre-Lua {{Ordinal}} template used "eo" number formatting for "br" ordinals
},
-- Greek
['el-scheme'] = {
rules = 'gendered-suffix',
suffix = 'ος',
suffix_m = 'ος',
suffix_f = 'η',
suffix_n = 'ο',
},
-- Esperanto
['eo-scheme'] = {
rules = 'suffix',
suffix = '-a',
},
-- Romance (Italian, Portuguese)
['romance-scheme'] = {
rules = 'gendered-suffix',
superscript = true,
period = false,
suffix = 'o',
suffix_m = 'o',
suffix_f = 'a',
suffix_n = 'o',
},
-- Spanish
['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',
suffix_1_m = 'er',
suffix_1_f = 're',
suffix_1_n = 'e',
},
-- the French scheme using the "roman" style ("roman year" is a supported alias for "roman")
['fr-scheme/roman'] = {
rules = 'gendered-suffix-one',
superscript = true,
suffix = 'e',
suffix_1 = 'e',
suffix_1_m = 'er',
suffix_1_f = 're',
suffix_1_n = 'е',
formatlang = 'roman'
},
-- Armenian
['hy-scheme'] = {
rules = 'suffix-one',
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',
},
-- Khmer
['km-scheme'] = {
rules = 'prefix',
prefix = 'ទ',
},
-- Japanese
-- this is for the adjective in undetermined order before noun; otherwise Japanese use: <cardinal number><noun>目
['ja-scheme'] = {
rules = 'prefix',
prefix = '第',
},
-- Latin
['la-scheme'] = {
rules = 'suffix',
superscript = true,
suffix = 'o',
formatlang = 'roman'
},
-- Laothian
['lo-scheme'] = {
rules = 'prefix',
prefix = 'ທີ່',
},
-- Korean
['ko-scheme'] = {
rules = 'suffix',
suffix = '째',
},
-- Macedonian
['mk-scheme'] = {
rules = 'mod10-suffix',
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',
suffix = '-മത്തെ',
},
-- Malay
['ms-scheme'] = {
rules = 'prefix',
prefix = 'ke-',
},
-- Dutch
['nl-scheme'] = {
rules = 'suffix',
suffix = 'e',
},
--Norwegian
['no-scheme'] = {
rules = 'skip-tens',
superscript = true,
suffix = 'de',
suffix_1 = 'ste',
suffix_2 = 'dre',
suffix_3 = 'dje',
suffix_5 = 'te',
suffix_6 = 'te',
},
-- Polish
['pl-scheme'] = {
rules = 'mod10-gendered-suffix-skip-tens',
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',
suffix = '-й',
suffix_m = '-й',
suffix_f = '-я',
suffix_n = '-е',
},
-- Swedish
['sv-scheme'] = {
rules = 'skip-tens',
suffix = ':e',
suffix_1 = ':a',
suffix_2 = ':a',
},
['th-scheme'] = {
rules = 'prefix',
prefix = 'ที่',
},
['zh-scheme'] = {
rules = 'prefix',
prefix = '第',
},
}
return p