From abb0843f518c814a04aa7c87387876494c6fa4eb Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Fri, 31 Oct 2025 10:23:04 +0900 Subject: [PATCH] Add localization for payment method and currency in transaction/settlement modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add payment method name localization mapping for both Korean and English - Support payment methods: Credit Card, Virtual Account, Account Transfer, Simple Account Transfer, Mobile Payment, SSG Money, SSG Bank Account, Culture Voucher, Tmoney Pay - Update transaction list to use localized currency format (ko: 9,999,999์›, en: โ‚ฉ9,999,999) - Apply localization to payment method dropdown options in filters and list pages - Update settlement transaction info to display localized payment method names ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/entities/settlement/model/constant.ts | 29 +++++++++++++++++- .../ui/info-wrap/transaction-info-wrap.tsx | 3 +- src/entities/transaction/model/contant.ts | 27 +++++++++++++++++ .../ui/filter/all-transaction-filter.tsx | 30 ++++++++++++++++++- src/entities/transaction/ui/list-item.tsx | 13 +++----- src/locales/en.json | 2 +- .../transaction/all-transaction/list-page.tsx | 27 +++++++++++++++-- 7 files changed, 115 insertions(+), 16 deletions(-) diff --git a/src/entities/settlement/model/constant.ts b/src/entities/settlement/model/constant.ts index d6d44f3..3700bf4 100644 --- a/src/entities/settlement/model/constant.ts +++ b/src/entities/settlement/model/constant.ts @@ -17,4 +17,31 @@ export const getSettlementPaymentMethodOptionsGroup = (t: TFunction) => [ {name: t('transaction.constants.ssgBank'), value: SettlementPaymentMethod.SSG_BANK_ACCOUNT}, {name: t('transaction.constants.cultureLand'), value: SettlementPaymentMethod.CULTURE_VOUCHER}, {name: t('transaction.constants.tmoneyPay'), value: SettlementPaymentMethod.TMONEY_PAY}, -]; \ No newline at end of file +]; + +export const getPaymentMethodName = (t: TFunction, paymentMethod?: string): string => { + if (!paymentMethod) return ''; + + const methodMap: Record = { + '์‹ ์šฉ์นด๋“œ': t('transaction.constants.creditCard'), + '๊ฐ€์ƒ๊ณ„์ขŒ': t('transaction.constants.virtualAccount'), + '๊ณ„์ขŒ์ด์ฒด': t('transaction.constants.accountTransfer'), + '๊ฐ„ํŽธ๊ณ„์ขŒ์ด์ฒด': t('transaction.constants.accountSimpleTransfer'), + 'ํœด๋Œ€ํฐ': t('transaction.constants.mobilePayment'), + 'SSG๋จธ๋‹ˆ': t('transaction.constants.ssgMoney'), + 'SSG์€ํ–‰๊ณ„์ขŒ': t('transaction.constants.ssgBank'), + '๋ฌธํ™”์ƒํ’ˆ๊ถŒ': t('transaction.constants.cultureLand'), + 'ํ‹ฐ๋จธ๋‹ˆํŽ˜์ด': t('transaction.constants.tmoneyPay'), + 'Credit Card': t('transaction.constants.creditCard'), + 'Virtual Account': t('transaction.constants.virtualAccount'), + 'Account Transfer': t('transaction.constants.accountTransfer'), + 'Simple Account Transfer': t('transaction.constants.accountSimpleTransfer'), + 'Mobile Payment': t('transaction.constants.mobilePayment'), + 'SSG Money': t('transaction.constants.ssgMoney'), + 'SSG Bank Account': t('transaction.constants.ssgBank'), + 'Culture Voucher': t('transaction.constants.cultureLand'), + 'Tmoney Pay': t('transaction.constants.tmoneyPay'), + }; + + return methodMap[paymentMethod] || paymentMethod; +}; \ No newline at end of file diff --git a/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx b/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx index 00057f2..ebbe1c9 100644 --- a/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx +++ b/src/entities/settlement/ui/info-wrap/transaction-info-wrap.tsx @@ -7,6 +7,7 @@ import { InfoWrapKeys, TransactionInfoWrapProps, } from '@/entities/settlement/model/types'; +import { getPaymentMethodName } from '@/entities/settlement/model/constant'; export const TransactionInfoWrap = ({ transactionInfo, @@ -51,7 +52,7 @@ export const TransactionInfoWrap = ({
  • {t('transaction.fields.paymentMethod')} - { transactionInfo?.paymentMethod } + { getPaymentMethodName(t, transactionInfo?.paymentMethod) }
  • {t('additionalService.settlementAgency.settlementDate')} diff --git a/src/entities/transaction/model/contant.ts b/src/entities/transaction/model/contant.ts index 69d994a..0978104 100644 --- a/src/entities/transaction/model/contant.ts +++ b/src/entities/transaction/model/contant.ts @@ -210,3 +210,30 @@ export const getBillingPaymentMethodBtnGroup = (t: TFunction) => [ {name: t('transaction.constants.virtualAccount'), value: BillingPaymentMethod.VIRTUAL_ACCOUNT}, {name: t('transaction.constants.mobilePayment'), value: BillingPaymentMethod.MOBILE_PAYMENT}, ]; + +export const getPaymentMethodName = (t: TFunction, paymentMethod?: string): string => { + if (!paymentMethod) return ''; + + const methodMap: Record = { + '์‹ ์šฉ์นด๋“œ': t('transaction.constants.creditCard'), + '๊ฐ€์ƒ๊ณ„์ขŒ': t('transaction.constants.virtualAccount'), + '๊ณ„์ขŒ์ด์ฒด': t('transaction.constants.accountTransfer'), + '๊ฐ„ํŽธ๊ณ„์ขŒ์ด์ฒด': t('transaction.constants.accountSimpleTransfer'), + 'ํœด๋Œ€ํฐ': t('transaction.constants.mobilePayment'), + 'SSG๋จธ๋‹ˆ': t('transaction.constants.ssgMoney'), + 'SSG์€ํ–‰๊ณ„์ขŒ': t('transaction.constants.ssgBank'), + '๋ฌธํ™”์ƒํ’ˆ๊ถŒ': t('transaction.constants.cultureLand'), + 'ํ‹ฐ๋จธ๋‹ˆํŽ˜์ด': t('transaction.constants.tmoneyPay'), + 'Credit Card': t('transaction.constants.creditCard'), + 'Virtual Account': t('transaction.constants.virtualAccount'), + 'Account Transfer': t('transaction.constants.accountTransfer'), + 'Simple Account Transfer': t('transaction.constants.accountSimpleTransfer'), + 'Mobile Payment': t('transaction.constants.mobilePayment'), + 'SSG Money': t('transaction.constants.ssgMoney'), + 'SSG Bank Account': t('transaction.constants.ssgBank'), + 'Culture Voucher': t('transaction.constants.cultureLand'), + 'Tmoney Pay': t('transaction.constants.tmoneyPay'), + }; + + return methodMap[paymentMethod] || paymentMethod; +}; diff --git a/src/entities/transaction/ui/filter/all-transaction-filter.tsx b/src/entities/transaction/ui/filter/all-transaction-filter.tsx index 70ec692..7d2c9e1 100644 --- a/src/entities/transaction/ui/filter/all-transaction-filter.tsx +++ b/src/entities/transaction/ui/filter/all-transaction-filter.tsx @@ -83,6 +83,34 @@ export const AllTransactionFilter = ({ const moidTidOptionsGroup = getAllTransactionMoidTidOptionsGroup(t); const allTransactionStatusCode = getAllTransactionStatusCode(t); + const getLocalizedServiceCodeName = (name?: string): string => { + if (!name) return ''; + + const nameMap: Record = { + '์ „์ฒด': t('transaction.constants.all'), + '์‹ ์šฉ์นด๋“œ': t('transaction.constants.creditCard'), + '๊ณ„์ขŒ์ด์ฒด': t('transaction.constants.accountTransfer'), + '๊ฐ€์ƒ๊ณ„์ขŒ': t('transaction.constants.virtualAccount'), + 'ํœด๋Œ€ํฐ': t('transaction.constants.mobilePayment'), + '๋ฌธํ™”์ƒํ’ˆ๊ถŒ': t('transaction.constants.cultureLand'), + '(๊ตฌ)SSG๋จธ๋‹ˆ': t('transaction.constants.ssgMoney'), + 'SSG์€ํ–‰๊ณ„์ขŒ๊ฒฐ์ œ': t('transaction.constants.ssgBank'), + '๊ณ„์ขŒ๊ฐ„ํŽธ๊ฒฐ์ œ': t('transaction.constants.accountSimpleTransfer'), + 'ํ‹ฐ๋จธ๋‹ˆํŽ˜์ด': t('transaction.constants.tmoneyPay'), + }; + + return nameMap[name] || name; + }; + + const getLocalizedServiceCodeOptions = () => { + if (!serviceCodeOptions) return []; + + return serviceCodeOptions.map(option => ({ + ...option, + name: getLocalizedServiceCodeName(option.name) + })); + }; + const onClickToClose = () => { setFilterOn(false); }; @@ -238,7 +266,7 @@ export const AllTransactionFilter = ({ title={t('filter.paymentMethod')} selectValue={ filterServiceCode } selectSetter={ onChangeServiceCode } - selectOptions={ serviceCodeOptions } + selectOptions={ getLocalizedServiceCodeOptions() } > } diff --git a/src/entities/transaction/ui/list-item.tsx b/src/entities/transaction/ui/list-item.tsx index 15edc04..387761b 100644 --- a/src/entities/transaction/ui/list-item.tsx +++ b/src/entities/transaction/ui/list-item.tsx @@ -4,7 +4,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { ListItemProps, TransactionCategory } from '../model/types'; import moment from 'moment'; import { useStore } from '@/shared/model/store'; -import { getAllTransactionStatusCode } from '../model/contant'; +import { getAllTransactionStatusCode, getPaymentMethodName } from '../model/contant'; import { useTranslation } from 'react-i18next'; export const ListItem = ({ @@ -179,7 +179,7 @@ export const ListItem = ({ | { transactionType } | - { paymentMethod } + { getPaymentMethodName(t, paymentMethod) } | { processResult } @@ -212,7 +212,7 @@ export const ListItem = ({ | { processResult } | - { paymentMethod } + { getPaymentMethodName(t, paymentMethod) } ); } @@ -233,12 +233,7 @@ export const ListItem = ({ { getDetail() }
    - + {t('home.money', { value: new Intl.NumberFormat('en-US').format(goodsAmount || amount || transactionAmount || 0) })}
    diff --git a/src/locales/en.json b/src/locales/en.json index 5faf48b..bd0284a 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -93,7 +93,7 @@ "periods": { "today": "Today", "week": "1 Week", - "currentMonth": "Current Month", + "currentMonth": "Current", "1month": "1 Month", "2months": "2 Months", "3months": "3 Months", diff --git a/src/pages/transaction/all-transaction/list-page.tsx b/src/pages/transaction/all-transaction/list-page.tsx index 20318fa..03c6e02 100644 --- a/src/pages/transaction/all-transaction/list-page.tsx +++ b/src/pages/transaction/all-transaction/list-page.tsx @@ -197,16 +197,37 @@ export const AllTransactionListPage = () => { let rs = []; if(!!serviceCodeOptions && serviceCodeOptions.length > 0) for(let i=0;i{ serviceCodeOptions[i]?.name } + value={option?.value} + >{ localizedName } ) } return rs; }; + const getLocalizedServiceCodeName = (name?: string): string => { + if (!name) return ''; + + const nameMap: Record = { + '์ „์ฒด': t('transaction.constants.all'), + '์‹ ์šฉ์นด๋“œ': t('transaction.constants.creditCard'), + '๊ณ„์ขŒ์ด์ฒด': t('transaction.constants.accountTransfer'), + '๊ฐ€์ƒ๊ณ„์ขŒ': t('transaction.constants.virtualAccount'), + 'ํœด๋Œ€ํฐ': t('transaction.constants.mobilePayment'), + '๋ฌธํ™”์ƒํ’ˆ๊ถŒ': t('transaction.constants.cultureLand'), + '(๊ตฌ)SSG๋จธ๋‹ˆ': t('transaction.constants.ssgMoney'), + 'SSG์€ํ–‰๊ณ„์ขŒ๊ฒฐ์ œ': t('transaction.constants.ssgBank'), + '๊ณ„์ขŒ๊ฐ„ํŽธ๊ฒฐ์ œ': t('transaction.constants.accountSimpleTransfer'), + 'ํ‹ฐ๋จธ๋‹ˆํŽ˜์ด': t('transaction.constants.tmoneyPay'), + }; + + return nameMap[name] || name; + }; + useEffect(() => { callServiceCodeOptions(); }, []);