부가서비스 페이지 및 컴포넌트 다국어화 완료

- 부가서비스 메인 페이지 다국어화
  * 헤더 타이틀, 사용중인 서비스/신청 가능한 서비스 섹션
  * 비활성 서비스 안내 메시지
- 부가서비스 공통 컴포넌트 다국어화
  * list-item: 11개 서비스의 상태 라벨 (성공, 실패, 요청, 재발송)
  * title-info-wrap: 서비스 정보 표시
- 정산대행 페이지 다국어화 (5개 페이지)
  * 관리, 입금, 회원, 상세 페이지 헤더
  * 상세 페이지: 입금 확인, 정산 정보, 수수료 정보 등 17개 필드
  * 상태 변경 이력: 출금 실패, 동의 완료, 동의 만료 등
- 서비스별 상세 페이지 통화 표기 개선 (4개 페이지)
  * ARS, 펀드계좌(이체/결과), 페이아웃 상세 페이지
- 전체 통화 표기 통일 (11개 인스턴스)
  * 한국어: 100,000원 (suffix)
  * 영어: ₩100,000 (prefix)
- 번역 키 추가: additionalService 네임스페이스 51+ 키
  * 공통 상태 라벨, 11개 서비스명 및 설명
  * 정산대행 전용 21개 키
- 지원 서비스: SMS결제, ARS결제, KEY-IN결제, 계좌조회/인증,
  페이아웃, 정산대행, 링크결제, 펀드계좌, 알림톡, 안면인증

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-10-29 18:22:09 +09:00
parent 3f0ab49a3d
commit f0a157b2c3
13 changed files with 217 additions and 60 deletions

View File

@@ -1,4 +1,5 @@
import { NumericFormat } from 'react-number-format';
import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { ListItemProps, AdditionalServiceCategory } from '../model/types';
@@ -36,6 +37,7 @@ export const ListItem = ({
onResendClick
}: ListItemProps) => {
const { navigate } = useNavigate();
const { t, i18n } = useTranslation();
const getItemClass = () => {
let rs = '';
if (paymentStatus === '') {
@@ -532,19 +534,19 @@ export const ListItem = ({
if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) {
rs.push(
<div className={`status-label ${resultStatus === 'SUCCESS' ? 'success' : 'fail'}`}>
{resultStatus === 'SUCCESS' ? '성공' : '실패'}
{resultStatus === 'SUCCESS' ? t('additionalService.common.success') : t('additionalService.common.fail')}
</div>
);
}
else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) {
rs.push(
<div className={`status-label ${authResult === 'SUCCESS' ? 'success' : 'fail'}`}>
{authResult === 'SUCCESS' ? '성공' : '실패'}
{authResult === 'SUCCESS' ? t('additionalService.common.success') : t('additionalService.common.fail')}
</div>
);
}
else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) {
const statusText = authStatus === 'REQUEST' ? '요청' : authStatus === 'SUCCESS' ? '성공' : '실패';
const statusText = authStatus === 'REQUEST' ? t('additionalService.common.request') : authStatus === 'SUCCESS' ? t('additionalService.common.success') : t('additionalService.common.fail');
const statusClass = authStatus === 'SUCCESS' || 'REQUEST' ? 'success' : 'fail';
rs.push(
<div className={`status-label ${statusClass}`}>
@@ -559,7 +561,8 @@ export const ListItem = ({
value={amount}
thousandSeparator
displayType="text"
suffix='원'
prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''}
suffix={i18n.language === 'en' ? '' : t('home.currencyWon')}
></NumericFormat>
</div>
);
@@ -573,7 +576,8 @@ export const ListItem = ({
value={amount}
thousandSeparator
displayType="text"
suffix='원'
prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''}
suffix={i18n.language === 'en' ? '' : t('home.currencyWon')}
></NumericFormat>
</div>
);
@@ -588,7 +592,8 @@ export const ListItem = ({
value={amount}
thousandSeparator
displayType="text"
suffix='원'
prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''}
suffix={i18n.language === 'en' ? '' : t('home.currencyWon')}
></NumericFormat>
</div>
);
@@ -605,7 +610,8 @@ export const ListItem = ({
value={amount}
thousandSeparator
displayType="text"
suffix='원'
prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''}
suffix={i18n.language === 'en' ? '' : t('home.currencyWon')}
></NumericFormat>
</div>
);
@@ -620,7 +626,8 @@ export const ListItem = ({
value={amount}
thousandSeparator
displayType="text"
suffix='원'
prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''}
suffix={i18n.language === 'en' ? '' : t('home.currencyWon')}
></NumericFormat>
</div>
);
@@ -637,7 +644,7 @@ export const ListItem = ({
key="sms-payment-amount"
className={`status-label success`}
onClick={() => mid && onResendClick(mid, tid || '')}
>{'재발송'}</div>
>{t('additionalService.common.resend')}</div>
)
}
return rs;