From a566f18da920fe46a90c855b481cf2e023db176f Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Mon, 3 Nov 2025 16:42:29 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=90=EA=B8=88=EC=9D=B4=EC=B2=B4=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=8B=A4=EA=B5=AD=EC=96=B4=20?= =?UTF-8?q?=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 자금이체 관련 모든 페이지에 대한 다국어 지원을 추가했습니다. 변경사항: - 이체등록 페이지: 폼 레이블, 버튼, 에러 메시지 다국어화 - 이체요청 목록 페이지: 페이지 타이틀 다국어화 - 결과조회 목록 페이지: 페이지 타이틀 다국어화 - 이체 상세 페이지: 상세 정보 레이블, 버튼, 상태 메시지 다국어화 - 결과 상세 페이지: 상세 정보 레이블, 입금확인서 버튼 다국어화 번역 키 추가: - 은행, 계좌번호, 예금주명, 이체금액, 입금인자 - 등록/요청 성공/실패 메시지 - 상세 정보 레이블 (등록일시, 요청일시, 이체일시, 이체결과, 실패사유 등) - 수취인명, 입금확인서 등 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/locales/en.json | 26 ++++++++++++++- src/locales/ko.json | 26 ++++++++++++++- .../fund-account/result-detail-page.tsx | 22 ++++++------- .../fund-account/result-list-page.tsx | 8 +++-- .../fund-account/transfer-detail-page.tsx | 30 ++++++++--------- .../fund-account/transfer-list-page.tsx | 4 ++- .../fund-account/transfer-request-page.tsx | 32 ++++++++++--------- 7 files changed, 101 insertions(+), 47 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 296582e..094fd7a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -986,6 +986,8 @@ "authenticationResult": "Authentication Result" }, "fundAccount": { + "title": "Fund Transfer", + "transferRegistrationTitle": "Fund Transfer Registration", "registrationComplete": "Registration Complete", "transferRequest": "Transfer Request", "requestSuccess": "Request Success", @@ -1003,7 +1005,29 @@ "transferRegistrationNotice": "After transfer registration, separate 'transfer request' processing is required for execution. If not requested, transfer will not proceed.", "resultInquiry": "Result Inquiry", "tabTransferRequest": "Transfer Request", - "tabResultInquiry": "Result Inquiry" + "tabResultInquiry": "Result Inquiry", + "bank": "Bank", + "pleaseSelect": "Please Select", + "accountHolderName": "Account Holder Name", + "transferAmount": "Transfer Amount", + "depositParameter": "Deposit Parameter", + "registrationSuccess": "Transfer registration successful.", + "registrationFailed": "Transfer registration failed.", + "registrationError": "An error occurred during transfer registration.", + "register": "Register", + "transferDetailTitle": "Fund Transfer Detail", + "detailInfo": "Detail Information", + "registrationDateTime": "Registration Date/Time", + "transferResult": "Transfer Result", + "beneficiaryName": "Beneficiary Name", + "transferRequestButton": "Transfer Request", + "transferRequestSuccess": "Transfer request successful.", + "transferRequestFailed": "Transfer request failed.", + "transferRequestError": "An error occurred during transfer request.", + "requestDateTime": "Request Date/Time", + "transferDateTime": "Transfer Date/Time", + "failureReason": "Failure Reason", + "depositCertificate": "Deposit Certificate" }, "alimtalk": { "buyer": "Buyer", diff --git a/src/locales/ko.json b/src/locales/ko.json index 475666b..4cbc10d 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -986,6 +986,8 @@ "authenticationResult": "인증 결과" }, "fundAccount": { + "title": "자금이체", + "transferRegistrationTitle": "자금이체 이체등록", "registrationComplete": "등록완료", "transferRequest": "이체요청", "requestSuccess": "요청성공", @@ -1003,7 +1005,29 @@ "transferRegistrationNotice": "송금등록 후 별도의 '이체요청' 처리가 필요하며, 요청하지 않을 경우 이체가 진행되지 않습니다.", "resultInquiry": "결과조회", "tabTransferRequest": "이체요청", - "tabResultInquiry": "결과조회" + "tabResultInquiry": "결과조회", + "bank": "은행", + "pleaseSelect": "선택하세요", + "accountHolderName": "예금주명", + "transferAmount": "이체금액", + "depositParameter": "입금인자", + "registrationSuccess": "이체등록을 성공하였습니다.", + "registrationFailed": "이체등록이 실패하였습니다.", + "registrationError": "이체등록 중 오류가 발생했습니다.", + "register": "등록", + "transferDetailTitle": "자금이체 상세", + "detailInfo": "상세 정보", + "registrationDateTime": "등록일시", + "transferResult": "이체결과", + "beneficiaryName": "수취인명", + "transferRequestButton": "이체 요청", + "transferRequestSuccess": "이체요청을 성공하였습니다.", + "transferRequestFailed": "이체요청이 실패하였습니다.", + "transferRequestError": "이체요청 중 오류가 발생했습니다.", + "requestDateTime": "요청일시", + "transferDateTime": "이체일시", + "failureReason": "실패사유", + "depositCertificate": "입금확인서" }, "alimtalk": { "buyer": "주문자", diff --git a/src/pages/additional-service/fund-account/result-detail-page.tsx b/src/pages/additional-service/fund-account/result-detail-page.tsx index 5c2491b..756021e 100644 --- a/src/pages/additional-service/fund-account/result-detail-page.tsx +++ b/src/pages/additional-service/fund-account/result-detail-page.tsx @@ -66,7 +66,7 @@ export const FundAccountResultDetailPage = () => { setEmailBottomSheetOn(false); }; - useSetHeaderTitle('자금이체 상세'); + useSetHeaderTitle(t('additionalService.fundAccount.transferDetailTitle')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -103,40 +103,40 @@ export const FundAccountResultDetailPage = () => { onClick={ onClickToOpenEmailBottomSheet } > - 입금확인서 + {t('additionalService.fundAccount.depositCertificate')} )}
-
상세 정보
+
{t('additionalService.fundAccount.detailInfo')}
  • - 요청일시 + {t('additionalService.fundAccount.requestDateTime')} {moment(detail?.requestDate,'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}
  • - 이체일시 + {t('additionalService.fundAccount.transferDateTime')} {detail?.applicationDate ? moment(detail?.applicationDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}
  • - 이체결과 + {t('additionalService.fundAccount.transferResult')} {detail?.resultMessage || '-'}
  • - 실패사유 + {t('additionalService.fundAccount.failureReason')} {detail?.failReason || '-'}
  • - 수취인명 + {t('additionalService.fundAccount.beneficiaryName')} {detail?.accountName}
  • - 은행 + {t('additionalService.fundAccount.bank')} {detail?.bankName}
  • - 계좌번호 + {t('additionalService.fundAccount.accountNumber')} {detail?.accountNo}
  • @@ -144,7 +144,7 @@ export const FundAccountResultDetailPage = () => { {mid}
  • - 주문번호 + {t('transaction.fields.orderNumber')} {detail?.moid}
  • diff --git a/src/pages/additional-service/fund-account/result-list-page.tsx b/src/pages/additional-service/fund-account/result-list-page.tsx index 6e4beef..960e479 100644 --- a/src/pages/additional-service/fund-account/result-list-page.tsx +++ b/src/pages/additional-service/fund-account/result-list-page.tsx @@ -1,11 +1,12 @@ import { useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { FundAccountTab } from '@/entities/additional-service/ui/fund-account/tab'; +import { useTranslation } from 'react-i18next'; +import { FundAccountTab } from '@/entities/additional-service/ui/fund-account/tab'; import { FundAccountResultListWrap } from '@/entities/additional-service/ui/fund-account/result-list-wrap'; import { FundAccountTabKeys } from '@/entities/additional-service/model/fund-account/types'; import { HeaderType } from '@/entities/common/model/types'; -import { +import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, @@ -13,11 +14,12 @@ import { } from '@/widgets/sub-layout/use-sub-layout'; export const FundAccountResultListPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const [activeTab, setActiveTab] = useState(FundAccountTabKeys.ResultList); - useSetHeaderTitle('자금이체'); + useSetHeaderTitle(t('additionalService.fundAccount.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { diff --git a/src/pages/additional-service/fund-account/transfer-detail-page.tsx b/src/pages/additional-service/fund-account/transfer-detail-page.tsx index dc34e62..3abed34 100644 --- a/src/pages/additional-service/fund-account/transfer-detail-page.tsx +++ b/src/pages/additional-service/fund-account/transfer-detail-page.tsx @@ -40,7 +40,7 @@ export const FundAccountTransferDetailPage = () => { }); }; - useSetHeaderTitle('자금이체 상세'); + useSetHeaderTitle(t('additionalService.fundAccount.transferDetailTitle')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -58,16 +58,16 @@ export const FundAccountTransferDetailPage = () => { extensionFundAccountTransferRequest(params).then((rs: ExtensionFundAccountTransferRequestResponse) => { if (rs.status) { callDetail(); - snackBar("이체요청을 성공하였습니다.") + snackBar(t('additionalService.fundAccount.transferRequestSuccess')) } else { - const errorMessage = rs.error?.message || '이체요청이 실패하였습니다.'; - snackBar(`[실패] ${errorMessage}`); + const errorMessage = rs.error?.message || t('additionalService.fundAccount.transferRequestFailed'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); } }).catch((error) => { const errorMessage = error?.response?.data?.error?.message || error?.message || - '이체요청 중 오류가 발생했습니다.'; - snackBar(`[실패] ${errorMessage}`); + t('additionalService.fundAccount.transferRequestError'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); }); }; @@ -89,38 +89,38 @@ export const FundAccountTransferDetailPage = () => {
-
상세 정보
+
{t('additionalService.fundAccount.detailInfo')}
  • - 등록일시 + {t('additionalService.fundAccount.registrationDateTime')} {detail?.registDate ? moment(detail.registDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}
  • - 처리결과 + {t('additionalService.fundAccount.processingResult')} {getFundAccountStatusName(t)(detail?.resultStatus) || '-'}
  • - 요청일자 + {t('additionalService.fundAccount.requestDate')} {detail?.requestDate ? moment(detail.requestDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD') : '-'}
  • - 이체결과 + {t('additionalService.fundAccount.transferResult')} {detail?.resultMessage || '-'}
  • - 수취인명 + {t('additionalService.fundAccount.beneficiaryName')} {detail?.accountName}
  • - 은행 + {t('additionalService.fundAccount.bank')} {detail?.bankCode || '-'}
  • - 계좌번호 + {t('additionalService.fundAccount.accountNumber')} {detail?.accountNo}
  • @@ -135,7 +135,7 @@ export const FundAccountTransferDetailPage = () => { className="btn-50 btn-blue flex-1" onClick={() => onClickToRequest()} disabled={detail?.resultStatus !== FundAccountStatus.REGIST_COMPLETE} - >이체 요청 + >{t('additionalService.fundAccount.transferRequestButton')}
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..844f371 100644 --- a/src/pages/additional-service/fund-account/transfer-list-page.tsx +++ b/src/pages/additional-service/fund-account/transfer-list-page.tsx @@ -1,6 +1,7 @@ import { useState } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; +import { useTranslation } from 'react-i18next'; import { FundAccountTab } from '@/entities/additional-service/ui/fund-account/tab'; import { FundAccountTransferListWrap } from '@/entities/additional-service/ui/fund-account/transfer-list-wrap'; import { FundAccountTabKeys } from '@/entities/additional-service/model/fund-account/types'; @@ -14,6 +15,7 @@ import { import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access-check'; export const FundAccountTransferListPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); // 권한 체크 const { hasAccess, AccessDeniedDialog } = useExtensionAccessCheck({ @@ -21,7 +23,7 @@ export const FundAccountTransferListPage = () => { }); const [activeTab, setActiveTab] = useState(FundAccountTabKeys.TransferList); - useSetHeaderTitle('자금이체'); + useSetHeaderTitle(t('additionalService.fundAccount.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { diff --git a/src/pages/additional-service/fund-account/transfer-request-page.tsx b/src/pages/additional-service/fund-account/transfer-request-page.tsx index 4d95c4e..33b45d9 100644 --- a/src/pages/additional-service/fund-account/transfer-request-page.tsx +++ b/src/pages/additional-service/fund-account/transfer-request-page.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { HeaderType } from '@/entities/common/model/types'; @@ -17,6 +18,7 @@ import { useExtensionFundAccountTransferRequestMutation } from '@/entities/addit export const FundAccountTransferRequestPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids; const userMid = useStore.getState().UserStore.mid; @@ -32,7 +34,7 @@ export const FundAccountTransferRequestPage = () => { const { mutateAsync: extensionFundAccountRegist } = useExtensionFundAccountTransferRegistMutation(); - useSetHeaderTitle('자금이체 이체등록'); + useSetHeaderTitle(t('additionalService.fundAccount.transferRegistrationTitle')); useSetHeaderType(HeaderType.RightClose); useSetFooterMode(false); useSetOnBack(() => { @@ -72,17 +74,17 @@ export const FundAccountTransferRequestPage = () => { }; extensionFundAccountRegist(params).then((rs: ExtensionFundAccountTransferRegistResponse) => { if (rs.status) { - snackBar("이체등록을 성공하였습니다.") + snackBar(t('additionalService.fundAccount.registrationSuccess')) resetForm(); } else { - const errorMessage = rs.error?.message || '이체등록이 실패하였습니다.'; - snackBar(`[실패] ${errorMessage}`); + const errorMessage = rs.error?.message || t('additionalService.fundAccount.registrationFailed'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); } }).catch((error) => { const errorMessage = error?.response?.data?.error?.message || error?.message || - '이체등록 중 오류가 발생했습니다.'; - snackBar(`[실패] ${errorMessage}`); + t('additionalService.fundAccount.registrationError'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); }); }; @@ -106,7 +108,7 @@ export const FundAccountTransferRequestPage = () => {
-
가맹점*
+
{t('filter.merchant')}*
setBankCode(e.target.value)}> - + { bankList .filter((bank) => bank.code1 !== '****') @@ -141,7 +143,7 @@ export const FundAccountTransferRequestPage = () => {
-
계좌번호*
+
{t('additionalService.fundAccount.accountNumber')}*
{
-
예금주명*
+
{t('additionalService.fundAccount.accountHolderName')}*
{
-
이체금액*
+
{t('additionalService.fundAccount.transferAmount')}*
{
-
주문번호*
+
{t('transaction.fields.orderNumber')}*
{
-
입금인자
+
{t('additionalService.fundAccount.depositParameter')}
{ className="btn-50 btn-blue flex-1" onClick={callExtensionFundAccountTransferRegist} disabled={!isFormValid()} - >등록 + >{t('additionalService.fundAccount.register')}
);