From 25fe5f75c45aa76f5d74dda71b6b9ba66b09a1f8 Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Fri, 31 Oct 2025 11:09:40 +0900 Subject: [PATCH] Apply localization to account-holder-search pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace hardcoded Korean text with i18n translation keys - Update page titles, form labels, and button text - Localize error messages and console logs - Apply to list page, detail page, and request page - Support dynamic language switching (ko/en) πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../account-holder-search-page.tsx | 12 ++++---- .../account-holder-search/detail-page.tsx | 18 +++++------ .../account-holder-search/request-page.tsx | 30 ++++++++++--------- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx b/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx index 6fce432..2c99a42 100644 --- a/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx +++ b/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx @@ -51,7 +51,7 @@ export const AccountHolderSearchPage = () => { const [resultStatus, setResultStatus] = useState(AccountHolderResultStatus.ALL); const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false); - useSetHeaderTitle('κ³„μ’Œμ„±λͺ…μ‘°νšŒ'); + useSetHeaderTitle(t('additionalService.services.accountHolderSearch')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -196,11 +196,11 @@ export const AccountHolderSearchPage = () => { /> @@ -211,7 +211,7 @@ export const AccountHolderSearchPage = () => { > λ‹€μš΄λ‘œλ“œ @@ -222,8 +222,8 @@ export const AccountHolderSearchPage = () => { sortType={sortType} onClickToSort={onClickToSort} sortOptions={[ - { key: SortTypeKeys.LATEST, label: 'μ΅œμ‹ μˆœ' }, - { key: SortTypeKeys.OLDEST, label: '였래된순' } + { key: SortTypeKeys.LATEST, label: t('common.latest') }, + { key: SortTypeKeys.OLDEST, label: t('common.oldest') } ]} >
diff --git a/src/pages/additional-service/account-holder-search/detail-page.tsx b/src/pages/additional-service/account-holder-search/detail-page.tsx index 1ed654f..b571c70 100644 --- a/src/pages/additional-service/account-holder-search/detail-page.tsx +++ b/src/pages/additional-service/account-holder-search/detail-page.tsx @@ -27,7 +27,7 @@ export const AccountHolderSearchDetailPage = () => { const [detail, setDetail] = useState(); - useSetHeaderTitle('κ³„μ’Œμ„±λͺ…μ‘°νšŒ 상세'); + useSetHeaderTitle(t('additionalService.services.accountHolderSearch') + ' ' + t('common.detail')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -67,34 +67,34 @@ export const AccountHolderSearchDetailPage = () => {
-
상세 정보
+
{t('transaction.fields.detailInfo')}
  • - 예금주 + {t('transaction.fields.accountHolder')} {detail?.accountName}
  • - 쑰회 μΌμ‹œ + {t('additionalService.accountHolderAuth.requestDate')} {getDate(detail?.requestDate)}
  • - κ²°κ³Ό + {t('common.result')} {getAccountHolderStatusText(t)(detail?.resultStatus)}
  • - μ‹€νŒ¨μ‚¬μœ  + {t('transaction.fields.failureReason')} {detail?.failReason ? detail?.failReason : '-' }
  • - 은행 + {t('transaction.fields.bank')} {detail?.bankName}
  • - κ³„μ’Œλ²ˆν˜Έ + {t('transaction.fields.accountNo')} {detail?.accountNo}
  • - μš”μ²­ ꡬ뢄 + {t('additionalService.accountHolderAuth.requestWay')} {detail?.requestWay}
diff --git a/src/pages/additional-service/account-holder-search/request-page.tsx b/src/pages/additional-service/account-holder-search/request-page.tsx index 37b8fc8..86e7719 100644 --- a/src/pages/additional-service/account-holder-search/request-page.tsx +++ b/src/pages/additional-service/account-holder-search/request-page.tsx @@ -13,14 +13,16 @@ import { ExtensionAccountHolderSearchRequestParams } from '@/entities/additional import { useStore } from '@/shared/model/store'; import { NumericFormat } from 'react-number-format'; import { snackBar } from '@/shared/lib'; +import { useTranslation } from 'react-i18next'; export const AccountHolderSearchRequestPage = () => { const { navigate } = useNavigate(); + const { t } = useTranslation(); const userMid = useStore.getState().UserStore.mid; const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids; const bankList = useStore.getState().CommonStore.bankList - useSetHeaderTitle('κ³„μ’Œμ„±λͺ…μ‘°νšŒ μ‹ μ²­'); + useSetHeaderTitle(t('additionalService.services.accountHolderSearch') + ' ' + t('common.request')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -58,25 +60,25 @@ export const AccountHolderSearchRequestPage = () => { accountNo: formData.accountNo } - console.log("κ³„μ’Œμ„±λͺ… 쑰회 μ‘°νšŒμ‹ μ²­ μš”μ²­ νŒŒλΌλ―Έν„° : ", reuqestParams); + console.log("Account holder search request params: ", reuqestParams); accountHolderSearchRequest(reuqestParams) .then((response) => { if (response.status) { - console.log("κ³„μ’Œμ„±λͺ… 쑰회 쑰회 μ‹ μ²­ 성곡 응닡: ", response.status) - snackBar("κ³„μ’Œμ„±λͺ… 쑰회 신청을 μ„±κ³΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€.") + console.log("Account holder search request success: ", response.status) + snackBar(t('common.requestSuccess')) navigate(PATHS.additionalService.accountHolderSearch.list); } else { - const errorMessage = response.error?.message || 'κ³„μ’Œμ„±λͺ… 쑰회 신청이 μ‹€νŒ¨ν•˜μ˜€μŠ΅λ‹ˆλ‹€.'; - snackBar(`[μ‹€νŒ¨] ${errorMessage}`); + const errorMessage = response.error?.message || t('common.requestFailed'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); } }) .catch((error) => { - console.error("κ³„μ’Œμ„±λͺ… 쑰회 쑰회 μ‹ μ²­ μ‹€νŒ¨: ", error) + console.error("Account holder search request failed: ", error) const errorMessage = error?.response?.data?.error?.message || error?.message || - 'κ³„μ’Œμ„±λͺ… 쑰회 μ‹ μ²­ 쀑 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.'; - snackBar(`[μ‹€νŒ¨] ${errorMessage}`); + t('common.errorOccurred'); + snackBar(`[${t('common.failed')}] ${errorMessage}`); }) }; @@ -96,7 +98,7 @@ export const AccountHolderSearchRequestPage = () => {
-
가맹점
+
{t('filter.merchant')}
handleInputChange('bankCode', e.target.value)}> - + { bankList .filter((bank) => bank.code1 !== '****') @@ -131,7 +133,7 @@ export const AccountHolderSearchRequestPage = () => {
-
κ³„μ’Œλ²ˆν˜Έ
+
{t('transaction.fields.accountNo')}
{ className="btn-50 btn-blue flex-1" disabled={!isFormValid()} onClick={() => onClickToRequest()} - >μ‹ μ²­ + >{t('common.request')}