From e45043a6330857b1bc9774e48b89a9f96a16f26e Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Tue, 4 Nov 2025 11:08:57 +0900 Subject: [PATCH] Add localization support for additional service components MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .../ui/ars/detail/ars-detail.tsx | 38 +++++++++---------- src/locales/en.json | 13 ++++++- src/locales/ko.json | 38 ++++++++++++++++++- 3 files changed, 67 insertions(+), 22 deletions(-) diff --git a/src/entities/additional-service/ui/ars/detail/ars-detail.tsx b/src/entities/additional-service/ui/ars/detail/ars-detail.tsx index 801d9b3..15938da 100644 --- a/src/entities/additional-service/ui/ars/detail/ars-detail.tsx +++ b/src/entities/additional-service/ui/ars/detail/ars-detail.tsx @@ -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 = ({ >
-
{'ARS ๊ฒฐ์ œ ์ƒ์„ธ'}
+
{t('additionalService.ars.detailTitle')}
-
๊ฑฐ๋ž˜ ์ •๋ณด
+
{t('additionalService.ars.transactionInfo')}
  • - MID + {t('transaction.fields.mid')} {detail?.mid}
  • - ๊ฒฐ์ œ๋ฐฉ์‹ + {t('additionalService.ars.paymentMethod')} {detail?.arsPaymentMethod}
  • - ๊ฒฐ์ œ์ƒํƒœ + {t('additionalService.ars.paymentStatus')} {getArsPaymentStatusName(t)(detail?.paymentStatus)}
  • - ์ฃผ๋ฌธ์ƒํƒœ + {t('additionalService.ars.orderStatus')} {getArsOrderStatusName(t)(detail?.orderStatus)}
  • - ์ฃผ๋ฌธ์ผ์‹œ + {t('additionalService.ars.orderDateTime')} { detail?.paymentDate ? moment(detail.paymentDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-' }
  • - ์ƒํ’ˆ๋ช… + {t('additionalService.ars.productName')} {detail?.goodsName}
  • - ์ฃผ๋ฌธ๋ฒˆํ˜ธ + {t('additionalService.ars.orderNumber')} {detail?.tid}
  • - ๊ตฌ๋งค์ž + {t('additionalService.ars.buyer')} {detail?.buyerName}
  • - ํœด๋Œ€ํฐ๋ฒˆํ˜ธ + {t('additionalService.ars.phoneNumber')} {detail?.maskPhoneNumber}
  • - ์ด๋ฉ”์ผ + {t('additionalService.ars.email')} {detail?.email}
  • - ๋ฐœ์†ก ์ธ์ฆ๋ฒˆํ˜ธ + {t('additionalService.ars.sendVerificationCode')} {detail?.smsVerificationCode}
@@ -169,7 +169,7 @@ export const ArsDetail = ({ className="btn-50 btn-blue flex-1" onClick={() => onClickToOpenResendBottomSheet()} //disabled={ detail?.orderStatus !== OrderStatus.PENDING } - >SMS ์žฌ์ „์†ก + >{t('additionalService.ars.smsResend')}
)}
diff --git a/src/locales/en.json b/src/locales/en.json index 36f1693..5d1c48c 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -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", diff --git a/src/locales/ko.json b/src/locales/ko.json index 186a22a..3dd2304 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -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": "์ง€๊ธ‰๋Œ€ํ–‰",