From 04dc3a9ebb273517b448d4e1d40272e13cec468e Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Mon, 3 Nov 2025 15:42:27 +0900 Subject: [PATCH] =?UTF-8?q?SMS=20=EA=B2=B0=EC=A0=9C=20=ED=86=B5=EB=B3=B4?= =?UTF-8?q?=20=EB=8B=A4=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SMS 결제 통보 관련 컴포넌트에 i18n 적용 - 한글/영문 번역 키 추가 (ko.json, en.json) - sms-payment-detail-resend, sms-payment-filter, sms-payment-page 현지화 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../sms-payment/sms-payment-detail-resend.tsx | 26 ++++++++++--------- .../ui/sms-payment/sms-payment-filter.tsx | 22 +++++++++------- src/locales/en.json | 9 ++++++- src/locales/ko.json | 9 ++++++- .../sms-payment/sms-payment-page.tsx | 4 ++- 5 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx index f146806..ea4a4f3 100644 --- a/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx +++ b/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx @@ -1,4 +1,5 @@ import { motion } from 'framer-motion'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { SmsPaymentDetailResendProps } from '../../../additional-service/model/sms-payment/types'; import { useExtensionSmsResendMutation } from '../../api/sms-payment/use-extension-sms-resend-mutation'; @@ -12,7 +13,8 @@ export const SmsPaymentDetailResend = ({ mid, tid }: SmsPaymentDetailResendProps) => { - + const { t } = useTranslation(); + const variants = { hidden: { y: '100%' }, visible: { y: '0%' }, @@ -32,13 +34,13 @@ export const SmsPaymentDetailResend = ({ sendMessage: smsDetailData.sendMessage }).then((rs) => { if (rs.status) { - snackBar("SMS 발송을 성공하였습니다.") + snackBar(t('additionalService.sms.sendSuccess')) } else { - snackBar(`[실패] ${rs.error?.message}`) + snackBar(t('additionalService.sms.sendFailed', { message: rs.error?.message })) } setBottomSmsPaymentDetailResendOn(false); }).catch((error) => { - snackBar(`[실패] ${error?.response?.data?.message || error?.response?.data?.error?.message}` || '[실패] 신청을 실패하였습니다.') + snackBar(t('additionalService.sms.sendFailed', { message: error?.response?.data?.message || error?.response?.data?.error?.message }) || t('additionalService.sms.sendFailedGeneric')) }); } @@ -61,22 +63,22 @@ export const SmsPaymentDetailResend = ({ >
-

SMS 상세 & 재발송

-
-
발신자(번호) : {smsDetailData?.senderName || '-'}({smsDetailData?.senderNumber || '-'})
-
수신자(번호) : {smsDetailData?.receiverName || '-'}({smsDetailData?.receiverNumber || '-'})
+
{t('additionalService.sms.sender')} : {smsDetailData?.senderName || '-'}({smsDetailData?.senderNumber || '-'})
+
{t('additionalService.sms.receiver')} : {smsDetailData?.receiverName || '-'}({smsDetailData?.receiverNumber || '-'})

{smsDetailData?.sendMessage || '-'}

@@ -88,7 +90,7 @@ export const SmsPaymentDetailResend = ({ onClick={onClickResend} disabled={!smsDetailData?.sendMessage} > - 신청 + {t('common.request')}
diff --git a/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx index 2770560..2be3ee0 100644 --- a/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx +++ b/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx @@ -1,4 +1,5 @@ import moment from 'moment'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { motion } from 'framer-motion'; import { useState } from 'react'; @@ -28,6 +29,7 @@ export const SmsPaymentFilter = ({ setToDate, setSmsCl }: SmsPaymentFilterProps) => { + const { t } = useTranslation(); const [filterMid, setFilterMid] = useState(mid); const [filterSearchCl, setFilterSearchCl] = useState(searchCl); @@ -52,14 +54,14 @@ export const SmsPaymentFilter = ({ ]; let searchTypeOption = [ - { name: '주문자', value: SmsPaymentSearchCl.BUYER_NAME }, - { name: '수신번호', value: SmsPaymentSearchCl.RECEIVE_PHONE_NUMBER }, + { name: t('transaction.fields.buyerName'), value: SmsPaymentSearchCl.BUYER_NAME }, + { name: t('additionalService.sms.receivePhoneNumber'), value: SmsPaymentSearchCl.RECEIVE_PHONE_NUMBER }, ] let smsTypeOption = [ - { name: '전체', value: SmsCl.ALL }, - { name: '가상계좌\n요청', value: SmsCl.VACCOUNT_REQ }, - { name: '가상계좌\n요청+입금', value: SmsCl.VACCOUNT_REQ_DEPOSIT }, + { name: t('additionalService.sms.all'), value: SmsCl.ALL }, + { name: t('additionalService.sms.virtualAccountReqShort'), value: SmsCl.VACCOUNT_REQ }, + { name: t('additionalService.sms.virtualAccountReqDepositShort'), value: SmsCl.VACCOUNT_REQ_DEPOSIT }, ] const onClickToClose = () => { @@ -78,7 +80,7 @@ export const SmsPaymentFilter = ({ >
-
필터
+
{t('filter.filter')}
onClickToSetFilter()} - >적용 + >{t('filter.apply')}
diff --git a/src/locales/en.json b/src/locales/en.json index c5dfca0..8c49315 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -876,6 +876,7 @@ "canceled": "Canceled" }, "sms": { + "title": "SMS Payment Notification", "virtualAccountRequest": "Virtual Account Request", "virtualAccountRequestDeposit": "Virtual Account Request + Deposit", "smsDetailAndResend": "SMS Details & Resend", @@ -883,7 +884,13 @@ "receiver": "Receiver (Number)", "sendSuccess": "SMS sent successfully.", "sendFailed": "[Failed] {{message}}", - "sendFailedGeneric": "[Failed] Request failed." + "sendFailedGeneric": "[Failed] Request failed.", + "all": "All", + "virtualAccountReqShort": "Virtual Account\nRequest", + "virtualAccountReqDepositShort": "Virtual Account\nRequest+Deposit", + "buyerReceiveNumber": "Buyer,Receive Number", + "receivePhoneNumber": "Receive Phone Number", + "queryResult": "Query Result" }, "linkPay": { "sendRequest": "Send Request", diff --git a/src/locales/ko.json b/src/locales/ko.json index adf1584..623c786 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -876,6 +876,7 @@ "canceled": "취소완료" }, "sms": { + "title": "SMS 결제 통보", "virtualAccountRequest": "가상계좌 요청", "virtualAccountRequestDeposit": "가상계좌 요청 + 입금", "smsDetailAndResend": "SMS 상세 & 재발송", @@ -883,7 +884,13 @@ "receiver": "수신자(번호)", "sendSuccess": "SMS 발송을 성공하였습니다.", "sendFailed": "[실패] {{message}}", - "sendFailedGeneric": "[실패] 신청을 실패하였습니다." + "sendFailedGeneric": "[실패] 신청을 실패하였습니다.", + "all": "전체", + "virtualAccountReqShort": "가상계좌\n요청", + "virtualAccountReqDepositShort": "가상계좌\n요청+입금", + "buyerReceiveNumber": "주문자,수신번호", + "receivePhoneNumber": "수신번호", + "queryResult": "조회결과" }, "linkPay": { "sendRequest": "발송요청", diff --git a/src/pages/additional-service/sms-payment/sms-payment-page.tsx b/src/pages/additional-service/sms-payment/sms-payment-page.tsx index d4330cd..5d99992 100644 --- a/src/pages/additional-service/sms-payment/sms-payment-page.tsx +++ b/src/pages/additional-service/sms-payment/sms-payment-page.tsx @@ -1,5 +1,6 @@ import moment from 'moment'; import { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { SmsPaymentDetailResend } from '@/entities/additional-service/ui/sms-payment/sms-payment-detail-resend'; @@ -25,6 +26,7 @@ import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access import useIntersectionObserver from '@/widgets/intersection-observer'; export const SmsPaymentPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const userMid = useStore.getState().UserStore.mid; @@ -70,7 +72,7 @@ export const SmsPaymentPage = () => { onIntersect }); - useSetHeaderTitle('SMS 결제 통보'); + useSetHeaderTitle(t('additionalService.sms.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => {