- | 봉사료 |
+ {t('transaction.cancel.partCancel.serviceFee')} |
diff --git a/src/entities/transaction/ui/billing-list.tsx b/src/entities/transaction/ui/billing-list.tsx
index 6f35f36..e50aebd 100644
--- a/src/entities/transaction/ui/billing-list.tsx
+++ b/src/entities/transaction/ui/billing-list.tsx
@@ -2,12 +2,14 @@ import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { BillingListProps } from '../model/types';
import { ListDateGroup } from './list-date-group';
+import { useTranslation } from 'react-i18next';
-export const BillingList = ({
+export const BillingList = ({
transactionCategory,
- listItems
+ listItems
}: BillingListProps) => {
const { navigate } = useNavigate();
+ const { t } = useTranslation();
const getListDateGroup = () => {
let rs = [];
@@ -62,10 +64,10 @@ export const BillingList = ({
{ getListDateGroup() }
-
+ onClick={ () => onClickToNavigate() }
+ >{ t('transaction.list.paymentRequest') }
>
);
diff --git a/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx b/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx
index a6c27d4..46f7f3f 100644
--- a/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx
+++ b/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx
@@ -4,6 +4,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { useSetOnBack } from '@/widgets/sub-layout/use-sub-layout';
import { CashReceiptPurposeType } from '../model/types';
import { PatternFormat } from 'react-number-format';
+import { useTranslation } from 'react-i18next';
export interface CashReceiptHandWrittenIssuanceStep1Props {
businessNumber?: string;
@@ -38,19 +39,20 @@ export const CashReceiptHandWrittenIssuanceStep1 = ({
setEmail,
setPhoneNumber
}: CashReceiptHandWrittenIssuanceStep1Props) => {
+ const { t } = useTranslation();
const { navigate } = useNavigate();
-
+
useSetOnBack(() => {
navigate(PATHS.transaction.cashReceipt.list);
});
return (
<>
- 발행 정보 입력
+ {t('transaction.handWrittenIssuance.step1Title')}
- 사업자 번호
+ {t('transaction.handWrittenIssuance.businessNumber')}
-
- 용도
+ {t('transaction.fields.purpose')}
+ >{t('transaction.handWrittenIssuance.incomeDeduction')}
+ >{t('transaction.handWrittenIssuance.expenseProof')}
- 상품명
+ {t('transaction.fields.productName')}
- ) => setProductName(e.target.value) }
/>
- 구매자
+ {t('transaction.fields.buyer')}
- ) => setBuyerName(e.target.value) }
/>
- 발행번호
+ {t('transaction.fields.issueNumber')}
- 이메일 주소
+ {t('account.emailAddress')}
) => setEmail(e.target.value) }
/>
- 전화번호
+ {t('account.phoneNumber')}
void;
@@ -31,17 +32,19 @@ export const CashReceiptHandWrittenIssuanceStep2 = ({
setServiceCharge,
onClickToVatCalculate
}: CashReceiptHandWrittenIssuanceStep2Props) => {
+ const { t } = useTranslation();
+
useSetOnBack(() => {
setProcessStep(ProcessStep.One);
});
-
+
return (
<>
- 발행 금액 입력
+ {t('transaction.handWrittenIssuance.step2Title')}
- 발행금액
+ {t('transaction.handWrittenIssuance.issueAmount')}
VAT자동계산
+ >{t('transaction.handWrittenIssuance.vatAutoCalc')}
- 공급가액
+ {t('transaction.fields.supplyAmount')}
- VAT
+ {t('transaction.fields.vat')}
- 면세금액
+ {t('transaction.fields.taxFreeAmount')}
- 봉사료
+ {t('transaction.fields.serviceAmount')}
- 발행금액은 공급가액 VAT,면세금액, 봉사료의 총합과 같아야 합니다.
+ {t('transaction.handWrittenIssuance.errorMessage')}
>
diff --git a/src/entities/transaction/ui/cash-receipt-list.tsx b/src/entities/transaction/ui/cash-receipt-list.tsx
index 785212f..1b5007c 100644
--- a/src/entities/transaction/ui/cash-receipt-list.tsx
+++ b/src/entities/transaction/ui/cash-receipt-list.tsx
@@ -2,12 +2,14 @@ import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { CashReceiptListProps } from '../model/types';
import { ListDateGroup } from './list-date-group';
+import { useTranslation } from 'react-i18next';
-export const CashReceiptList = ({
+export const CashReceiptList = ({
transactionCategory,
- listItems
+ listItems
}: CashReceiptListProps) => {
const { navigate } = useNavigate();
+ const { t } = useTranslation();
const getListDateGroup = () => {
let rs = [];
@@ -62,10 +64,10 @@ export const CashReceiptList = ({
{ getListDateGroup() }
-
+ onClick={ () => onClickToNavigate() }
+ >{ t('transaction.list.manualIssuance') }
>
);
diff --git a/src/entities/transaction/ui/cash-receit-purpose-update-bottom-sheet.tsx b/src/entities/transaction/ui/cash-receit-purpose-update-bottom-sheet.tsx
index 19cf6f3..3bc0b04 100644
--- a/src/entities/transaction/ui/cash-receit-purpose-update-bottom-sheet.tsx
+++ b/src/entities/transaction/ui/cash-receit-purpose-update-bottom-sheet.tsx
@@ -1,6 +1,7 @@
import { BottomSheetMotionDuration, BottomSheetMotionVaiants } from '@/entities/common/model/constant';
import { IMAGE_ROOT } from '@/shared/constants/common';
import { motion } from 'framer-motion';
+import { useTranslation } from 'react-i18next';
export interface CashReceitPurposeUpdateBottomSheetProps {
bottomSheetOn: boolean;
@@ -13,20 +14,21 @@ export const CashReceitPurposeUpdateBottomSheet = ({
setBottomSheetOn,
callPurposeUpdate
}: CashReceitPurposeUpdateBottomSheetProps) => {
-
+ const { t } = useTranslation();
+
const onClickToClose = () => {
setBottomSheetOn(false);
};
const onCliickToPurposeUpdate = () => {
callPurposeUpdate();
};
-
+
return (
<>
{ (bottomSheetOn) &&
}
-
- 현금영수증 용도 변경 안내
+ { t('transaction.bottomSheet.cashReceiptPurposeUpdate.title') }
@@ -51,10 +53,10 @@ export const CashReceitPurposeUpdateBottomSheet = ({
- 현금영수증의 용도 변경 시 기존 발급 내역이 취소되며, 선택한 용도에 맞게 새로 발급됩니다.
+ { t('transaction.bottomSheet.cashReceiptPurposeUpdate.description') }
- - 지출증빙용 → 소득공제용
- - 소득공제용 → 지출증빙용
+ - { t('transaction.bottomSheet.cashReceiptPurposeUpdate.expenseToIncome') }
+ - { t('transaction.bottomSheet.cashReceiptPurposeUpdate.incomeToExpense') }
@@ -64,7 +66,7 @@ export const CashReceitPurposeUpdateBottomSheet = ({
className="btn-50 btn-blue flex-1"
type="button"
onClick={ () => onCliickToPurposeUpdate() }
- >신청
+ >{ t('transaction.submit') }
>
diff --git a/src/entities/transaction/ui/escrow-mail-resend-bottom-sheet.tsx b/src/entities/transaction/ui/escrow-mail-resend-bottom-sheet.tsx
index 380cde3..8a98b18 100644
--- a/src/entities/transaction/ui/escrow-mail-resend-bottom-sheet.tsx
+++ b/src/entities/transaction/ui/escrow-mail-resend-bottom-sheet.tsx
@@ -1,5 +1,6 @@
import { IMAGE_ROOT } from '@/shared/constants/common';
import { motion } from 'framer-motion';
+import { useTranslation } from 'react-i18next';
export interface EscrowMailResendBottomSheetProps {
setBottomSheetOn: (bottomSheetOn: boolean) => void;
@@ -12,6 +13,7 @@ export const EscrowMailResendBottomSheet = ({
bottomSheetOn,
callMailResend
}: EscrowMailResendBottomSheetProps) => {
+ const { t } = useTranslation();
const onClickToClose = () => {
setBottomSheetOn(false);
@@ -30,7 +32,7 @@ export const EscrowMailResendBottomSheet = ({
{ (bottomSheetOn) &&
}
-
- 이메일 주소를 선택하세요
+ { t('transaction.bottomSheet.escrowMailResend.title') }
@@ -60,24 +62,24 @@ export const EscrowMailResendBottomSheet = ({
- 메일로 받기
+ { t('transaction.bottomSheet.escrowMailResend.mailLabel') }
-
+
-
+
- 등록된 메일 정보가 없습니다. 이메일 인증정보를 사용자관리 메뉴에서 추가 후 신청하세요.
+ { t('transaction.bottomSheet.escrowMailResend.errorNoEmail') }
@@ -87,7 +89,7 @@ export const EscrowMailResendBottomSheet = ({
className="btn-50 btn-blue flex-1"
type="button"
onClick={ () => onClickToMailResend() }
- >신청
+ >{ t('transaction.submit') }
>
diff --git a/src/entities/transaction/ui/list-item.tsx b/src/entities/transaction/ui/list-item.tsx
index c1f8964..1211681 100644
--- a/src/entities/transaction/ui/list-item.tsx
+++ b/src/entities/transaction/ui/list-item.tsx
@@ -5,6 +5,7 @@ import { ListItemProps, TransactionCategory } from '../model/types';
import moment from 'moment';
import { useStore } from '@/shared/model/store';
import { AllTracsactionStatusCode } from '../model/contant';
+import { useTranslation } from 'react-i18next';
export const ListItem = ({
transactionCategory,
@@ -12,12 +13,13 @@ export const ListItem = ({
installmentMonth, serviceName, serviceCode,
serviceDetailName, goodsAmount,
amount, customerName, issueNumber, approvalNumber,
- paymentMethod, processResult, transactionType,
+ paymentMethod, processResult, transactionType,
transactionDateTime, transactionAmount,
- deliveryStatus, settlementStatus,
+ deliveryStatus, settlementStatus,
cancelStatus, billKey, orderNumber
}: ListItemProps) => {
const { navigate } = useNavigate();
+ const { t } = useTranslation();
const getItemClass = () => {
let rs = '';
if(statusCode === '0'){
@@ -78,7 +80,7 @@ export const ListItem = ({
});
}
else{
- alert('pageType 이 존재하지 않습니다.');
+ alert(t('common.error'));
}
};
@@ -163,7 +165,7 @@ export const ListItem = ({
(!!installmentMonth && parseInt(installmentMonth) > 1) &&
<>
|
- { installmentMonth }개월 할부
+ { t('transaction.fields.installmentMonthly', { count: installmentMonth }) }
>
}
@@ -196,7 +198,7 @@ export const ListItem = ({
(!!installmentMonth && parseInt(installmentMonth) > 1) &&
<>
|
- { installmentMonth }개월 할부
+ { t('transaction.fields.installmentMonthly', { count: installmentMonth }) }
>
}
@@ -231,11 +233,11 @@ export const ListItem = ({
+ suffix={ t('home.currencyWon') }
+ >
>
diff --git a/src/entities/transaction/ui/section/all-transaction-cancel-section-bank-group.tsx b/src/entities/transaction/ui/section/all-transaction-cancel-section-bank-group.tsx
index bb65fe8..cf1e5c6 100644
--- a/src/entities/transaction/ui/section/all-transaction-cancel-section-bank-group.tsx
+++ b/src/entities/transaction/ui/section/all-transaction-cancel-section-bank-group.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { useStore } from "@/shared/model/store";
import { ChangeEvent, useState } from "react";
@@ -17,6 +18,7 @@ export const AllTransactionCancelSectionBankGroup = ({
accountHolder,
setAccountHolder
}: AllTransactionCancelSectionBankGroupProps ) => {
+ const { t } = useTranslation();
let bankList = useStore.getState().CommonStore.virtualBankList;
bankList = bankList.filter((value, index) => value.code1 !== '****');
@@ -37,14 +39,14 @@ export const AllTransactionCancelSectionBankGroup = ({
return (
<>
-
+
-
-
+
- ) => onChangeNewAccountNo(e.target.value) }
/>
@@ -66,11 +68,11 @@ export const AllTransactionCancelSectionBankGroup = ({
-
+
- ) => onChangeNewAccountHolder(e.target.value) }
/>
@@ -78,7 +80,7 @@ export const AllTransactionCancelSectionBankGroup = ({
- 환불은 입력한 계좌정보로 별도 확인 절차없이 지급됩니다. 입력 정보를 한번 더 확인해 주세요.
+ {t('transaction.cancel.bankGroup.notice')}
>
);
diff --git a/src/entities/transaction/ui/section/all-transaction-cancel-section-password-group.tsx b/src/entities/transaction/ui/section/all-transaction-cancel-section-password-group.tsx
index f8c39dd..ff68d4a 100644
--- a/src/entities/transaction/ui/section/all-transaction-cancel-section-password-group.tsx
+++ b/src/entities/transaction/ui/section/all-transaction-cancel-section-password-group.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { ChangeEvent, useState } from "react";
export interface AllTransactionCancelSectionPasswordGroupProps {
@@ -11,6 +12,7 @@ export const AllTransactionCancelSectionPasswordGroup = ({
setCancelPassword,
requestSuccess
}: AllTransactionCancelSectionPasswordGroupProps) => {
+ const { t } = useTranslation();
const [newCancelPassword, setNewCancelPassword] = useState (cancelPassword);
@@ -21,18 +23,18 @@ export const AllTransactionCancelSectionPasswordGroup = ({
return (
<>
-
+
- ) => onChangeNewCancelPassword(e.target.value) }
/>
{ !requestSuccess &&
- 비밀번호 불일치
+ {t('transaction.cancel.passwordGroup.passwordMismatch')}
}
>
);
diff --git a/src/entities/transaction/ui/section/amount-info-section.tsx b/src/entities/transaction/ui/section/amount-info-section.tsx
index d762e57..6951e3d 100644
--- a/src/entities/transaction/ui/section/amount-info-section.tsx
+++ b/src/entities/transaction/ui/section/amount-info-section.tsx
@@ -1,4 +1,5 @@
import moment from 'moment';
+import { useTranslation } from 'react-i18next';
import { NumericFormat } from 'react-number-format';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { useDownloadConfirmationMutation } from '../../api/use-download-confirmation-mutation';
@@ -7,7 +8,7 @@ import { SlideDown } from 'react-slidedown';
import 'react-slidedown/lib/slidedown.css';
export const AmountInfoSection = ({
- transactionCategory,
+ transactionCategory,
amountInfo,
isOpen,
tid,
@@ -15,23 +16,24 @@ export const AmountInfoSection = ({
onClickToOpenInfo,
canDownloadReceipt
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const { mutateAsync: downloadConfirmation } = useDownloadConfirmationMutation();
let newAmountInfo: Record | undefined = amountInfo;
const subItems: Record> = {
- mid: {name: 'MID', type: 'string'},
- transactionRequestAmount: {name: '거래요청금액', type: 'number'},
- transactionAmount: {name: '거래금액', type: 'number'},
- pointAmount: {name: '포인트금액', type: 'number'},
- couponAmount: {name: '쿠폰금액', type: 'number'},
- escrowFee: {name: '에스크로수수료', type: 'number'},
- kakaoMoneyAmount: {name: '카카오머니', type: 'number'},
- kakaoPointAmount: {name: '카카오포인트', type: 'number'},
- kakaoDiscountAmount: {name: '카카오 즉시할인', type: 'number'},
- naverPointAmount: {name: '네이버 포인트', type: 'number'},
- tossMoneyAmount: {name: '토스머니', type: 'number'},
- tossDiscountAmount: {name: '토스할인', type: 'number'},
- paycoPointAmount: {name: '페이코포인트', type: 'number'},
- paycoCouponAmount: {name: '페이코쿠폰', type: 'number'},
+ mid: {name: t('transaction.fields.mid'), type: 'string'},
+ transactionRequestAmount: {name: t('transaction.fields.transactionRequestAmount'), type: 'number'},
+ transactionAmount: {name: t('transaction.fields.transactionAmount'), type: 'number'},
+ pointAmount: {name: t('transaction.fields.pointAmount'), type: 'number'},
+ couponAmount: {name: t('transaction.fields.couponAmount'), type: 'number'},
+ escrowFee: {name: t('transaction.fields.escrowFee'), type: 'number'},
+ kakaoMoneyAmount: {name: t('transaction.fields.kakaoMoneyAmount'), type: 'number'},
+ kakaoPointAmount: {name: t('transaction.fields.kakaoPointAmount'), type: 'number'},
+ kakaoDiscountAmount: {name: t('transaction.fields.kakaoDiscountAmount'), type: 'number'},
+ naverPointAmount: {name: t('transaction.fields.naverPointAmount'), type: 'number'},
+ tossMoneyAmount: {name: t('transaction.fields.tossMoneyAmount'), type: 'number'},
+ tossDiscountAmount: {name: t('transaction.fields.tossDiscountAmount'), type: 'number'},
+ paycoPointAmount: {name: t('transaction.fields.paycoPointAmount'), type: 'number'},
+ paycoCouponAmount: {name: t('transaction.fields.paycoCouponAmount'), type: 'number'},
};
const openSubItems: Record> = {
@@ -134,13 +136,14 @@ export const AmountInfoSection = ({
let k = openSubItems[serviceCode][i];
if(!!k){
let name = subItems[k]?.name;
-
+
+
if(serviceCode === '01'){
if(k === 'transactionAmount'){
- name = '신용카드금액'
+ name = t('transaction.fields.cardAmount')
}
if(k === 'transactionRequestAmount'){
- name = '승인요청금액';
+ name = t('transaction.fields.approvalRequestAmount');
}
}
@@ -223,12 +226,12 @@ export const AmountInfoSection = ({
}
원
-
@@ -239,43 +242,43 @@ export const AmountInfoSection = ({
{ (transactionCategory === TransactionCategory.AllTransaction) &&
subLi()
}
- { (transactionCategory === TransactionCategory.CashReceipt) &&
+ { (transactionCategory === TransactionCategory.CashReceipt) &&
<>
- · 공급가액
+ · {t('transaction.fields.supplyAmount')}
- · VAT
+ · {t('transaction.fields.vat')}
- · 봉사료
+ · {t('transaction.fields.serviceAmount')}
- · 면세금액
+ · {t('transaction.fields.taxFreeAmount')}
@@ -283,47 +286,47 @@ export const AmountInfoSection = ({
>
}
- { (transactionCategory === TransactionCategory.Escrow) &&
+ { (transactionCategory === TransactionCategory.Escrow) &&
<>
{ (serviceCode === '02' || serviceCode === '03') &&
- · 거래금액
+ · {t('transaction.fields.transactionAmount')}
}
- { (serviceCode === '01') &&
+ { (serviceCode === '01') &&
<>
- · 신용카드금액
+ · {t('transaction.fields.cardAmount')}
- · 포인트금액
+ · {t('transaction.fields.pointAmount')}
- · 쿠폰금액
+ · {t('transaction.fields.couponAmount')}
@@ -333,10 +336,10 @@ export const AmountInfoSection = ({
}
{ (serviceCode === '01' || serviceCode === '02') &&
- · 에스크로수수료
+ · {t('transaction.fields.escrowFee')}
@@ -348,30 +351,30 @@ export const AmountInfoSection = ({
{ (amountInfo?.simplePaymentServiceCode === 'E016') &&
<>
- · 카카오머니
+ · {t('transaction.fields.kakaoMoneyAmount')}
- · 카카오포인트
+ · {t('transaction.fields.kakaoPointAmount')}
- · 카카오즉시할인
+ · {t('transaction.fields.kakaoDiscountAmount')}
@@ -381,10 +384,10 @@ export const AmountInfoSection = ({
}
{ (amountInfo?.simplePaymentServiceCode === 'E020') &&
- · 네이버포인트
+ · {t('transaction.fields.naverPointAmount')}
@@ -394,20 +397,20 @@ export const AmountInfoSection = ({
{ (amountInfo?.simplePaymentServiceCode === 'E025') &&
<>
- · 토스머니
+ · {t('transaction.fields.tossMoneyAmount')}
- · 토스할인
+ · {t('transaction.fields.tossDiscountAmount')}
@@ -418,20 +421,20 @@ export const AmountInfoSection = ({
{ (amountInfo?.simplePaymentServiceCode === 'E015') &&
<>
- · 페이코포인트
+ · {t('transaction.fields.paycoPointAmount')}
- · 페이코쿠폰
+ · {t('transaction.fields.paycoCouponAmount')}
@@ -460,13 +463,13 @@ export const AmountInfoSection = ({
}
{
- (transactionCategory === TransactionCategory.CashReceipt) &&
+ (transactionCategory === TransactionCategory.CashReceipt) &&
!!canDownloadReceipt &&
-
+ >{t('transaction.fields.transactionConfirmation')}
}
diff --git a/src/entities/transaction/ui/section/billing-info-section.tsx b/src/entities/transaction/ui/section/billing-info-section.tsx
index 75d6dd2..ba30094 100644
--- a/src/entities/transaction/ui/section/billing-info-section.tsx
+++ b/src/entities/transaction/ui/section/billing-info-section.tsx
@@ -1,32 +1,34 @@
import moment from 'moment';
import { InfoSectionProps } from '../../model/types';
+import { useTranslation } from 'react-i18next';
export const BillingInfoSection = ({
billingInfo,
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const getInstallmentMonth = () => {
let rs = [];
if((!!billingInfo?.installmentMonth && parseInt(billingInfo?.installmentMonth) > 1)){
rs.push(
-
- 할부개월
- { billingInfo?.installmentMonth }개월 할부
-
+ { t('transaction.fields.installmentMonth') }
+ { t('transaction.fields.installmentMonthly', { count: billingInfo?.installmentMonth }) }
+
);
}
else{
rs.push(
-
- 할부개월
- 일시불
-
+ { t('transaction.fields.installmentMonth') }
+ { t('transaction.fields.lumpSum') }
+
);
}
return rs;
@@ -34,43 +36,43 @@ export const BillingInfoSection = ({
return (
<>
- 중요 정보
+ { t('transaction.sections.importantInfo') }
-
- 빌키
+ { t('transaction.fields.billKey') }
{ billingInfo?.billKey }
-
- TID
+ { t('transaction.fields.tid') }
{ billingInfo?.tid }
-
- 주분번호
+ { t('transaction.fields.orderNumber') }
{ billingInfo?.orderNumber }
-
- 승인번호
+ { t('transaction.fields.approvalNumber') }
{ billingInfo?.approvalNumber }
-
- 승인일자
+ { t('transaction.fields.approvalDate') }
{ moment(billingInfo?.approvalDate).format('YYYY.MM.DD') }
-
- 요청상태
+ { t('transaction.fields.requestStatus') }
{ billingInfo?.requestStatus }
-
- 처리결과
+ { t('transaction.fields.processResult') }
{ billingInfo?.processResult }
{ getInstallmentMonth() }
-
- 상품명
+ { t('transaction.fields.productName') }
{ billingInfo?.productName }
-
- 구매자
+ { t('transaction.fields.buyer') }
{ billingInfo?.buyerName }
diff --git a/src/entities/transaction/ui/section/detail-info-section.tsx b/src/entities/transaction/ui/section/detail-info-section.tsx
index 5cde6ab..dd6f7c5 100644
--- a/src/entities/transaction/ui/section/detail-info-section.tsx
+++ b/src/entities/transaction/ui/section/detail-info-section.tsx
@@ -1,4 +1,5 @@
import moment from 'moment';
+import { useTranslation } from 'react-i18next';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { InfoSectionKeys, InfoSectionProps } from '../../model/types';
import { SlideDown } from 'react-slidedown';
@@ -10,6 +11,7 @@ export const DetailInfoSection = ({
isOpen,
onClickToOpenInfo
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const onClickToSetOpenInfo = () => {
if(!!onClickToOpenInfo){
@@ -20,49 +22,49 @@ export const DetailInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 상세 정보
+ {t('transaction.sections.detailInfo')}
{ !!isOpen &&
-
- 취소일자
+ {t('transaction.fields.cancelDate')}
{ detailInfo?.cancelDate? moment(detailInfo?.cancelDate).format('YYYY.MM.DD'): '' }
-
- 취소승인번호
+ {t('transaction.fields.cancelApprovalNumber')}
{ detailInfo?.cancelApprovalNumber }
-
- 현금영수증
+ {t('transaction.fields.receiptInfo')}
{ detailInfo?.receiptInfo }
-
- TID
+ {t('transaction.fields.tid')}
{ detailInfo?.tid }
-
- 거래ID
+ {t('transaction.fields.transactionId')}
{ detailInfo?.merchantTid }
-
- 서브몰명
+ {t('transaction.fields.subMallName')}
{ detailInfo?.subMallName }
-
- 서브몰 사업자 번호
+ {t('transaction.fields.subMallBusinessNumber')}
{ detailInfo?.subMallBusinessNumber }
-
- 발행경로
+ {t('transaction.fields.issueChannel')}
{ detailInfo?.issueChannel }
-
- 실패사유
+ {t('transaction.fields.failureReason')}
{ detailInfo?.failureReason }
diff --git a/src/entities/transaction/ui/section/escrow-info-section.tsx b/src/entities/transaction/ui/section/escrow-info-section.tsx
index 2a0060c..3c90e88 100644
--- a/src/entities/transaction/ui/section/escrow-info-section.tsx
+++ b/src/entities/transaction/ui/section/escrow-info-section.tsx
@@ -1,4 +1,5 @@
import moment from 'moment';
+import { useTranslation } from 'react-i18next';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { InfoSectionKeys, InfoSectionProps } from '../../model/types';
import { SlideDown } from 'react-slidedown';
@@ -9,6 +10,7 @@ export const EscrowInfoSection = ({
isOpen,
onClickToOpenInfo
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const onClickToSetOpenInfo = () => {
if(!!onClickToOpenInfo){
@@ -19,53 +21,53 @@ export const EscrowInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 에스크로 정보
+ {t('transaction.sections.escrowInfo')}
{ !!isOpen &&
-
- · 배송상태
+ · {t('transaction.fields.deliveryStatus')}
{ escrowInfo?.deliveryStatus }
-
- · 배송등록
+ · {t('transaction.fields.deliveryRegistration')}
{ escrowInfo?.deliveryRegistrationDate? moment(escrowInfo?.deliveryRegistrationDate).format('YYYY.MM.DD'): '' }
-
- · 배송완료
+ · {t('transaction.fields.deliveryComplete')}
{ escrowInfo?.deliveryCompleteDate? moment(escrowInfo?.deliveryCompleteDate).format('YYYY.MM.DD'): '' }
-
- · 구매확인
+ · {t('transaction.fields.purchaseConfirm')}
{ escrowInfo?.purchaseConfirmDate? moment(escrowInfo?.purchaseConfirmDate).format('YYYY.MM.DD'): '' }
-
- · 구매거절
+ · {t('transaction.fields.purchaseReject')}
{ escrowInfo?.purchaseRejectReason }
-
- · 거절사유
+ · {t('transaction.fields.rejectReason')}
{ escrowInfo?.rejectReason }
-
- · 에스크로인증번호
+ · {t('transaction.fields.escrowCertNumber')}
{ escrowInfo?.escrowCertNumber }
-
- · 택배사
+ · {t('transaction.fields.deliveryCompany')}
{ escrowInfo?.deliveryCompany }
-
- · 운송장번호
+ · {t('transaction.fields.trackingNumber')}
{ escrowInfo?.trackingNumber }
-
- · 배송주소
+ · {t('transaction.fields.deliveryAddress')}
{ escrowInfo?.deliveryAddress }
diff --git a/src/entities/transaction/ui/section/important-info-section.tsx b/src/entities/transaction/ui/section/important-info-section.tsx
index c694f31..2c606d2 100644
--- a/src/entities/transaction/ui/section/important-info-section.tsx
+++ b/src/entities/transaction/ui/section/important-info-section.tsx
@@ -1,4 +1,5 @@
import moment from 'moment';
+import { useTranslation } from 'react-i18next';
import { NumericFormat } from 'react-number-format';
import { InfoSectionProps, TransactionCategory } from '../../model/types';
import { useStore } from '@/shared/model/store';
@@ -9,6 +10,7 @@ export const ImportantInfoSection = ({
importantInfo,
serviceCode
}: InfoSectionProps) => {
+ const { t } = useTranslation();
let serviceCodes = useStore.getState().CommonStore.serviceCodes;
let serviceName = '';
let statusName = '';
@@ -60,15 +62,15 @@ export const ImportantInfoSection = ({
}
const subItems: Record> = {
- moid: {name: '주문번호', type: 'string'},
- tid: {name: 'TID', type: 'string'},
- statusName: {name: '거래상태', type: 'string'},
- serviceName: {name: '거래수단', type: 'string'},
- approvalDate: {name: '승인일', type: 'date'},
- transactionDate: {name: '거래일', type: 'date'},
- requestDate: {name: '요청일', type: 'date'},
- cancelDate: {name: '취소일', type: 'date'},
- goodsName: {name: '상품명', type: 'string'}
+ moid: {name: t('transaction.fields.orderNumber'), type: 'string'},
+ tid: {name: t('transaction.fields.tid'), type: 'string'},
+ statusName: {name: t('transaction.fields.transactionStatus'), type: 'string'},
+ serviceName: {name: t('transaction.fields.transactionMethod'), type: 'string'},
+ approvalDate: {name: t('transaction.fields.approvalDay'), type: 'date'},
+ transactionDate: {name: t('filter.date'), type: 'date'},
+ requestDate: {name: t('filter.date'), type: 'date'},
+ cancelDate: {name: t('transaction.fields.cancelDate'), type: 'date'},
+ goodsName: {name: t('transaction.fields.productName'), type: 'string'}
};
const openSubItems: Record> = {
@@ -146,54 +148,54 @@ export const ImportantInfoSection = ({
return (
<>
- 중요 정보
+ {t('transaction.sections.importantInfo')}
- { (transactionCategory === TransactionCategory.AllTransaction) &&
+ { (transactionCategory === TransactionCategory.AllTransaction) &&
subLi()
}
- {
- (transactionCategory === TransactionCategory.Escrow) &&
+ {
+ (transactionCategory === TransactionCategory.Escrow) &&
<>
-
- 주문번호
+ {t('transaction.fields.orderNumber')}
{ importantInfo?.orderNumber }
-
- TID
+ {t('transaction.fields.tid')}
{ importantInfo?.tid }
-
- 거래상태
+ {t('transaction.fields.transactionStatus')}
{ importantInfo?.transactionStatus }
-
- 거래수단
+ {t('transaction.fields.transactionMethod')}
{ importantInfo?.paymentMethod }
{ serviceCode === '01' &&
-
- 승인일
+ {t('transaction.fields.approvalDay')}
{ importantInfo?.approvalDate? moment(importantInfo?.approvalDate).format('YYYY-MM-DD'): '' }
}
{ serviceCode === '02' &&
-
- 거래일
+ {t('filter.date')}
{ importantInfo?.approvalDate? moment(importantInfo?.approvalDate).format('YYYY-MM-DD'): '' }
}
- { serviceCode === '03' &&
+ { serviceCode === '03' &&
-
- 요청일
+ {t('filter.date')}
{ importantInfo?.approvalDate? moment(importantInfo?.approvalDate).format('YYYY-MM-DD'): '' }
}
-
- 취소일
+ {t('transaction.fields.cancelDate')}
{ importantInfo?.cancelDate? moment(importantInfo?.cancelDate).format('YYYY-MM-DD'): '' }
-
- 상품명
+ {t('transaction.fields.productName')}
{ importantInfo?.productName }
>
diff --git a/src/entities/transaction/ui/section/issue-info-section.tsx b/src/entities/transaction/ui/section/issue-info-section.tsx
index b711e58..cd4031e 100644
--- a/src/entities/transaction/ui/section/issue-info-section.tsx
+++ b/src/entities/transaction/ui/section/issue-info-section.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { InfoSectionProps } from '../../model/types';
import moment from 'moment';
import { useEffect, useState } from 'react';
@@ -7,6 +8,7 @@ export const IssueInfoSection = ({
issueInfo,
purposeType,
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const [issueDateTime, setIssueDateTime] = useState('');
useEffect(() => {
@@ -22,38 +24,38 @@ export const IssueInfoSection = ({
return (
<>
- 발급 정보
+ {t('transaction.sections.issueInfo')}
-
- 승인번호
+ {t('transaction.fields.approvalNumber')}
{ issueInfo?.approvalNumber }
-
- 발행번호
+ {t('transaction.fields.issueNumber')}
{ issueInfo?.issueNumber }
-
- 발행일시
+ {t('transaction.fields.issueDateTime')}
{ moment(issueDateTime).format('YYYY.MM.DD HH:mm:ss') }
-
- 용도
+ {t('transaction.fields.purpose')}
{ issueInfo?.purpose }
-
- 결제수단
+ {t('transaction.fields.paymentMethod')}
{ issueInfo?.paymentMethod }
-
- 상품명
+ {t('transaction.fields.productName')}
{ issueInfo?.productName }
-
- 진행상태
+ {t('transaction.fields.processResult')}
{ issueInfo?.processResult }
-
- 거래구분
+ {t('transaction.fields.transactionType')}
{ issueInfo?.transactionType }
diff --git a/src/entities/transaction/ui/section/merchant-info-section.tsx b/src/entities/transaction/ui/section/merchant-info-section.tsx
index 18f9499..74d4cb4 100644
--- a/src/entities/transaction/ui/section/merchant-info-section.tsx
+++ b/src/entities/transaction/ui/section/merchant-info-section.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { InfoSectionKeys, InfoSectionProps } from '../../model/types';
import { SlideDown } from 'react-slidedown';
@@ -8,6 +9,7 @@ export const MerchantInfoSection = ({
isOpen,
onClickToOpenInfo
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const onClickToSetOpenInfo = () => {
if(!!onClickToOpenInfo){
@@ -18,25 +20,25 @@ export const MerchantInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 상점 정보
+ {t('transaction.sections.merchantInfo')}
{ !!isOpen &&
-
- · 상호
+ · {t('transaction.fields.companyName')}
{ merchantInfo?.companyName }
-
- · GID
+ · {t('transaction.fields.gid')}
{ merchantInfo?.gid }
-
- · AID
+ · {t('transaction.fields.aid')}
{ merchantInfo?.aid }
diff --git a/src/entities/transaction/ui/section/part-cancel-info-section.tsx b/src/entities/transaction/ui/section/part-cancel-info-section.tsx
index c3ed024..075bd7b 100644
--- a/src/entities/transaction/ui/section/part-cancel-info-section.tsx
+++ b/src/entities/transaction/ui/section/part-cancel-info-section.tsx
@@ -4,6 +4,7 @@ import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { InfoSectionKeys, InfoSectionProps } from '../../model/types';
import { SlideDown } from 'react-slidedown';
import 'react-slidedown/lib/slidedown.css';
+import { useTranslation } from 'react-i18next';
export const PartCancelInfoSection = ({
transactionCategory,
@@ -12,13 +13,14 @@ export const PartCancelInfoSection = ({
isOpen,
onClickToOpenInfo
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const subItems: Record> = {
- originalTid: {name: '원거래 TID', type: 'string'},
- originalAmount: {name: '원거래 금액', type: 'number'},
- partCancelTid: {name: (serviceCode === '05')? '재승인 TID': '부분취소 TID', type: 'string'},
- partCancelAmount: {name: '부분취소 금액', type: 'number'},
- remainingAmount: {name: (serviceCode === '05')? '재승인 금액': '부분취소 후 잔액', type: 'number'},
+ originalTid: {name: t('transaction.fields.originalTid'), type: 'string'},
+ originalAmount: {name: t('transaction.fields.originalAmount'), type: 'number'},
+ partCancelTid: {name: (serviceCode === '05')? t('transaction.fields.reApprovalTid'): t('transaction.fields.partCancelTid'), type: 'string'},
+ partCancelAmount: {name: t('transaction.fields.partCancelAmount'), type: 'number'},
+ remainingAmount: {name: (serviceCode === '05')? t('transaction.fields.reApprovalAmount'): t('transaction.fields.remainingAmount'), type: 'number'},
};
const openSubItems: Record> = {
@@ -101,11 +103,11 @@ export const PartCancelInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 부분취소 정보
+ { t('transaction.sections.partCancelInfo') }
{ !!isOpen &&
@@ -114,7 +116,7 @@ export const PartCancelInfoSection = ({
}
-
+
>
)
diff --git a/src/entities/transaction/ui/section/payment-info-section.tsx b/src/entities/transaction/ui/section/payment-info-section.tsx
index 0cc5c83..8bab98c 100644
--- a/src/entities/transaction/ui/section/payment-info-section.tsx
+++ b/src/entities/transaction/ui/section/payment-info-section.tsx
@@ -1,4 +1,5 @@
import moment from 'moment';
+import { useTranslation } from 'react-i18next';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { InfoSectionKeys, InfoSectionProps, TransactionCategory } from '../../model/types';
import { NumericFormat } from 'react-number-format';
@@ -12,45 +13,46 @@ export const PaymentInfoSection = ({
isOpen,
onClickToOpenInfo
}: InfoSectionProps) => {
+ const { t } = useTranslation();
const subItems: Record> = {
- approvalPurchase: {name: '승인매입', type: 'string'},
- approvalRejectCount: {name: '승인반송(횟수)', type: 'number', addString: '건'},
- approvalRepurchaseCount: {name: '승인재매입(횟수)', type: 'number', addString: '건'},
- approvalVAN: {name: '승인VAN', type: 'string'},
- cancelPurchase: {name: '취소매입', type: 'string'},
- cancelRejectCount: {name: '취소반송', type: 'number', addString: '건'},
- cancelRepurchaseCount: {name: '취소재매입', type: 'number', addString: '건'},
- purchaseVan: {name: '매입VAN', type: 'string'},
- purchaseCompany: {name: '매입사(발급사)', type: 'string'},
- cardNo: {name: '카드번호', type: 'string'},
- approvalNo: {name: '승인번호', type: 'string'},
- installmentMonth: {name: '할부기간', type: 'string', addString: '개월'},
- authentication: {name: '인증', type: 'string'},
+ approvalPurchase: {name: t('transaction.fields.approvalPurchase'), type: 'string'},
+ approvalRejectCount: {name: t('transaction.fields.approvalRejectCount'), type: 'number', addString: '건'},
+ approvalRepurchaseCount: {name: t('transaction.fields.approvalRepurchaseCount'), type: 'number', addString: '건'},
+ approvalVAN: {name: t('transaction.fields.approvalVAN'), type: 'string'},
+ cancelPurchase: {name: t('transaction.fields.cancelPurchase'), type: 'string'},
+ cancelRejectCount: {name: t('transaction.fields.cancelRejectCount'), type: 'number', addString: '건'},
+ cancelRepurchaseCount: {name: t('transaction.fields.cancelRepurchaseCount'), type: 'number', addString: '건'},
+ purchaseVan: {name: t('transaction.fields.purchaseVan'), type: 'string'},
+ purchaseCompany: {name: t('transaction.fields.purchaseCompany'), type: 'string'},
+ cardNo: {name: t('transaction.fields.cardNo'), type: 'string'},
+ approvalNo: {name: t('transaction.fields.approvalNo'), type: 'string'},
+ installmentMonth: {name: t('transaction.fields.installmentPeriod'), type: 'string', addString: '개월'},
+ authentication: {name: t('transaction.fields.authentication'), type: 'string'},
- joinType: {name: '유형', type: 'string'},
- bankName: {name: '은행명', type: 'string'},
- accountNo: {name: '계좌번호', type: 'string'},
- refundCompleteDate: {name: '환불완료일', type: 'string'},
- customerId: {name: '고객ID', type: 'string'},
-
- culturelandId: {name: '컬처랜드ID', type: 'string'},
+ joinType: {name: t('transaction.fields.joinType'), type: 'string'},
+ bankName: {name: t('transaction.fields.bankName'), type: 'string'},
+ accountNo: {name: t('transaction.fields.accountNo'), type: 'string'},
+ refundCompleteDate: {name: t('transaction.fields.refundCompleteDate'), type: 'string'},
+ customerId: {name: t('transaction.fields.customerId'), type: 'string'},
- partner: {name: '제휴사', type: 'string'},
- cpid: {name: 'CPID', type: 'string'},
- goodsCategory: {name: '상품구분', type: 'string'},
- cellphoneNo: {name: '휴대폰번호', type: 'string'},
+ culturelandId: {name: t('transaction.fields.culturelandId'), type: 'string'},
- giftCardNumber: {name: '상품권번호', type: 'string'},
+ partner: {name: t('transaction.fields.partner'), type: 'string'},
+ cpid: {name: t('transaction.fields.cpid'), type: 'string'},
+ goodsCategory: {name: t('transaction.fields.goodsCategory'), type: 'string'},
+ cellphoneNo: {name: t('transaction.fields.cellphoneNo'), type: 'string'},
- depositBankName: {name: '입금금융기관명', type: 'string'},
- depositorName: {name: '입금자명', type: 'string'},
- depositDeadline: {name: '입금기한', type: 'date'},
- depositDate: {name: '입금일', type: 'date'},
- refundScheduleDate: {name: '환불예정일', type: 'date'},
- refundBankName: {name: '환불은행명', type: 'string'},
- refundAccountNo: {name: '환불계좌번호', type: 'string'},
- accountHolder: {name: '예금주', type: 'string'},
+ giftCardNumber: {name: t('transaction.fields.giftCardNumber'), type: 'string'},
+
+ depositBankName: {name: t('transaction.fields.depositBankName'), type: 'string'},
+ depositorName: {name: t('transaction.fields.depositorName'), type: 'string'},
+ depositDeadline: {name: t('transaction.fields.depositDeadline'), type: 'date'},
+ depositDate: {name: t('transaction.fields.depositDate'), type: 'date'},
+ refundScheduleDate: {name: t('transaction.fields.refundScheduleDate'), type: 'date'},
+ refundBankName: {name: t('transaction.fields.refundBankName'), type: 'string'},
+ refundAccountNo: {name: t('transaction.fields.refundAccountNo'), type: 'string'},
+ accountHolder: {name: t('transaction.fields.accountHolder'), type: 'string'},
};
const openSubItems: Record> = {
@@ -99,7 +101,7 @@ export const PaymentInfoSection = ({
{ (checkValue(newPaymentInfo[k]) && subItems[k]?.type === 'string') &&
(k === 'installmentMonth' && newPaymentInfo[k] === '00') &&
- '일시불'
+ t('transaction.fields.lumpSum')
}
{ (checkValue(newPaymentInfo[k]) && subItems[k]?.type === 'string') &&
(k === 'installmentMonth' && newPaymentInfo[k] !== '00') &&
@@ -138,11 +140,11 @@ export const PaymentInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 결제 정보
+ {t('transaction.sections.paymentInfo')}
{ !!isOpen &&
@@ -152,82 +154,82 @@ export const PaymentInfoSection = ({
}
{ (transactionCategory === TransactionCategory.Escrow) &&
<>
- { (serviceCode === '01') &&
+ { (serviceCode === '01') &&
<>
-
- · 승인매입일
+ · {t('transaction.fields.approvalPurchaseDate')}
{ paymentInfo?.approvalPurchase? moment(paymentInfo?.approvalPurchase).format('YYYY-MM-DD'): '' }
-
- · 승인반송(횟수)
+ · {t('transaction.fields.approvalRejectCount')}
-
- · 승인재매입(횟수)
+ · {t('transaction.fields.approvalRepurchaseCount')}
-
- · 승인VAN
+ · {t('transaction.fields.approvalVAN')}
{ paymentInfo?.approvalVAN }
-
- · 취소매입
+ · {t('transaction.fields.cancelPurchaseDate')}
{ paymentInfo?.cancelPurchase? moment(paymentInfo?.cancelPurchase).format('YYYY-MM-DD'): '' }
-
- · 취소반송(횟수)
+ · {t('transaction.fields.cancelRejectCount')}
-
- · 취소재매입(횟수)
+ · {t('transaction.fields.cancelRepurchaseCount')}
-
- · 매입VAN
+ · {t('transaction.fields.purchaseVan')}
{ paymentInfo?.purchaseVan }
-
- · 매입사(발급사)
+ · {t('transaction.fields.purchaseCompany')}
{ paymentInfo?.purchaseCompany }
-
- · 카드번호
+ · {t('transaction.fields.cardNo')}
{ paymentInfo?.cardNo }
-
- · 승인번호
+ · {t('transaction.fields.approvalNo')}
{ paymentInfo?.approvalNo }
-
- · 할부기간
- { (paymentInfo?.installmentMonth === '00')? '일시불': paymentInfo?.installmentMonth }
+ · {t('transaction.fields.installmentPeriod')}
+ { (paymentInfo?.installmentMonth === '00')? t('transaction.fields.lumpSum'): paymentInfo?.installmentMonth }
-
- · 인증
+ · {t('transaction.fields.authentication')}
{ paymentInfo?.authentication }
>
@@ -235,7 +237,7 @@ export const PaymentInfoSection = ({
{ (serviceCode === '02') &&
<>
-
- · 유형
+ · {t('transaction.fields.joinType')}
{ paymentInfo?.joinType }
>
@@ -243,43 +245,43 @@ export const PaymentInfoSection = ({
{ (serviceCode === '02' || serviceCode === '03') &&
<>
-
- · 은행명
+ · {t('transaction.fields.bankName')}
{ paymentInfo?.bankName || paymentInfo?.depositBankName }
-
- · 계좌번호
+ · {t('transaction.fields.accountNo')}
{ paymentInfo?.accountNo || paymentInfo?.virtualAccountNo }
>
}
- { (serviceCode === '03') &&
+ { (serviceCode === '03') &&
<>
-
- · 입금자명
+ · {t('transaction.fields.depositorName')}
{ paymentInfo?.depositorName }
-
- · 입금기한
+ · {t('transaction.fields.depositDeadline')}
{ paymentInfo?.depositDeadline? moment(paymentInfo?.depositDeadline).format('YYYY-MM-DD'): '' }
-
- · 입금일
+ · {t('transaction.fields.depositDate')}
{ paymentInfo?.depositDate? moment(paymentInfo?.depositDate).format('YYYY-MM-DD'): '' }
-
- · 환불예정일
+ · {t('transaction.fields.refundScheduleDate')}
{ paymentInfo?.refundScheduleDate? moment(paymentInfo?.refundScheduleDate).format('YYYY-MM-DD'): '' }
-
- · 환불은행명
+ · {t('transaction.fields.refundBankName')}
{ paymentInfo?.refundBankName }
-
- · 환불계좌번호
+ · {t('transaction.fields.refundAccountNo')}
{ paymentInfo?.refundAccountNo }
-
- · 예금주
+ · {t('transaction.fields.accountHolder')}
{ paymentInfo?.accountHolder }
>
diff --git a/src/entities/transaction/ui/section/settlement-info-section.tsx b/src/entities/transaction/ui/section/settlement-info-section.tsx
index 94cfab3..8f06568 100644
--- a/src/entities/transaction/ui/section/settlement-info-section.tsx
+++ b/src/entities/transaction/ui/section/settlement-info-section.tsx
@@ -1,4 +1,5 @@
import moment from 'moment';
+import { useTranslation } from 'react-i18next';
import { NumericFormat } from 'react-number-format';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { InfoSectionKeys, InfoSectionProps, TransactionCategory } from '../../model/types';
@@ -12,12 +13,13 @@ export const SettlementInfoSection = ({
isOpen,
onClickToOpenInfo
}: InfoSectionProps) => {
-
+ const { t } = useTranslation();
+
const subItems: Record> = {
- approvalSettlementDate: {name: '승인정산일', type: 'date'},
- approvalSettlementAmount: {name: '승인정산금액', type: 'number'},
- cancelSettlementDate: {name: '취소정산일', type: 'date'},
- cancelSettlementAmount: {name: '취소정산금액', type: 'number'},
+ approvalSettlementDate: {name: t('transaction.fields.approvalSettlementDate'), type: 'date'},
+ approvalSettlementAmount: {name: t('transaction.fields.approvalSettlementAmount'), type: 'number'},
+ cancelSettlementDate: {name: t('transaction.fields.cancelSettlementDate'), type: 'date'},
+ cancelSettlementAmount: {name: t('transaction.fields.cancelSettlementAmount'), type: 'number'},
};
const openSubItems: Record> = {
@@ -100,30 +102,30 @@ export const SettlementInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 정산 정보
+ {t('transaction.sections.settlementInfo')}
-
+
{ !!isOpen &&
- { (transactionCategory === TransactionCategory.AllTransaction) &&
+ { (transactionCategory === TransactionCategory.AllTransaction) &&
subLi()
}
- { (transactionCategory === TransactionCategory.Escrow) &&
+ { (transactionCategory === TransactionCategory.Escrow) &&
<>
-
- · 승인정산일
+ · {t('transaction.fields.approvalSettlementDate')}
{ settlementInfo?.approvalSettlementDate? moment(settlementInfo?.approvalSettlementDate).format('YYYY.MM.DD'): '' }
-
- · 승인정산금액
+ · {t('transaction.fields.approvalSettlementAmount')}
-
- · 취소정산일
+ · {t('transaction.fields.cancelSettlementDate')}
{ settlementInfo?.cancelSettlementDate? moment(settlementInfo?.cancelSettlementDate).format('YYYY.MM.DD'): '' }
-
- · 취소정산금액
+ · {t('transaction.fields.cancelSettlementAmount')}
{
+ const { t } = useTranslation();
const subItems: Record> = {
- buyerName: {name: '구매자명', type: 'string'},
- buyerEmail: {name: '이메일', type: 'string'},
- buyerTel: {name: '전화번호', type: 'string'},
- cancelReason: {name: '취소사유', type: 'string'},
- cancelRequestor: {name: '취소요청자', type: 'string'},
- partialCancel: {name: '부분취소', type: 'string'},
- cashReceiptIssue: {name: '현금영수증발행', type: 'string'},
+ buyerName: {name: t('transaction.fields.buyerName'), type: 'string'},
+ buyerEmail: {name: t('transaction.fields.buyerEmail'), type: 'string'},
+ buyerTel: {name: t('transaction.fields.buyerTel'), type: 'string'},
+ cancelReason: {name: t('transaction.fields.cancelReason'), type: 'string'},
+ cancelRequestor: {name: t('transaction.fields.cancelRequestor'), type: 'string'},
+ partialCancel: {name: t('transaction.fields.partialCancel'), type: 'string'},
+ cashReceiptIssue: {name: t('transaction.fields.cashReceiptIssue'), type: 'string'},
};
const openSubItems: Record> = {
@@ -106,47 +108,47 @@ export const TransactionInfoSection = ({
return (
<>
- onClickToSetOpenInfo() }
>
- 거래 정보
+ {t('transaction.sections.transactionInfo')}
- { !!isOpen &&
+ { !!isOpen &&
- { (transactionCategory === TransactionCategory.AllTransaction) &&
+ { (transactionCategory === TransactionCategory.AllTransaction) &&
subLi()
}
- { (transactionCategory === TransactionCategory.Escrow) &&
+ { (transactionCategory === TransactionCategory.Escrow) &&
<>
-
- · 구매자명
+ · {t('transaction.fields.buyerName')}
{ transactionInfo?.buyerName }
-
- · 이메일
+ · {t('transaction.fields.buyerEmail')}
{ transactionInfo?.buyerEmail }
-
- · 전화번호
+ · {t('transaction.fields.buyerTel')}
{ transactionInfo?.buyerTel }
-
- · 취소사유
+ · {t('transaction.fields.cancelReason')}
{ transactionInfo?.cancelReason }
-
- · 취소요청자
+ · {t('transaction.fields.cancelRequestor')}
{ transactionInfo?.cancelRequestor }
-
- · 부분취소
+ · {t('transaction.fields.partialCancel')}
{ transactionInfo?.partialCancel }
{ (serviceCode === '02' || serviceCode === '03') &&
-
- · 현금영수증발행
+ · {t('transaction.fields.cashReceiptIssue')}
{ transactionInfo?.cashReceiptIssue }
}
diff --git a/src/locales/en.json b/src/locales/en.json
index 50b27b6..1aa00a5 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -358,7 +358,214 @@
"searchOptions": "Search Options",
"download": "Download",
"cancelTransaction": "Cancel Transaction",
- "confirmCancel": "Do you want to cancel this transaction?"
+ "confirmCancel": "Do you want to cancel this transaction?",
+ "bottomSheet": {
+ "escrowMailResend": {
+ "title": "Select Email Address",
+ "close": "Close",
+ "mailLabel": "Receive by Email",
+ "mail": "Mail",
+ "select": "Select",
+ "errorNoEmail": "No registered email information.\nPlease add email authentication information from the user management menu before applying."
+ },
+ "cashReceiptPurposeUpdate": {
+ "title": "Cash Receipt Purpose Change Notice",
+ "description": "When changing the purpose of a cash receipt, the existing issuance record will be cancelled and a new one will be issued according to the selected purpose.",
+ "expenseProof": "Expense Proof",
+ "incomeDeduction": "Income Deduction",
+ "expenseToIncome": "Expense Proof → Income Deduction",
+ "incomeToExpense": "Income Deduction → Expense Proof"
+ }
+ },
+ "sections": {
+ "importantInfo": "Important Information",
+ "billingInfo": "Billing Information",
+ "partCancelInfo": "Partial Cancel Information",
+ "detailInfo": "Detail Information",
+ "issueInfo": "Issue Information",
+ "escrowInfo": "Escrow Information",
+ "paymentInfo": "Payment Information",
+ "transactionInfo": "Transaction Information",
+ "settlementInfo": "Settlement Information",
+ "merchantInfo": "Merchant Information",
+ "amountDetail": "Amount Details"
+ },
+ "fields": {
+ "billKey": "Bill Key",
+ "tid": "TID",
+ "orderNumber": "Order Number",
+ "approvalNumber": "Approval Number",
+ "approvalDate": "Approval Date",
+ "approvalDay": "Approval Day",
+ "requestStatus": "Request Status",
+ "processResult": "Process Result",
+ "installmentMonth": "Installment Month",
+ "installmentPeriod": "Installment Period",
+ "installmentMonthly": "{{count}} Month Installment",
+ "lumpSum": "Lump Sum",
+ "productName": "Product Name",
+ "buyerName": "Buyer Name",
+ "buyer": "Buyer",
+ "originalTid": "Original TID",
+ "originalAmount": "Original Amount",
+ "partCancelTid": "Partial Cancel TID",
+ "reApprovalTid": "Re-approval TID",
+ "partCancelAmount": "Partial Cancel Amount",
+ "remainingAmount": "Remaining Amount",
+ "reApprovalAmount": "Re-approval Amount",
+ "cancelDate": "Cancel Date",
+ "cancelApprovalNumber": "Cancel Approval Number",
+ "receiptInfo": "Cash Receipt",
+ "transactionId": "Transaction ID",
+ "merchantTid": "Transaction ID",
+ "subMallName": "Sub Mall Name",
+ "subMallBusinessNumber": "Sub Mall Business Number",
+ "issueChannel": "Issue Channel",
+ "failureReason": "Failure Reason",
+ "issueNumber": "Issue Number",
+ "issueDate": "Issue Date",
+ "issueDateTime": "Issue Date Time",
+ "purpose": "Purpose",
+ "paymentMethod": "Payment Method",
+ "transactionStatus": "Transaction Status",
+ "transactionMethod": "Transaction Method",
+ "transactionType": "Transaction Type",
+ "deliveryStatus": "Delivery Status",
+ "deliveryRegistration": "Delivery Registration",
+ "deliveryComplete": "Delivery Complete",
+ "purchaseConfirm": "Purchase Confirm",
+ "purchaseReject": "Purchase Reject",
+ "rejectReason": "Reject Reason",
+ "escrowCertNumber": "Escrow Cert Number",
+ "deliveryCompany": "Delivery Company",
+ "trackingNumber": "Tracking Number",
+ "deliveryAddress": "Delivery Address",
+ "approvalPurchase": "Approval Purchase",
+ "approvalPurchaseDate": "Approval Purchase Date",
+ "approvalRejectCount": "Approval Reject (Count)",
+ "approvalRepurchaseCount": "Approval Repurchase (Count)",
+ "approvalVAN": "Approval VAN",
+ "cancelPurchase": "Cancel Purchase",
+ "cancelPurchaseDate": "Cancel Purchase",
+ "cancelRejectCount": "Cancel Reject (Count)",
+ "cancelRepurchaseCount": "Cancel Repurchase (Count)",
+ "purchaseVan": "Purchase VAN",
+ "purchaseCompany": "Purchase Company (Issuer)",
+ "cardNo": "Card Number",
+ "approvalNo": "Approval Number",
+ "authentication": "Authentication",
+ "joinType": "Type",
+ "bankName": "Bank Name",
+ "bank": "Bank",
+ "accountNo": "Account Number",
+ "refundCompleteDate": "Refund Complete Date",
+ "customerId": "Customer ID",
+ "culturelandId": "Cultureland ID",
+ "partner": "Partner",
+ "cpid": "CPID",
+ "goodsCategory": "Goods Category",
+ "cellphoneNo": "Cellphone Number",
+ "giftCardNumber": "Gift Card Number",
+ "depositBankName": "Deposit Bank Name",
+ "depositorName": "Depositor Name",
+ "depositDeadline": "Deposit Deadline",
+ "depositDate": "Deposit Date",
+ "refundScheduleDate": "Refund Schedule Date",
+ "refundBankName": "Refund Bank Name",
+ "refundAccountNo": "Refund Account Number",
+ "accountHolder": "Account Holder",
+ "buyerEmail": "Email",
+ "buyerTel": "Phone Number",
+ "cancelReason": "Cancel Reason",
+ "cancelRequestor": "Cancel Requestor",
+ "partialCancel": "Partial Cancel",
+ "cashReceiptIssue": "Cash Receipt Issue",
+ "approvalSettlementDate": "Approval Settlement Date",
+ "approvalSettlementAmount": "Approval Settlement Amount",
+ "cancelSettlementDate": "Cancel Settlement Date",
+ "cancelSettlementAmount": "Cancel Settlement Amount",
+ "companyName": "Company Name",
+ "gid": "GID",
+ "aid": "AID",
+ "mid": "MID",
+ "transactionRequestAmount": "Transaction Request Amount",
+ "approvalRequestAmount": "Approval Request Amount",
+ "transactionAmount": "Transaction Amount",
+ "creditCardAmount": "Credit Card Amount",
+ "cardAmount": "Credit Card Amount",
+ "pointAmount": "Point Amount",
+ "couponAmount": "Coupon Amount",
+ "escrowFee": "Escrow Fee",
+ "kakaoMoneyAmount": "Kakao Money",
+ "kakaoPointAmount": "Kakao Point",
+ "kakaoDiscountAmount": "Kakao Instant Discount",
+ "naverPointAmount": "Naver Point",
+ "tossMoneyAmount": "Toss Money",
+ "tossDiscountAmount": "Toss Discount",
+ "paycoPointAmount": "Payco Point",
+ "paycoCouponAmount": "Payco Coupon",
+ "supplyAmount": "Supply Amount",
+ "vat": "VAT",
+ "serviceAmount": "Service Charge",
+ "taxFreeAmount": "Tax Free Amount",
+ "amount": "Amount",
+ "totalBalance": "Total Balance",
+ "totalCancelAmount": "Total Cancel Amount",
+ "customerName": "Customer Name",
+ "transactionConfirmation": "Transaction Confirmation"
+ },
+ "handWrittenIssuance": {
+ "step1Title": "Enter Issue Information",
+ "step2Title": "Enter Issue Amount",
+ "businessNumber": "Business Number",
+ "incomeDeduction": "Income Deduction",
+ "expenseProof": "Expense Proof",
+ "productNamePlaceholder": "Product Name",
+ "buyerNamePlaceholder": "Buyer Name",
+ "issueNumberPlaceholder": "Business Number OR Phone Number",
+ "emailPlaceholder": "TEST123@nicepay.com",
+ "phoneNumberPlaceholder": "01012345678",
+ "issueAmount": "Issue Amount",
+ "vatAutoCalc": "VAT Auto Calculate",
+ "errorMessage": "The issue amount must equal the sum of supply amount, VAT, tax-free amount, and service charge."
+ },
+ "list": {
+ "paymentRequest": "Payment Request",
+ "manualIssuance": "Manual Issuance",
+ "separator": "|"
+ },
+ "cancel": {
+ "bankGroup": {
+ "select": "Select",
+ "notice": "Refunds will be paid to the entered account information without separate verification.\nPlease check the entered information once more."
+ },
+ "passwordGroup": {
+ "cancelPassword": "Cancel Password",
+ "passwordMismatch": "Password Mismatch"
+ },
+ "afterDeposit": {
+ "title": "Transaction Cancel (After Deposit Cancel)",
+ "notice": "The requested transaction cancellation can be processed after deposit.",
+ "cancelTransactionTitle": "Cancel Transaction Details",
+ "approvalAmount": "Approval Amount",
+ "depositRequestAmount": "Deposit Request Amount",
+ "depositInfoTitle": "Deposit Information",
+ "guide1": "Cancellation must be submitted through the [Cancel Request] button.",
+ "guide2": "Please enter the merchant name as the depositor name.",
+ "guide3": "Cancellation will proceed only if the same amount as the deposit request amount is deposited.",
+ "guide4": "Cancellation details can be confirmed after up to 3 days.",
+ "guide5": "After Deposit Cancellation Process:\nMerchant Cancel Request -> Merchant Deposit -> Confirm Deposit -> Process Cancel",
+ "guide6": "For transactions that have not been settled, please send transaction details to service@nicepay.co.kr. (Only for transactions with more than 2 days remaining until the settlement date)"
+ },
+ "partCancel": {
+ "balance": "Balance",
+ "cancelAmount": "Cancel Amount",
+ "taxableAmount": "Taxable Amount",
+ "taxAmount": "Tax Amount",
+ "taxFree": "Tax Free",
+ "serviceFee": "Service Fee"
+ }
+ }
},
"cashReceipt": {
"title": "Cash Receipt",
diff --git a/src/locales/ko.json b/src/locales/ko.json
index 866b240..a82ad38 100644
--- a/src/locales/ko.json
+++ b/src/locales/ko.json
@@ -362,7 +362,214 @@
"searchOptions": "검색옵션",
"download": "다운로드",
"cancelTransaction": "거래 취소",
- "confirmCancel": "거래를 취소하시겠습니까?"
+ "confirmCancel": "거래를 취소하시겠습니까?",
+ "bottomSheet": {
+ "escrowMailResend": {
+ "title": "이메일 주소를 선택하세요",
+ "close": "닫기",
+ "mailLabel": "메일로 받기",
+ "mail": "메일",
+ "select": "선택",
+ "errorNoEmail": "등록된 메일 정보가 없습니다.\n이메일 인증정보를 사용자관리 메뉴에서 추가 후 신청하세요."
+ },
+ "cashReceiptPurposeUpdate": {
+ "title": "현금영수증 용도 변경 안내",
+ "description": "현금영수증의 용도 변경 시 기존 발급 내역이 취소되며, 선택한 용도에 맞게 새로 발급됩니다.",
+ "expenseProof": "지출증빙용",
+ "incomeDeduction": "소득공제용",
+ "expenseToIncome": "지출증빙용 → 소득공제용",
+ "incomeToExpense": "소득공제용 → 지출증빙용"
+ }
+ },
+ "sections": {
+ "importantInfo": "중요 정보",
+ "billingInfo": "빌링 정보",
+ "partCancelInfo": "부분취소 정보",
+ "detailInfo": "상세 정보",
+ "issueInfo": "발급 정보",
+ "escrowInfo": "에스크로 정보",
+ "paymentInfo": "결제 정보",
+ "transactionInfo": "거래 정보",
+ "settlementInfo": "정산 정보",
+ "merchantInfo": "상점 정보",
+ "amountDetail": "금액상세"
+ },
+ "fields": {
+ "billKey": "빌키",
+ "tid": "TID",
+ "orderNumber": "주문번호",
+ "approvalNumber": "승인번호",
+ "approvalDate": "승인일자",
+ "approvalDay": "승인일",
+ "requestStatus": "요청상태",
+ "processResult": "처리결과",
+ "installmentMonth": "할부개월",
+ "installmentPeriod": "할부기간",
+ "installmentMonthly": "{{count}}개월 할부",
+ "lumpSum": "일시불",
+ "productName": "상품명",
+ "buyerName": "구매자명",
+ "buyer": "구매자",
+ "originalTid": "원거래 TID",
+ "originalAmount": "원거래 금액",
+ "partCancelTid": "부분취소 TID",
+ "reApprovalTid": "재승인 TID",
+ "partCancelAmount": "부분취소 금액",
+ "remainingAmount": "부분취소 후 잔액",
+ "reApprovalAmount": "재승인 금액",
+ "cancelDate": "취소일자",
+ "cancelApprovalNumber": "취소승인번호",
+ "receiptInfo": "현금영수증",
+ "transactionId": "거래ID",
+ "merchantTid": "거래ID",
+ "subMallName": "서브몰명",
+ "subMallBusinessNumber": "서브몰 사업자 번호",
+ "issueChannel": "발행경로",
+ "failureReason": "실패사유",
+ "issueNumber": "발행번호",
+ "issueDate": "발행일자",
+ "issueDateTime": "발행일시",
+ "purpose": "용도",
+ "paymentMethod": "결제수단",
+ "transactionStatus": "거래상태",
+ "transactionMethod": "거래수단",
+ "transactionType": "거래구분",
+ "deliveryStatus": "배송상태",
+ "deliveryRegistration": "배송등록",
+ "deliveryComplete": "배송완료",
+ "purchaseConfirm": "구매확인",
+ "purchaseReject": "구매거절",
+ "rejectReason": "거절사유",
+ "escrowCertNumber": "에스크로인증번호",
+ "deliveryCompany": "택배사",
+ "trackingNumber": "운송장번호",
+ "deliveryAddress": "배송주소",
+ "approvalPurchase": "승인매입",
+ "approvalPurchaseDate": "승인매입일",
+ "approvalRejectCount": "승인반송(횟수)",
+ "approvalRepurchaseCount": "승인재매입(횟수)",
+ "approvalVAN": "승인VAN",
+ "cancelPurchase": "취소매입",
+ "cancelPurchaseDate": "취소매입",
+ "cancelRejectCount": "취소반송(횟수)",
+ "cancelRepurchaseCount": "취소재매입(횟수)",
+ "purchaseVan": "매입VAN",
+ "purchaseCompany": "매입사(발급사)",
+ "cardNo": "카드번호",
+ "approvalNo": "승인번호",
+ "authentication": "인증",
+ "joinType": "유형",
+ "bankName": "은행명",
+ "bank": "은행",
+ "accountNo": "계좌번호",
+ "refundCompleteDate": "환불완료일",
+ "customerId": "고객ID",
+ "culturelandId": "컬처랜드ID",
+ "partner": "제휴사",
+ "cpid": "CPID",
+ "goodsCategory": "상품구분",
+ "cellphoneNo": "휴대폰번호",
+ "giftCardNumber": "상품권번호",
+ "depositBankName": "입금금융기관명",
+ "depositorName": "입금자명",
+ "depositDeadline": "입금기한",
+ "depositDate": "입금일",
+ "refundScheduleDate": "환불예정일",
+ "refundBankName": "환불은행명",
+ "refundAccountNo": "환불계좌번호",
+ "accountHolder": "예금주",
+ "buyerEmail": "이메일",
+ "buyerTel": "전화번호",
+ "cancelReason": "취소사유",
+ "cancelRequestor": "취소요청자",
+ "partialCancel": "부분취소",
+ "cashReceiptIssue": "현금영수증발행",
+ "approvalSettlementDate": "승인정산일",
+ "approvalSettlementAmount": "승인정산금액",
+ "cancelSettlementDate": "취소정산일",
+ "cancelSettlementAmount": "취소정산금액",
+ "companyName": "상호",
+ "gid": "GID",
+ "aid": "AID",
+ "mid": "MID",
+ "transactionRequestAmount": "거래요청금액",
+ "approvalRequestAmount": "승인요청금액",
+ "transactionAmount": "거래금액",
+ "creditCardAmount": "신용카드금액",
+ "cardAmount": "신용카드금액",
+ "pointAmount": "포인트금액",
+ "couponAmount": "쿠폰금액",
+ "escrowFee": "에스크로수수료",
+ "kakaoMoneyAmount": "카카오머니",
+ "kakaoPointAmount": "카카오포인트",
+ "kakaoDiscountAmount": "카카오 즉시할인",
+ "naverPointAmount": "네이버포인트",
+ "tossMoneyAmount": "토스머니",
+ "tossDiscountAmount": "토스할인",
+ "paycoPointAmount": "페이코포인트",
+ "paycoCouponAmount": "페이코쿠폰",
+ "supplyAmount": "공급가액",
+ "vat": "VAT",
+ "serviceAmount": "봉사료",
+ "taxFreeAmount": "면세금액",
+ "amount": "금액",
+ "totalBalance": "총 잔액",
+ "totalCancelAmount": "총 취소금액",
+ "customerName": "고객명",
+ "transactionConfirmation": "거래 확인서"
+ },
+ "handWrittenIssuance": {
+ "step1Title": "발행 정보 입력",
+ "step2Title": "발행 금액 입력",
+ "businessNumber": "사업자 번호",
+ "incomeDeduction": "소득공제",
+ "expenseProof": "지출증빙",
+ "productNamePlaceholder": "상품명",
+ "buyerNamePlaceholder": "구매자명",
+ "issueNumberPlaceholder": "사업자번호 OR 휴대폰번호",
+ "emailPlaceholder": "TEST123@nicepay.com",
+ "phoneNumberPlaceholder": "01012345678",
+ "issueAmount": "발행금액",
+ "vatAutoCalc": "VAT자동계산",
+ "errorMessage": "발행금액은 공급가액 VAT,면세금액, 봉사료의 총합과 같아야 합니다."
+ },
+ "list": {
+ "paymentRequest": "결제신청",
+ "manualIssuance": "수기발행",
+ "separator": "|"
+ },
+ "cancel": {
+ "bankGroup": {
+ "select": "선택",
+ "notice": "환불은 입력한 계좌정보로 별도 확인 절차없이 지급됩니다.\n입력 정보를 한번 더 확인해 주세요."
+ },
+ "passwordGroup": {
+ "cancelPassword": "취소 비밀번호",
+ "passwordMismatch": "비밀번호 불일치"
+ },
+ "afterDeposit": {
+ "title": "거래취소(입금 후 취소)",
+ "notice": "요청하신 거래취소는 입금 후 취소처리 가능합니다.",
+ "cancelTransactionTitle": "취소거래내역",
+ "approvalAmount": "승인금액",
+ "depositRequestAmount": "입금요청금액",
+ "depositInfoTitle": "입금 정보",
+ "guide1": "[취소요청] 버튼을 통해 취소 요청을 진행해야 접수됩니다.",
+ "guide2": "입금자명은 가맹점 상호로 입력해 주세요.",
+ "guide3": "입금요청금액과 동일한 금액을 입금해야 취소가 진행됩니다.",
+ "guide4": "취소내역은 최대 3일 이후 확인 가능합니다.",
+ "guide5": "입금 후 취소 프로세스 :\n가맹점의 취소요청 -> 가맹점의입금 -> 입금 확인 -> 취소 처리",
+ "guide6": "정산받지 않은 거래인 경우 service@nicepay.co.kr로 거래내역을 발송바랍니다. (단. 정산예정일이 2일 이상 남은 거래에 한함)"
+ },
+ "partCancel": {
+ "balance": "잔액",
+ "cancelAmount": "취소금액",
+ "taxableAmount": "과세액",
+ "taxAmount": "부가세",
+ "taxFree": "면세",
+ "serviceFee": "봉사료"
+ }
+ }
},
"cashReceipt": {
"title": "현금영수증",
|