import type { Quarter } from '../../../../types' ; import type { Localize , LocalizeFn } from '../../../types' ; import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index' ; const eraValues = { narrow : [ 'TCN' , 'SCN' ] as const , abbreviated : [ 'trước CN' , 'sau CN' ] as const , wide : [ 'trước Công Nguyên' , 'sau Công Nguyên' ] as const , } ; const quarterValues = { narrow : [ '1' , '2' , '3' , '4' ] as const , abbreviated : [ 'Q1' , 'Q2' , 'Q3' , 'Q4' ] as const , wide : [ 'Quý 1' , 'Quý 2' , 'Quý 3' , 'Quý 4' ] as const , } ; const formattingQuarterValues = { narrow : [ '1' , '2' , '3' , '4' ] as const , abbreviated : [ 'Q1' , 'Q2' , 'Q3' , 'Q4' ] as const , wide : [ 'quý I' , 'quý II' , 'quý III' , 'quý IV' ] as const , } ; const monthValues = { narrow : [ '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '10' , '11' , '12' , ] as const , abbreviated : [ 'Thg 1' , 'Thg 2' , 'Thg 3' , 'Thg 4' , 'Thg 5' , 'Thg 6' , 'Thg 7' , 'Thg 8' , 'Thg 9' , 'Thg 10' , 'Thg 11' , 'Thg 12' , ] as const , wide : [ 'Tháng Một' , 'Tháng Hai' , 'Tháng Ba' , 'Tháng Tư' , 'Tháng Năm' , 'Tháng Sáu' , 'Tháng Bảy' , 'Tháng Tám' , 'Tháng Chín' , 'Tháng Mười' , 'Tháng Mười Một' , 'Tháng Mười Hai' , ] as const , } ; const formattingMonthValues = { narrow : [ '01' , '02' , '03' , '04' , '05' , '06' , '07' , '08' , '09' , '10' , '11' , '12' , ] as const , abbreviated : [ 'thg 1' , 'thg 2' , 'thg 3' , 'thg 4' , 'thg 5' , 'thg 6' , 'thg 7' , 'thg 8' , 'thg 9' , 'thg 10' , 'thg 11' , 'thg 12' , ] as const , wide : [ 'tháng 01' , 'tháng 02' , 'tháng 03' , 'tháng 04' , 'tháng 05' , 'tháng 06' , 'tháng 07' , 'tháng 08' , 'tháng 09' , 'tháng 10' , 'tháng 11' , 'tháng 12' , ] as const , } ; const dayValues = { narrow : [ 'CN' , 'T2' , 'T3' , 'T4' , 'T5' , 'T6' , 'T7' ] as const , short : [ 'CN' , 'Th 2' , 'Th 3' , 'Th 4' , 'Th 5' , 'Th 6' , 'Th 7' ] as const , abbreviated : [ 'CN' , 'Thứ 2' , 'Thứ 3' , 'Thứ 4' , 'Thứ 5' , 'Thứ 6' , 'Thứ 7' , ] as const , wide : [ 'Chủ Nhật' , 'Thứ Hai' , 'Thứ Ba' , 'Thứ Tư' , 'Thứ Năm' , 'Thứ Sáu' , 'Thứ Bảy' , ] as const , } ; const dayPeriodValues = { narrow : { am : 'am' , pm : 'pm' , midnight : 'nửa đêm' , noon : 'tr' , morning : 'sg' , afternoon : 'ch' , evening : 'tối' , night : 'đêm' , } , abbreviated : { am : 'AM' , pm : 'PM' , midnight : 'nửa đêm' , noon : 'trưa' , morning : 'sáng' , afternoon : 'chiều' , evening : 'tối' , night : 'đêm' , } , wide : { am : 'SA' , pm : 'CH' , midnight : 'nửa đêm' , noon : 'trưa' , morning : 'sáng' , afternoon : 'chiều' , evening : 'tối' , night : 'đêm' , } , } ; const formattingDayPeriodValues = { narrow : { am : 'am' , pm : 'pm' , midnight : 'nửa đêm' , noon : 'tr' , morning : 'sg' , afternoon : 'ch' , evening : 'tối' , night : 'đêm' , } , abbreviated : { am : 'AM' , pm : 'PM' , midnight : 'nửa đêm' , noon : 'trưa' , morning : 'sáng' , afternoon : 'chiều' , evening : 'tối' , night : 'đêm' , } , wide : { am : 'SA' , pm : 'CH' , midnight : 'nửa đêm' , noon : 'giữa trưa' , morning : 'vào buổi sáng' , afternoon : 'vào buổi chiều' , evening : 'vào buổi tối' , night : 'vào ban đêm' , } , } ; const ordinalNumber = ( dirtyNumber , options ) => { const number = Number ( dirtyNumber ) ; const unit = options ?. unit ; if ( unit === 'quarter' ) { switch ( number ) { case 1 : return 'I' ; case 2 : return 'II' ; case 3 : return 'III' ; case 4 : return 'IV' ; } } else if ( unit === 'day' ) { switch ( number ) { case 1 : return 'thứ 2' ; case 2 : return 'thứ 3' ; case 3 : return 'thứ 4' ; case 4 : return 'thứ 5' ; case 5 : return 'thứ 6' ; case 6 : return 'thứ 7' ; case 7 : return 'chủ nhật' ; } } else if ( unit === 'week' ) { if ( number === 1 ) { return 'thứ nhất' ; } else { return 'thứ ' + number ; } } else if ( unit === 'dayOfYear' ) { if ( number === 1 ) { return 'đầu tiên' ; } else { return 'thứ ' + number ; } } return String ( number ) ; } ; const localize = { ordinalNumber , era : buildLocalizeFn ( { values : eraValues , defaultWidth : 'wide' , } ) , quarter : buildLocalizeFn ( { values : quarterValues , defaultWidth : 'wide' , formattingValues : formattingQuarterValues , defaultFormattingWidth : '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 : 'wide' , formattingValues : formattingDayPeriodValues , defaultFormattingWidth : 'wide' , } ) , } ; export default localize ;