import type { Quarter } from '../../../../types' ; import type { Localize , LocalizeFn } from '../../../types' ; import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index' ; const eraValues = { narrow : [ 'б.з.д.' , 'б.з.' ] as const , abbreviated : [ 'б.з.д.' , 'б.з.' ] as const , wide : [ 'біздің заманымызға дейін' , 'біздің заманымыз' ] as const , } ; const quarterValues = { narrow : [ '1' , '2' , '3' , '4' ] as const , abbreviated : [ '1-ші тоқ.' , '2-ші тоқ.' , '3-ші тоқ.' , '4-ші тоқ.' ] as const , wide : [ '1-ші тоқсан' , '2-ші тоқсан' , '3-ші тоқсан' , '4-ші тоқсан' ] as const , } ; const monthValues = { narrow : [ 'Қ' , 'А' , 'Н' , 'С' , 'М' , 'М' , 'Ш' , 'Т' , 'Қ' , 'Қ' , 'Қ' , 'Ж' ] as const , abbreviated : [ 'қаң' , 'ақп' , 'нау' , 'сәу' , 'мам' , 'мау' , 'шіл' , 'там' , 'қыр' , 'қаз' , 'қар' , 'жел' , ] as const , wide : [ 'қаңтар' , 'ақпан' , 'наурыз' , 'сәуір' , 'мамыр' , 'маусым' , 'шілде' , 'тамыз' , 'қыркүйек' , 'қазан' , 'қараша' , 'желтоқсан' , ] as const , } ; const formattingMonthValues = { narrow : [ 'Қ' , 'А' , 'Н' , 'С' , 'М' , 'М' , 'Ш' , 'Т' , 'Қ' , 'Қ' , 'Қ' , 'Ж' ] as const , abbreviated : [ 'қаң' , 'ақп' , 'нау' , 'сәу' , 'мам' , 'мау' , 'шіл' , 'там' , 'қыр' , 'қаз' , 'қар' , 'жел' , ] as const , wide : [ 'қаңтар' , 'ақпан' , 'наурыз' , 'сәуір' , 'мамыр' , 'маусым' , 'шілде' , 'тамыз' , 'қыркүйек' , 'қазан' , 'қараша' , 'желтоқсан' , ] as const , } ; const dayValues = { narrow : [ 'Ж' , 'Д' , 'С' , 'С' , 'Б' , 'Ж' , 'С' ] as const , short : [ 'жс' , 'дс' , 'сс' , 'ср' , 'бс' , 'жм' , 'сб' ] as const , abbreviated : [ 'жс' , 'дс' , 'сс' , 'ср' , 'бс' , 'жм' , 'сб' ] as const , wide : [ 'жексенбі' , 'дүйсенбі' , 'сейсенбі' , 'сәрсенбі' , 'бейсенбі' , 'жұма' , 'сенбі' , ] as const , } ; const dayPeriodValues = { narrow : { am : 'ТД' , pm : 'ТК' , midnight : 'түн ортасы' , noon : 'түс' , morning : 'таң' , afternoon : 'күндіз' , evening : 'кеш' , night : 'түн' , } , wide : { am : 'ТД' , pm : 'ТК' , midnight : 'түн ортасы' , noon : 'түс' , morning : 'таң' , afternoon : 'күндіз' , evening : 'кеш' , night : 'түн' , } , } ; const formattingDayPeriodValues = { narrow : { am : 'ТД' , pm : 'ТК' , midnight : 'түн ортасында' , noon : 'түс' , morning : 'таң' , afternoon : 'күн' , evening : 'кеш' , night : 'түн' , } , wide : { am : 'ТД' , pm : 'ТК' , midnight : 'түн ортасында' , noon : 'түсте' , morning : 'таңертең' , afternoon : 'күндіз' , evening : 'кеште' , night : 'түнде' , } , } ; const suffixes = { 0 : '-ші' , 1 : '-ші' , 2 : '-ші' , 3 : '-ші' , 4 : '-ші' , 5 : '-ші' , 6 : '-шы' , 7 : '-ші' , 8 : '-ші' , 9 : '-шы' , 10 : '-шы' , 20 : '-шы' , 30 : '-шы' , 40 : '-шы' , 50 : '-ші' , 60 : '-шы' , 70 : '-ші' , 80 : '-ші' , 90 : '-шы' , 100 : '-ші' , } ; type SuffixesKey = keyof typeof suffixes ; const ordinalNumber = ( dirtyNumber , _options ) => { const number = Number ( dirtyNumber ) as SuffixesKey ; const mod10 = ( number % 10 ) as SuffixesKey ; const b = number >= 100 ? 100 : null ; const suffix = suffixes [ number ] || suffixes [ mod10 ] || ( b && suffixes [ b ] ) || '' ; return number + suffix ; } ; const localize = { ordinalNumber , era : buildLocalizeFn ( { values : eraValues , defaultWidth : 'wide' , } ) , quarter : buildLocalizeFn ( { values : quarterValues , defaultWidth : 'wide' , argumentCallback : ( quarter ) => ( quarter - 1 ) as Quarter , } ) , month : buildLocalizeFn ( { values : monthValues , defaultWidth : 'wide' , formattingValues : formattingMonthValues , defaultFormattingWidth : 'wide' , } ) , day : buildLocalizeFn ( { values : dayValues , defaultWidth : 'wide' , } ) , dayPeriod : buildLocalizeFn ( { values : dayPeriodValues , defaultWidth : 'any' , formattingValues : formattingDayPeriodValues , defaultFormattingWidth : 'wide' , } ) , } ; export default localize ;