@@ -1298,19 +1298,19 @@ class DutchLocale(Locale):
12981298
12991299
13001300class SlavicBaseLocale (Locale ):
1301- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]]
1301+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]]
13021302
13031303 def _format_timeframe (self , timeframe : TimeFrameLiteral , delta : int ) -> str :
13041304 form = self .timeframes [timeframe ]
13051305 delta = abs (delta )
13061306
1307- if isinstance (form , list ):
1307+ if isinstance (form , Mapping ):
13081308 if delta % 10 == 1 and delta % 100 != 11 :
1309- form = form [0 ]
1309+ form = form ["singular" ]
13101310 elif 2 <= delta % 10 <= 4 and (delta % 100 < 10 or delta % 100 >= 20 ):
1311- form = form [1 ]
1311+ form = form ["dual" ]
13121312 else :
1313- form = form [2 ]
1313+ form = form ["plural" ]
13141314
13151315 return form .format (delta )
13161316
@@ -1322,20 +1322,32 @@ class BelarusianLocale(SlavicBaseLocale):
13221322 past = "{0} таму"
13231323 future = "праз {0}"
13241324
1325- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]] = {
1325+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]] = {
13261326 "now" : "зараз" ,
13271327 "second" : "секунду" ,
13281328 "seconds" : "{0} некалькі секунд" ,
13291329 "minute" : "хвіліну" ,
1330- "minutes" : ["{0} хвіліну" , "{0} хвіліны" , "{0} хвілін" ],
1330+ "minutes" : {
1331+ "singular" : "{0} хвіліну" ,
1332+ "dual" : "{0} хвіліны" ,
1333+ "plural" : "{0} хвілін" ,
1334+ },
13311335 "hour" : "гадзіну" ,
1332- "hours" : ["{0} гадзіну" , "{0} гадзіны" , "{0} гадзін" ],
1336+ "hours" : {
1337+ "singular" : "{0} гадзіну" ,
1338+ "dual" : "{0} гадзіны" ,
1339+ "plural" : "{0} гадзін" ,
1340+ },
13331341 "day" : "дзень" ,
1334- "days" : [ " {0} дзень" , "{0} дні" , "{0} дзён" ] ,
1342+ "days" : { "singular" : " {0} дзень" , "dual" : " {0} дні" , "plural" : " {0} дзён"} ,
13351343 "month" : "месяц" ,
1336- "months" : ["{0} месяц" , "{0} месяцы" , "{0} месяцаў" ],
1344+ "months" : {
1345+ "singular" : "{0} месяц" ,
1346+ "dual" : "{0} месяцы" ,
1347+ "plural" : "{0} месяцаў" ,
1348+ },
13371349 "year" : "год" ,
1338- "years" : [ " {0} год" , "{0} гады" , "{0} гадоў" ] ,
1350+ "years" : { "singular" : " {0} год" , "dual" : " {0} гады" , "plural" : " {0} гадоў"} ,
13391351 }
13401352
13411353 month_names = [
@@ -1391,22 +1403,42 @@ class PolishLocale(SlavicBaseLocale):
13911403
13921404 # The nouns should be in genitive case (Polish: "dopełniacz")
13931405 # in order to correctly form `past` & `future` expressions.
1394- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]] = {
1406+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]] = {
13951407 "now" : "teraz" ,
13961408 "second" : "sekundę" ,
1397- "seconds" : ["{0} sekund" , "{0} sekundy" , "{0} sekund" ],
1409+ "seconds" : {
1410+ "singular" : "{0} sekund" ,
1411+ "dual" : "{0} sekundy" ,
1412+ "plural" : "{0} sekund" ,
1413+ },
13981414 "minute" : "minutę" ,
1399- "minutes" : ["{0} minut" , "{0} minuty" , "{0} minut" ],
1415+ "minutes" : {
1416+ "singular" : "{0} minut" ,
1417+ "dual" : "{0} minuty" ,
1418+ "plural" : "{0} minut" ,
1419+ },
14001420 "hour" : "godzinę" ,
1401- "hours" : ["{0} godzin" , "{0} godziny" , "{0} godzin" ],
1421+ "hours" : {
1422+ "singular" : "{0} godzin" ,
1423+ "dual" : "{0} godziny" ,
1424+ "plural" : "{0} godzin" ,
1425+ },
14021426 "day" : "dzień" ,
14031427 "days" : "{0} dni" ,
14041428 "week" : "tydzień" ,
1405- "weeks" : ["{0} tygodni" , "{0} tygodnie" , "{0} tygodni" ],
1429+ "weeks" : {
1430+ "singular" : "{0} tygodni" ,
1431+ "dual" : "{0} tygodnie" ,
1432+ "plural" : "{0} tygodni" ,
1433+ },
14061434 "month" : "miesiąc" ,
1407- "months" : ["{0} miesięcy" , "{0} miesiące" , "{0} miesięcy" ],
1435+ "months" : {
1436+ "singular" : "{0} miesięcy" ,
1437+ "dual" : "{0} miesiące" ,
1438+ "plural" : "{0} miesięcy" ,
1439+ },
14081440 "year" : "rok" ,
1409- "years" : [ " {0} lat" , "{0} lata" , "{0} lat" ] ,
1441+ "years" : { "singular" : " {0} lat" , "dual" : " {0} lata" , "plural" : " {0} lat"} ,
14101442 }
14111443
14121444 month_names = [
@@ -1460,22 +1492,34 @@ class RussianLocale(SlavicBaseLocale):
14601492 past = "{0} назад"
14611493 future = "через {0}"
14621494
1463- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]] = {
1495+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]] = {
14641496 "now" : "сейчас" ,
14651497 "second" : "Второй" ,
14661498 "seconds" : "{0} несколько секунд" ,
14671499 "minute" : "минуту" ,
1468- "minutes" : ["{0} минуту" , "{0} минуты" , "{0} минут" ],
1500+ "minutes" : {
1501+ "singular" : "{0} минуту" ,
1502+ "dual" : "{0} минуты" ,
1503+ "plural" : "{0} минут" ,
1504+ },
14691505 "hour" : "час" ,
1470- "hours" : [ " {0} час" , "{0} часа" , "{0} часов" ] ,
1506+ "hours" : { "singular" : " {0} час" , "dual" : " {0} часа" , "plural" : " {0} часов"} ,
14711507 "day" : "день" ,
1472- "days" : [ " {0} день" , "{0} дня" , "{0} дней" ] ,
1508+ "days" : { "singular" : " {0} день" , "dual" : " {0} дня" , "plural" : " {0} дней"} ,
14731509 "week" : "неделю" ,
1474- "weeks" : ["{0} неделю" , "{0} недели" , "{0} недель" ],
1510+ "weeks" : {
1511+ "singular" : "{0} неделю" ,
1512+ "dual" : "{0} недели" ,
1513+ "plural" : "{0} недель" ,
1514+ },
14751515 "month" : "месяц" ,
1476- "months" : ["{0} месяц" , "{0} месяца" , "{0} месяцев" ],
1516+ "months" : {
1517+ "singular" : "{0} месяц" ,
1518+ "dual" : "{0} месяца" ,
1519+ "plural" : "{0} месяцев" ,
1520+ },
14771521 "year" : "год" ,
1478- "years" : [ " {0} год" , "{0} года" , "{0} лет" ] ,
1522+ "years" : { "singular" : " {0} год" , "dual" : " {0} года" , "plural" : " {0} лет"} ,
14791523 }
14801524
14811525 month_names = [
@@ -1596,20 +1640,32 @@ class BulgarianLocale(SlavicBaseLocale):
15961640 past = "{0} назад"
15971641 future = "напред {0}"
15981642
1599- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]] = {
1643+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]] = {
16001644 "now" : "сега" ,
16011645 "second" : "секунда" ,
16021646 "seconds" : "{0} няколко секунди" ,
16031647 "minute" : "минута" ,
1604- "minutes" : ["{0} минута" , "{0} минути" , "{0} минути" ],
1648+ "minutes" : {
1649+ "singular" : "{0} минута" ,
1650+ "dual" : "{0} минути" ,
1651+ "plural" : "{0} минути" ,
1652+ },
16051653 "hour" : "час" ,
1606- "hours" : [ " {0} час" , "{0} часа" , "{0} часа" ] ,
1654+ "hours" : { "singular" : " {0} час" , "dual" : " {0} часа" , "plural" : " {0} часа"} ,
16071655 "day" : "ден" ,
1608- "days" : [ " {0} ден" , "{0} дни" , "{0} дни" ] ,
1656+ "days" : { "singular" : " {0} ден" , "dual" : " {0} дни" , "plural" : " {0} дни"} ,
16091657 "month" : "месец" ,
1610- "months" : ["{0} месец" , "{0} месеца" , "{0} месеца" ],
1658+ "months" : {
1659+ "singular" : "{0} месец" ,
1660+ "dual" : "{0} месеца" ,
1661+ "plural" : "{0} месеца" ,
1662+ },
16111663 "year" : "година" ,
1612- "years" : ["{0} година" , "{0} години" , "{0} години" ],
1664+ "years" : {
1665+ "singular" : "{0} година" ,
1666+ "dual" : "{0} години" ,
1667+ "plural" : "{0} години" ,
1668+ },
16131669 }
16141670
16151671 month_names = [
@@ -1663,20 +1719,32 @@ class UkrainianLocale(SlavicBaseLocale):
16631719 past = "{0} тому"
16641720 future = "за {0}"
16651721
1666- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]] = {
1722+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]] = {
16671723 "now" : "зараз" ,
16681724 "second" : "секунда" ,
16691725 "seconds" : "{0} кілька секунд" ,
16701726 "minute" : "хвилину" ,
1671- "minutes" : ["{0} хвилину" , "{0} хвилини" , "{0} хвилин" ],
1727+ "minutes" : {
1728+ "singular" : "{0} хвилину" ,
1729+ "dual" : "{0} хвилини" ,
1730+ "plural" : "{0} хвилин" ,
1731+ },
16721732 "hour" : "годину" ,
1673- "hours" : ["{0} годину" , "{0} години" , "{0} годин" ],
1733+ "hours" : {
1734+ "singular" : "{0} годину" ,
1735+ "dual" : "{0} години" ,
1736+ "plural" : "{0} годин" ,
1737+ },
16741738 "day" : "день" ,
1675- "days" : [ " {0} день" , "{0} дні" , "{0} днів" ] ,
1739+ "days" : { "singular" : " {0} день" , "dual" : " {0} дні" , "plural" : " {0} днів"} ,
16761740 "month" : "місяць" ,
1677- "months" : ["{0} місяць" , "{0} місяці" , "{0} місяців" ],
1741+ "months" : {
1742+ "singular" : "{0} місяць" ,
1743+ "dual" : "{0} місяці" ,
1744+ "plural" : "{0} місяців" ,
1745+ },
16781746 "year" : "рік" ,
1679- "years" : [ " {0} рік" , "{0} роки" , "{0} років" ] ,
1747+ "years" : { "singular" : " {0} рік" , "dual" : " {0} роки" , "plural" : " {0} років"} ,
16801748 }
16811749
16821750 month_names = [
@@ -1729,22 +1797,42 @@ class MacedonianLocale(SlavicBaseLocale):
17291797 past = "пред {0}"
17301798 future = "за {0}"
17311799
1732- timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , List [ str ]]]] = {
1800+ timeframes : ClassVar [Mapping [TimeFrameLiteral , Union [str , Mapping [ str , str ]]]] = {
17331801 "now" : "сега" ,
17341802 "second" : "една секунда" ,
1735- "seconds" : ["{0} секунда" , "{0} секунди" , "{0} секунди" ],
1803+ "seconds" : {
1804+ "singular" : "{0} секунда" ,
1805+ "dual" : "{0} секунди" ,
1806+ "plural" : "{0} секунди" ,
1807+ },
17361808 "minute" : "една минута" ,
1737- "minutes" : ["{0} минута" , "{0} минути" , "{0} минути" ],
1809+ "minutes" : {
1810+ "singular" : "{0} минута" ,
1811+ "dual" : "{0} минути" ,
1812+ "plural" : "{0} минути" ,
1813+ },
17381814 "hour" : "еден саат" ,
1739- "hours" : [ " {0} саат" , "{0} саати" , "{0} саати" ] ,
1815+ "hours" : { "singular" : " {0} саат" , "dual" : " {0} саати" , "plural" : " {0} саати"} ,
17401816 "day" : "еден ден" ,
1741- "days" : [ " {0} ден" , "{0} дена" , "{0} дена" ] ,
1817+ "days" : { "singular" : " {0} ден" , "dual" : " {0} дена" , "plural" : " {0} дена"} ,
17421818 "week" : "една недела" ,
1743- "weeks" : ["{0} недела" , "{0} недели" , "{0} недели" ],
1819+ "weeks" : {
1820+ "singular" : "{0} недела" ,
1821+ "dual" : "{0} недели" ,
1822+ "plural" : "{0} недели" ,
1823+ },
17441824 "month" : "еден месец" ,
1745- "months" : ["{0} месец" , "{0} месеци" , "{0} месеци" ],
1825+ "months" : {
1826+ "singular" : "{0} месец" ,
1827+ "dual" : "{0} месеци" ,
1828+ "plural" : "{0} месеци" ,
1829+ },
17461830 "year" : "една година" ,
1747- "years" : ["{0} година" , "{0} години" , "{0} години" ],
1831+ "years" : {
1832+ "singular" : "{0} година" ,
1833+ "dual" : "{0} години" ,
1834+ "plural" : "{0} години" ,
1835+ },
17481836 }
17491837
17501838 meridians = {"am" : "дп" , "pm" : "пп" , "AM" : "претпладне" , "PM" : "попладне" }
0 commit comments