알림톡 상세 및 설정 페이지 다국어 지원 추가

알림톡 상세 페이지와 설정 페이지에 대한 다국어 지원을 추가했습니다.

변경사항:
- 상세 페이지: 페이지 타이틀, 거래 정보 레이블 다국어화
- 설정 페이지: 페이지 타이틀, 안내 문구, 폼 레이블, 서비스 종류, 버튼, 메시지 다국어화

번역 키 추가:
- detailTitle: 알림톡 발송 상세 / Alimtalk Send Detail
- transactionInfo: 거래 정보 / Transaction Information
- serviceName, sendKind, buyerName, paymentService, notificationDivision, sendDivision
- settingNotice1, settingNotice2: 설정 안내 문구
- merchant, sendToMerchant, sendToCustomer
- 서비스 종류: creditCardApproval, creditCardCancel, bankTransferApproval, bankTransferCancel, virtualAccountDepositRequest, virtualAccountDepositComplete, virtualAccountRefund
- saveSuccess, saveFailed, unknownError

🤖 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-03 17:17:40 +09:00
parent 8ee78fb7b2
commit 6b4e963fe8
3 changed files with 51 additions and 26 deletions

View File

@@ -1056,6 +1056,7 @@
},
"alimtalk": {
"title": "Alimtalk Payment Notification",
"detailTitle": "Alimtalk Send Detail",
"buyer": "Buyer",
"depositRequest": "Deposit Request",
"depositComplete": "Deposit Complete",
@@ -1065,7 +1066,29 @@
"notificationCategory": "Notification Category",
"sendType": "Send Type",
"sendCategory": "Send Category",
"serviceSetting": "Service Settings"
"serviceSetting": "Service Settings",
"transactionInfo": "Transaction Information",
"serviceName": "Service Name",
"sendKind": "Send Type",
"buyerName": "Buyer Name",
"paymentService": "Payment Service",
"notificationDivision": "Notification Division",
"sendDivision": "Send Division",
"settingNotice1": "You can set the recipients for Alimtalk notifications.",
"settingNotice2": "Please configure the recipients and types for Alimtalk notifications.",
"merchant": "Merchant",
"sendToMerchant": "Send to Merchant",
"sendToCustomer": "Send to Customer",
"creditCardApproval": "Credit Card (Approval)",
"creditCardCancel": "Credit Card (Cancel)",
"bankTransferApproval": "Bank Transfer (Approval)",
"bankTransferCancel": "Bank Transfer (Cancel)",
"virtualAccountDepositRequest": "Virtual Account (Deposit Request)",
"virtualAccountDepositComplete": "Virtual Account (Deposit Complete)",
"virtualAccountRefund": "Virtual Account (Refund)",
"saveSuccess": "Saved successfully.",
"saveFailed": "Save failed.",
"unknownError": "Unknown error"
},
"payout": {
"title": "Payout",

View File

@@ -38,7 +38,7 @@ export const AlimtalkDetailPage = () => {
});
};
useSetHeaderTitle('알림톡 발송 상세');
useSetHeaderTitle(t('additionalService.alimtalk.detailTitle'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
@@ -67,7 +67,7 @@ export const AlimtalkDetailPage = () => {
</div>
<div className="detail-divider"></div>
<div className="pay-detail">
<div className="detail-title"> </div>
<div className="detail-title">{t('additionalService.alimtalk.transactionInfo')}</div>
<ul className="kv-list">
<li className="kv-row">
<span className="k">MID</span>
@@ -78,27 +78,27 @@ export const AlimtalkDetailPage = () => {
<span className="v">{ detail?.tid }</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.alimtalk.serviceName')}</span>
<span className="v">{ detail?.extensionServiceName }</span>
</li>
<li className="kv-row">
<span className="k"> </span>
<span className="k">{t('additionalService.alimtalk.sendKind')}</span>
<span className="v">{ getAlimtalkSendTypeText(t)(detail?.sendType) }</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.alimtalk.buyerName')}</span>
<span className="v">{detail?.receiverName }</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.alimtalk.paymentService')}</span>
<span className="v">{ getAlimtalkServiceCodeText(t)(detail?.serviceCode) }</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.alimtalk.notificationDivision')}</span>
<span className="v">{ getAlimtalkAlimClText(t)(detail?.alimCl) }</span>
</li>
<li className="kv-row">
<span className="k"></span>
<span className="k">{t('additionalService.alimtalk.sendDivision')}</span>
<span className="v">{ getAlimtalkSendClTypeText(t)(detail?.sendCl) }</span>
</li>
</ul>

View File

@@ -23,8 +23,10 @@ import { useEffect, useState } from 'react';
import { AlimTalkSettingServiceRow } from '@/entities/additional-service/ui/alimtalk/setting-service-row';
import { useStore } from '@/shared/model/store';
import { snackBar } from '@/shared/lib';
import { useTranslation } from 'react-i18next';
export const AlimtalkSettingPage = () => {
const { t } = useTranslation();
const { navigate } = useNavigate();
const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids;
const userMid = useStore.getState().UserStore.mid;
@@ -104,15 +106,15 @@ export const AlimtalkSettingPage = () => {
};
alimtalkSettingSave(params)
.then((rs) => {
snackBar("저장을 성공하였습니다.");
snackBar(t('additionalService.alimtalk.saveSuccess'));
})
.catch((error) => {
const failReason = error?.response?.data?.message || error?.message || "알 수 없는 오류";
snackBar(`[실패] ${failReason}`);
const failReason = error?.response?.data?.message || error?.message || t('additionalService.alimtalk.unknownError');
snackBar(`[${t('common.failed')}] ${failReason}`);
});
};
useSetHeaderTitle('알림톡 결제통보');
useSetHeaderTitle(t('additionalService.alimtalk.title'));
useSetHeaderType(HeaderType.LeftArrow);
useSetFooterMode(false);
useSetOnBack(() => {
@@ -150,12 +152,12 @@ export const AlimtalkSettingPage = () => {
<div className="option-list">
<div className="service-settings">
<div className="service-notice">
<div> .</div>
<div> .</div>
<div>{t('additionalService.alimtalk.settingNotice1')}</div>
<div>{t('additionalService.alimtalk.settingNotice2')}</div>
</div>
<div className="service-merchant">
<div className="service-title"></div>
<div className="service-title">{t('additionalService.alimtalk.merchant')}</div>
<div className="service-select">
<select
value={mid}
@@ -175,56 +177,56 @@ export const AlimtalkSettingPage = () => {
<div className="service-section">
<div className="service-row align-right">
<span> </span>
<span> </span>
<span>{t('additionalService.alimtalk.sendToMerchant')}</span>
<span>{t('additionalService.alimtalk.sendToCustomer')}</span>
</div>
</div>
<div className="service-section">
<AlimTalkSettingServiceRow
title='신용카드(승인)'
title={t('additionalService.alimtalk.creditCardApproval')}
merchantFlag={merchantCardApprovalFlag}
userFlag={userCardApprovalFlag}
setMerchantFlag={setMerchantCardApprovalFlag}
setUserFlag={setUserCardApprovalFlag}
></AlimTalkSettingServiceRow>
<AlimTalkSettingServiceRow
title='신용카드(취소)'
title={t('additionalService.alimtalk.creditCardCancel')}
merchantFlag={merchantCardCancelFlag}
userFlag={userCardCancelFlag}
setMerchantFlag={setMerchantCardCancelFlag}
setUserFlag={setUserCardCancelFlag}
></AlimTalkSettingServiceRow>
<AlimTalkSettingServiceRow
title='계좌이체(승인)'
title={t('additionalService.alimtalk.bankTransferApproval')}
merchantFlag={merchantBankApprovalFlag}
userFlag={userBankApprovalFlag}
setMerchantFlag={setMerchantBankApprovalFlag}
setUserFlag={setUserBankApprovalFlag}
></AlimTalkSettingServiceRow>
<AlimTalkSettingServiceRow
title='계좌이체(취소)'
title={t('additionalService.alimtalk.bankTransferCancel')}
merchantFlag={merchantBankCancelFlag}
userFlag={userBankCancelFlag}
setMerchantFlag={setMerchantBankCancelFlag}
setUserFlag={setUserBankCancelFlag}
></AlimTalkSettingServiceRow>
<AlimTalkSettingServiceRow
title='가상계좌(입금요청)'
title={t('additionalService.alimtalk.virtualAccountDepositRequest')}
merchantFlag={merchantVirtureAccountDepositRequestFlag}
userFlag={userVirtureAccountDepositRequestFlag}
setMerchantFlag={setMerchantVirtureAccountDepositRequestFlag}
setUserFlag={setUserVirtureAccountDepositRequestFlag}
></AlimTalkSettingServiceRow>
<AlimTalkSettingServiceRow
title='가상계좌(입금완료)'
title={t('additionalService.alimtalk.virtualAccountDepositComplete')}
merchantFlag={merchantVirtureAccountDepositCompleteFlag}
userFlag={userVirtureAccountDepositCompleteFlag}
setMerchantFlag={setMerchantVirtureAccountDepositCompleteFlag}
setUserFlag={setUserVirtureAccountDepositCompleteFlag}
></AlimTalkSettingServiceRow>
<AlimTalkSettingServiceRow
title='가상계좌(환불)'
title={t('additionalService.alimtalk.virtualAccountRefund')}
merchantFlag={merchantVirtureAccountRefundFlag}
userFlag={userVirtureAccountRefundFlag}
setMerchantFlag={setMerchantVirtureAccountRefundFlag}
@@ -237,7 +239,7 @@ export const AlimtalkSettingPage = () => {
<button
className="btn-50 btn-blue flex-1"
onClick={() => onClickToSave()}
></button>
>{t('common.save')}</button>
</div>
</div>
</div>