From 405b6f1e3834ec8f7ae357d1f09ef2411ad7dfa7 Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Mon, 3 Nov 2025 15:58:16 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A7=81=ED=81=AC=EA=B2=B0=EC=A0=9C=20?= =?UTF-8?q?=EC=8B=A0=EC=B2=AD=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A7=80=EC=9B=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 링크결제 신청, 확인, 완료 페이지 현지화 - 메시지 미리보기 텍스트 번역 - 에러 메시지 및 버튼 다국어 적용 - 한글/영문 번역 키 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/locales/en.json | 9 ++++++ src/locales/ko.json | 9 ++++++ .../apply/link-payment-apply-confirm-page.tsx | 32 +++++++++---------- .../apply/link-payment-apply-page.tsx | 10 +++--- .../apply/link-payment-apply-success-page.tsx | 12 ++++--- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 255d496..7261a68 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1043,6 +1043,15 @@ "applyTitle": "Link Payment Request", "messagePreview": "Message Preview", "separateApprovalTitle": "Separate Approval Detail", + "previous": "Previous", + "next": "Next", + "requestProcessingError": "Unable to process request.", + "requestError": "An error occurred during request", + "confirmSendMessage": "Please confirm\nthe message to be sent", + "paymentRequestComplete": "Payment request has been completed.", + "merchantName": "Merchant Name", + "customerGreeting": "Hello, {buyerName}!", + "paymentGuideMessage": "NICEPAYMENTS Co., Ltd. is notifying you\nof the payment details.\nYou can check the details and proceed with payment by accessing the URL below.", "resendSuccess": "Resend successful.", "resendFailed": "Resend failed.", "resendError": "An error occurred during resend.", diff --git a/src/locales/ko.json b/src/locales/ko.json index d4ecf40..7f4b92f 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1043,6 +1043,15 @@ "applyTitle": "링크결제 신청", "messagePreview": "메시지 미리보기", "separateApprovalTitle": "분리승인 상세", + "previous": "이전", + "next": "다음", + "requestProcessingError": "요청을 처리할 수 없습니다.", + "requestError": "요청 중 오류가 발생했습니다", + "confirmSendMessage": "발송 메시지를\n최종 확인하세요", + "paymentRequestComplete": "결제 신청이 완료되었습니다.", + "merchantName": "가맹점 상호", + "customerGreeting": "{buyerName} 고객님, 안녕하세요?", + "paymentGuideMessage": "나이스페이먼츠 주식회사에서\n결제하실 내역 안내드립니다.\n아래 URL로 접속하시면 상세 내역 확인과 결제 진행이 가능합니다.", "resendSuccess": "재발송을 성공하였습니다.", "resendFailed": "재발송을 실패하였습니다.", "resendError": "재발송 중 오류가 발생했습니다.", diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx index 4381a08..59d17b0 100644 --- a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx +++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { HeaderType } from '@/entities/common/model/types'; import { useSetFooterMode, useSetHeaderTitle, useSetHeaderType } from '@/widgets/sub-layout/use-sub-layout'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; @@ -9,13 +10,14 @@ import { ExtensionLinkPayRequestParams, ExtensionLinkPayRequestResponse, LinkPay import { snackBar } from '@/shared/lib'; export const LinkPaymentApplyConfirmPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const location = useLocation(); const formData: LinkPaymentFormData = location.state?.formData; const { mutateAsync: linkPayRequest } = useExtensionLinkPayRequestMutation(); - useSetHeaderTitle('메시지 미리보기'); + useSetHeaderTitle(t('additionalService.linkPayment.messagePreview')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); @@ -53,16 +55,16 @@ export const LinkPaymentApplyConfirmPage = () => { navigate(PATHS.additionalService.linkPayment.confirmSuccess); } else { // 일반 에러 메시지 - const errorMessage = rs.error?.message || '요청을 처리할 수 없습니다.'; - snackBar(`[실패] ${errorMessage}`); + const errorMessage = rs.error?.message || t('additionalService.linkPayment.requestProcessingError'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); } }) .catch((error) => { // 네트워크 에러 등 예외 상황 const errorMessage = error?.response?.data?.error?.message || error?.message || - '요청 중 오류가 발생했습니다'; - snackBar(`[실패] ${errorMessage}`); + t('additionalService.linkPayment.requestError'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); }); }; @@ -76,20 +78,18 @@ export const LinkPaymentApplyConfirmPage = () => {
-

발송 메시지를
최종 확인하세요

+

{t('additionalService.linkPayment.confirmSendMessage')}

- {formData.buyerName} 고객님, 안녕하세요?
- 나이스페이먼츠 주식회사에서
- 결제하실 내역 안내드립니다.
- 아래 URL로 접속하시면 상세 내역 확인과 결제 진행이 가능합니다.

+ {t('additionalService.linkPayment.customerGreeting', { buyerName: formData.buyerName })}
+ {t('additionalService.linkPayment.paymentGuideMessage')}

!${pay_url}

- 가맹점 상호 : 나이스페이먼츠 주식회사
- 상품명 : {formData.goodsName}
- 금액 : {formData.amount.toLocaleString()}원 + {t('additionalService.linkPayment.merchantName')} : 나이스페이먼츠 주식회사
+ {t('transaction.fields.productName')} : {formData.goodsName}
+ {t('transaction.fields.amount')} : {formData.amount.toLocaleString()}{t('common.currencyUnit')}

@@ -100,11 +100,11 @@ export const LinkPaymentApplyConfirmPage = () => { + >{t('additionalService.linkPayment.previous')} + >{t('additionalService.linkPay.paymentRequest')}
diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx index 1b2ea8f..2752cea 100644 --- a/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx +++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx @@ -1,4 +1,5 @@ import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { LinkPaymentStep1 } from '@/entities/additional-service/ui/link-payment/apply/link-payment-step1'; import { LinkPaymentStep2 } from '@/entities/additional-service/ui/link-payment/apply/link-payment-step2'; import { HeaderType } from '@/entities/common/model/types'; @@ -14,6 +15,7 @@ import moment from 'moment'; export const LinkPaymentApplyPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids; @@ -43,7 +45,7 @@ export const LinkPaymentApplyPage = () => { linkContentType: LinkContentType.BASIC }); - useSetHeaderTitle('링크결제 신청'); + useSetHeaderTitle(t('additionalService.linkPayment.applyTitle')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); @@ -144,7 +146,7 @@ export const LinkPaymentApplyPage = () => { className="btn-50 btn-blue flex-1" onClick={() => onClickToChangeTab()} disabled={!isStep1Valid()} - >다음 + >{t('additionalService.linkPayment.next')}
} {(processStep === ProcessStep.Two) && @@ -152,12 +154,12 @@ export const LinkPaymentApplyPage = () => { + >{t('additionalService.linkPayment.previous')} + >{t('additionalService.linkPay.paymentRequest')} } diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-success-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-success-page.tsx index a3d5dd5..7ed2721 100644 --- a/src/pages/additional-service/link-payment/apply/link-payment-apply-success-page.tsx +++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-success-page.tsx @@ -1,12 +1,14 @@ +import { useTranslation } from 'react-i18next'; import { HeaderType } from '@/entities/common/model/types'; import { useSetFooterMode, useSetHeaderTitle, useSetHeaderType } from '@/widgets/sub-layout/use-sub-layout'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { PATHS } from "@/shared/constants/paths"; export const LinkPaymentApplySuccessPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); - useSetHeaderTitle('링크결제 신청'); + useSetHeaderTitle(t('additionalService.linkPayment.applyTitle')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); @@ -20,15 +22,15 @@ export const LinkPaymentApplySuccessPage = () => {

- 링크결제
- 결제 신청이 완료되었습니다. + {t('additionalService.linkPayment.title')}
+ {t('additionalService.linkPayment.paymentRequestComplete')}

- + >{t('common.confirm')}