From c2e8da956a20bdf5b30814ac049bcb3c83c1cba0 Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Fri, 31 Oct 2025 13:06:28 +0900 Subject: [PATCH] Localize payout pages (detail, list, request) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added payout-specific translation keys to en.json: - depositBalance, subId, disbursementAmount, requestFailed - Added common translation keys: filter, download, searchOptions, failed, clear, currency.krw - Localized detail-page.tsx: - Header title, button text, detail section title - All KV labels (disbursementStatus, transactionType, etc.) - Updated code comments from Korean to English - Localized list-page.tsx: - Header title, aria-labels, alt texts - Deposit balance label and currency unit - Request button text - Localized request-page.tsx: - Header title, form labels, placeholder text - Success/error messages in snackBar calls - Added useTranslation hook import πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/locales/en.json | 33 +++++++++++++++++-- .../additional-service/payout/detail-page.tsx | 30 ++++++++--------- .../additional-service/payout/list-page.tsx | 18 +++++----- .../payout/request-page.tsx | 22 +++++++------ 4 files changed, 67 insertions(+), 36 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 63c6a52..08e56c3 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -35,7 +35,16 @@ "image": "Image", "request": "Request", "imageRequested": "Image has been requested.", - "selectDownloadMethod": "Select Download Method" + "selectDownloadMethod": "Select Download Method", + "filter": "Filter", + "download": "Download", + "searchOptions": "Search Options", + "requestDate": "Request Date", + "failed": "Failed", + "clear": "Clear", + "currency": { + "krw": "KRW" + } }, "menu": { "home": "Home", @@ -964,9 +973,29 @@ "sendCategory": "Send Category" }, "payout": { + "title": "Payout", + "detailTitle": "Payout Detail", + "requestTitle": "Payout Request", "requestDate": "Request Date", "disbursementDate": "Disbursement Date", - "paymentStatus": "Payment Status" + "paymentStatus": "Payment Status", + "depositCertificate": "Deposit Certificate", + "detailInfo": "Detail Information", + "disbursementStatus": "Disbursement Status", + "transactionType": "Transaction Type", + "disbursementDateTime": "Disbursement Date Time", + "businessNumber": "Business Number", + "accountHolder": "Account Holder", + "bank": "Bank", + "accountNumber": "Account Number", + "depositor": "Depositor", + "failureReason": "Failure Reason", + "requestSuccess": "Request submitted successfully.", + "dateSelectPlaceholder": "Select Date", + "depositBalance": "Deposit Balance", + "subId": "Sub ID", + "disbursementAmount": "Disbursement Amount", + "requestFailed": "Request failed." }, "keyIn": { "fullCancel": "Full Cancel", diff --git a/src/pages/additional-service/payout/detail-page.tsx b/src/pages/additional-service/payout/detail-page.tsx index 2083760..795424a 100644 --- a/src/pages/additional-service/payout/detail-page.tsx +++ b/src/pages/additional-service/payout/detail-page.tsx @@ -44,7 +44,7 @@ export const PayoutDetailPage = () => { }); }; - useSetHeaderTitle('μ§€κΈ‰λŒ€ν–‰ 상세'); + useSetHeaderTitle(t('additionalService.payout.detailTitle')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -57,7 +57,7 @@ export const PayoutDetailPage = () => { const onSelectDownloadType = (type: 'IMAGE' | 'EMAIL') => { if (type === 'IMAGE') { - // 이미지 μ €μž₯은 λ°”λ‘œ μ‹€ν–‰ + // Save image directly const params: ExtensionPayoutDetailDownloadCertificateParams = { mid: mid, tid: tid, @@ -72,7 +72,7 @@ export const PayoutDetailPage = () => { console.error('Certificate Download Failed:', error); }); } else { - // 이메일은 EmailBottomSheet μ—΄κΈ° + // Open EmailBottomSheet for email option setEmailBottomSheetOn(true); } }; @@ -120,52 +120,52 @@ export const PayoutDetailPage = () => { onClick={ onClickToDownload } > - μž…μΆœκΈˆ 확인증 + {t('additionalService.payout.depositCertificate')}
-
상세 정보
+
{t('additionalService.payout.detailInfo')}
  • - μ§€κΈ‰μƒνƒœ + {t('additionalService.payout.disbursementStatus')} { detail?.disbursementStatus }
  • - κ±°λž˜μœ ν˜• + {t('additionalService.payout.transactionType')} { detail?.transTypeName }
  • - μš”μ²­μΌ + {t('common.requestDate')} { moment(detail?.requestDate).format('YYYY.MM.DD') }
  • - μ§€κΈ‰μΌμ‹œ + {t('additionalService.payout.disbursementDateTime')} {moment(detail?.settlementDateTime,'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}
  • - μ‚¬μ—…μžλ²ˆν˜Έ + {t('additionalService.payout.businessNumber')} { detail?.companyNo }
  • - 예금주 + {t('additionalService.payout.accountHolder')} { detail?.accountName }
  • - 은행 + {t('additionalService.payout.bank')} { detail?.bankName }
  • - κ³„μ’Œλ²ˆν˜Έ + {t('additionalService.payout.accountNumber')} { detail?.accountNo }
  • - μž…κΈˆμΈμž + {t('additionalService.payout.depositor')} { detail?.depositName }
  • - μ‹€νŒ¨μ‚¬μœ  + {t('additionalService.payout.failureReason')} { detail?.failReason }
diff --git a/src/pages/additional-service/payout/list-page.tsx b/src/pages/additional-service/payout/list-page.tsx index ac6a43a..406f0c9 100644 --- a/src/pages/additional-service/payout/list-page.tsx +++ b/src/pages/additional-service/payout/list-page.tsx @@ -34,7 +34,7 @@ import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access import useIntersectionObserver from '@/widgets/intersection-observer'; export const PayoutListPage = () => { - // κΆŒν•œ 체크 + // Access check const { hasAccess, AccessDeniedDialog } = useExtensionAccessCheck({ extensionCode: 'PAYOUT' }); @@ -74,7 +74,7 @@ export const PayoutListPage = () => { onIntersect }); - useSetHeaderTitle('μ§€κΈ‰λŒ€ν–‰'); + useSetHeaderTitle(t('additionalService.payout.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -244,32 +244,32 @@ export const PayoutListPage = () => { />
- 예치금 μž”μ•‘ + {t('additionalService.payout.depositBalance')} - 50,000,000원 + 50,000,000{t('common.currency.krw')}
@@ -303,7 +303,7 @@ export const PayoutListPage = () => { + >{t('additionalService.payout.requestTitle')}
diff --git a/src/pages/additional-service/payout/request-page.tsx b/src/pages/additional-service/payout/request-page.tsx index 6902423..486a385 100644 --- a/src/pages/additional-service/payout/request-page.tsx +++ b/src/pages/additional-service/payout/request-page.tsx @@ -16,8 +16,10 @@ import { useStore } from "@/shared/model/store"; import moment from 'moment'; import { NumericFormat } from "react-number-format"; import { snackBar } from "@/shared/lib"; +import { useTranslation } from 'react-i18next'; export const PayoutRequestPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const userMid = useStore.getState().UserStore.mid; @@ -29,7 +31,7 @@ export const PayoutRequestPage = () => { const { mutateAsync: extensionPayoutRequest } = useExtensionPayoutRequestMutation(); - useSetHeaderTitle('μ§€κΈ‰λŒ€ν–‰ μ‹ μ²­'); + useSetHeaderTitle(t('additionalService.payout.requestTitle')); useSetHeaderType(HeaderType.RightClose); useSetFooterMode(false); useSetOnBack(() => { @@ -46,13 +48,13 @@ export const PayoutRequestPage = () => { extensionPayoutRequest(params) .then((rs) => { if (rs.status) { - snackBar("신청을 μ„±κ³΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€.") + snackBar(t('additionalService.payout.requestSuccess')) } else { - snackBar(`[μ‹€νŒ¨] ${rs.error?.message}`) + snackBar(`[${t('common.failed')}] ${rs.error?.message}`) } }) .catch((error) => { - snackBar(`[μ‹€νŒ¨] ${error?.response?.data?.message} ` || '[μ‹€νŒ¨] 신청을 μ‹€νŒ¨ν•˜μ˜€μŠ΅λ‹ˆλ‹€.') + snackBar(`[${t('common.failed')}] ${error?.response?.data?.message} ` || `[${t('common.failed')}] ${t('additionalService.payout.requestFailed')}`) }) ; }; @@ -79,7 +81,7 @@ export const PayoutRequestPage = () => {
-
μ„œλΈŒID
+
{t('additionalService.payout.subId')}
{
-
μ§€κΈ‰μ•‘
+
{t('additionalService.payout.disbursementAmount')}
{
-
지급일
+
{t('additionalService.payout.disbursementDate')}
@@ -135,7 +137,7 @@ export const PayoutRequestPage = () => { className="btn-50 btn-blue flex-1" onClick={callExtensionPayoutRequest} disabled={!isFormValid()} - >μ‹ μ²­ + >{t('common.request')}