Add localization support for additional service components

- Add missing Korean locale keys to alimtalk section (23 keys)
- Add localization for ARS payment detail page (11 keys)
- Replace hardcoded Korean text with translation keys in ars-detail.tsx
- Support both Korean and English for ARS payment details

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-11-04 11:08:57 +09:00
parent 9fa74ca6c3
commit e45043a633
3 changed files with 67 additions and 22 deletions

View File

@@ -49,18 +49,18 @@ export const ArsDetail = ({
};
extensionArsResend(arsResendParams).then((rs: ExtensionArsResendResponse) => {
if (rs.status) {
snackBar("SMS 재전송을 성공하였습니다.");
snackBar(t('additionalService.ars.smsResendSuccess'));
setBottomSheetOn(false);
callDetail(); // 상세 정보 갱신
} else {
const errorMessage = rs.error?.message || 'SMS 재전송이 실패하였습니다.';
snackBar(`[실패] ${errorMessage}`);
const errorMessage = rs.error?.message || t('additionalService.ars.smsResendFailed');
snackBar(`[${t('common.failed')}] ${errorMessage}`);
}
}).catch((error) => {
const errorMessage = error?.response?.data?.error?.message ||
error?.message ||
'SMS 재전송 중 오류가 발생했습니다.';
snackBar(`[실패] ${errorMessage}`);
t('additionalService.ars.smsResendError');
snackBar(`[${t('common.failed')}] ${errorMessage}`);
});
}
@@ -93,7 +93,7 @@ export const ArsDetail = ({
>
<div className="full-menu-container pdw-16">
<div className="full-menu-header">
<div className="full-menu-title center">{'ARS 결제 상세'}</div>
<div className="full-menu-title center">{t('additionalService.ars.detailTitle')}</div>
<div className="full-menu-actions">
<FullMenuClose
addClass="full-menu-close"
@@ -113,52 +113,52 @@ export const ArsDetail = ({
</div>
<div className="detail-divider"></div>
<div className="pay-detail">
<div className="detail-title"> </div>
<div className="detail-title">{t('additionalService.ars.transactionInfo')}</div>
<ul className="kv-list">
<li className="kv-row">
<span className="k">MID</span>
<span className="k">{t('transaction.fields.mid')}</span>
<span className="v">{detail?.mid}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.paymentMethod')}</span>
<span className="v">{detail?.arsPaymentMethod}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.paymentStatus')}</span>
<span className="v">{getArsPaymentStatusName(t)(detail?.paymentStatus)}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.orderStatus')}</span>
<span className="v">{getArsOrderStatusName(t)(detail?.orderStatus)}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.orderDateTime')}</span>
<span className="v">{
detail?.paymentDate ? moment(detail.paymentDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'
}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.productName')}</span>
<span className="v">{detail?.goodsName}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.orderNumber')}</span>
<span className="v">{detail?.tid}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.buyer')}</span>
<span className="v">{detail?.buyerName}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.phoneNumber')}</span>
<span className="v">{detail?.maskPhoneNumber}</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.ars.email')}</span>
<span className="v">{detail?.email}</span>
</li>
<li className="kv-row">
<span className="k"> </span>
<span className="k">{t('additionalService.ars.sendVerificationCode')}</span>
<span className="v">{detail?.smsVerificationCode}</span>
</li>
</ul>
@@ -169,7 +169,7 @@ export const ArsDetail = ({
className="btn-50 btn-blue flex-1"
onClick={() => onClickToOpenResendBottomSheet()}
//disabled={ detail?.orderStatus !== OrderStatus.PENDING }
>SMS </button>
>{t('additionalService.ars.smsResend')}</button>
</div>
)}
</div>

View File

@@ -872,6 +872,7 @@
},
"ars": {
"title": "Credit Card ARS Payment",
"detailTitle": "ARS Payment Detail",
"paymentComplete": "Payment Complete",
"unpaid": "Unpaid",
"pendingPayment": "Pending Payment",
@@ -889,7 +890,17 @@
"phoneNumber": "Phone Number",
"email": "Email",
"paymentMethod": "Payment Method",
"requestFailed": "Request failed."
"requestFailed": "Request failed.",
"transactionInfo": "Transaction Information",
"paymentStatus": "Payment Status",
"orderStatus": "Order Status",
"orderDateTime": "Order Date Time",
"buyer": "Purchaser",
"sendVerificationCode": "Send Verification Code",
"smsResend": "SMS Resend",
"smsResendSuccess": "SMS resent successfully.",
"smsResendFailed": "SMS resend failed.",
"smsResendError": "An error occurred during SMS resend."
},
"keyIn": {
"title": "KEY-IN Payment",

View File

@@ -872,6 +872,7 @@
},
"ars": {
"title": "신용카드 ARS 결제",
"detailTitle": "ARS 결제 상세",
"paymentComplete": "결제완료",
"unpaid": "미결제",
"pendingPayment": "결제대기",
@@ -889,7 +890,17 @@
"phoneNumber": "휴대폰 번호",
"email": "이메일",
"paymentMethod": "결제 방식",
"requestFailed": "신청을 실패하였습니다."
"requestFailed": "신청을 실패하였습니다.",
"transactionInfo": "거래 정보",
"paymentStatus": "결제상태",
"orderStatus": "주문상태",
"orderDateTime": "주문일시",
"buyer": "구매자",
"sendVerificationCode": "발송 인증번호",
"smsResend": "SMS 재전송",
"smsResendSuccess": "SMS 재전송을 성공하였습니다.",
"smsResendFailed": "SMS 재전송이 실패하였습니다.",
"smsResendError": "SMS 재전송 중 오류가 발생했습니다."
},
"keyIn": {
"title": "KEY-IN 결제",
@@ -1057,6 +1068,7 @@
},
"alimtalk": {
"title": "알림톡 결제통보",
"detailTitle": "알림톡 발송 상세",
"buyer": "주문자",
"depositRequest": "입금요청",
"depositComplete": "입금완료",
@@ -1066,7 +1078,29 @@
"notificationCategory": "알림구분",
"sendType": "발송수단",
"sendCategory": "발송상태",
"serviceSetting": "서비스 설정"
"serviceSetting": "서비스 설정",
"transactionInfo": "거래 정보",
"serviceName": "서비스명",
"sendKind": "발송 종류",
"buyerName": "구매자명",
"paymentService": "결제서비스",
"notificationDivision": "알림구분",
"sendDivision": "발송구분",
"settingNotice1": "알림톡을 발송할 대상을 설정할 수 있습니다.",
"settingNotice2": "알림톡 발송 대상과 유형을 설정해 주세요.",
"merchant": "가맹점",
"sendToMerchant": "가맹점에 발송",
"sendToCustomer": "고객에게 발송",
"creditCardApproval": "신용카드(승인)",
"creditCardCancel": "신용카드(취소)",
"bankTransferApproval": "계좌이체(승인)",
"bankTransferCancel": "계좌이체(취소)",
"virtualAccountDepositRequest": "가상계좌(입금요청)",
"virtualAccountDepositComplete": "가상계좌(입금완료)",
"virtualAccountRefund": "가상계좌(환불)",
"saveSuccess": "저장을 성공하였습니다.",
"saveFailed": "저장을 실패하였습니다.",
"unknownError": "알 수 없는 오류가 발생했습니다."
},
"payout": {
"title": "지급대행",