UNPKG

mobile-react-infinite-calendar

Version:

A mobile-optimized infinite scroll calendar component for React

144 lines (143 loc) 3.95 kB
/** * 로케일 관련 유틸리티 함수들 */ import { ko, enUS, ja, zhCN, de, fr, it, es } from 'date-fns/locale'; import { LOCALE_CONSTANTS } from '../constants/calendar'; // 로케일 매핑 export const localeMap = { 'ko-KR': ko, 'ko': ko, 'en-US': enUS, 'en': enUS, 'ja-JP': ja, 'ja': ja, 'zh-CN': zhCN, 'zh': zhCN, 'de-DE': de, 'de': de, 'fr-FR': fr, 'fr': fr, 'it-IT': it, 'it': it, 'es-ES': es, 'es': es }; // 요일 텍스트 매핑 export const weekDaysMap = { 'ko-KR': ['일', '월', '화', '수', '목', '금', '토'], 'ko': ['일', '월', '화', '수', '목', '금', '토'], 'en-US': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 'en': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 'ja-JP': ['日', '月', '火', '水', '木', '金', '土'], 'ja': ['日', '月', '火', '水', '木', '金', '土'], 'zh-CN': ['日', '一', '二', '三', '四', '五', '六'], 'zh': ['日', '一', '二', '三', '四', '五', '六'], 'de-DE': ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], 'de': ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], 'fr-FR': ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'], 'fr': ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'], 'it-IT': ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'], 'it': ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'], 'es-ES': ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'], 'es': ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'] }; // 오늘 버튼 텍스트 매핑 export const todayButtonTextMap = { 'ko-KR': '오늘', 'ko': '오늘', 'en-US': 'Today', 'en': 'Today', 'ja-JP': '今日', 'ja': '今日', 'zh-CN': '今天', 'zh': '今天', 'de-DE': 'Heute', 'de': 'Heute', 'fr-FR': "Aujourd'hui", 'fr': "Aujourd'hui", 'it-IT': 'Oggi', 'it': 'Oggi', 'es-ES': 'Hoy', 'es': 'Hoy' }; // 공통 텍스트 매핑 export const commonTextMap = { cancel: { 'ko-KR': '취소', 'ko': '취소', 'en-US': 'Cancel', 'en': 'Cancel', 'ja-JP': 'キャンセル', 'ja': 'キャンセル', 'zh-CN': '取消', 'zh': '取消', 'de-DE': 'Abbrechen', 'de': 'Abbrechen', 'fr-FR': 'Annuler', 'fr': 'Annuler', 'it-IT': 'Annulla', 'it': 'Annulla', 'es-ES': 'Cancelar', 'es': 'Cancelar' }, confirm: { 'ko-KR': '확인', 'ko': '확인', 'en-US': 'OK', 'en': 'OK', 'ja-JP': 'OK', 'ja': 'OK', 'zh-CN': '确定', 'zh': '确定', 'de-DE': 'OK', 'de': 'OK', 'fr-FR': 'OK', 'fr': 'OK', 'it-IT': 'OK', 'it': 'OK', 'es-ES': 'OK', 'es': 'OK' } }; /** * 한국 로케일인지 확인 */ export const isKoreanLocale = (locale) => { return LOCALE_CONSTANTS.KOREAN_LOCALES.includes(locale); }; /** * 로케일에 맞는 date-fns 로케일 객체 반환 */ export const getDateFnsLocale = (locale) => { return localeMap[locale] || ko; }; /** * 로케일에 맞는 요일 배열 반환 */ export const getWeekDays = (locale) => { return weekDaysMap[locale] || weekDaysMap['ko-KR']; }; /** * 로케일에 맞는 오늘 버튼 텍스트 반환 */ export const getTodayButtonText = (locale) => { return todayButtonTextMap[locale] || todayButtonTextMap['ko-KR']; }; /** * 로케일에 맞는 공통 텍스트 반환 */ export const getCommonText = (key, locale) => { return commonTextMap[key][locale] || commonTextMap[key]['ko-KR']; }; /** * 로케일에 맞는 연도 접미사 반환 */ export const getYearSuffix = (locale) => { return isKoreanLocale(locale) ? '년' : ''; }; /** * 로케일에 맞는 월 접미사 반환 */ export const getMonthSuffix = (locale) => { return isKoreanLocale(locale) ? '월' : ''; };