로케일 설정
다국어 환경에서 그리드를 더 편하게 설정할 수 있도록 기능이 강화되었습니다.
그리드 내부에서 사용되고 있는 문구들을 지정한 언어에 맞게 변경하여 표시할 수 있으며 숫자 포맷도 국제 표준에 맞게 currency, accounting, decimal 형태로 표시할 수 있습니다.
숫자 포맷의 추가나 수정이 필요한 경우 Intl.NumberFormat (opens in a new tab) 을 참고하여 포맷을 작성합니다.
기본으로 제공되는 numberFormat은 아래와 같습니다.
number: {
style: "decimal",
excelFormat: "#,##0.0"
},
currency: {
style: "currency",
currency: currency,
excelFormat: currency === "KRW" ? "₩#,##0" : undefined
},
accounting: {
style: "currency",
currency: currency,
currencySign: "accounting",
// excelFormat: currency === "KRW" ? "\"₩\"#,##0_);[Red](\"₩\"#,##0)" : undefined
}
**주의사항**
- 화면에 표시되는 형태만 변경되며 편집기는 일반 숫자편집기가 사용 됩니다.
const message = {
"en" : {
dateEditorWeekDays: ['sun','mon','tue','wed','thu','fri','sat'],
dateEditorMonths: ['Jun','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
dateEditorSaveLabel: 'Save',
dateEditorCancelLabel: 'Cancel',
dateEditorDeleteLabel: 'Delete',
dateEditorTodayLabel: 'Today',
dateEditorHourLabel: 'Ho',
dateEditorMinuteLabel: 'Mi',
dateEditorSecondLabel: 'Se',
dateEditorYearDisplayFormat: '{Y}',
// dateEditorMonthDisplayFormat: '{M}월',
searchEditorMoreText: "more",
checkListAcceptText: "Accept",
checkListCancelText: "Cancel",
checkListAllCheckText: "Check All",
filterSelectorAcceptText: "Accept",
filterSelectorAllCheckText: "(All Select)",
filterSelectorCancelText: "Cancel",
filterSelectorEmptyFilterText: "(Empty Value)",
filterSelectorFilterResetText: "Reset",
filterSelectorFiltersResetText: "Reset All",
filterSelectorSearchPlaceholder: "Search...",
filterSelectorSearchedCheckText: "(Search All Selected)",
filterSelectorDateYearFormat: '{YYYY}',
filterSelectorDateQuarterFormat: 'Q{Q}',
filterSelectorDateMonthFormat: '{M}',
filterSelectorDateDayFormat: 'YYYY-MM-DD',
dataDropProxyLabel: "${rows} rows ${mode}",
dataDropModeCopy: "Move",
dataDropModeMove: "Copy",
groupingPrompt: "Drag a column header and drop it here to group by that column.",
displayEmptyMessage: "There is no data to display.",
filterOperatorContains: "contains",
filterOperatorNotContains: "not contains",
filterOperatorStartsWith: "starts with",
filterOperatorEndsWith: "ends width",
filterOperatorEqual: "equal",
filterOperatorNotEqual: "not Equal",
filterOperatorEmpty: "empty Value",
filterOperatorReset: "reset",
filterOperatorGreater: "greater then",
filterOperatorGreaterEqual: "greater then or equal",
filterOperatorLower: "less then",
filterOperatorLowerEqual: "less then or equal",
filterOperatorBetween: "between"
},
"ko": {
dateEditorCancelLabel: "취소",
dateEditorDeleteLabel: "삭제",
dateEditorHourLabel: "시",
dateEditorMinuteLabel: "분",
dateEditorSecondLabel: "초",
dateEditorMonths: ['1월','2월','3월','4월','5월','6월','7월','8월','9월','10월','11월','12월'],
dateEditorSaveLabel: "저장",
dateEditorTodayLabel: "오늘",
dateEditorWeekDays: ['일','월','화','수','목','금','토'],
dateEditorYearDisplayFormat: '{Y}년',
dateEditorMonthDisplayFormat: '{M}월',
searchEditorMoreText: "더보기",
checkListAcceptText: "확인",
checkListCancelText: "취소",
checkListAllCheckText: "전체 선택",
filterSelectorAcceptText: "확인",
filterSelectorAllCheckText: "(전체 선택)",
filterSelectorCancelText: "취소",
filterSelectorEmptyFilterText: "(값 없음)",
filterSelectorFilterResetText: "초기화",
filterSelectorFiltersResetText: "전체 초기화",
filterSelectorSearchPlaceholder: "검색...",
filterSelectorSearchedCheckText: "(조회 전체 선택)",
filterSelectorDateYearFormat: '{YYYY}년도',
filterSelectorDateQuarterFormat: '{Q}사분기',
filterSelectorDateMonthFormat: '{M}월',
filterSelectorDateDayFormat: 'YYYY-MM-DD',
filterToastMessage: "필터링 중입니다...",
dataDropProxyLabel: "${rows} 행 ${mode}",
dataDropModeCopy: "이동",
dataDropModeMove: "복사",
groupingPrompt: "컬럼 헤더를 이 곳으로 끌어다 놓으면 그 컬럼으로 그룹핑합니다.",
groupingToastMessage: "행 그룹핑 중입니다...",
displayEmptyMessage: "표시할 데이타가 없습니다.",
filterOperatorContains: "포함",
filterOperatorNotContains: "포함하지 않음",
filterOperatorStartsWith: "시작 문자",
filterOperatorEndsWith: "끝 문자",
filterOperatorEqual: "같음",
filterOperatorNotEqual: "같지 않음",
filterOperatorEmpty: "값 없음",
filterOperatorReset: "초기화",
filterOperatorGreater: "보다 큼",
filterOperatorGreaterEqual: "크거나 같음",
filterOperatorLower: "보다 작음",
filterOperatorLowerEqual: "작거나 같음",
filterOperatorBetween: "범위",
invalidDatetimeFormat1: "잘못된 날짜 형식입니다. - 'H'와 'a'가 같이 존재할 수 없습니다: ",
invalidDatetimeFormat2: "잘못된 날짜 형식입니다 - 'h'가 있으면 'a'가 반드시 있어야 합니다: ",
commitEditingMessage: "먼저 편집을 완료 하십시오.",
deleteRowsMessage: "선택된 행(들)을 삭제하시겠습니까?",
invalidFormatMessage: "잘못된 입력 유형입니다.",
decimalSeparator: ".",
thousandsSeparator: ",",
sortingToastMessage: "정렬 중입니다...",
rowIndicatorHeadText: "No.",
rowIndicatorFootText: "Σ",
rowIndicatorSumText: "Σ",
stateTextCreateAndDeleted: "X",
stateTextCreated: "C",
stateTextDeleted: "D",
stateTextUpdated: "U",
rowOutOfBounds: "row is out of bounds: ",
fieldIndexOutOfBounds: "fieldIndex is out of bounds: ",
fieldNameMustExists: "fieldName must be exists.",
fieldNameAlreadyExists: "fieldName is already exists: ",
clientEditingError: "Client is editing (call grid.commit() or grid.cancel() first)"
},
"ja": {
dateEditorWeekDays: ['日','月','火','水','木','金','土'],
displayEmptyMessage: '表示するデータはありません。',
groupingPrompt: '列ヘッダーをこの位置にドラッグ&ドロップすると,その列にグループ化されます。',
dateEditorYearDisplayFormat: '{Y}年',
dateEditorMonthDisplayFormat: '{M}月',
dateEditorTodayLabel: '今日',
dateEditorMonths: ['いちがつ', 'にがつ', 'さがつ', 'しがつ', 'ごがつ', 'ろくがつ', 'しちがつ', 'はちがつ', 'くがつ', 'じゅうがつ', 'じゅういちがつ', 'じゅうにがつ'],
dateEditorSaveLabel: "セーブ",
dateEditorCancelLabel: "取消",
dateEditorDeleteLabel: "デリート",
checkListAcceptText: "適用する",
checkListCancelText: "取消",
checkListAllCheckText: "全選択",
},
"fr": {
dateEditorWeekDays: ['dim', 'lun', 'mar', 'mer', 'jeu', 'ven', 'sam'],
dateEditorMonths: ['janv', 'févr', 'mars', 'avr', 'mai', 'juin', 'juil', 'août', 'sept', 'oct', 'nov', 'déc'],
displayEmptyMessage: "Il n'y a aucune donnée à afficher"
},
"hi": {
displayEmptyMessage: 'प्रदर्शित करने के लिए कोई डेटा नहीं है.',
dateEditorWeekDays: ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
dateEditorMonths: ['जन॰', 'फ़र॰', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुल॰', 'अग॰', 'सित॰', 'अक्तू॰', 'नव॰', 'दिस॰'],
groupingPrompt: "किसी कॉलम हेडर को खींचें और उसे उस कॉलम के आधार पर समूहित करने के लिए यहां छोड़ें।",
dateEditorYearDisplayFormat: "{Y}वर्ष"
}
}
const gridLocale = {
"en-US": {
locale: "en-US",
currency: "USD",
messages: message.en,
numberFormats: {
currency: {
style: "currency",
currency: "USD"
},
USD: {
style: "currency",
currency: "USD"
}
}
},
"en-CA": {
locale: "en-CA",
currency: "CAD",
messages: message.en,
numberFormats: {
USD: {
style: "currency",
currency: "USD"
}
}
},
"fr-CA": {
locale: "fr-CA",
currency: "CAD",
messages: message.fr,
numberFormats: {
USD: {
style: "currency",
currency: "USD"
}
}
},
"hi-IN": {
locale: "hi-IN",
currency: "INR",
messages: message.hi,
numberFormats: {
USD: {
style: "currency",
currency: "USD"
}
}
},
"ko-KR": {
locale: "ko-KR",
currency: "KRW",
messages: message.ko,
numberFormats: {
currency: {
style: "currency",
currency: "KRW",
excelFormat: "₩#,##0"
},
accounting: {
style: "currency",
currency: "KRW",
currencySign: "accounting",
// excelFormat: "₩#,##0_);[빨강](₩#,##0)"
excelFormat:"\"₩\"#,##0_);[Red](\"₩\"#,##0)"
},
USD: {
style: "currency",
currency: "USD"
}
}
},
"ja-JP": {
locale: "ja-JP",
currency: "JPY",
messages: message.ja,
numberFormats: {
USD: {
style: "currency",
currency: "USD"
}
}
},
"fr-FR": {
locale: "fr-FR",
currency: "EUR",
messages: message.fr,
numberFormats: {
USD: {
style: "currency",
currency: "USD"
}
}
}
}
RealGrid.setLocale(gridLocale["en-US"])
dataProvider = new RealGrid.LocalDataProvider();
gridView = new RealGrid.GridView(container);
gridView.setDataSource(dataProvider);