Add comprehensive localization keys and localize initial components

Add extensive translation keys to en.json for all additional-service
components including link payment, fund account, SMS, alimtalk, face auth,
key-in payment, payout, settlement agency, and info-wrap components.

Localize components:
- account-holder-search-list: Add search request button translation
- key-in-payment-filter: Replace all Korean filter labels with i18n keys

Translation keys added cover:
- Link payment forms, steps, and bottom sheets
- Fund account transfer and result views
- SMS detail and resend functionality
- Filter components for all service types
- Info wrap components for payment and detail information
- Settlement agency management interfaces

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-10-31 11:29:53 +09:00
parent 5a61fbc102
commit dfe7152631
3 changed files with 133 additions and 16 deletions

View File

@@ -4,12 +4,14 @@ import { ListDateGroup } from '../list-date-group';
import { AdditionalServiceCategory } from '../../model/types' import { AdditionalServiceCategory } from '../../model/types'
import { AccountHolderSearchListItem, AccountHolderSearchListProps } from '../../model/account-holder-search/types'; import { AccountHolderSearchListItem, AccountHolderSearchListProps } from '../../model/account-holder-search/types';
import { JSX } from 'react'; import { JSX } from 'react';
import { useTranslation } from 'react-i18next';
export const AccountHolderSearchList = ({ export const AccountHolderSearchList = ({
listItems, listItems,
mid mid
}: AccountHolderSearchListProps) => { }: AccountHolderSearchListProps) => {
const { navigate } = useNavigate(); const { navigate } = useNavigate();
const { t } = useTranslation();
const getListDateGroup = () => { const getListDateGroup = () => {
let rs = []; let rs = [];
@@ -71,7 +73,7 @@ export const AccountHolderSearchList = ({
<button <button
className="btn-50 btn-blue flex-1" className="btn-50 btn-blue flex-1"
onClick={() => onClickToNavigate()} onClick={() => onClickToNavigate()}
> </button> >{t('additionalService.accountHolderSearch.searchRequest')}</button>
</div> </div>
</> </>
); );

View File

@@ -64,7 +64,7 @@ export const KeyInPaymentFilter = ({
> >
<div className="full-menu-container"> <div className="full-menu-container">
<div className="full-menu-header"> <div className="full-menu-header">
<div className="full-menu-title center"></div> <div className="full-menu-title center">{t('filter.filter')}</div>
<div className="full-menu-actions"> <div className="full-menu-actions">
<button <button
id="closeFullMenu" id="closeFullMenu"
@@ -72,7 +72,7 @@ export const KeyInPaymentFilter = ({
> >
<img <img
src={IMAGE_ROOT + '/ico_close.svg'} src={IMAGE_ROOT + '/ico_close.svg'}
alt="닫기" alt={t('filter.close')}
onClick={() => onClickToClose()} onClick={() => onClickToClose()}
/> />
</button> </button>
@@ -81,12 +81,12 @@ export const KeyInPaymentFilter = ({
<div className="option-list pt-16"> <div className="option-list pt-16">
<FilterSelectMid <FilterSelectMid
title='가맹점' title={t('filter.merchant')}
selectSetter={setFilterMid} selectSetter={setFilterMid}
showType={'GID'} showType={'GID'}
></FilterSelectMid> ></FilterSelectMid>
<FilterCalendar <FilterCalendar
title='조회기간' title={t('filter.period')}
startDate={filterStartDate} startDate={filterStartDate}
endDate={filterEndDate} endDate={filterEndDate}
setStartDate={setFilterStartDate} setStartDate={setFilterStartDate}
@@ -94,14 +94,14 @@ export const KeyInPaymentFilter = ({
></FilterCalendar> ></FilterCalendar>
<FilterButtonGroups <FilterButtonGroups
title='거래상태' title={t('filter.transactionStatus')}
activeValue={filterTransactionStatus} activeValue={filterTransactionStatus}
btnGroups={getKeyInPaymentPaymentStatusBtnGroup(t)} btnGroups={getKeyInPaymentPaymentStatusBtnGroup(t)}
setter={setFilterTransactionStatus} setter={setFilterTransactionStatus}
></FilterButtonGroups> ></FilterButtonGroups>
<FilterRangeAmount <FilterRangeAmount
title='상품가격' title={t('additionalService.keyIn.productPrice')}
minAmount={filterMinAmount} minAmount={filterMinAmount}
maxAmount={filterMaxAmount} maxAmount={filterMaxAmount}
setMinAmount={setFilterMinAmount} setMinAmount={setFilterMinAmount}
@@ -112,7 +112,7 @@ export const KeyInPaymentFilter = ({
<button <button
className="btn-50 btn-blue flex-1" className="btn-50 btn-blue flex-1"
onClick={() => onClickToSetFilter()} onClick={() => onClickToSetFilter()}
></button> >{t('filter.apply')}</button>
</div> </div>
</div> </div>
</motion.div> </motion.div>

View File

@@ -817,7 +817,13 @@
}, },
"sms": { "sms": {
"virtualAccountRequest": "Virtual Account Request", "virtualAccountRequest": "Virtual Account Request",
"virtualAccountRequestDeposit": "Virtual Account Request + Deposit" "virtualAccountRequestDeposit": "Virtual Account Request + Deposit",
"smsDetailAndResend": "SMS Details & Resend",
"sender": "Sender (Number)",
"receiver": "Receiver (Number)",
"sendSuccess": "SMS sent successfully.",
"sendFailed": "[Failed] {{message}}",
"sendFailedGeneric": "[Failed] Request failed."
}, },
"linkPay": { "linkPay": {
"sendRequest": "Send Request", "sendRequest": "Send Request",
@@ -830,7 +836,42 @@
"paymentStoppedInactive": "Payment Stopped/Inactive", "paymentStoppedInactive": "Payment Stopped/Inactive",
"pending": "Pending", "pending": "Pending",
"email": "Email", "email": "Email",
"alimtalk": "Alimtalk" "alimtalk": "Alimtalk",
"kakao": "Kakao",
"productName": "Product Name",
"productPrice": "Product Price",
"productOrderNumber": "Product Order Number",
"paymentValidDate": "Payment Valid Date",
"until": "Until",
"selectDate": "Select Date",
"buyerName": "Buyer Name",
"buyerEmail": "Buyer Email",
"buyerPhoneNumber": "Buyer Phone Number",
"buyerInfoVerification": "Buyer Info Verification",
"individual": "Individual",
"corporate": "Corporate",
"businessNumberPlaceholder": "Business number (10 digits)",
"birthDatePlaceholder": "Birth date (6 digits)",
"language": "Language",
"korean": "Korean",
"english": "English",
"linkContent": "Link Content",
"basic": "Basic",
"additional": "Additional",
"sendHistory": "Send History",
"pendingSend": "Pending Send",
"phoneOrEmail": "Phone/Email",
"transactionStatus": "Transaction Status",
"sendResult": "Send Result",
"sendMethod": "Send Method",
"progressStatus": "Progress Status",
"extendPeriod": "Extend Period",
"extendPeriodConfirm": "Do you want to extend the valid period?",
"checkIndividualStatus": "Please check individual status.",
"linkBreak": "Break Link",
"linkBreakWarning": "When link break is requested",
"linkBreakWarningDetail": "payment will be unavailable and cannot be undone.",
"paymentRequest": "Payment Request"
}, },
"accountHolderAuth": { "accountHolderAuth": {
"accountHolderNameMatch": "Account Holder Name Match", "accountHolderNameMatch": "Account Holder Name Match",
@@ -843,11 +884,15 @@
"accountHolderOrAccountNumber": "Account Holder/Account Number", "accountHolderOrAccountNumber": "Account Holder/Account Number",
"searchResult": "Search Result", "searchResult": "Search Result",
"bank": "Bank", "bank": "Bank",
"select": "Select" "select": "Select",
"searchRequest": "Search Request"
}, },
"faceAuth": { "faceAuth": {
"authentication": "Authentication", "authentication": "Authentication",
"registration": "Registration" "registration": "Registration",
"merchantMemberId": "Merchant Member ID",
"transactionType": "Transaction Type",
"authenticationResult": "Authentication Result"
}, },
"fundAccount": { "fundAccount": {
"registrationComplete": "Registration Complete", "registrationComplete": "Registration Complete",
@@ -857,22 +902,92 @@
"requestDate": "Request Date", "requestDate": "Request Date",
"transferDate": "Transfer Date", "transferDate": "Transfer Date",
"recipient": "Recipient", "recipient": "Recipient",
"accountNumber": "Account Number" "accountNumber": "Account Number",
"recipientOrAccountNumber": "Recipient/Account Number",
"searchCriteria": "Search Criteria",
"processingResult": "Processing Result",
"balance": "Balance",
"won": "KRW",
"transferRegistration": "Transfer Registration",
"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"
}, },
"alimtalk": { "alimtalk": {
"buyer": "Buyer", "buyer": "Buyer",
"depositRequest": "Deposit Request", "depositRequest": "Deposit Request",
"depositComplete": "Deposit Complete", "depositComplete": "Deposit Complete",
"kakaotalk": "KakaoTalk", "kakaotalk": "KakaoTalk",
"fbSms": "FB SMS" "fbSms": "FB SMS",
"orderOrTid": "Buyer, TID",
"notificationCategory": "Notification Category",
"sendType": "Send Type",
"sendCategory": "Send Category"
}, },
"payout": { "payout": {
"requestDate": "Request Date", "requestDate": "Request Date",
"disbursementDate": "Disbursement Date" "disbursementDate": "Disbursement Date",
"paymentStatus": "Payment Status"
}, },
"keyIn": { "keyIn": {
"fullCancel": "Full Cancel", "fullCancel": "Full Cancel",
"partialCancel": "Partial Cancel" "partialCancel": "Partial Cancel",
"productPrice": "Product Price"
},
"infoWrap": {
"paymentInfo": "Payment Information",
"buyerName": "Buyer Name",
"sendMethod": "Send Method",
"sendDate": "Send Date",
"paymentStatusFailCount": "Payment Status (Fail Count)",
"paymentDate": "Payment Date",
"paymentValidDate": "Payment Valid Date",
"progressStatus": "Progress Status",
"requestDate": "Request Date",
"email": "Email",
"phoneNumber": "Phone Number",
"productName": "Product Name",
"orderNumber": "Order Number",
"detailInfo": "Detail Information",
"inquiryDateTime": "Inquiry Date Time",
"result": "Result",
"failureReason": "Failure Reason",
"bank": "Bank",
"accountNumber": "Account Number",
"requestCategory": "Request Category",
"merchantName": "Merchant Name",
"mid": "MID",
"requestDateTime": "Request Date Time",
"accountHolder": "Account Holder"
},
"settlementAgencyDetails": {
"tabManage": "Settlement Agency Management",
"tabDeposit": "Deposit History",
"tabStore": "Settlement Store",
"feeInfo": "Fee: 1%, Round",
"taxInfo": "Tax Status: Taxable, Truncate",
"settlementDayInfo": "Settlement Day: 15th of each month",
"totalDeposit": "Total Deposit",
"totalWithdrawal": "Total Withdrawal",
"latest": "Latest",
"highAmount": "High Amount",
"all": "All",
"deposit": "Deposit",
"withdrawal": "Withdrawal",
"depositCash": "Deposit (Cash Deposit)",
"balance": "Balance",
"settlementStatus": "Settlement Status",
"manualRegistration": "Manual Registration",
"settlementDate": "Settlement Date",
"agreementCompleted": "Agreement Completed",
"noInterestInfo": "No-Interest Info",
"extendPeriodTitle": "Extend Period",
"confirmMessage": "Please check individual status.",
"settlementAgreement": "Settlement Agreement",
"settlementReject": "Settlement Reject",
"quickWithdrawal": "Quick Withdrawal",
"save": "Save"
} }
}, },
"merchant": { "merchant": {