diff --git a/src/entities/additional-service/lib/payment-status-utils.ts b/src/entities/additional-service/lib/payment-status-utils.ts index ab36a85..15a2b1c 100644 --- a/src/entities/additional-service/lib/payment-status-utils.ts +++ b/src/entities/additional-service/lib/payment-status-utils.ts @@ -1,55 +1,57 @@ -export const getPaymentStatusText = (status?: string): string => { +import { TFunction } from 'i18next'; + +export const getPaymentStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const statusMap: Record = { - // 숫자 문자열 매핑 - '0': '미완료/활성화', - '1': '입금요청', - '2': '결제완료', - '3': '결제실패', - '4': '결제중단', - // 문자열 키 매핑 (하위 호환성) - 'ALL': '전체', - 'ACTIVE': '미완료/활성화', - 'DEPOSIT_REQUEST': '입금요청', - 'PAYMENT_COMPLETE': '결제완료', - 'PAYMENT_FAIL': '결제실패', - 'INACTIVE': '결제중단/비활성화' + // Numeric string mapping + '0': t('additionalService.linkPay.incompleteActive'), + '1': t('additionalService.linkPay.depositRequest'), + '2': t('additionalService.linkPay.paymentComplete'), + '3': t('additionalService.linkPay.paymentFail'), + '4': t('additionalService.linkPay.paymentStopped'), + // String key mapping (backward compatibility) + 'ALL': t('transaction.constants.all'), + 'ACTIVE': t('additionalService.linkPay.incompleteActive'), + 'DEPOSIT_REQUEST': t('additionalService.linkPay.depositRequest'), + 'PAYMENT_COMPLETE': t('additionalService.linkPay.paymentComplete'), + 'PAYMENT_FAIL': t('additionalService.linkPay.paymentFail'), + 'INACTIVE': t('additionalService.linkPay.paymentStoppedInactive') }; return statusMap[status] || status; }; -export const getProcessStatusText = (status?: string): string => { +export const getProcessStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const processStatusMap: Record = { - 'SEND_REQUEST': '발송요청', - 'SEND_CANCEL': '발송취소', - 'PENDING': '대기중' + 'SEND_REQUEST': t('additionalService.linkPay.sendRequest'), + 'SEND_CANCEL': t('additionalService.linkPay.sendCancel'), + 'PENDING': t('additionalService.linkPay.pending') }; return processStatusMap[status] || status; }; -export const getSendMethodText = (method?: string): string => { +export const getSendMethodText = (t: TFunction) => (method?: string): string => { if (!method) return ''; const sendMethodMap: Record = { 'SMS': 'SMS', - 'EMAIL': '이메일', - 'KAKAO': '알림톡' + 'EMAIL': t('additionalService.linkPay.email'), + 'KAKAO': t('additionalService.linkPay.alimtalk') }; return sendMethodMap[method] || method; }; -export const getResultStatusText = (status?: string): string => { +export const getResultStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const resultStatusMap: Record = { - 'SUCCESS': '성공', - 'FAIL': '실패' + 'SUCCESS': t('additionalService.common.success'), + 'FAIL': t('additionalService.common.fail') }; return resultStatusMap[status] || status; diff --git a/src/entities/additional-service/model/account-holder-auth/constant.ts b/src/entities/additional-service/model/account-holder-auth/constant.ts index bd963c1..3e032b5 100644 --- a/src/entities/additional-service/model/account-holder-auth/constant.ts +++ b/src/entities/additional-service/model/account-holder-auth/constant.ts @@ -1,31 +1,32 @@ +import { TFunction } from 'i18next'; import { AccountHolderAuthStatus } from "./types"; -export const authStatusBtnGroup = [ - { name: '전체', value: AccountHolderAuthStatus.ALL }, - { name: '요청', value: AccountHolderAuthStatus.REQUEST}, - { name: '성공', value: AccountHolderAuthStatus.SUCCESS}, - { name: '실패', value: AccountHolderAuthStatus.FAIL} +export const getAuthStatusBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: AccountHolderAuthStatus.ALL }, + { name: t('additionalService.common.request'), value: AccountHolderAuthStatus.REQUEST}, + { name: t('additionalService.common.success'), value: AccountHolderAuthStatus.SUCCESS}, + { name: t('additionalService.common.fail'), value: AccountHolderAuthStatus.FAIL} ] -export const getAuthStatusText = (status?: string): string => { +export const getAuthStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const AuthStatusMap: Record = { - 'REQUEST' : '요청', - 'SUCCESS' : '성공', - 'FAIL' : '실패' + 'REQUEST' : t('additionalService.common.request'), + 'SUCCESS' : t('additionalService.common.success'), + 'FAIL' : t('additionalService.common.fail') } return AuthStatusMap[status] || status; } -export const getAuthResultText = (status?: string): string => { +export const getAuthResultText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const AuthResultMap: Record = { - 'MATCHED' : '예금주명 일치', - 'NOT_MATCHED' : '예금주명 불일치', - 'FAILED' : '인증실패 (계좌 오류 등)' + 'MATCHED' : t('additionalService.accountHolderAuth.accountHolderNameMatch'), + 'NOT_MATCHED' : t('additionalService.accountHolderAuth.accountHolderNameMismatch'), + 'FAILED' : t('additionalService.accountHolderAuth.authFailedAccountError') } return AuthResultMap[status] || status; diff --git a/src/entities/additional-service/model/account-holder-search/constant.ts b/src/entities/additional-service/model/account-holder-search/constant.ts index 2e4c67f..a90ed5b 100644 --- a/src/entities/additional-service/model/account-holder-search/constant.ts +++ b/src/entities/additional-service/model/account-holder-search/constant.ts @@ -1,25 +1,26 @@ +import { TFunction } from 'i18next'; import { ProcessResult } from "../types"; import { AccountHolderResultStatus, AccountHolderSearchCl } from "./types"; -export const resultStatusBtnGroup = [ - { name: '전체', value: AccountHolderResultStatus.ALL }, - { name: '성공', value: AccountHolderResultStatus.SUCCESS }, - { name: '실패', value: AccountHolderResultStatus.FAIL }, +export const getResultStatusBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: AccountHolderResultStatus.ALL }, + { name: t('additionalService.common.success'), value: AccountHolderResultStatus.SUCCESS }, + { name: t('additionalService.common.fail'), value: AccountHolderResultStatus.FAIL }, ] -export const SearchTypeOption = [ - { name: '예금주', value: AccountHolderSearchCl.ACCOUNT_NAME }, - { name: '계좌번호', value: AccountHolderSearchCl.ACCOUNT_NO }, +export const getSearchTypeOption = (t: TFunction) => [ + { name: t('additionalService.accountHolderSearch.accountHolder'), value: AccountHolderSearchCl.ACCOUNT_NAME }, + { name: t('additionalService.accountHolderSearch.accountNumber'), value: AccountHolderSearchCl.ACCOUNT_NO }, ]; -export const getAccountHolderStatusText = (status?: string): string => { +export const getAccountHolderStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const resultStatusMap: Record = { - 'SUCCESS': '성공', - 'FAIL': '실패' + 'SUCCESS': t('additionalService.common.success'), + 'FAIL': t('additionalService.common.fail') }; return resultStatusMap[status] || status; } \ No newline at end of file diff --git a/src/entities/additional-service/model/alimtalk/constant.ts b/src/entities/additional-service/model/alimtalk/constant.ts index c70ef47..20c6f6f 100644 --- a/src/entities/additional-service/model/alimtalk/constant.ts +++ b/src/entities/additional-service/model/alimtalk/constant.ts @@ -1,90 +1,91 @@ +import { TFunction } from 'i18next'; import { AlimtalkAlimCl, AlimtalkSearchCl, AlimTalkSendCl, AlimtalkSendType, ServiceCode } from "./types"; -export const AlimtalkSearchClOptionGroup = [ - { name: '주문자', value: AlimtalkSearchCl.BUYER_NAME }, - { name: 'TID', value: AlimtalkSearchCl.TID }, +export const getAlimtalkSearchClOptionGroup = (t: TFunction) => [ + { name: t('additionalService.alimtalk.buyer'), value: AlimtalkSearchCl.BUYER_NAME }, + { name: t('transaction.constants.tid'), value: AlimtalkSearchCl.TID }, ]; -export const AlimtalkServiceCodeOptionGroup = [ - { name: '전체', value: '' }, - { name: '카드', value: ServiceCode.CARD }, - { name: '계좌이체', value: ServiceCode.BANK }, - { name: '가상계좌', value: ServiceCode.VBANK }, - { name: '휴대폰', value: ServiceCode.PHONE } +export const getAlimtalkServiceCodeOptionGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: '' }, + { name: t('transaction.constants.card'), value: ServiceCode.CARD }, + { name: t('transaction.constants.accountTransfer'), value: ServiceCode.BANK }, + { name: t('transaction.constants.virtualAccount'), value: ServiceCode.VBANK }, + { name: t('transaction.constants.mobilePhone'), value: ServiceCode.PHONE } ] -// 알림구분 - 카드/계좌이체/휴대폰용 -export const AlimtalkAlimClBtnGroupForGeneral = [ - { name: '전체', value: '' }, - { name: '승인', value: AlimtalkAlimCl.APPROVAL }, - { name: '취소', value: AlimtalkAlimCl.CANCEL } +// Notification type - For Card/Account Transfer/Mobile +export const getAlimtalkAlimClBtnGroupForGeneral = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: '' }, + { name: t('transaction.constants.approval'), value: AlimtalkAlimCl.APPROVAL }, + { name: t('transaction.constants.cancel'), value: AlimtalkAlimCl.CANCEL } ] -// 알림구분 - 가상계좌용 -export const AlimtalkAlimClBtnGroupForVBank = [ - { name: '전체', value: '' }, - { name: '입금요청', value: AlimtalkAlimCl.DEPOSIT_REQUEST }, - { name: '입금완료', value: AlimtalkAlimCl.DEPOSIT_COMPLETE }, - { name: '환불', value: AlimtalkAlimCl.REFUND } +// Notification type - For Virtual Account +export const getAlimtalkAlimClBtnGroupForVBank = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: '' }, + { name: t('additionalService.alimtalk.depositRequest'), value: AlimtalkAlimCl.DEPOSIT_REQUEST }, + { name: t('additionalService.alimtalk.depositComplete'), value: AlimtalkAlimCl.DEPOSIT_COMPLETE }, + { name: t('transaction.constants.refund'), value: AlimtalkAlimCl.REFUND } ] -export const AlimtalkSendTypeBtnGroup = [ - { name: '전체', value: AlimtalkSendType.ALL }, - { name: '카카오톡', value: AlimtalkSendType.KAKAOTALK }, - { name: 'FB SMS', value: AlimtalkSendType.FB_SMS } +export const getAlimtalkSendTypeBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: AlimtalkSendType.ALL }, + { name: t('additionalService.alimtalk.kakaotalk'), value: AlimtalkSendType.KAKAOTALK }, + { name: t('additionalService.alimtalk.fbSms'), value: AlimtalkSendType.FB_SMS } ] -export const AlimtalkSendClBtnGroup = [ - { name: '전체', value: AlimTalkSendCl.ALL }, - { name: '요청', value: AlimTalkSendCl.REQUEST }, - { name: '성공', value: AlimTalkSendCl.SUCCESS }, - { name: '실패', value: AlimTalkSendCl.FAIL } +export const getAlimtalkSendClBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: AlimTalkSendCl.ALL }, + { name: t('additionalService.common.request'), value: AlimTalkSendCl.REQUEST }, + { name: t('additionalService.common.success'), value: AlimTalkSendCl.SUCCESS }, + { name: t('additionalService.common.fail'), value: AlimTalkSendCl.FAIL } ] -export const getAlimtalkAlimClText = (status?: string): string => { +export const getAlimtalkAlimClText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const alimClMap: Record = { - 'APPROVAL' : '승인', - 'CANCEL' : '취소', - 'DEPOSIT_REQUEST' : '입금요청', - 'DEPOSIT_COMPLETE' : '입금완료', - 'REFUND' : '환불' + 'APPROVAL' : t('transaction.constants.approval'), + 'CANCEL' : t('transaction.constants.cancel'), + 'DEPOSIT_REQUEST' : t('additionalService.alimtalk.depositRequest'), + 'DEPOSIT_COMPLETE' : t('additionalService.alimtalk.depositComplete'), + 'REFUND' : t('transaction.constants.refund') } return alimClMap[status] || status; } -export const getAlimtalkSendTypeText = (status?: string): string => { +export const getAlimtalkSendTypeText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const sendTypeMap: Record = { - "KAKAOTALK": '카카오톡', - 'FB SMS': '페이스북', + "KAKAOTALK": t('additionalService.alimtalk.kakaotalk'), + 'FB SMS': t('additionalService.alimtalk.fbSms'), }; return sendTypeMap[status] || status; } -export const getAlimtalkSendClTypeText = (status?: string): string => { +export const getAlimtalkSendClTypeText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const sendClMap: Record = { - 'REQUEST': '요청', - 'SUCCESS': '성공', - 'FAIL': '실패' + 'REQUEST': t('additionalService.common.request'), + 'SUCCESS': t('additionalService.common.success'), + 'FAIL': t('additionalService.common.fail') }; return sendClMap[status] || status; } -export const getAlimtalkServiceCodeText = (status?: string): string => { +export const getAlimtalkServiceCodeText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const serviceCodeMap: Record = { - 'CARD': '신용카드', - 'BANK': '계좌이체', - 'VBANK': '가상계좌', - 'PHONE': '휴대폰' + 'CARD': t('transaction.constants.creditCard'), + 'BANK': t('transaction.constants.accountTransfer'), + 'VBANK': t('transaction.constants.virtualAccount'), + 'PHONE': t('transaction.constants.mobilePhone') } return serviceCodeMap[status] || status; diff --git a/src/entities/additional-service/model/ars/constant.ts b/src/entities/additional-service/model/ars/constant.ts index 8539456..5233780 100644 --- a/src/entities/additional-service/model/ars/constant.ts +++ b/src/entities/additional-service/model/ars/constant.ts @@ -1,30 +1,33 @@ +import { TFunction } from 'i18next'; import { ArsPaymentMethod, OrderStatus, PaymentStatus } from './types'; -export const ArsPaymentStatusBtnGroup = [ - {name: '전체', value: PaymentStatus.ALL }, - {name: '결제완료', value: PaymentStatus.COMPLETE }, - {name: '미결제', value: PaymentStatus.UNPAID } +export const getArsPaymentStatusBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: PaymentStatus.ALL }, + {name: t('additionalService.ars.paymentComplete'), value: PaymentStatus.COMPLETE }, + {name: t('additionalService.ars.unpaid'), value: PaymentStatus.UNPAID } ]; -export const ArsOrderStatusBtnGroup = [ - {name: '전체', value: OrderStatus.ALL }, - {name: '결제대기', value: OrderStatus.PENDING }, - {name: '결제성공', value: OrderStatus.SUCCESS }, - {name: '기간만료', value: OrderStatus.EXPIRED }, - {name: '취소완료', value: OrderStatus.CANCELED }, + +export const getArsOrderStatusBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: OrderStatus.ALL }, + {name: t('additionalService.ars.pendingPayment'), value: OrderStatus.PENDING }, + {name: t('additionalService.ars.paymentSuccess'), value: OrderStatus.SUCCESS }, + {name: t('additionalService.ars.expired'), value: OrderStatus.EXPIRED }, + {name: t('additionalService.ars.canceled'), value: OrderStatus.CANCELED }, ]; -export const ArsPaymentMethodBtnGroup = [ + +export const getArsPaymentMethodBtnGroup = (t: TFunction) => [ {name: 'SMS', value: ArsPaymentMethod.SMS }, {name: 'ARS', value: ArsPaymentMethod.ARS }, ]; -export const getArsPaymentStatusName = (status?: string): string => { +export const getArsPaymentStatusName = (t: TFunction) => (status?: string): string => { if (!status) return ''; - const found = ArsPaymentStatusBtnGroup.find(item => item.value === status); + const found = getArsPaymentStatusBtnGroup(t).find(item => item.value === status); return found ? found.name : status; } -export const getArsOrderStatusName = (status?: string): string => { +export const getArsOrderStatusName = (t: TFunction) => (status?: string): string => { if (!status) return ''; - const found = ArsOrderStatusBtnGroup.find(item => item.value === status); + const found = getArsOrderStatusBtnGroup(t).find(item => item.value === status); return found ? found.name : status; } \ No newline at end of file diff --git a/src/entities/additional-service/model/face-auth/constant.ts b/src/entities/additional-service/model/face-auth/constant.ts index b80f192..698cdaf 100644 --- a/src/entities/additional-service/model/face-auth/constant.ts +++ b/src/entities/additional-service/model/face-auth/constant.ts @@ -1,35 +1,36 @@ +import { TFunction } from 'i18next'; import { FaceAuthResult, FaceAuthTransType } from "./types"; -export const AuthResultBtnGroup = [ - { name: '전체', value: FaceAuthResult.ALL }, - { name: '성공', value: FaceAuthResult.SUCCESS }, - { name: '실패', value: FaceAuthResult.FAIL }, +export const getAuthResultBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: FaceAuthResult.ALL }, + { name: t('additionalService.common.success'), value: FaceAuthResult.SUCCESS }, + { name: t('additionalService.common.fail'), value: FaceAuthResult.FAIL }, ]; -export const TransactionTypeBtnGroup = [ - { name: '전체', value: FaceAuthTransType.ALL }, - { name: '인증', value: FaceAuthTransType.AUTH }, - { name: '등록', value: FaceAuthTransType.REGISTER }, +export const getTransactionTypeBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: FaceAuthTransType.ALL }, + { name: t('additionalService.faceAuth.authentication'), value: FaceAuthTransType.AUTH }, + { name: t('additionalService.faceAuth.registration'), value: FaceAuthTransType.REGISTER }, ]; -export const getAuthResultStatusText = (status?: string): string => { +export const getAuthResultStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const authResultMap: Record = { - 'SUCCESS': '성공', - 'FAIL': '실패' + 'SUCCESS': t('additionalService.common.success'), + 'FAIL': t('additionalService.common.fail') } return authResultMap[status] || status; } -export const getTransTypeText = (transType?: string): string => { +export const getTransTypeText = (t: TFunction) => (transType?: string): string => { if (!transType) return ''; const transTypeMap: Record = { - 'REGISTER': '등록', - 'AUTH': '인증' + 'REGISTER': t('additionalService.faceAuth.registration'), + 'AUTH': t('additionalService.faceAuth.authentication') } return transTypeMap[transType] || transType; diff --git a/src/entities/additional-service/model/fund-account/constant.ts b/src/entities/additional-service/model/fund-account/constant.ts index 30001f9..befb42f 100644 --- a/src/entities/additional-service/model/fund-account/constant.ts +++ b/src/entities/additional-service/model/fund-account/constant.ts @@ -1,3 +1,4 @@ +import { TFunction } from 'i18next'; import { FundAccountReceiveAccountNameNo, FundAccountResultStatus, @@ -6,41 +7,41 @@ import { FundAccountStatus } from './types'; -export const FundAccountStatusBtnGroup = [ - { name: '전체', value: FundAccountStatus.ALL }, - { name: '등록완료', value: FundAccountStatus.REGIST_COMPLETE }, - { name: '이체요청', value: FundAccountStatus.TRANSFER_REQUEST }, - { name: '요청성공', value: FundAccountStatus.REQUEST_SUCCESS }, - { name: '요청실패', value: FundAccountStatus.REQUEST_FAIL } +export const getFundAccountStatusBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: FundAccountStatus.ALL }, + { name: t('additionalService.fundAccount.registrationComplete'), value: FundAccountStatus.REGIST_COMPLETE }, + { name: t('additionalService.fundAccount.transferRequest'), value: FundAccountStatus.TRANSFER_REQUEST }, + { name: t('additionalService.fundAccount.requestSuccess'), value: FundAccountStatus.REQUEST_SUCCESS }, + { name: t('additionalService.fundAccount.requestFail'), value: FundAccountStatus.REQUEST_FAIL } ]; -export const FundAccountResultStatusBtnGroup = [ - { name: '전체', value: FundAccountResultStatus.ALL }, - { name: '요청', value: FundAccountResultStatus.REQUEST }, - { name: '성공', value: FundAccountResultStatus.SUCCESS }, - { name: '실패', value: FundAccountResultStatus.FAIL }, +export const getFundAccountResultStatusBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: FundAccountResultStatus.ALL }, + { name: t('additionalService.common.request'), value: FundAccountResultStatus.REQUEST }, + { name: t('additionalService.common.success'), value: FundAccountResultStatus.SUCCESS }, + { name: t('additionalService.common.fail'), value: FundAccountResultStatus.FAIL }, ] -export const getFundAccountStatusName = (status?: string): string => { +export const getFundAccountStatusName = (t: TFunction) => (status?: string): string => { if (!status) return ''; - const found = FundAccountStatusBtnGroup.find(item => item.value === status); + const found = getFundAccountStatusBtnGroup(t).find(item => item.value === status); return found ? found.name : status; }; -export const getFundAccountResultStatusName = (status?: string): string => { - +export const getFundAccountResultStatusName = (t: TFunction) => (status?: string): string => { + if (!status) return ''; - const found = FundAccountResultStatusBtnGroup.find(item => item.value === status); + const found = getFundAccountResultStatusBtnGroup(t).find(item => item.value === status); return found ? found.name : status; } -export const FundAccountResultSearchDateTypeBtnGroup = [ - { name: '요청일자', value: FundAccountSearchDateType.REQUEST_DATE }, - { name: '이체일자', value: FundAccountSearchDateType.APPLICATION_DATE } +export const getFundAccountResultSearchDateTypeBtnGroup = (t: TFunction) => [ + { name: t('additionalService.fundAccount.requestDate'), value: FundAccountSearchDateType.REQUEST_DATE }, + { name: t('additionalService.fundAccount.transferDate'), value: FundAccountSearchDateType.APPLICATION_DATE } ]; -export const FundAccountSearchClOptionsGroup = [ - { name: '수취인', value: FundAccountSearchCl.ACCOUNT_NAME }, - { name: '계좌번호', value: FundAccountSearchCl.ACCOUNT_NO }, +export const getFundAccountSearchClOptionsGroup = (t: TFunction) => [ + { name: t('additionalService.fundAccount.recipient'), value: FundAccountSearchCl.ACCOUNT_NAME }, + { name: t('additionalService.fundAccount.accountNumber'), value: FundAccountSearchCl.ACCOUNT_NO }, ]; \ No newline at end of file diff --git a/src/entities/additional-service/model/key-in/constant.ts b/src/entities/additional-service/model/key-in/constant.ts index 89cb73a..b37abbc 100644 --- a/src/entities/additional-service/model/key-in/constant.ts +++ b/src/entities/additional-service/model/key-in/constant.ts @@ -1,15 +1,15 @@ +import { TFunction } from 'i18next'; import { KeyInPaymentTansactionType } from "./types"; -// contant로 옮기기 -export const keyInPaymentPaymentStatusBtnGroup = [ - { name: '전체', value: KeyInPaymentTansactionType.ALL }, - { name: '승인', value: KeyInPaymentTansactionType.APPROVAL }, - { name: '전취소', value: KeyInPaymentTansactionType.FULL_CANCEL }, - { name: '후취소', value: KeyInPaymentTansactionType.PARTIAL_CANCEL } +export const getKeyInPaymentPaymentStatusBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: KeyInPaymentTansactionType.ALL }, + { name: t('transaction.constants.approval'), value: KeyInPaymentTansactionType.APPROVAL }, + { name: t('additionalService.keyIn.fullCancel'), value: KeyInPaymentTansactionType.FULL_CANCEL }, + { name: t('additionalService.keyIn.partialCancel'), value: KeyInPaymentTansactionType.PARTIAL_CANCEL } ]; -export const getKeyInPaymentPaymentStatusName = (status?: string): string => { +export const getKeyInPaymentPaymentStatusName = (t: TFunction) => (status?: string): string => { if (!status) return ''; - const found = keyInPaymentPaymentStatusBtnGroup.find(item => item.value === status); + const found = getKeyInPaymentPaymentStatusBtnGroup(t).find(item => item.value === status); return found ? found.name : status; } \ No newline at end of file diff --git a/src/entities/additional-service/model/link-pay/constant.ts b/src/entities/additional-service/model/link-pay/constant.ts index e320d7a..a655cb0 100644 --- a/src/entities/additional-service/model/link-pay/constant.ts +++ b/src/entities/additional-service/model/link-pay/constant.ts @@ -1,7 +1,8 @@ +import { TFunction } from 'i18next'; import { LinkPaymentProcessStatus } from "./types"; -export const ProcessStatusBtnGrouup = [ - { name: '전체', value: LinkPaymentProcessStatus.ALL }, - { name: '발송요청', value: LinkPaymentProcessStatus.SEND_REQUEST }, - { name: '발송취소', value: LinkPaymentProcessStatus.SEND_CANCEL } +export const getProcessStatusBtnGroup = (t: TFunction) => [ + { name: t('transaction.constants.all'), value: LinkPaymentProcessStatus.ALL }, + { name: t('additionalService.linkPay.sendRequest'), value: LinkPaymentProcessStatus.SEND_REQUEST }, + { name: t('additionalService.linkPay.sendCancel'), value: LinkPaymentProcessStatus.SEND_CANCEL } ] \ No newline at end of file diff --git a/src/entities/additional-service/model/payout/constant.ts b/src/entities/additional-service/model/payout/constant.ts index d6921b3..656f0f3 100644 --- a/src/entities/additional-service/model/payout/constant.ts +++ b/src/entities/additional-service/model/payout/constant.ts @@ -1,23 +1,25 @@ +import { TFunction } from 'i18next'; import { PayoutSearchDateType, PayoutDisbursementStatus } from './types'; -export const PayoutSearchClBtnGroup = [ - {name: '요청일자', value: PayoutSearchDateType.REQUEST_DATE }, - {name: '지급일자', value: PayoutSearchDateType.SETTLEMENT_DATE } -]; -export const PayoutDisbursementStatusBtnGroup = [ - {name: '전체', value: PayoutDisbursementStatus.ALL}, - {name: '요청', value: PayoutDisbursementStatus.REQUEST}, - {name: '성공', value: PayoutDisbursementStatus.SUCCESS}, - {name: '실패', value: PayoutDisbursementStatus.FAIL}, +export const getPayoutSearchClBtnGroup = (t: TFunction) => [ + {name: t('additionalService.payout.requestDate'), value: PayoutSearchDateType.REQUEST_DATE }, + {name: t('additionalService.payout.disbursementDate'), value: PayoutSearchDateType.SETTLEMENT_DATE } ]; -export const getPayoutStatusText = (status?: string): string => { +export const getPayoutDisbursementStatusBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: PayoutDisbursementStatus.ALL}, + {name: t('additionalService.common.request'), value: PayoutDisbursementStatus.REQUEST}, + {name: t('additionalService.common.success'), value: PayoutDisbursementStatus.SUCCESS}, + {name: t('additionalService.common.fail'), value: PayoutDisbursementStatus.FAIL}, +]; + +export const getPayoutStatusText = (t: TFunction) => (status?: string): string => { if (!status) return ''; const statusMap: Record = { - "REQUEST" : "요청", - "SUCCESS" : "성공", - "FAIL" : "실패" + "REQUEST" : t('additionalService.common.request'), + "SUCCESS" : t('additionalService.common.success'), + "FAIL" : t('additionalService.common.fail') } return statusMap[status] || status; diff --git a/src/entities/additional-service/model/sms-payment/constant.ts b/src/entities/additional-service/model/sms-payment/constant.ts index 16fe94a..633a388 100644 --- a/src/entities/additional-service/model/sms-payment/constant.ts +++ b/src/entities/additional-service/model/sms-payment/constant.ts @@ -1,13 +1,14 @@ +import { TFunction } from 'i18next'; import { SmsCl } from './types'; -export const SmsClBtnGroup = [ +export const getSmsClBtnGroup = (t: TFunction) => [ { name: '', value: SmsCl.ALL }, - { name: '가상계좌 요청', value: SmsCl.VACCOUNT_REQ }, - { name: '가상계좌 요청 + 입금', value: SmsCl.VACCOUNT_REQ_DEPOSIT } + { name: t('additionalService.sms.virtualAccountRequest'), value: SmsCl.VACCOUNT_REQ }, + { name: t('additionalService.sms.virtualAccountRequestDeposit'), value: SmsCl.VACCOUNT_REQ_DEPOSIT } ]; -export const getSmsClName = (smsCl?: string): string => { +export const getSmsClName = (t: TFunction) => (smsCl?: string): string => { if (!smsCl) return ''; - const found = SmsClBtnGroup.find(item => item.value === smsCl); + const found = getSmsClBtnGroup(t).find(item => item.value === smsCl); return found ? found.name : smsCl; }; diff --git a/src/entities/additional-service/ui/ars/resend-sms-bottom-sheet.tsx b/src/entities/additional-service/ui/ars/resend-sms-bottom-sheet.tsx index cdc9182..ff9b0a5 100644 --- a/src/entities/additional-service/ui/ars/resend-sms-bottom-sheet.tsx +++ b/src/entities/additional-service/ui/ars/resend-sms-bottom-sheet.tsx @@ -1,6 +1,8 @@ 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 ArsResendSmsBottomSheetProps { bottomSheetOn: boolean; setBottomSheetOn: (bottomSheetOn: boolean) => void; @@ -14,6 +16,7 @@ export const ArsResendSmsBottomSheet = ({ phoneNumber, callResendSms }: ArsResendSmsBottomSheetProps) => { + const { t } = useTranslation(); const onClickToClose = () => { setBottomSheetOn(false); @@ -40,14 +43,14 @@ export const ArsResendSmsBottomSheet = ({ >
-

SMS 재전송

+

{t('additionalService.common.resend')} SMS

@@ -55,7 +58,7 @@ export const ArsResendSmsBottomSheet = ({
-

[01095800212] 번호로 SMS를 재발송 하시겠습니까?

+

[{phoneNumber}] {t('transaction.sms.resendConfirmMessage')}

@@ -63,7 +66,7 @@ export const ArsResendSmsBottomSheet = ({ className="btn-50 btn-blue flex-1" type="button" onClick={ () => onCliickToResendSms() } - >신청 + >{t('transaction.apply')}
diff --git a/src/entities/additional-service/ui/filter/ars-filter.tsx b/src/entities/additional-service/ui/filter/ars-filter.tsx index f8ac9e4..8f0d16d 100644 --- a/src/entities/additional-service/ui/filter/ars-filter.tsx +++ b/src/entities/additional-service/ui/filter/ars-filter.tsx @@ -1,19 +1,20 @@ import { useEffect, useState } from 'react'; import { motion } from 'framer-motion'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { FilterSelect } from '@/shared/ui/filter/select'; import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterRangeAmount } from '@/shared/ui/filter/range-amount'; -import { - FilterMotionDuration, - FilterMotionStyle, +import { + FilterMotionDuration, + FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant'; import moment from 'moment'; import { FilterInput } from '@/shared/ui/filter/input'; import { OrderStatus, PaymentStatus } from '../../model/ars/types'; -import { ArsOrderStatusBtnGroup, ArsPaymentStatusBtnGroup } from '../../model/ars/constant'; +import { getArsOrderStatusBtnGroup, getArsPaymentStatusBtnGroup } from '../../model/ars/constant'; import { useStore } from '@/shared/model/store'; import { FilterSelectMid } from '@/shared/ui/filter/select-mid'; @@ -67,7 +68,9 @@ export const ArsFilter = ({ const [filterOrderStatus, setFilterOrderStatus] = useState(orderStatus); const [filterMinAmount, setFilterMinAmount] = useState(minAmount); const [filterMaxAmount, setFilterMaxAmount] = useState(maxAmount); - + + const { t } = useTranslation(); + const onClickToClose = () => { setFilterOn(false); }; @@ -100,15 +103,15 @@ export const ArsFilter = ({ >
-
필터
+
{t('filter.filter')}
- @@ -116,36 +119,36 @@ export const ArsFilter = ({
- + >{t('filter.apply')}
diff --git a/src/entities/common/ui/sort-type-box.tsx b/src/entities/common/ui/sort-type-box.tsx index 1a389eb..0f3f067 100644 --- a/src/entities/common/ui/sort-type-box.tsx +++ b/src/entities/common/ui/sort-type-box.tsx @@ -1,17 +1,24 @@ import { SortTypeKeys, SortTypeBoxProps } from '../model/types'; +import { useTranslation } from 'react-i18next'; + export const SortTypeBox = ({ sortType, onClickToSort, - sortOptions = [ - { key: SortTypeKeys.LATEST, label: '최신순' }, - { key: SortTypeKeys.HIGH_AMOUNT, label: '고액순' } - ] + sortOptions }: SortTypeBoxProps) => { + const { t } = useTranslation(); + + const defaultSortOptions = [ + { key: SortTypeKeys.LATEST, label: t('filter.sortOrders.latest') }, + { key: SortTypeKeys.HIGH_AMOUNT, label: t('filter.sortOrders.highest') } + ]; + + const options = sortOptions || defaultSortOptions; return ( <>
- { sortOptions.map((option: Record, index: number) => ( + { options.map((option: Record, index: number) => ( <> { (index > 0) && { const { registerBiometric, closeBiometricRegistrationPopup } = useAppBridge(); + const { t } = useTranslation(); const onClickToClose = () => { closeBiometricRegistrationPopup(); @@ -33,14 +35,14 @@ export const AuthRegister = ({ >
-

간편 인증 등록

- @@ -49,22 +51,26 @@ export const AuthRegister = ({
- 간편 인증 등록 한번으로,
- 비밀번호 없이 편리하게 로그인하세요. + {t('home.biometricRegistration.description').split('\n').map((line, index) => ( + + {line} + {index === 0 &&
} +
+ ))}
- - + + >{t('home.biometricRegistration.registerNow')}
diff --git a/src/entities/home/ui/home-bottom-banner.tsx b/src/entities/home/ui/home-bottom-banner.tsx index bf54b59..c01a53a 100644 --- a/src/entities/home/ui/home-bottom-banner.tsx +++ b/src/entities/home/ui/home-bottom-banner.tsx @@ -11,6 +11,7 @@ import { useEffect, useState } from 'react'; import { Swiper, SwiperSlide } from 'swiper/react'; import 'swiper/css'; import { Autoplay, Pagination } from 'swiper/modules'; +import { useTranslation } from 'react-i18next'; export const HomeBottomBanner = ({ setBottomBannerOn, @@ -18,7 +19,8 @@ export const HomeBottomBanner = ({ bannerList }: HomeBottomBannerProps) => { const { navigate } = useNavigate(); - + const { t } = useTranslation(); + const [isFirstOpen, setIsFirstOpen] = useState(false); const [currentSlide, setCurrentSlide] = useState(1); @@ -109,8 +111,8 @@ export const HomeBottomBanner = ({
- onClickToCloseDay() }>오늘 하루 보지 않기 - onClickToClose() }>닫기 + onClickToCloseDay() }>{t('home.banner.doNotShowToday')} + onClickToClose() }>{t('home.banner.close')}
diff --git a/src/entities/home/ui/home-notice-item.tsx b/src/entities/home/ui/home-notice-item.tsx index cd84e3a..0cbe040 100644 --- a/src/entities/home/ui/home-notice-item.tsx +++ b/src/entities/home/ui/home-notice-item.tsx @@ -34,9 +34,9 @@ export const HomeNoticeItem = ({
{ t(`support.notice.categories.${informCl}`) }{ moment(regDt).format('YY년 MM월 DD일') }
- 공지사항 바로가기
diff --git a/src/entities/payment/ui/info-wrap.tsx b/src/entities/payment/ui/info-wrap.tsx index 88196ee..8497100 100644 --- a/src/entities/payment/ui/info-wrap.tsx +++ b/src/entities/payment/ui/info-wrap.tsx @@ -48,7 +48,7 @@ export const InfoWrap = () => { const [cardCommissionBottomSheetOn, setCardCommissionBottomSheetOn] = useState(false); const [creditCardListBottomSheetOn, setCreditCardListBottomSheetOn] = useState(false); - const [cardCompany, setCardCompany] = useState('비씨'); + const [cardCompany, setCardCompany] = useState(t('payment.paymentMethods.bcCard')); const [cardCompanyOptions, setCardCompanyOptions] = useState>(); const [installmentDetails, setInstallmentDetails] = useState>([]); @@ -76,37 +76,37 @@ export const InfoWrap = () => { const { mutateAsync: paymentInstallmentDetail } = usePaymentInstallmentDetailMutation(); const list1 = [ - {payName: '신용카드', payImage: 'pay_01.svg', infoLink: '', payType: 2}, - {payName: '카카오페이', payImage: 'pay_02.svg', infoLink: '', payType: 3}, - {payName: '네이버페이', payImage: 'pay_03.svg', infoLink: '', payType: 3}, - {payName: '삼성페이', payImage: 'pay_04.svg', infoLink: '', payType: 2}, - {payName: '계좌이체', payImage: 'pay_05.svg', infoLink: '', payType: 1}, - {payName: '휴대폰결제', payImage: 'pay_06.svg', infoLink: '', payType: 1}, - {payName: '문화상품권', payImage: 'pay_07.svg', infoLink: '', payType: 1}, - {payName: 'SSG머니', payImage: 'pay_08.svg', infoLink: '', payType: 1}, - {payName: 'TV페이', payImage: 'pay_09.svg', infoLink: '', payType: 1}, - {payName: '삼성페이(카드)', payImage: 'pay_10.svg', infoLink: '', payType: 2}, - {payName: '애플페이', payImage: 'pay_11.svg', infoLink: '', payType: 2}, - {payName: '토스페이', payImage: 'pay_12.svg', infoLink: '', payType: 3}, - {payName: 'PAYCO', payImage: 'pay_13.svg', infoLink: '', payType: 2}, - {payName: '리브페이', payImage: 'pay_14.svg', infoLink: '', payType: 2}, - {payName: '대만결제', payImage: 'pay_15.svg', infoLink: '', payType: 1}, - {payName: '티머니페이', payImage: 'pay_16.svg', infoLink: '', payType: 1}, - {payName: 'L.PAY', payImage: 'pay_17.svg', infoLink: '', payType: 2}, - {payName: 'PAYU', payImage: 'pay_18.svg', infoLink: '', payType: 2}, - {payName: 'TW라인페이', payImage: 'pay_19.svg', infoLink: '', payType: 2}, - {payName: 'SSG페이', payImage: 'pay_21.svg', infoLink: '', payType: 3}, - {payName: '케이뱅크페이', payImage: 'pay_22.svg', infoLink: '', payType: 2}, - {payName: '가상계좌', payImage: 'pay_23.svg', infoLink: '', payType: 1}, - {payName: 'SSG은행계좌', payImage: 'pay_21.svg', infoLink: '', payType: 1}, - {payName: '계좌간편결제', payImage: 'pay_24.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.creditCard'), payImage: 'pay_01.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.kakaoPay'), payImage: 'pay_02.svg', infoLink: '', payType: 3}, + {payName: t('payment.paymentMethods.naverPay'), payImage: 'pay_03.svg', infoLink: '', payType: 3}, + {payName: t('payment.paymentMethods.samsungPay'), payImage: 'pay_04.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.accountTransfer'), payImage: 'pay_05.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.mobilePaymentFull'), payImage: 'pay_06.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.cultureLandGiftCard'), payImage: 'pay_07.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.ssgMoney'), payImage: 'pay_08.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.tvPay'), payImage: 'pay_09.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.samsungPayCard'), payImage: 'pay_10.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.applePay'), payImage: 'pay_11.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.tossPay'), payImage: 'pay_12.svg', infoLink: '', payType: 3}, + {payName: t('payment.paymentMethods.payco'), payImage: 'pay_13.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.livePay'), payImage: 'pay_14.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.taiwanPayment'), payImage: 'pay_15.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.tmoneyPay'), payImage: 'pay_16.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.lPay'), payImage: 'pay_17.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.payU'), payImage: 'pay_18.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.twLinePay'), payImage: 'pay_19.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.ssgPay'), payImage: 'pay_21.svg', infoLink: '', payType: 3}, + {payName: t('payment.paymentMethods.kBankPay'), payImage: 'pay_22.svg', infoLink: '', payType: 2}, + {payName: t('payment.paymentMethods.virtualAccount'), payImage: 'pay_23.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.ssgBankAccount'), payImage: 'pay_21.svg', infoLink: '', payType: 1}, + {payName: t('payment.paymentMethods.accountSimplePayment'), payImage: 'pay_24.svg', infoLink: '', payType: 1}, ]; const list2 = [ - {payName: '신용카드', payImage: 'pay_01.svg', infoLink: ''}, - {payName: 'SK PAY', payImage: 'pay_20.svg', infoLink: ''}, - {payName: 'TV페이', payImage: 'pay_09.svg', infoLink: ''}, - {payName: '삼성페이(카드)', payImage: 'pay_04.svg', infoLink: ''}, + {payName: t('payment.paymentMethods.creditCard'), payImage: 'pay_01.svg', infoLink: ''}, + {payName: t('payment.paymentMethods.skPay'), payImage: 'pay_20.svg', infoLink: ''}, + {payName: t('payment.paymentMethods.tvPay'), payImage: 'pay_09.svg', infoLink: ''}, + {payName: t('payment.paymentMethods.samsungPayCard'), payImage: 'pay_04.svg', infoLink: ''}, ]; const getList = (type: PaymentInfoItemType) => { diff --git a/src/entities/settlement/model/constant.ts b/src/entities/settlement/model/constant.ts index c6ac3f4..d6d44f3 100644 --- a/src/entities/settlement/model/constant.ts +++ b/src/entities/settlement/model/constant.ts @@ -1,18 +1,20 @@ +import { TFunction } from 'i18next'; import { SettlementPaymentMethod, SettlementPeriodType } from './types'; -export const SettlementPeriodTypeBtnGroup = [ - {name: '정산일자', value: SettlementPeriodType.SETTLEMENT_DATE }, - {name: '거래일자', value: SettlementPeriodType.TRANSACTION_DATE } +export const getSettlementPeriodTypeBtnGroup = (t: TFunction) => [ + {name: t('settlement.periodType.settlementDate'), value: SettlementPeriodType.SETTLEMENT_DATE }, + {name: t('settlement.periodType.transactionDate'), value: SettlementPeriodType.TRANSACTION_DATE } ]; -export const SettlementPaymentMethodOptionsGroup = [ - {name: '전체', value: SettlementPaymentMethod.ALL}, - {name: '신용카드', value: SettlementPaymentMethod.CREDIT_CARD}, - {name: '가상계좌', value: SettlementPaymentMethod.VIRTUAL_ACCOUNT}, - {name: '계좌이체', value: SettlementPaymentMethod.ACCOUNT_TRANSFER}, - {name: '계좌간편결제', value: SettlementPaymentMethod.ACCOUNT_EASY_PAY}, - {name: '휴대폰', value: SettlementPaymentMethod.MOBILE_PAYMENT}, - {name: 'SSG 머니', value: SettlementPaymentMethod.SSG_MONEY}, - {name: 'SSG 은행계좌', value: SettlementPaymentMethod.SSG_BANK_ACCOUNT}, - {name: '문화상품권', value: SettlementPaymentMethod.CULTURE_VOUCHER}, - {name: '티머니페이', value: SettlementPaymentMethod.TMONEY_PAY}, + +export const getSettlementPaymentMethodOptionsGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: SettlementPaymentMethod.ALL}, + {name: t('transaction.constants.creditCard'), value: SettlementPaymentMethod.CREDIT_CARD}, + {name: t('transaction.constants.virtualAccount'), value: SettlementPaymentMethod.VIRTUAL_ACCOUNT}, + {name: t('transaction.constants.accountTransfer'), value: SettlementPaymentMethod.ACCOUNT_TRANSFER}, + {name: t('transaction.constants.accountSimpleTransfer'), value: SettlementPaymentMethod.ACCOUNT_EASY_PAY}, + {name: t('transaction.constants.mobilePayment'), value: SettlementPaymentMethod.MOBILE_PAYMENT}, + {name: t('transaction.constants.ssgMoney'), value: SettlementPaymentMethod.SSG_MONEY}, + {name: t('transaction.constants.ssgBank'), value: SettlementPaymentMethod.SSG_BANK_ACCOUNT}, + {name: t('transaction.constants.cultureLand'), value: SettlementPaymentMethod.CULTURE_VOUCHER}, + {name: t('transaction.constants.tmoneyPay'), value: SettlementPaymentMethod.TMONEY_PAY}, ]; \ No newline at end of file diff --git a/src/entities/settlement/ui/calandar-amount-row.tsx b/src/entities/settlement/ui/calandar-amount-row.tsx index 1aab143..a4764b0 100644 --- a/src/entities/settlement/ui/calandar-amount-row.tsx +++ b/src/entities/settlement/ui/calandar-amount-row.tsx @@ -1,4 +1,5 @@ import { NumericFormat } from 'react-number-format'; +import { useTranslation } from 'react-i18next'; import { SettlementStatus } from '../model/types'; export interface CalendarAmountRowProps { @@ -10,23 +11,24 @@ export const CalendarAmountRow = ({ amount, settlementStatus }: CalendarAmountRowProps) => { + const { t } = useTranslation(); const makeTitle = () => { let rs = []; if(settlementStatus === SettlementStatus.SCHEDULED){ rs.push( - 예정 + >{t('settlement.scheduled')} ); } else if(settlementStatus === SettlementStatus.COMPLETED){ rs.push( - 완료 + >{t('settlement.completed')} ); } return rs; @@ -35,13 +37,13 @@ export const CalendarAmountRow = ({ return ( <>
-
정산 { makeTitle() } 금액
+
{t('settlement.settlementShort')} { makeTitle() } {t('filter.amount')}
diff --git a/src/entities/settlement/ui/calandar-wrap.tsx b/src/entities/settlement/ui/calandar-wrap.tsx index acee232..b4d905c 100644 --- a/src/entities/settlement/ui/calandar-wrap.tsx +++ b/src/entities/settlement/ui/calandar-wrap.tsx @@ -1,11 +1,12 @@ import moment from 'moment'; import { ChangeEvent, useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { useSettlementsCalendarMutation } from '../api/use-settlements-calendar-mutation'; import { CalendarAmountRow } from './calandar-amount-row'; -import { CalendarSettlementItem } from './calendar-settlement-item'; +import { CalendarSettlementItem } from './calendar-settlement-item'; import { CalendarGrid } from './calendar-grid'; -import { +import { SettlementDays, SettlementsCalendarParams, SettlementsCalendarResponse, @@ -14,7 +15,8 @@ import { import { useStore } from '@/shared/model/store'; export const CalendarWrap = () => { - moment.locale('ko'); + const { t, i18n } = useTranslation(); + moment.locale(i18n.language); const midOptions = useStore.getState().UserStore.selectOptionsMids; const userMid = useStore.getState().UserStore.mid; @@ -135,25 +137,25 @@ export const CalendarWrap = () => {
-
{ moment(yearMonth).format('YYYY년 MM월') }
-
@@ -172,11 +174,11 @@ export const CalendarWrap = () => {
-
정산 완료
+
{t('settlement.settlementCompleted')}
-
입금 예정
+
{t('settlement.depositScheduled')}
diff --git a/src/entities/settlement/ui/calendar-grid.tsx b/src/entities/settlement/ui/calendar-grid.tsx index e7a6a81..3cccb39 100644 --- a/src/entities/settlement/ui/calendar-grid.tsx +++ b/src/entities/settlement/ui/calendar-grid.tsx @@ -1,4 +1,5 @@ import moment from 'moment'; +import { useTranslation } from 'react-i18next'; import { SettlementDays, SettlementStatus } from '../model/types'; import { useEffect, useState } from 'react'; @@ -13,7 +14,8 @@ export const CalendarGrid = ({ scheduledDateList, completedDateList }: CalendarGridProps) => { - + const { t } = useTranslation(); + const makeCalendarDate = () => { let startDay = moment(yearMonth).startOf('month').day(); let lastDate = moment(yearMonth).endOf('month').date(); @@ -73,13 +75,13 @@ export const CalendarGrid = ({ <>
-
-
-
-
-
-
-
+
{t('common.weekdays.sun')}
+
{t('common.weekdays.mon')}
+
{t('common.weekdays.tue')}
+
{t('common.weekdays.wed')}
+
{t('common.weekdays.thu')}
+
{t('common.weekdays.fri')}
+
{t('common.weekdays.sat')}
{ makeCalendarDate() } diff --git a/src/entities/settlement/ui/calendar-settlement-item.tsx b/src/entities/settlement/ui/calendar-settlement-item.tsx index 9ae94df..2e05cde 100644 --- a/src/entities/settlement/ui/calendar-settlement-item.tsx +++ b/src/entities/settlement/ui/calendar-settlement-item.tsx @@ -1,5 +1,6 @@ import moment from 'moment'; import { NumericFormat } from 'react-number-format'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { SettlementDays, SettlementStatus } from '../model/types'; @@ -14,6 +15,7 @@ export const CalendarSettlementItem = ({ settlementStatus }: CalendarSettlementItemProps) => { const { navigate } = useNavigate(); + const { t } = useTranslation(); const getAmount = ( scheduledAmount: number | undefined, @@ -65,10 +67,10 @@ export const CalendarSettlementItem = ({
diff --git a/src/entities/settlement/ui/filter/list-filter.tsx b/src/entities/settlement/ui/filter/list-filter.tsx index 087d249..c71c05c 100644 --- a/src/entities/settlement/ui/filter/list-filter.tsx +++ b/src/entities/settlement/ui/filter/list-filter.tsx @@ -1,19 +1,20 @@ import { useEffect, useState } from 'react'; import { motion } from 'framer-motion'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { useStore } from '@/shared/model/store'; -import { +import { SettlementPaymentMethod, SettlementPeriodType } from '../../model/types'; -import { - FilterMotionDuration, - FilterMotionStyle, +import { + FilterMotionDuration, + FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant'; import { FilterSelect } from '@/shared/ui/filter/select'; import { FilterCalendar } from '@/shared/ui/filter/calendar'; -import { SettlementPaymentMethodOptionsGroup, SettlementPeriodTypeBtnGroup } from '../../model/constant'; +import { getSettlementPaymentMethodOptionsGroup, getSettlementPeriodTypeBtnGroup } from '../../model/constant'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterSelectMid } from '@/shared/ui/filter/select-mid'; @@ -46,13 +47,14 @@ export const ListFilter = ({ setEndDate, setPaymentMethod }: ListFilterProps) => { + const { t } = useTranslation(); const [filterMid, setFilterMid] = useState(mid); const [filterPeriodType, setFilterPeriodType] = useState(periodType); const [filterStartDate, setFilterStartDate] = useState(startDate); const [filterEndDate, setFilterEndDate] = useState(endDate); const [filterPaymentMethod, setFilterPaymentMethod] = useState(paymentMethod); - + const midOptions = useStore.getState().UserStore.selectOptionsMids; const onClickToClose = () => { @@ -84,15 +86,15 @@ export const ListFilter = ({ >
-
필터
+
{t('filter.filter')}
- @@ -100,35 +102,35 @@ export const ListFilter = ({
- + >{t('filter.apply')}
diff --git a/src/entities/settlement/ui/info-wrap/settlement-info-wrap.tsx b/src/entities/settlement/ui/info-wrap/settlement-info-wrap.tsx index 9925b76..fff40b2 100644 --- a/src/entities/settlement/ui/info-wrap/settlement-info-wrap.tsx +++ b/src/entities/settlement/ui/info-wrap/settlement-info-wrap.tsx @@ -1,11 +1,12 @@ import moment from 'moment'; import { NumericFormat } from 'react-number-format'; -import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow'; +import { useTranslation } from 'react-i18next'; +import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow'; import SlideDown from 'react-slidedown'; import 'react-slidedown/lib/slidedown.css'; -import { - InfoWrapKeys, - SettlementInfoWrapProps, +import { + InfoWrapKeys, + SettlementInfoWrapProps, SettlementPeriodType } from '../../model/types'; @@ -14,6 +15,7 @@ export const SettlementInfoWrap = ({ isOpen, onClickToShowInfo }: SettlementInfoWrapProps) => { + const { t } = useTranslation(); const onClickToSetShowInfo = () => { if(!!onClickToShowInfo){ @@ -24,59 +26,59 @@ export const SettlementInfoWrap = ({ return ( <>
-
onClickToSetShowInfo() } > - 정산 정보 + {t('settlement.settlementInfo')}
{ isOpen &&
  • - MID + {t('transaction.fields.mid')} { settlementInfo?.mid }
  • - 이체상태 + {t('settlement.transferStatus')} { settlementInfo?.transferStatus }
  • - 이체ID + {t('settlement.transferId')} { settlementInfo?.transferId }
  • - 이체시간 + {t('settlement.transferTime')} - { settlementInfo?.transferTime && - moment(settlementInfo?.transferTime).format('YYYY.MM.DD HH:mm:ss') + { settlementInfo?.transferTime && + moment(settlementInfo?.transferTime).format('YYYY.MM.DD HH:mm:ss') }
  • - 은행명 + {t('settlement.bankName')} { settlementInfo?.bankName }
  • - 계좌번호 + {t('settlement.accountNumber')} { settlementInfo?.accountNumber }
  • - 입금인자 + {t('settlement.depositorName')} { settlementInfo?.depositorName }
  • - 정상입금액 + {t('settlement.settlementDepositAmount')}
  • - 오류사유 + {t('settlement.errorReason')} { settlementInfo?.errorReason }
diff --git a/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx b/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx index 092e616..00057f2 100644 --- a/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx +++ b/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx @@ -1,10 +1,11 @@ import moment from 'moment'; -import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow'; +import { useTranslation } from 'react-i18next'; +import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow'; import SlideDown from 'react-slidedown'; import 'react-slidedown/lib/slidedown.css'; -import { - InfoWrapKeys, - TransactionInfoWrapProps, +import { + InfoWrapKeys, + TransactionInfoWrapProps, } from '@/entities/settlement/model/types'; export const TransactionInfoWrap = ({ @@ -12,6 +13,7 @@ export const TransactionInfoWrap = ({ isOpen, onClickToShowInfo }: TransactionInfoWrapProps) => { + const { t } = useTranslation(); const onClickToSetShowInfo = () => { if(!!onClickToShowInfo){ @@ -22,61 +24,61 @@ export const TransactionInfoWrap = ({ return ( <>
-
onClickToSetShowInfo() } > - 거래 상세 정보 + {t('settlement.transactionDetailInfo')}
- { isOpen && + { isOpen &&
  • - 주문번호 + {t('transaction.fields.orderNumber')} { transactionInfo?.orderNumber }
  • - TID + {t('transaction.fields.tid')} { transactionInfo?.tid }
  • - 원거래 TID + {t('transaction.fields.originalTid')} { transactionInfo?.originalTid }
  • - 거래상태 + {t('transaction.fields.transactionStatus')} { transactionInfo?.transactionStatus }
  • - 결제수단 + {t('transaction.fields.paymentMethod')} { transactionInfo?.paymentMethod }
  • - 정산일 + {t('additionalService.settlementAgency.settlementDate')} { moment(transactionInfo?.settlementDate).format('YYYY.MM.DD') }
  • - 승인일 + {t('transaction.fields.approvalDay')} { moment(transactionInfo?.approvalDate).format('YYYY.MM.DD') }
  • - 취소일 + {t('transaction.fields.cancelDate')} { moment(transactionInfo?.cancelDate).format('YYYY.MM.DD') }
  • - 카드/은행/이통사 + {t('settlement.cardBankTelecom')} { transactionInfo?.cardCompany }
  • - 승인번호/계좌번호/휴대번호 + {t('settlement.approvalAccountPhone')} { transactionInfo?.approvalNumber }
  • - 상품명 + {t('transaction.fields.productName')} { transactionInfo?.productName }
  • - 구매자 + {t('transaction.fields.buyer')} { transactionInfo?.buyerName }
diff --git a/src/entities/settlement/ui/list-summary-extend-settlement.tsx b/src/entities/settlement/ui/list-summary-extend-settlement.tsx index 14f9b33..7451ecb 100644 --- a/src/entities/settlement/ui/list-summary-extend-settlement.tsx +++ b/src/entities/settlement/ui/list-summary-extend-settlement.tsx @@ -1,4 +1,5 @@ import { NumericFormat } from 'react-number-format'; +import { useTranslation } from 'react-i18next'; import { SettlementsHistorySummaryResponse } from '../model/types'; export interface ListSummaryExtendSettlementProps extends SettlementsHistorySummaryResponse {}; @@ -11,59 +12,60 @@ export const ListSummaryExtendSettlement = ({ releaseAmount, offsetAmount }: ListSummaryExtendSettlementProps) => { - + const { t } = useTranslation(); + return ( <>
  • - 거래금액 + {t('settlement.transactionAmount')} + > {t('common.currencyUnit')}
  • - PG 수수료 + {t('settlement.totalPgFee')} + > {t('common.currencyUnit')}
  • - 보류 + {t('settlement.hold')} + > {t('common.currencyUnit')}
  • - 해제 + {t('settlement.release')} + > {t('common.currencyUnit')}
  • - 상계 + {t('settlement.offset')} + > {t('common.currencyUnit')}
diff --git a/src/entities/settlement/ui/list-summary-extend-transaction.tsx b/src/entities/settlement/ui/list-summary-extend-transaction.tsx index 7bdfd0d..18cf3f0 100644 --- a/src/entities/settlement/ui/list-summary-extend-transaction.tsx +++ b/src/entities/settlement/ui/list-summary-extend-transaction.tsx @@ -1,4 +1,5 @@ import { NumericFormat } from 'react-number-format'; +import { useTranslation } from 'react-i18next'; import { SettlementsTransactionSummaryResponse } from '../model/types'; export interface ListSummaryExtendTransactionProps extends SettlementsTransactionSummaryResponse {}; @@ -12,69 +13,70 @@ export const ListSummaryExtendTransaction = ({ vatAmount, preSettlementCancelOffset }: ListSummaryExtendTransactionProps) => { - + const { t } = useTranslation(); + return ( <>
  • - 거래금액 + {t('settlement.transactionAmount')} + > {t('common.currencyUnit')}
  • - 결제 수수료 + {t('settlement.paymentFee')} + > {t('common.currencyUnit')}
  • - 에스크로 수수료 + {t('settlement.escrowFee')} + > {t('common.currencyUnit')}
  • - 인증 수수료 + {t('settlement.authFee')} + > {t('common.currencyUnit')}
  • VAT + > {t('common.currencyUnit')}
  • - 정산전 취소상계 + {t('settlement.preSettlementCancelOffset')} + > {t('common.currencyUnit')}
diff --git a/src/entities/support/ui/qna-item.tsx b/src/entities/support/ui/qna-item.tsx index 312c9bc..f28cd3e 100644 --- a/src/entities/support/ui/qna-item.tsx +++ b/src/entities/support/ui/qna-item.tsx @@ -48,8 +48,8 @@ export const SupportQnaItem = ({
{ title }
- 등록일{ moment(requestDate).format('YYYY.MM.DD') } - 상태 [{t(`support.qna.statusCode.${statusCode}`)}] + {t('support.qna.registrationDate')}{ moment(requestDate).format('YYYY.MM.DD') } + {t('support.qna.status')} [{t(`support.qna.statusCode.${statusCode}`)}]
diff --git a/src/entities/transaction/model/contant.ts b/src/entities/transaction/model/contant.ts index 7890050..69d994a 100644 --- a/src/entities/transaction/model/contant.ts +++ b/src/entities/transaction/model/contant.ts @@ -1,4 +1,5 @@ -import { +import { TFunction } from 'i18next'; +import { AllTransactionMoidTid, AllTransactionSearchCl, AllTransactionServiceCode, @@ -6,7 +7,7 @@ import { CashReceiptPurposeType, CashReceiptTransactionType, CashReceiptProcessResult, - BillingPaymentMethod, + BillingPaymentMethod, BillingProcessResult, BillingRequestStatus, BillingSearchType, @@ -15,121 +16,121 @@ import { EscrowSettlementStatus } from '@/entities/transaction/model/types'; -export const AllTransactionMoidTidOptionsGroup = [ - {name: '주문번호', value: AllTransactionMoidTid.MOID}, - {name: 'TID', value: AllTransactionMoidTid.TID}, +export const getAllTransactionMoidTidOptionsGroup = (t: TFunction) => [ + {name: t('transaction.constants.orderNumber'), value: AllTransactionMoidTid.MOID}, + {name: t('transaction.constants.tid'), value: AllTransactionMoidTid.TID}, ]; -export const AllTransactionStatusCodeBtnGroup = [ - {name: '전체', value: AllTransactionStatusCode.ALL}, - {name: '승인/입금완료', value: AllTransactionStatusCode.APPROVAL}, - {name: '전취소/취소', value: AllTransactionStatusCode.CANCEL}, - {name: '후취소/환불', value: AllTransactionStatusCode.REFUND} -]; -export const AllTransactionServiceCodeOptionsGroup = [ - {name: '전체', value: AllTransactionServiceCode.ALL}, - {name: '신용카드', value: AllTransactionServiceCode.CREDIT_CARD}, - {name: '가상계좌', value: AllTransactionServiceCode.VIRTUAL_ACCOUNT}, - {name: '계좌이체', value: AllTransactionServiceCode.ACCOUNT_TRANSFER}, - {name: '계좌간편결제', value: AllTransactionServiceCode.ACCOUNT_SIMPLE_TRANSFER}, - {name: '휴대폰', value: AllTransactionServiceCode.MOBILE_PAYMENT}, - {name: 'SSG 머니', value: AllTransactionServiceCode.SSGMONEY}, - {name: 'SSG 은행계좌', value: AllTransactionServiceCode.SSGBANK}, - {name: '문화상품권', value: AllTransactionServiceCode.CULT}, - {name: '티머니페이', value: AllTransactionServiceCode.TMONEY}, - +export const getAllTransactionStatusCodeBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: AllTransactionStatusCode.ALL}, + {name: t('transaction.constants.approvalComplete'), value: AllTransactionStatusCode.APPROVAL}, + {name: t('transaction.constants.totalCancel'), value: AllTransactionStatusCode.CANCEL}, + {name: t('transaction.constants.refund'), value: AllTransactionStatusCode.REFUND} ]; -export const AllTracsactionStatusCode = [ +export const getAllTransactionServiceCodeOptionsGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: AllTransactionServiceCode.ALL}, + {name: t('transaction.constants.creditCard'), value: AllTransactionServiceCode.CREDIT_CARD}, + {name: t('transaction.constants.virtualAccount'), value: AllTransactionServiceCode.VIRTUAL_ACCOUNT}, + {name: t('transaction.constants.accountTransfer'), value: AllTransactionServiceCode.ACCOUNT_TRANSFER}, + {name: t('transaction.constants.accountSimpleTransfer'), value: AllTransactionServiceCode.ACCOUNT_SIMPLE_TRANSFER}, + {name: t('transaction.constants.mobilePayment'), value: AllTransactionServiceCode.MOBILE_PAYMENT}, + {name: t('transaction.constants.ssgMoney'), value: AllTransactionServiceCode.SSGMONEY}, + {name: t('transaction.constants.ssgBank'), value: AllTransactionServiceCode.SSGBANK}, + {name: t('transaction.constants.cultureLand'), value: AllTransactionServiceCode.CULT}, + {name: t('transaction.constants.tmoneyPay'), value: AllTransactionServiceCode.TMONEY}, +]; + +export const getAllTransactionStatusCode = (t: TFunction) => [ { - serviceCode: '', + serviceCode: '', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인/입금완료', en: 'Approval'}, - {code: '1', ko: '전취소/취소', en: 'Total Cancellation'}, - {code: '2', ko: '후취소/환불', en: 'Cancellation'} + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approvalComplete')}, + {code: '1', name: t('transaction.constants.totalCancel')}, + {code: '2', name: t('transaction.constants.refund')} ] }, { - serviceCode: '01', + serviceCode: '01', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '전취소', en: 'Total Cancellation'}, - {code: '2', ko: '후취소', en: 'Cancellation'} + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.totalCancelShort')}, + {code: '2', name: t('transaction.constants.cancelShort')} ] }, { serviceCode: '02', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '취소', en: 'Cancellation'}, - {code: '2', ko: '환불', en: 'Refund'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.cancel')}, + {code: '2', name: t('transaction.constants.refund')}, ] }, { serviceCode: '03', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '입금', en: 'Payment Complete'}, - {code: '2', ko: '환불', en: 'Refund'}, - {code: '3', ko: '입금대기', en: 'Waiting Payment'}, - {code: '4', ko: '채번취소', en: 'Cancellation Issue'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.deposit')}, + {code: '2', name: t('transaction.constants.refund')}, + {code: '3', name: t('transaction.constants.waitingDeposit')}, + {code: '4', name: t('transaction.constants.issueCancel')}, ] }, { serviceCode: '05', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '취소', en: 'Cancellation'}, - {code: '2', ko: '환불', en: 'Refund'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.cancel')}, + {code: '2', name: t('transaction.constants.refund')}, ] }, { serviceCode: '14', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '취소', en: 'Cancellation'}, - {code: '2', ko: '환불', en: 'Refund'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.cancel')}, + {code: '2', name: t('transaction.constants.refund')}, ] }, { serviceCode: '21', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '취소', en: 'Cancellation'}, - {code: '2', ko: '환불', en: 'Refund'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.cancel')}, + {code: '2', name: t('transaction.constants.refund')}, ] }, { serviceCode: '24', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '취소', en: 'Cancellation'}, - {code: '2', ko: '환불', en: 'Refund'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.cancel')}, + {code: '2', name: t('transaction.constants.refund')}, ] }, { serviceCode: '26', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '취소', en: 'Cancellation'}, - {code: '2', ko: '환불', en: 'Refund'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.cancel')}, + {code: '2', name: t('transaction.constants.refund')}, ] }, { serviceCode: '31', list: [ - {code: '', ko: '전체', en: 'All'}, - {code: '0', ko: '승인', en: 'Approval'}, - {code: '1', ko: '전취소', en: 'Total Cancellation'}, - {code: '2', ko: '후취소', en: 'Cancellation'}, + {code: '', name: t('transaction.constants.all')}, + {code: '0', name: t('transaction.constants.approval')}, + {code: '1', name: t('transaction.constants.totalCancelShort')}, + {code: '2', name: t('transaction.constants.cancelShort')}, ] }, ]; @@ -140,63 +141,72 @@ export const AllTransactionCardBankCodeOptionsGroup = { -export const CashReceiptPurposeTypeBtnGroup = [ - {name: '전체', value: CashReceiptPurposeType.ALL}, - {name: '소득공제', value: CashReceiptPurposeType.INCOME_DEDUCTION}, - {name: '지출증빙', value: CashReceiptPurposeType.EXPENSE_PROOF}, +export const getCashReceiptPurposeTypeBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: CashReceiptPurposeType.ALL}, + {name: t('transaction.handWrittenIssuance.incomeDeduction'), value: CashReceiptPurposeType.INCOME_DEDUCTION}, + {name: t('transaction.handWrittenIssuance.expenseProof'), value: CashReceiptPurposeType.EXPENSE_PROOF}, ]; -export const CashReceiptTransactionTypeBtnGroup = [ - {name: '전체', value: CashReceiptTransactionType.ALL}, - {name: '승인', value: CashReceiptTransactionType.APPROVAL}, - {name: '취소', value: CashReceiptTransactionType.CANCEL}, + +export const getCashReceiptTransactionTypeBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: CashReceiptTransactionType.ALL}, + {name: t('transaction.constants.approval'), value: CashReceiptTransactionType.APPROVAL}, + {name: t('transaction.constants.cancel'), value: CashReceiptTransactionType.CANCEL}, ]; -export const CashReceiptProcessResultBtnGroup = [ - {name: '전체', value: CashReceiptProcessResult.ALL}, - {name: '요청', value: CashReceiptProcessResult.REQUEST}, - {name: '요청취소', value: CashReceiptProcessResult.REQUEST_CANCEL}, - {name: '요청완료', value: CashReceiptProcessResult.REQUEST_COMPLETE}, - {name: '발급완료', value: CashReceiptProcessResult.ISSUE_COMPLETE}, - {name: '요청실패', value: CashReceiptProcessResult.REQUEST_FAIL}, - {name: '발급실패', value: CashReceiptProcessResult.ISSUE_FAIL}, + +export const getCashReceiptProcessResultBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: CashReceiptProcessResult.ALL}, + {name: t('transaction.constants.request'), value: CashReceiptProcessResult.REQUEST}, + {name: t('transaction.constants.requestCancel'), value: CashReceiptProcessResult.REQUEST_CANCEL}, + {name: t('transaction.constants.requestComplete'), value: CashReceiptProcessResult.REQUEST_COMPLETE}, + {name: t('transaction.constants.issueComplete'), value: CashReceiptProcessResult.ISSUE_COMPLETE}, + {name: t('transaction.constants.requestFail'), value: CashReceiptProcessResult.REQUEST_FAIL}, + {name: t('transaction.constants.issueFail'), value: CashReceiptProcessResult.ISSUE_FAIL}, ]; -export const EscrowSearchTypeOptionsGroup = [ - {name: '주문번호', value: EscrowSearchType.ORDER_NUMBER }, - {name: 'TID', value: EscrowSearchType.TID } + +export const getEscrowSearchTypeOptionsGroup = (t: TFunction) => [ + {name: t('transaction.constants.orderNumber'), value: EscrowSearchType.ORDER_NUMBER }, + {name: t('transaction.constants.tid'), value: EscrowSearchType.TID } ]; -export const EscrowDeliveryStatusBtnGroup = [ - {name: '전체', value: EscrowDeliveryStatus.ALL}, - {name: '결제완료', value: EscrowDeliveryStatus.PAY_COMPLETE}, - {name: '배송등록', value: EscrowDeliveryStatus.DELIVERY_INSERT}, - {name: '배송완료', value: EscrowDeliveryStatus.DELIVERY_COMPLETE}, - {name: '구매확인', value: EscrowDeliveryStatus.PURCHASE_CONFIRM}, - {name: '구매거절', value: EscrowDeliveryStatus.PURCHASE_REJECT}, - {name: '환불처리', value: EscrowDeliveryStatus.RETURN_PROCESSING}, - {name: '지급완료', value: EscrowDeliveryStatus.DEPOSIT_COMPLETE}, + +export const getEscrowDeliveryStatusBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: EscrowDeliveryStatus.ALL}, + {name: t('transaction.constants.paymentComplete'), value: EscrowDeliveryStatus.PAY_COMPLETE}, + {name: t('transaction.constants.deliveryRegistration'), value: EscrowDeliveryStatus.DELIVERY_INSERT}, + {name: t('transaction.constants.deliveryComplete'), value: EscrowDeliveryStatus.DELIVERY_COMPLETE}, + {name: t('transaction.constants.purchaseConfirm'), value: EscrowDeliveryStatus.PURCHASE_CONFIRM}, + {name: t('transaction.constants.purchaseReject'), value: EscrowDeliveryStatus.PURCHASE_REJECT}, + {name: t('transaction.constants.refundProcessing'), value: EscrowDeliveryStatus.RETURN_PROCESSING}, + {name: t('transaction.constants.depositComplete'), value: EscrowDeliveryStatus.DEPOSIT_COMPLETE}, ]; -export const EscrowSettlementStatusBtnGroup = [ - {name: '전체', value: EscrowSettlementStatus.ALL}, - {name: '신용카드', value: EscrowSettlementStatus.CREDIT_CARD}, - {name: '가상계좌', value: EscrowSettlementStatus.REAL_ACCOUNT}, - {name: '계좌이체', value: EscrowSettlementStatus.ACCOUNT_TRANSFER}, + +export const getEscrowSettlementStatusBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: EscrowSettlementStatus.ALL}, + {name: t('transaction.constants.creditCard'), value: EscrowSettlementStatus.CREDIT_CARD}, + {name: t('transaction.constants.virtualAccount'), value: EscrowSettlementStatus.REAL_ACCOUNT}, + {name: t('transaction.constants.accountTransfer'), value: EscrowSettlementStatus.ACCOUNT_TRANSFER}, ]; -export const BillingSearchTypeOptionsGroup = [ - {name: '주문번호', value: BillingSearchType.ORDER_NUMBER }, - {name: 'TID', value: BillingSearchType.TID } + +export const getBillingSearchTypeOptionsGroup = (t: TFunction) => [ + {name: t('transaction.constants.orderNumber'), value: BillingSearchType.ORDER_NUMBER }, + {name: t('transaction.constants.tid'), value: BillingSearchType.TID } ]; -export const BillingRequestStatusBtnGroup = [ - {name: '전체', value: BillingRequestStatus.ALL}, - {name: '진행중', value: BillingRequestStatus.IN_PROGRESS}, - {name: '성공', value: BillingRequestStatus.SUCCESS}, - {name: '요청취소', value: BillingRequestStatus.REQUEST_CANCEL}, + +export const getBillingRequestStatusBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: BillingRequestStatus.ALL}, + {name: t('transaction.constants.inProgress'), value: BillingRequestStatus.IN_PROGRESS}, + {name: t('transaction.constants.success'), value: BillingRequestStatus.SUCCESS}, + {name: t('transaction.constants.requestCancel'), value: BillingRequestStatus.REQUEST_CANCEL}, ]; -export const BillingProcessResultBtnGroup = [ - {name: '전체', value: BillingProcessResult.ALL}, - {name: '성공', value: BillingProcessResult.SUCCESS}, - {name: '실패', value: BillingProcessResult.FAILURE}, + +export const getBillingProcessResultBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: BillingProcessResult.ALL}, + {name: t('transaction.constants.success'), value: BillingProcessResult.SUCCESS}, + {name: t('transaction.constants.failure'), value: BillingProcessResult.FAILURE}, ]; -export const BillingPaymentMethodBtnGroup = [ - {name: '전체', value: BillingPaymentMethod.ALL}, - {name: '신용카드', value: BillingPaymentMethod.CREDIT_CARD}, - {name: '가상계좌', value: BillingPaymentMethod.VIRTUAL_ACCOUNT}, - {name: '휴대폰', value: BillingPaymentMethod.MOBILE_PAYMENT}, + +export const getBillingPaymentMethodBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: BillingPaymentMethod.ALL}, + {name: t('transaction.constants.creditCard'), value: BillingPaymentMethod.CREDIT_CARD}, + {name: t('transaction.constants.virtualAccount'), value: BillingPaymentMethod.VIRTUAL_ACCOUNT}, + {name: t('transaction.constants.mobilePayment'), value: BillingPaymentMethod.MOBILE_PAYMENT}, ]; diff --git a/src/entities/transaction/ui/all-transaction-all-cancel.tsx b/src/entities/transaction/ui/all-transaction-all-cancel.tsx index a0ef725..7359185 100644 --- a/src/entities/transaction/ui/all-transaction-all-cancel.tsx +++ b/src/entities/transaction/ui/all-transaction-all-cancel.tsx @@ -3,6 +3,7 @@ import { AllTransactionCancelInfoResponse } from '../model/types'; import { AllTransactionCancelSectionPasswordGroup } from './section/all-transaction-cancel-section-password-group'; import { AllTransactionCancelSectionBankGroup } from './section/all-transaction-cancel-section-bank-group'; import { NumericFormat } from 'react-number-format'; +import { useTranslation } from 'react-i18next'; export interface AllTransactionAllCancelProps extends AllTransactionCancelInfoResponse { serviceCode: string; @@ -45,25 +46,27 @@ export const AllTransactionAllCancel = ({ requestSuccess, totalCancelAmount }: AllTransactionAllCancelProps) => { + const { t } = useTranslation(); + return ( <>
  • - ·  총 잔액 + ·  {t('transaction.fields.totalBalance')}
  • - ·  총 취소금액 + ·  {t('transaction.fields.totalCancelAmount')} diff --git a/src/entities/transaction/ui/all-transaction-cancel-prevent-bond.tsx b/src/entities/transaction/ui/all-transaction-cancel-prevent-bond.tsx index 4ca0519..0175a59 100644 --- a/src/entities/transaction/ui/all-transaction-cancel-prevent-bond.tsx +++ b/src/entities/transaction/ui/all-transaction-cancel-prevent-bond.tsx @@ -7,6 +7,7 @@ import { NumericFormat } from 'react-number-format'; import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant'; import { useNavigate } from '@/shared/lib/hooks'; import { PATHS } from '@/shared/constants/paths'; +import { useTranslation } from 'react-i18next'; export interface AllTransactionCancelPreventBondProps { cancelPreventBondOn: boolean; setCancelPreventBondOn: (cancelPreventBondOn: boolean) => void; @@ -22,6 +23,7 @@ export const AllTransactionCancelPreventBond = ({ serviceCode, tid }: AllTransactionCancelPreventBondProps) => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const [item, setItem] = useState(debtPreventionCancelDisplayInfo); const onClickToClose = () => { @@ -48,15 +50,15 @@ export const AllTransactionCancelPreventBond = ({ >
    -
    거래취소(입금 후 취소)
    +
    {t('transaction.cancel.afterDeposit.title')}
    - @@ -64,43 +66,43 @@ export const AllTransactionCancelPreventBond = ({
    -
    요청하신 거래취소는 입금 후 취소처리 가능합니다.
    -
    취소거래내역
    +
    {t('transaction.cancel.afterDeposit.notice')}
    +
    {t('transaction.cancel.afterDeposit.cancelTransactionTitle')}
    • -
      · 승인일
      +
      · {t('transaction.fields.approvalDay')}
      { item?.approvalDate? moment(item?.approvalDate).format('YYYY.MM.DD'): '' }
    • -
      · 승인번호
      +
      · {t('transaction.fields.approvalNumber')}
      { item?.approvalNo }
    • -
      · 승인금액
      +
      · {t('transaction.cancel.afterDeposit.approvalAmount')}
    • -
      · 총 취소금액
      +
      · {t('transaction.fields.totalCancelAmount')}
    • -
      · 입금요청금액 :
      +
      · {t('transaction.cancel.afterDeposit.depositRequestAmount')} :
      @@ -109,40 +111,40 @@ export const AllTransactionCancelPreventBond = ({
    -
    입금 정보
    +
    {t('transaction.cancel.afterDeposit.depositInfoTitle')}
    • -
      · 은행
      +
      · {t('transaction.fields.bank')}
      { item?.bankName }
    • -
      · 계좌번호
      +
      · {t('transaction.fields.accountNo')}
      { item?.accountNo }
    • -
      · 예금주
      +
      · {t('transaction.fields.accountHolder')}
      { item?.accountName }
    -
    [취소요청] 버튼을 통해 취소 요청을 진행해야 접수됩니다.
    -
    입금자명은 가맹점 상호로 입력해 주세요.
    -
    입금요청금액과 동일한 금액을 입금해야 취소가 진행됩니다.
    -
    취소내역은 최대 3일 이후 확인 가능합니다.
    -
    입금 후 취소 프로세스 :
    가맹점의 취소요청 -> 가맹점의입금 -> 입금 확인 -> 취소 처리
    -
    정산받지 않은 거래인 경우 service@nicepay.co.kr로 거래내역을 발송바랍니다. (단. 정산예정일이 2일 이상 남은 거래에 한함)
    +
    {t('transaction.cancel.afterDeposit.guide1')}
    +
    {t('transaction.cancel.afterDeposit.guide2')}
    +
    {t('transaction.cancel.afterDeposit.guide3')}
    +
    {t('transaction.cancel.afterDeposit.guide4')}
    +
    +
    - + >{t('transaction.submit')}
    diff --git a/src/entities/transaction/ui/all-transaction-part-cancel.tsx b/src/entities/transaction/ui/all-transaction-part-cancel.tsx index dde9e51..85994eb 100644 --- a/src/entities/transaction/ui/all-transaction-part-cancel.tsx +++ b/src/entities/transaction/ui/all-transaction-part-cancel.tsx @@ -3,6 +3,7 @@ import { AllTransactionCancelInfoResponse } from '../model/types'; import { NumericFormat } from 'react-number-format'; import { AllTransactionCancelSectionPasswordGroup } from './section/all-transaction-cancel-section-password-group'; import { AllTransactionCancelSectionBankGroup } from './section/all-transaction-cancel-section-bank-group'; +import { useTranslation } from 'react-i18next'; export interface AllTransactionPartCancelProps extends AllTransactionCancelInfoResponse { serviceCode: string; @@ -63,6 +64,7 @@ export const AllTransactionPartCancel = ({ totalCancelAmount, setTotalCancelAmount }: AllTransactionPartCancelProps) => { + const { t } = useTranslation(); const [cancelTotalCancelAmountReadonly, setCancelTotalCancelAmountReadonly] = useState(true); const [cancelSupplyAmountDisabled, setCancelSupplyAmountDisabled] = useState(false); const [cancelGoodsVatDisabled, setCancelGoodsVatDisabled] = useState(false); @@ -180,20 +182,20 @@ export const AllTransactionPartCancel = ({
    • - ·  총 잔액 + ·  {t('transaction.fields.totalBalance')}
    • - ·  총 취소금액 + ·  {t('transaction.fields.totalCancelAmount')} - 잔액 - 취소금액 + {t('transaction.cancel.partCancel.balance')} + {t('transaction.cancel.partCancel.cancelAmount')} - 과세액 + {t('transaction.cancel.partCancel.taxableAmount')} + > - 부가세 + {t('transaction.cancel.partCancel.taxAmount')} + > - 면세 + {t('transaction.cancel.partCancel.taxFree')} @@ -281,10 +283,10 @@ export const AllTransactionPartCancel = ({ - 봉사료 + {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/filter/all-transaction-filter.tsx b/src/entities/transaction/ui/filter/all-transaction-filter.tsx index bd055a1..70ec692 100644 --- a/src/entities/transaction/ui/filter/all-transaction-filter.tsx +++ b/src/entities/transaction/ui/filter/all-transaction-filter.tsx @@ -9,8 +9,8 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterRangeAmount } from '@/shared/ui/filter/range-amount'; import { - AllTransactionMoidTidOptionsGroup, - AllTracsactionStatusCode, + getAllTransactionMoidTidOptionsGroup, + getAllTransactionStatusCode, } from '@/entities/transaction/model/contant'; import { AllTransactionFilterProps, @@ -80,6 +80,9 @@ export const AllTransactionFilter = ({ const [statusCodeBtns, setStatusCodeBtns] = useState>>(); + const moidTidOptionsGroup = getAllTransactionMoidTidOptionsGroup(t); + const allTransactionStatusCode = getAllTransactionStatusCode(t); + const onClickToClose = () => { setFilterOn(false); }; @@ -155,12 +158,12 @@ export const AllTransactionFilter = ({ }; const onChangeServiceCode = (val: string) => { - let list = AllTracsactionStatusCode.filter((value, index) => { + let list = allTransactionStatusCode.filter((value, index) => { return val === value.serviceCode; })[0]?.list; let btns = list?.map((value, index) => { return { - name: value.ko, + name: value.name, value: value.code } }); @@ -211,7 +214,7 @@ export const AllTransactionFilter = ({ title={t('filter.orderNumberTid')} selectValue={ filterMoidTidType } selectSetter={ setFilterMoidTidType } - selectOptions={ AllTransactionMoidTidOptionsGroup } + selectOptions={ moidTidOptionsGroup } inputValue={ filterMoidTidValue } inputSetter={ setFilterMoidTidValue } > diff --git a/src/entities/transaction/ui/filter/billing-filter.tsx b/src/entities/transaction/ui/filter/billing-filter.tsx index 8c8f3bc..db0205b 100644 --- a/src/entities/transaction/ui/filter/billing-filter.tsx +++ b/src/entities/transaction/ui/filter/billing-filter.tsx @@ -9,10 +9,10 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterRangeAmount } from '@/shared/ui/filter/range-amount'; import { - BillingSearchTypeOptionsGroup, - BillingRequestStatusBtnGroup, - BillingProcessResultBtnGroup, - BillingPaymentMethodBtnGroup + getBillingSearchTypeOptionsGroup, + getBillingRequestStatusBtnGroup, + getBillingProcessResultBtnGroup, + getBillingPaymentMethodBtnGroup } from '@/entities/transaction/model/contant'; import { BillingFilterProps, @@ -68,6 +68,11 @@ export const BillingFilter = ({ const midOptions = useStore.getState().UserStore.selectOptionsMids; + const searchTypeOptionsGroup = getBillingSearchTypeOptionsGroup(t); + const requestStatusBtnGroup = getBillingRequestStatusBtnGroup(t); + const processResultBtnGroup = getBillingProcessResultBtnGroup(t); + const paymentMethodBtnGroup = getBillingPaymentMethodBtnGroup(t); + const onClickToClose = () => { setFilterOn(false); }; @@ -131,7 +136,7 @@ export const BillingFilter = ({ title={t('filter.orderNumberTid')} selectValue={ filterSearchType } selectSetter={ setFilterSearchType } - selectOptions={ BillingSearchTypeOptionsGroup } + selectOptions={ searchTypeOptionsGroup } inputValue={ searchKeyword } inputSetter={ setFilterSearchKeyword } > @@ -146,19 +151,19 @@ export const BillingFilter = ({ diff --git a/src/entities/transaction/ui/filter/cash-receipt-filter.tsx b/src/entities/transaction/ui/filter/cash-receipt-filter.tsx index f651e32..111d897 100644 --- a/src/entities/transaction/ui/filter/cash-receipt-filter.tsx +++ b/src/entities/transaction/ui/filter/cash-receipt-filter.tsx @@ -8,9 +8,9 @@ import { FilterSelectInput } from '@/shared/ui/filter/select-input'; import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { - CashReceiptPurposeTypeBtnGroup, - CashReceiptTransactionTypeBtnGroup, - CashReceiptProcessResultBtnGroup + getCashReceiptPurposeTypeBtnGroup, + getCashReceiptTransactionTypeBtnGroup, + getCashReceiptProcessResultBtnGroup } from '@/entities/transaction/model/contant'; import { CashReceiptFilterProps, @@ -64,6 +64,10 @@ export const CashReceiptFilter = ({ const midOptions = useStore.getState().UserStore.selectOptionsMids; + const purposeTypeBtnGroup = getCashReceiptPurposeTypeBtnGroup(t); + const transactionTypeBtnGroup = getCashReceiptTransactionTypeBtnGroup(t); + const processResultBtnGroup = getCashReceiptProcessResultBtnGroup(t); + const onClickToClose = () => { setFilterOn(false); }; @@ -130,19 +134,19 @@ export const CashReceiptFilter = ({ (maxAmount); const midOptions = useStore.getState().UserStore.selectOptionsMids; - + + const searchTypeOptionsGroup = getEscrowSearchTypeOptionsGroup(t); + const deliveryStatusBtnGroup = getEscrowDeliveryStatusBtnGroup(t); + const settlementStatusBtnGroup = getEscrowSettlementStatusBtnGroup(t); + const onClickToClose = () => { setFilterOn(false); }; @@ -125,7 +129,7 @@ export const EscrowFilter = ({ title={t('filter.orderNumberTid')} selectValue={ filterSearchType } selectSetter={ setSearchType } - selectOptions={ EscrowSearchTypeOptionsGroup } + selectOptions={ searchTypeOptionsGroup } inputValue={ searchKeyword } inputSetter={ setSearchKeyword } > @@ -140,13 +144,13 @@ export const EscrowFilter = ({ diff --git a/src/entities/transaction/ui/list-item.tsx b/src/entities/transaction/ui/list-item.tsx index c1f8964..15edc04 100644 --- a/src/entities/transaction/ui/list-item.tsx +++ b/src/entities/transaction/ui/list-item.tsx @@ -4,7 +4,8 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { ListItemProps, TransactionCategory } from '../model/types'; import moment from 'moment'; import { useStore } from '@/shared/model/store'; -import { AllTracsactionStatusCode } from '../model/contant'; +import { getAllTransactionStatusCode } 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')); } }; @@ -127,15 +129,16 @@ export const ListItem = ({ const getStatusName = () => { let str; if(transactionCategory === TransactionCategory.AllTransaction){ - Loop1: - for(let i=0;i 1) && <> | - { installmentMonth }개월 할부 + { t('transaction.fields.installmentMonthly', { count: parseInt(installmentMonth) }) } }
    @@ -196,7 +199,7 @@ export const ListItem = ({ (!!installmentMonth && parseInt(installmentMonth) > 1) && <> | - { installmentMonth }개월 할부 + { t('transaction.fields.installmentMonthly', { count: parseInt(installmentMonth) }) } }
    @@ -231,11 +234,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..7ac7768 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: parseInt(billingInfo?.installmentMonth || '0') }) } + ); } 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..64c8c9b 100644 --- a/src/entities/transaction/ui/section/important-info-section.tsx +++ b/src/entities/transaction/ui/section/important-info-section.tsx @@ -1,14 +1,16 @@ 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'; -import { AllTracsactionStatusCode } from '../../model/contant'; +import { getAllTransactionStatusCode } from '../../model/contant'; export const ImportantInfoSection = ({ transactionCategory, importantInfo, serviceCode }: InfoSectionProps) => { + const { t } = useTranslation(); let serviceCodes = useStore.getState().CommonStore.serviceCodes; let serviceName = ''; let statusName = ''; @@ -27,15 +29,16 @@ export const ImportantInfoSection = ({ const getStatusName = (serviceCode: string, statusCode: string) => { let str; if(transactionCategory === TransactionCategory.AllTransaction){ - Loop1: - for(let i=0;i> = { - 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 +149,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/entities/vat-return/model/contant.ts b/src/entities/vat-return/model/contant.ts index 30c8663..15cb992 100644 --- a/src/entities/vat-return/model/contant.ts +++ b/src/entities/vat-return/model/contant.ts @@ -1,19 +1,20 @@ +import { TFunction } from 'i18next'; import { VatReturnPayTax, VatReturnReceiptType, VatReturnTargetType } from './types'; -export const VatReturnReceiptTypeBtnGroup = [ - {name: '전체', value: VatReturnReceiptType.ALL }, - {name: '영수', value: VatReturnReceiptType.RECEIPT }, - {name: '청구', value: VatReturnReceiptType.BILL } +export const getVatReturnReceiptTypeBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: VatReturnReceiptType.ALL }, + {name: t('vatReturn.receipt'), value: VatReturnReceiptType.RECEIPT }, + {name: t('vatReturn.bill'), value: VatReturnReceiptType.BILL } ]; -export const VatReturnTargetTypeBtnGroup = [ - {name: '전체', value: VatReturnTargetType.ALL }, - {name: '일반', value: VatReturnTargetType.GENERAL }, - {name: '차액정산', value: VatReturnTargetType.DIFFERENCE_COLLECTION }, - {name: '환급정산', value: VatReturnTargetType.REFUND_SETTLEMENT } +export const getVatReturnTargetTypeBtnGroup = (t: TFunction) => [ + {name: t('transaction.constants.all'), value: VatReturnTargetType.ALL }, + {name: t('vatReturn.general'), value: VatReturnTargetType.GENERAL }, + {name: t('vatReturn.differenceSettlement'), value: VatReturnTargetType.DIFFERENCE_COLLECTION }, + {name: t('vatReturn.refundSettlement'), value: VatReturnTargetType.REFUND_SETTLEMENT } ]; -export const VatReturnTaxBtnGroups = [ - {name: '과세', value: VatReturnPayTax.TAX }, - {name: '면세', value: VatReturnPayTax.NOTAX }, +export const getVatReturnTaxBtnGroups = (t: TFunction) => [ + {name: t('vatReturn.taxable'), value: VatReturnPayTax.TAX }, + {name: t('vatReturn.taxExempt'), value: VatReturnPayTax.NOTAX }, ]; \ No newline at end of file diff --git a/src/entities/vat-return/ui/filter/list-filter.tsx b/src/entities/vat-return/ui/filter/list-filter.tsx index add5110..91a0919 100644 --- a/src/entities/vat-return/ui/filter/list-filter.tsx +++ b/src/entities/vat-return/ui/filter/list-filter.tsx @@ -1,11 +1,12 @@ import { motion } from 'framer-motion'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { VatReturnReceiptType, VatReturnTargetType } from '../../model/types'; import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant'; import { FilterSelect } from '@/shared/ui/filter/select'; import { useState } from 'react'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; -import { VatReturnReceiptTypeBtnGroup, VatReturnTargetTypeBtnGroup } from '../../model/contant'; +import { getVatReturnReceiptTypeBtnGroup, getVatReturnTargetTypeBtnGroup } from '../../model/contant'; import { FilterCalendarMonth } from '@/shared/ui/filter/calendar-month'; import { useStore } from '@/shared/model/store'; import { FilterSelectMid } from '@/shared/ui/filter/select-mid'; @@ -39,13 +40,14 @@ export const ListFilter = ({ setReceiptType, setTargetType }: ListFilterProps) => { + const { t } = useTranslation(); const [filterMid, setFilterMid] = useState(mid); const [filterStartMonth, setFilterStartMonth] = useState(startMonth); const [filterEndMonth, setFilterEndMonth] = useState(endMonth); const [filterReceiptType, setFIlterReceiptType] = useState(receiptType); const [filterTargetType, setFilterTargetType] = useState(targetType); - + const midOptions = useStore.getState().UserStore.selectOptionsMids; const onClickToClose = () => { @@ -73,51 +75,51 @@ export const ListFilter = ({ >
        -
        필터
        +
        {t('filter.filter')}
        -
        - +
        - + >{t('filter.apply')}
        diff --git a/src/entities/vat-return/ui/reference-wrap.tsx b/src/entities/vat-return/ui/reference-wrap.tsx index 9695d52..8d5c18c 100644 --- a/src/entities/vat-return/ui/reference-wrap.tsx +++ b/src/entities/vat-return/ui/reference-wrap.tsx @@ -6,7 +6,7 @@ import { FilterSelect } from '@/shared/ui/filter/select'; import { ReferenceRequestSuccess } from './reference-request-success'; import { ReferenceRequestFail } from './reference-request-fail'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; -import { VatReturnTaxBtnGroups } from '../model/contant'; +import { getVatReturnTaxBtnGroups } from '../model/contant'; import { VatReturnPayTax, VatReturnReferenceRequestParams, VatReturnReferenceRequestResponse } from '../model/types'; import { useStore } from '@/shared/model/store'; import { useVatReturnReferenceRequestMutation } from '../api/use-vat-return-reference-request-mutation'; @@ -41,7 +41,7 @@ export const ReferenceWrap = () => { vatReturnReferenceRequest(params).then((rs: VatReturnReferenceRequestResponse) => { setSuccessPageOn(true); }).catch((error) => { - setErrorMsg("[9997] 키인가맹점이 아닙니다.
        NICEPAY로 문의하세요."); + setErrorMsg(t('vatReturn.keyInMerchantError')); setFailPageOn(true); }); }; @@ -58,7 +58,7 @@ export const ReferenceWrap = () => { 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", @@ -383,7 +689,7 @@ "notificationData": "Notification Data", "notificationDataInquiry": "Payment Notification Data Inquiry", "serviceUsageCommissionAndSettlement": "Service Usage, Commission & Settlement Period", - "merchantNoInterestInfo": "Merchant No-Interest Info", + "merchantNoInterestInfo": "Interest Free Payment", "commissionAndSettlement": "Commission & Settlement", "settlementPeriod": "Settlement Period", "general": "General", @@ -414,7 +720,30 @@ "accountTransfer": "Account Transfer", "virtualAccount": "Virtual Account", "mobilePayment": "Mobile Payment", - "escrowPayment": "Escrow Payment" + "escrowPayment": "Escrow Payment", + "kakaoPay": "Kakao Pay", + "naverPay": "Naver Pay", + "samsungPay": "Samsung Pay", + "mobilePaymentFull": "Mobile Payment", + "cultureLandGiftCard": "Gift Voucher", + "ssgMoney": "SSG Money", + "tvPay": "TV Pay", + "samsungPayCard": "Samsung Pay (Card)", + "applePay": "Apple Pay", + "tossPay": "Toss Pay", + "payco": "PAYCO", + "livePay": "Live Pay", + "taiwanPayment": "Taiwan Payment", + "tmoneyPay": "Tmoney Pay", + "lPay": "L.PAY", + "payU": "PAYU", + "twLinePay": "TW LINE Pay", + "ssgPay": "SSG Pay", + "kBankPay": "Kbank Pay", + "ssgBankAccount": "SSG Bank Account", + "accountSimplePayment": "Simple Account Payment", + "skPay": "SK PAY", + "bcCard": "BC Card" } }, "additionalService": { @@ -477,6 +806,69 @@ "reason": "Reason", "accountError": "Payment Account Error", "agreeOrReject": "Agree/Reject Settlement" + }, + "ars": { + "paymentComplete": "Payment Complete", + "unpaid": "Unpaid", + "pendingPayment": "Pending Payment", + "paymentSuccess": "Payment Success", + "expired": "Expired", + "canceled": "Canceled" + }, + "sms": { + "virtualAccountRequest": "Virtual Account Request", + "virtualAccountRequestDeposit": "Virtual Account Request + Deposit" + }, + "linkPay": { + "sendRequest": "Send Request", + "sendCancel": "Send Cancel", + "incompleteActive": "Incomplete/Active", + "depositRequest": "Deposit Request", + "paymentComplete": "Payment Complete", + "paymentFail": "Payment Failed", + "paymentStopped": "Payment Stopped", + "paymentStoppedInactive": "Payment Stopped/Inactive", + "pending": "Pending", + "email": "Email", + "alimtalk": "Alimtalk" + }, + "accountHolderAuth": { + "accountHolderNameMatch": "Account Holder Name Match", + "accountHolderNameMismatch": "Account Holder Name Mismatch", + "authFailedAccountError": "Authentication Failed (Account Error, etc.)" + }, + "accountHolderSearch": { + "accountHolder": "Account Holder", + "accountNumber": "Account Number" + }, + "faceAuth": { + "authentication": "Authentication", + "registration": "Registration" + }, + "fundAccount": { + "registrationComplete": "Registration Complete", + "transferRequest": "Transfer Request", + "requestSuccess": "Request Success", + "requestFail": "Request Failed", + "requestDate": "Request Date", + "transferDate": "Transfer Date", + "recipient": "Recipient", + "accountNumber": "Account Number" + }, + "alimtalk": { + "buyer": "Buyer", + "depositRequest": "Deposit Request", + "depositComplete": "Deposit Complete", + "kakaotalk": "KakaoTalk", + "fbSms": "FB SMS" + }, + "payout": { + "requestDate": "Request Date", + "disbursementDate": "Disbursement Date" + }, + "keyIn": { + "fullCancel": "Full Cancel", + "partialCancel": "Partial Cancel" } }, "merchant": { @@ -539,9 +931,17 @@ "issueInfo": "Issue Information", "issueTargetDate": "Issue Target Date", "issueDate": "Issue Date", + "issuanceMonth": "Issue Month", "subject": "Subject", "issueTarget": "Issue Target", "receiptType": "Receipt Type", + "receipt": "Receipt", + "bill": "Bill", + "general": "General", + "differenceSettlement": "Difference Settlement", + "refundSettlement": "Refund Settlement", + "taxable": "Taxable", + "taxExempt": "Tax Exempt", "supplierInfo": "Supplier Information", "receiverInfo": "Receiver Information", "taxExemptionType": "Tax/Exemption Type", @@ -555,6 +955,7 @@ "applicationDate": "Application Date", "emailAddress": "Email Address", "referenceDataNote": "Please compare with internal accounting data\nbefore using this reference material.", - "result": "Result" + "result": "Result", + "keyInMerchantError": "[9997] Not a Key-In merchant.
        Please contact NICEPAY." } } \ No newline at end of file diff --git a/src/locales/ko.json b/src/locales/ko.json index 866b240..63db7b4 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -17,7 +17,17 @@ "noData": "데이터가 없습니다", "next": "다음", "latest": "최신순", - "oldest": "오래된순" + "oldest": "오래된순", + "weekdays": { + "sun": "일", + "mon": "월", + "tue": "화", + "wed": "수", + "thu": "목", + "fri": "금", + "sat": "토" + }, + "currencyUnit": "원" }, "menu": { "home": "홈", @@ -81,11 +91,16 @@ "issueNumber": "발행번호" }, "periods": { + "today": "당일", + "week": "일주일", + "currentMonth": "당월", "1month": "1개월", + "2months": "2개월", "3months": "3개월", "6months": "6개월", "custom": "직접입력" }, + "selectDate": "날짜 선택", "transactionType": "거래구분", "transactionTypes": { "all": "전체", @@ -95,7 +110,8 @@ "sortOrder": "정렬순서", "sortOrders": { "latest": "최신순", - "oldest": "과거순" + "oldest": "과거순", + "highest": "고액순" }, "startDate": "시작일", "endDate": "종료일", @@ -178,6 +194,8 @@ "merchant": "가맹점", "all": "전체", "inquiryButton": "1:1 문의하기", + "registrationDate": "등록일", + "status": "상태", "categories": { "all": "모두", "choose": "선택", @@ -318,7 +336,20 @@ "topSalesDays": "매출이 가장 높은 요일", "topSalesHours": "매출이 가장 높은 시간", "topPaymentMethods": "가장 많이쓰인 결제 수단", - "noticesAndUpdates": "공지 & 최신정보" + "noticesAndUpdates": "공지 & 최신정보", + "banner": { + "doNotShowToday": "오늘 하루 보지 않기", + "close": "닫기" + }, + "biometricRegistration": { + "title": "간편 인증 등록", + "description": "간편 인증 등록 한번으로,\n비밀번호 없이 편리하게 로그인하세요.", + "later": "다음에", + "registerNow": "지금 등록하기" + }, + "notice": { + "goTo": "공지사항 바로가기" + } }, "settlement": { "title": "정산조회", @@ -346,7 +377,35 @@ "offset": "상계", "transactionAmount": "거래금액", "expectedSettlementAmount": "정산예정금액", - "preSettlementCancelOffset": "정산전 취소상계" + "preSettlementCancelOffset": "정산전 취소상계", + "periodType": { + "settlementDate": "정산일자", + "transactionDate": "거래일자" + }, + "searchCriteria": "조회기준", + "searchPeriod": "조회기간", + "settlementCompleted": "정산 완료", + "depositScheduled": "입금 예정", + "previousMonth": "이전 달", + "nextMonth": "다음 달", + "previous": "이전", + "next": "다음", + "scheduled": "예정", + "completed": "완료", + "settlementScheduledAmount": "정산 예정 금액", + "settlementCompletedAmount": "정산 완료 금액", + "settlementInfo": "정산 정보", + "transferStatus": "이체상태", + "transferId": "이체ID", + "transferTime": "이체시간", + "bankName": "은행명", + "accountNumber": "계좌번호", + "depositorName": "입금인자", + "settlementDepositAmount": "정상입금액", + "errorReason": "오류사유", + "transactionDetailInfo": "거래 상세 정보", + "cardBankTelecom": "카드/은행/이통사", + "approvalAccountPhone": "승인번호/계좌번호/휴대번호" }, "transaction": { "listTitle": "거래내역 조회", @@ -362,7 +421,254 @@ "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": "거래 확인서" + }, + "constants": { + "all": "전체", + "orderNumber": "주문번호", + "tid": "TID", + "approval": "승인", + "approvalComplete": "승인/입금완료", + "cancel": "취소", + "cancelShort": "후취소", + "totalCancel": "전취소/취소", + "totalCancelShort": "전취소", + "refund": "환불", + "deposit": "입금", + "waitingDeposit": "입금대기", + "issueCancel": "채번취소", + "creditCard": "신용카드", + "virtualAccount": "가상계좌", + "accountTransfer": "계좌이체", + "accountSimpleTransfer": "계좌간편결제", + "mobilePayment": "휴대폰", + "ssgMoney": "SSG 머니", + "ssgBank": "SSG 은행계좌", + "cultureLand": "문화상품권", + "tmoneyPay": "티머니페이", + "request": "요청", + "requestCancel": "요청취소", + "requestComplete": "요청완료", + "issueComplete": "발급완료", + "requestFail": "요청실패", + "issueFail": "발급실패", + "paymentComplete": "결제완료", + "deliveryRegistration": "배송등록", + "deliveryComplete": "배송완료", + "purchaseConfirm": "구매확인", + "purchaseReject": "구매거절", + "refundProcessing": "환불처리", + "depositComplete": "지급완료", + "inProgress": "진행중", + "success": "성공", + "failure": "실패" + }, + "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": "현금영수증", @@ -418,7 +724,30 @@ "accountTransfer": "계좌이체", "virtualAccount": "가상계좌", "mobilePayment": "휴대폰", - "escrowPayment": "에스크로 결제" + "escrowPayment": "에스크로 결제", + "kakaoPay": "카카오페이", + "naverPay": "네이버페이", + "samsungPay": "삼성페이", + "mobilePaymentFull": "휴대폰결제", + "cultureLandGiftCard": "문화상품권", + "ssgMoney": "SSG머니", + "tvPay": "TV페이", + "samsungPayCard": "삼성페이(카드)", + "applePay": "애플페이", + "tossPay": "토스페이", + "payco": "PAYCO", + "livePay": "리브페이", + "taiwanPayment": "대만결제", + "tmoneyPay": "티머니페이", + "lPay": "L.PAY", + "payU": "PAYU", + "twLinePay": "TW라인페이", + "ssgPay": "SSG페이", + "kBankPay": "케이뱅크페이", + "ssgBankAccount": "SSG은행계좌", + "accountSimplePayment": "계좌간편결제", + "skPay": "SK PAY", + "bcCard": "비씨" } }, "additionalService": { @@ -481,6 +810,69 @@ "reason": "사유", "accountError": "지급 계좌오류", "agreeOrReject": "정산 동의/거절" + }, + "ars": { + "paymentComplete": "결제완료", + "unpaid": "미결제", + "pendingPayment": "결제대기", + "paymentSuccess": "결제성공", + "expired": "기간만료", + "canceled": "취소완료" + }, + "sms": { + "virtualAccountRequest": "가상계좌 요청", + "virtualAccountRequestDeposit": "가상계좌 요청 + 입금" + }, + "linkPay": { + "sendRequest": "발송요청", + "sendCancel": "발송취소", + "incompleteActive": "미완료/활성화", + "depositRequest": "입금요청", + "paymentComplete": "결제완료", + "paymentFail": "결제실패", + "paymentStopped": "결제중단", + "paymentStoppedInactive": "결제중단/비활성화", + "pending": "대기중", + "email": "이메일", + "alimtalk": "알림톡" + }, + "accountHolderAuth": { + "accountHolderNameMatch": "예금주명 일치", + "accountHolderNameMismatch": "예금주명 불일치", + "authFailedAccountError": "인증실패 (계좌 오류 등)" + }, + "accountHolderSearch": { + "accountHolder": "예금주", + "accountNumber": "계좌번호" + }, + "faceAuth": { + "authentication": "인증", + "registration": "등록" + }, + "fundAccount": { + "registrationComplete": "등록완료", + "transferRequest": "이체요청", + "requestSuccess": "요청성공", + "requestFail": "요청실패", + "requestDate": "요청일자", + "transferDate": "이체일자", + "recipient": "수취인", + "accountNumber": "계좌번호" + }, + "alimtalk": { + "buyer": "주문자", + "depositRequest": "입금요청", + "depositComplete": "입금완료", + "kakaotalk": "카카오톡", + "fbSms": "FB SMS" + }, + "payout": { + "requestDate": "요청일자", + "disbursementDate": "지급일자" + }, + "keyIn": { + "fullCancel": "전취소", + "partialCancel": "후취소" } }, "merchant": { @@ -543,9 +935,17 @@ "issueInfo": "발행 정보", "issueTargetDate": "발행대상일자", "issueDate": "발행일자", + "issuanceMonth": "발행월", "subject": "적요", "issueTarget": "발행대상", "receiptType": "영수구분", + "receipt": "영수", + "bill": "청구", + "general": "일반", + "differenceSettlement": "차액정산", + "refundSettlement": "환급정산", + "taxable": "과세", + "taxExempt": "면세", "supplierInfo": "공급자 정보", "receiverInfo": "공급받는 자 정보", "taxExemptionType": "거래 과세/면세 구분", @@ -559,6 +959,7 @@ "applicationDate": "신청일", "emailAddress": "메일주소", "referenceDataNote": "참고용 자료이므로 반드시 내부 회계자료 등과\n비교 후 사용해 주세요.", - "result": "결과" + "result": "결과", + "keyInMerchantError": "[9997] 키인가맹점이 아닙니다.
        NICEPAY로 문의하세요." } } \ No newline at end of file diff --git a/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx b/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx index 9789e39..f1605cb 100644 --- a/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx +++ b/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx @@ -162,9 +162,9 @@ export const AccountHolderAuthPage = () => { sortType ]); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx b/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx index 045c4e4..d51f8b6 100644 --- a/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx +++ b/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx @@ -174,9 +174,9 @@ export const AccountHolderSearchPage = () => { sortType ]); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/alimtalk/list-page.tsx b/src/pages/additional-service/alimtalk/list-page.tsx index 2474960..b0e9415 100644 --- a/src/pages/additional-service/alimtalk/list-page.tsx +++ b/src/pages/additional-service/alimtalk/list-page.tsx @@ -228,9 +228,9 @@ export const AlimtalkListPage = () => { sendCl ]); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/ars/list-page.tsx b/src/pages/additional-service/ars/list-page.tsx index 7e06546..897d60e 100644 --- a/src/pages/additional-service/ars/list-page.tsx +++ b/src/pages/additional-service/ars/list-page.tsx @@ -226,9 +226,9 @@ export const ArsListPage = () => { return rs; } - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/face-auth/face-auth-page.tsx b/src/pages/additional-service/face-auth/face-auth-page.tsx index 8ced71c..2cfa141 100644 --- a/src/pages/additional-service/face-auth/face-auth-page.tsx +++ b/src/pages/additional-service/face-auth/face-auth-page.tsx @@ -211,9 +211,9 @@ export const FaceAuthPage = () => { sortType ]); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/fund-account/transfer-list-page.tsx b/src/pages/additional-service/fund-account/transfer-list-page.tsx index 59b9901..e523a8d 100644 --- a/src/pages/additional-service/fund-account/transfer-list-page.tsx +++ b/src/pages/additional-service/fund-account/transfer-list-page.tsx @@ -28,9 +28,9 @@ export const FundAccountTransferListPage = () => { navigate(PATHS.home); }); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/key-in-payment/key-in-payment-page.tsx b/src/pages/additional-service/key-in-payment/key-in-payment-page.tsx index 2a0e7c5..8f22ee4 100644 --- a/src/pages/additional-service/key-in-payment/key-in-payment-page.tsx +++ b/src/pages/additional-service/key-in-payment/key-in-payment-page.tsx @@ -172,9 +172,9 @@ export const KeyInPaymentPage = () => { sortType ]); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( diff --git a/src/pages/additional-service/link-payment/link-payment-history-page.tsx b/src/pages/additional-service/link-payment/link-payment-history-page.tsx index 0343901..53d8652 100644 --- a/src/pages/additional-service/link-payment/link-payment-history-page.tsx +++ b/src/pages/additional-service/link-payment/link-payment-history-page.tsx @@ -35,9 +35,9 @@ export const LinkPaymentHistoryPage = () => { navigate(PATHS.home); }); - // if(!hasAccess){ - // return ; - // } + if(!hasAccess){ + return ; + } return ( <> diff --git a/src/pages/additional-service/payout/list-page.tsx b/src/pages/additional-service/payout/list-page.tsx index 7319e06..97e42c6 100644 --- a/src/pages/additional-service/payout/list-page.tsx +++ b/src/pages/additional-service/payout/list-page.tsx @@ -222,9 +222,9 @@ export const PayoutListPage = () => { return rs; }; - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/additional-service/sms-payment/sms-payment-page.tsx b/src/pages/additional-service/sms-payment/sms-payment-page.tsx index d4330cd..af48b38 100644 --- a/src/pages/additional-service/sms-payment/sms-payment-page.tsx +++ b/src/pages/additional-service/sms-payment/sms-payment-page.tsx @@ -178,9 +178,9 @@ export const SmsPaymentPage = () => { smsCl ]); - // if (!hasAccess) { - // return ; - // } + if (!hasAccess) { + return ; + } return ( <> diff --git a/src/pages/transaction/billing/list-page.tsx b/src/pages/transaction/billing/list-page.tsx index 7b48d4c..514ac0b 100644 --- a/src/pages/transaction/billing/list-page.tsx +++ b/src/pages/transaction/billing/list-page.tsx @@ -21,7 +21,7 @@ import { useDownloadExcelMutation } from '@/entities/transaction/api/use-downloa import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; import { BillingFilter } from '@/entities/transaction/ui/filter/billing-filter'; import { SortTypeBox } from '@/entities/common/ui/sort-type-box'; -import { BillingRequestStatusBtnGroup } from '@/entities/transaction/model/contant'; +import { getBillingRequestStatusBtnGroup } from '@/entities/transaction/model/contant'; import { SortTypeKeys, HeaderType, DefaultRequestPagination } from '@/entities/common/model/types'; import { useSetOnBack, @@ -203,8 +203,8 @@ export const BillingListPage = () => {
        { - BillingRequestStatusBtnGroup.map((value, index) => ( - ( + onClickToRequestStatus(value.value) } diff --git a/src/pages/transaction/cash-receipt/list-page.tsx b/src/pages/transaction/cash-receipt/list-page.tsx index 71dd5d9..1d88067 100644 --- a/src/pages/transaction/cash-receipt/list-page.tsx +++ b/src/pages/transaction/cash-receipt/list-page.tsx @@ -30,7 +30,7 @@ import { useSetHeaderType, useSetFooterMode } from '@/widgets/sub-layout/use-sub-layout'; -import { CashReceiptTransactionTypeBtnGroup } from '@/entities/transaction/model/contant'; +import { getCashReceiptTransactionTypeBtnGroup } from '@/entities/transaction/model/contant'; import { useStore } from '@/shared/model/store'; import { useCashReceiptSummaryMutation } from '@/entities/transaction/api/use-cash-receipt-summary-mutation'; import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; @@ -256,7 +256,7 @@ export const CashReceiptListPage = () => {
        { - CashReceiptTransactionTypeBtnGroup.map((value, index) => ( + getCashReceiptTransactionTypeBtnGroup(t).map((value: any, index: number) => ( {
        { - EscrowDeliveryStatusBtnGroup.map((value, index) => ( - ( + onClickToDeliveryStatus(value.value) } diff --git a/src/shared/lib/hooks/use-extension-access-check.tsx b/src/shared/lib/hooks/use-extension-access-check.tsx index 42519a1..d9dcf63 100644 --- a/src/shared/lib/hooks/use-extension-access-check.tsx +++ b/src/shared/lib/hooks/use-extension-access-check.tsx @@ -3,6 +3,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useExtensionCheckMutation } from '@/entities/additional-service/api/use-extension-check-mutation'; import { Dialog } from '@/shared/ui/dialogs/dialog'; import { PATHS } from '@/shared/constants/paths'; +import { useTranslation } from 'react-i18next'; interface UseExtensionAccessCheckProps { extensionCode: string; @@ -24,6 +25,7 @@ export const useExtensionAccessCheck = ({ enabled = true }: UseExtensionAccessCheckProps): UseExtensionAccessCheckReturn => { const { navigate } = useNavigate(); + const { t } = useTranslation(); const { mutateAsync: extensionCheck } = useExtensionCheckMutation(); const [hasAccess, setHasAccess] = useState(null); @@ -76,16 +78,16 @@ export const useExtensionAccessCheck = ({ return ( {}} + onClose={() => { }} message={ <> - 이용 중이지 않은 서비스입니다.
        - 가입 문의는 영업 담당자 또는 고객센터로 문의해 주세요. + {t('additionalService.notActiveServiceMessage')}
        + {t('additionalService.contactSalesMessage')} } buttonLabel={['확인']} onConfirmClick={handleConfirm} - afterLeave={() => {}} + afterLeave={() => { }} /> ); }; diff --git a/src/shared/ui/assets/css/style.css b/src/shared/ui/assets/css/style.css index ddcd9a7..a0ec99c 100644 --- a/src/shared/ui/assets/css/style.css +++ b/src/shared/ui/assets/css/style.css @@ -2090,12 +2090,13 @@ input[type="radio"] { align-items: center; padding: 15px 10px; margin-bottom: 10px; + gap: 10px; } .sort-options { display: flex; align-items: center; - gap: 10px; + gap: 4px; } .sort-btn { diff --git a/src/shared/ui/filter/calendar-month.tsx b/src/shared/ui/filter/calendar-month.tsx index a392d0b..1481f67 100644 --- a/src/shared/ui/filter/calendar-month.tsx +++ b/src/shared/ui/filter/calendar-month.tsx @@ -4,6 +4,7 @@ import { CalendarType, FilterMonthOptions } from '@/entities/common/model/types' import { IMAGE_ROOT } from '@/shared/constants/common'; import NiceCalendarMonth from '../calendar/nice-calendar-month'; import { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; interface FilterCalendarMonthProps { title?: string; @@ -20,7 +21,8 @@ export const FilterCalendarMonth = ({ setStartMonth, setEndMonth }: FilterCalendarMonthProps) => { - const [filterTitle, setFilterTitle] = useState(title || '조회기간'); + const { t } = useTranslation(); + const [filterTitle, setFilterTitle] = useState(title || t('filter.period')); const [monthReadOnly, setMonthReadyOnly] = useState(false); const [filterMonthOptionsBtn, setFilterMonthOptionsBtn] = useState(FilterMonthOptions.Input); const [calendarOpen, setCalendarOpen] = useState(false); @@ -83,22 +85,22 @@ export const FilterCalendarMonth = ({
        { filterTitle }
        - setFilterMonth(FilterMonthOptions.Month1) } - >당월 - {t('filter.periods.currentMonth')} + setFilterMonth(FilterMonthOptions.Month2) } - >2개월 - {t('filter.periods.2months')} + setFilterMonth(FilterMonthOptions.Month3) } - >3개월 - {t('filter.periods.3months')} + setFilterMonth(FilterMonthOptions.Input) } - >직접입력 + >{t('filter.periods.custom')}
        @@ -106,7 +108,7 @@ export const FilterCalendarMonth = ({ id="startDate" className="date-input" type="text" - placeholder="날짜 선택" + placeholder={t('filter.selectDate')} value={ moment(startMonth).format('YYYY.MM') } onChange={ (e: ChangeEvent) => {} } readOnly={ monthReadOnly } @@ -118,7 +120,7 @@ export const FilterCalendarMonth = ({ > 날짜 선택
        @@ -128,19 +130,19 @@ export const FilterCalendarMonth = ({ id="endDate" className="date-input" type="text" - placeholder="날짜 선택" + placeholder={t('filter.selectDate')} value={ moment(endMonth).format('YYYY.MM') } onChange={ (e: ChangeEvent) => {} } readOnly={ monthReadOnly } /> -
        diff --git a/src/shared/ui/filter/calendar.tsx b/src/shared/ui/filter/calendar.tsx index 164f5f0..4cd5675 100644 --- a/src/shared/ui/filter/calendar.tsx +++ b/src/shared/ui/filter/calendar.tsx @@ -4,6 +4,7 @@ import { CalendarType, FilterDateOptions } from '@/entities/common/model/types'; import { IMAGE_ROOT } from '@/shared/constants/common'; import NiceCalendar from '../calendar/nice-calendar'; import { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; interface FilterCalendarProps { title?: string; @@ -20,7 +21,8 @@ export const FilterCalendar = ({ setStartDate, setEndDate }: FilterCalendarProps) => { - const [filterTitle, setFilterTitle] = useState(title || '조회기간'); + const { t } = useTranslation(); + const [filterTitle, setFilterTitle] = useState(title || t('filter.period')); const [dateReadOnly, setDateReadyOnly] = useState(false); const [filterDateOptionsBtn, setFilterDateOptionsBtn] = useState(FilterDateOptions.Input); const [calendarOpen, setCalendarOpen] = useState(false); @@ -106,22 +108,22 @@ export const FilterCalendar = ({
        { filterTitle }
        - setFilterDate(FilterDateOptions.Today) } - >당일 - {t('filter.periods.today')} + setFilterDate(FilterDateOptions.Week) } - >일주일 - {t('filter.periods.week')} + setFilterDate(FilterDateOptions.Month) } - >1개월 - {t('filter.periods.1month')} + setFilterDate(FilterDateOptions.Input) } - >직접입력 + >{t('filter.periods.custom')}
        @@ -129,7 +131,7 @@ export const FilterCalendar = ({ id="startDate" className="date-input" type="text" - placeholder="날짜 선택" + placeholder={t('filter.selectDate')} value={ newStartDate } onChange={ (e: ChangeEvent) => {} } readOnly={ dateReadOnly } @@ -141,7 +143,7 @@ export const FilterCalendar = ({ > 날짜 선택
        @@ -151,19 +153,19 @@ export const FilterCalendar = ({ id="endDate" className="date-input" type="text" - placeholder="날짜 선택" + placeholder={t('filter.selectDate')} value={ newEndDate } onChange={ (e: ChangeEvent) => {} } readOnly={ dateReadOnly } /> -