diff --git a/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx b/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx index 04fdb3e..6941c74 100644 --- a/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx +++ b/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx @@ -5,6 +5,7 @@ import { NumericFormat } from "react-number-format"; import { SlideDown } from 'react-slidedown'; import 'react-slidedown/lib/slidedown.css'; import { useEffect, useState } from "react"; +import { useTranslation } from 'react-i18next'; export interface VatReturnListDetailBottomSheetProps { bottomSheetOn: boolean; @@ -25,7 +26,7 @@ export const VatReturnListDetailBottomSheet = ({ vatAmount, totalAmount }: VatReturnListDetailBottomSheetProps) => { - + const { t, i18n } = useTranslation(); const [isOpenDetail, setIsOpenDetail] = useState>([]); const onClickToClose = () => { @@ -48,14 +49,14 @@ export const VatReturnListDetailBottomSheet = ({
-

세부내역 조회

- @@ -66,46 +67,50 @@ export const VatReturnListDetailBottomSheet = ({
-
거래금액 :
+
{t('vatReturn.transactionAmount')} :
-
공급가액 :
+
{t('vatReturn.supplyAmount')} :
-
VAT :
+
{t('vatReturn.vat')} :
-
합계금액 :
+
{t('vatReturn.totalAmount')} :
@@ -113,8 +118,8 @@ export const VatReturnListDetailBottomSheet = ({ { breakdown && breakdown.length > 0 &&
-
거래일
-
합계금액
+
{t('vatReturn.transactionDate')}
+
{t('vatReturn.totalAmount')}
{ breakdown.map((value, index) => ( @@ -125,14 +130,15 @@ export const VatReturnListDetailBottomSheet = ({
- openDetail(index) } /> @@ -142,33 +148,36 @@ export const VatReturnListDetailBottomSheet = ({ { isOpenDetail[index] &&
- 거래금액 - 공급가액 - VAT + {t('vatReturn.transactionAmount')} + {t('vatReturn.supplyAmount')} + {t('vatReturn.vat')}
diff --git a/src/entities/vat-return/ui/list-item.tsx b/src/entities/vat-return/ui/list-item.tsx index b36b2c6..40a2965 100644 --- a/src/entities/vat-return/ui/list-item.tsx +++ b/src/entities/vat-return/ui/list-item.tsx @@ -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 } from '../model/types'; @@ -12,6 +13,7 @@ export const ListItem = ({ paymentMethod, amount }: ListItemProps) => { + const { t, i18n } = useTranslation(); const { navigate } = useNavigate(); const onClickToNavigate = () => { @@ -41,11 +43,12 @@ export const ListItem = ({
+ prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''} + suffix={i18n.language === 'en' ? '' : t('home.currencyWon')} + >
diff --git a/src/entities/vat-return/ui/list-wrap.tsx b/src/entities/vat-return/ui/list-wrap.tsx index c1a2a0a..0cab181 100644 --- a/src/entities/vat-return/ui/list-wrap.tsx +++ b/src/entities/vat-return/ui/list-wrap.tsx @@ -1,16 +1,17 @@ import moment from 'moment'; import { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { ListFilter } from './filter/list-filter'; import { SortTypeBox } from '@/entities/common/ui/sort-type-box'; import { DefaultRequestPagination, SortTypeKeys } from '@/entities/common/model/types'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; -import { - VatReturnListContent, - VatReturnListParams, - VatReturnListResponse, - VatReturnReceiptType, - VatReturnTargetType +import { + VatReturnListContent, + VatReturnListParams, + VatReturnListResponse, + VatReturnReceiptType, + VatReturnTargetType } from '../model/types'; import { useVatReturnListMutation } from '../api/use-vat-return-list-mutation'; import { ListDateGroup } from './list-date-group'; @@ -19,6 +20,7 @@ import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; import useIntersectionObserver from '@/widgets/intersection-observer'; export const ListWrap = () => { + const { t } = useTranslation(); const userMid = useStore.getState().UserStore.mid; const [onActionIntersect, setOnActionIntersect] = useState(false); @@ -175,20 +177,20 @@ export const ListWrap = () => { value={ moment(startMonth+'01').format('YYYY.MM') + '-' + moment(endMonth+'01').format('YYYY.MM')} readOnly={ true } /> -
diff --git a/src/entities/vat-return/ui/reference-request-fail.tsx b/src/entities/vat-return/ui/reference-request-fail.tsx index 4a44781..5206108 100644 --- a/src/entities/vat-return/ui/reference-request-fail.tsx +++ b/src/entities/vat-return/ui/reference-request-fail.tsx @@ -1,5 +1,6 @@ import { motion } from 'framer-motion'; -import { +import { useTranslation } from 'react-i18next'; +import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants @@ -16,6 +17,7 @@ export const ReferenceRequestFail = ({ setPageOn, errorMsg }: ReferenceRequestFailProps) => { + const { t } = useTranslation(); const onClickToClose = () => { setPageOn(false); }; @@ -35,27 +37,27 @@ export const ReferenceRequestFail = ({ style={{ margin: '0 auto' }} >
-

- 부가세 참고 자료 + {t('vatReturn.vatReferenceData')}
- 신청 실패하였습니다 + {t('vatReturn.requestFailed')}

- 결과 : + {t('vatReturn.result')} : { errorMsg }

- + >{t('common.confirm')}
diff --git a/src/entities/vat-return/ui/reference-request-success.tsx b/src/entities/vat-return/ui/reference-request-success.tsx index a576aea..d701f5a 100644 --- a/src/entities/vat-return/ui/reference-request-success.tsx +++ b/src/entities/vat-return/ui/reference-request-success.tsx @@ -1,5 +1,6 @@ import { motion } from 'framer-motion'; -import { +import { useTranslation } from 'react-i18next'; +import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants @@ -19,6 +20,7 @@ export const ReferenceRequestSuccess = ({ email, startDate }: ReferenceRequestSuccessProps) => { + const { t } = useTranslation(); const onClickToClose = () => { setPageOn(false); }; @@ -33,31 +35,31 @@ export const ReferenceRequestSuccess = ({ style={ FilterMotionStyle } >
-

- 부가세 참고 자료 + {t('vatReturn.vatReferenceData')}
- 신청이 완료되었습니다. + {t('vatReturn.requestCompleted')}

-

파일은 선택한 수령 방법으로 제공됩니다.

+

{t('vatReturn.fileProvidedBySelectedMethod')}

- 신청일 : { moment(startDate).format('YYYY.MM.DD') } + {t('vatReturn.applicationDate')} : { moment(startDate).format('YYYY.MM.DD') }
- 메일주소 : { email } + {t('vatReturn.emailAddress')} : { email }

-

참고용 자료이므로 반드시 내부 회계자료 등과
비교 후 사용해 주세요.

+

{t('vatReturn.referenceDataNote')}

- + >{t('common.confirm')}
diff --git a/src/entities/vat-return/ui/reference-wrap.tsx b/src/entities/vat-return/ui/reference-wrap.tsx index 374f490..9695d52 100644 --- a/src/entities/vat-return/ui/reference-wrap.tsx +++ b/src/entities/vat-return/ui/reference-wrap.tsx @@ -1,5 +1,6 @@ import moment from 'moment'; import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterSelect } from '@/shared/ui/filter/select'; import { ReferenceRequestSuccess } from './reference-request-success'; @@ -11,6 +12,7 @@ import { useStore } from '@/shared/model/store'; import { useVatReturnReferenceRequestMutation } from '../api/use-vat-return-reference-request-mutation'; export const ReferenceWrap = () => { + const { t } = useTranslation(); const midOptions = useStore.getState().UserStore.selectOptionsMids; const emailOptions = useStore.getState().UserStore.selectOptionsEmails; const userMid = useStore.getState().UserStore.mid; @@ -48,13 +50,13 @@ export const ReferenceWrap = () => { <>
{ maxBtn={ 2 } >
- + >{t('vatReturn.requestData')}
{ + const { t, i18n } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState(false); @@ -35,44 +37,47 @@ export const AmountSection = ({
+ {i18n.language === 'en' && {t('home.currencySymbol')}} - + {i18n.language === 'en' ? '' : t('home.currencyWon')}
-
- { isOpen && + { isOpen &&
  • - ·  공급가액 + ·  {t('vatReturn.supplyAmount')}
  • - ·  VAT + ·  {t('vatReturn.vat')}
  • @@ -85,17 +90,17 @@ export const AmountSection = ({
- { !!detail.issueDate && - moment(detail.issueDate).format('YYYY.MM.DD') + { !!detail.issueDate && + moment(detail.issueDate).format('YYYY.MM.DD') }
- + >{t('vatReturn.taxInvoice')}
{ !!downloadBottomSheetOn && diff --git a/src/entities/vat-return/ui/section/issue-section.tsx b/src/entities/vat-return/ui/section/issue-section.tsx index 1ffbbef..44aa96a 100644 --- a/src/entities/vat-return/ui/section/issue-section.tsx +++ b/src/entities/vat-return/ui/section/issue-section.tsx @@ -1,4 +1,5 @@ import moment from 'moment'; +import { useTranslation } from 'react-i18next'; import { VatReturnDetailResponse } from '../../model/types'; export interface IssueSectionProps { @@ -8,46 +9,47 @@ export interface IssueSectionProps { export const IssueSection = ({ detail }: IssueSectionProps) => { + const { t } = useTranslation(); return ( <>
-
발행 정보
+
{t('vatReturn.issueInfo')}
  • MID { detail.mid }
  • - 발행대상일자 + {t('vatReturn.issueTargetDate')} { !!detail.targetBusinessStartDate && !!detail.targetBusinessEndDate && - moment(detail.targetBusinessStartDate).format('YYYY.MM.DD') - + - ' ~ ' - + - moment(detail.targetBusinessEndDate).format('YYYY.MM.DD') + moment(detail.targetBusinessStartDate).format('YYYY.MM.DD') + + + ' ~ ' + + + moment(detail.targetBusinessEndDate).format('YYYY.MM.DD') }
  • - 발행일자 + {t('vatReturn.issueDate')} { !!detail.issueDate && - moment(detail.issueDate).format('YYYY.MM.DD') + moment(detail.issueDate).format('YYYY.MM.DD') }
  • - 적요 + {t('vatReturn.subject')} { detail.subject }
  • - 발행대상 + {t('vatReturn.issueTarget')} { detail.targetType }
  • - 영수구분 + {t('vatReturn.receiptType')} { detail.receiptType }
  • diff --git a/src/entities/vat-return/ui/section/receiver-section.tsx b/src/entities/vat-return/ui/section/receiver-section.tsx index 9b4ae9b..261b57a 100644 --- a/src/entities/vat-return/ui/section/receiver-section.tsx +++ b/src/entities/vat-return/ui/section/receiver-section.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { VatReturnDetailResponse } from '../../model/types'; export interface ReceiverSectionProps { @@ -7,23 +8,24 @@ export interface ReceiverSectionProps { export const ReceiverSection = ({ detail }: ReceiverSectionProps) => { + const { t } = useTranslation(); return ( <>
    -
    공급받는 자 정보
    +
    {t('vatReturn.receiverInfo')}
    • - 사업자등록번호 + {t('merchant.businessRegistrationNumber')} { detail.receiverBusinessRegistrationNumber }
    • - 상호명 + {t('merchant.companyName')} { detail.receiverCompanyName }
    • - 대표자명 + {t('merchant.representativeName')} { detail.receiverCeoName }
    diff --git a/src/entities/vat-return/ui/section/supplier-section.tsx b/src/entities/vat-return/ui/section/supplier-section.tsx index f88f19b..b538c4c 100644 --- a/src/entities/vat-return/ui/section/supplier-section.tsx +++ b/src/entities/vat-return/ui/section/supplier-section.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { VatReturnDetailResponse } from '../../model/types'; export interface SupplierSectionProps { @@ -7,23 +8,24 @@ export interface SupplierSectionProps { export const SupplierSection = ({ detail }: SupplierSectionProps) => { + const { t } = useTranslation(); return ( <>
    -
    공급자 정보
    +
    {t('vatReturn.supplierInfo')}
    • - 사업자등록번호 + {t('merchant.businessRegistrationNumber')} { detail.supplierBusinessRegistrationNumber }
    • - 상호명 + {t('merchant.companyName')} { detail.supplierCompanyName }
    • - 대표자명 + {t('merchant.representativeName')} { detail.supplierCeoName }
    diff --git a/src/entities/vat-return/ui/vat-return-tab.tsx b/src/entities/vat-return/ui/vat-return-tab.tsx index 1f8fc3f..4c3335b 100644 --- a/src/entities/vat-return/ui/vat-return-tab.tsx +++ b/src/entities/vat-return/ui/vat-return-tab.tsx @@ -1,13 +1,15 @@ +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { - VatReturnTabKeys, - VatReturnTabProps +import { + VatReturnTabKeys, + VatReturnTabProps } from '../model/types'; export const VatReturnTab = ({ activeTab }: VatReturnTabProps) => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const onClickToNavigation = (tab: VatReturnTabKeys) => { @@ -23,14 +25,14 @@ export const VatReturnTab = ({ return( <>
    - - + + onClick={ () => onClickToNavigation(VatReturnTabKeys.VatReference) } + >{t('vatReturn.vatReference')}
    ); diff --git a/src/locales/en.json b/src/locales/en.json index f42d56a..2effa66 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -190,8 +190,8 @@ }, "account": { "title": "Account Management", - "userManagement": "User Management", - "passwordManagement": "Password Management", + "userManagement": "Users", + "passwordManagement": "Passwords", "userSettings": "User Settings", "addUser": "Add User", "addAccount": "Add Account", @@ -491,6 +491,39 @@ "faceAuth": { "title": "Face Authentication" }, + "vatReturn": { + "title": "VAT Return Data", + "taxInvoice": "Tax Invoice", + "vatReference": "VAT Reference", + "taxInvoiceDetail": "Tax Invoice Details", + "viewDetails": "View Details", + "transactionAmount": "Transaction Amount", + "supplyAmount": "Supply Amount", + "vat": "VAT", + "totalAmount": "Total Amount", + "transactionDate": "Transaction Date", + "amountDetail": "Amount Details", + "issueInfo": "Issue Information", + "issueTargetDate": "Issue Target Date", + "issueDate": "Issue Date", + "subject": "Subject", + "issueTarget": "Issue Target", + "receiptType": "Receipt Type", + "supplierInfo": "Supplier Information", + "receiverInfo": "Receiver Information", + "taxExemptionType": "Tax/Exemption Type", + "transactionPeriod": "Transaction Period", + "receivingEmail": "Receiving Email", + "requestData": "Request Data", + "vatReferenceData": "VAT Reference Data", + "requestCompleted": "Request completed.", + "requestFailed": "Request failed", + "fileProvidedBySelectedMethod": "The file will be provided by the selected method.", + "applicationDate": "Application Date", + "emailAddress": "Email Address", + "referenceDataNote": "Please compare with internal accounting data\nbefore using this reference material.", + "result": "Result" + }, "common": { "latest": "Latest", "oldest": "Oldest" diff --git a/src/locales/ko.json b/src/locales/ko.json index 86e7c67..cb69d25 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -495,6 +495,39 @@ "faceAuth": { "title": "안면인증" }, + "vatReturn": { + "title": "부가세 신고 자료", + "taxInvoice": "세금 계산서", + "vatReference": "부가세 참고", + "taxInvoiceDetail": "세금계산서 상세", + "viewDetails": "세부내역 조회", + "transactionAmount": "거래금액", + "supplyAmount": "공급가액", + "vat": "VAT", + "totalAmount": "합계금액", + "transactionDate": "거래일", + "amountDetail": "금액상세", + "issueInfo": "발행 정보", + "issueTargetDate": "발행대상일자", + "issueDate": "발행일자", + "subject": "적요", + "issueTarget": "발행대상", + "receiptType": "영수구분", + "supplierInfo": "공급자 정보", + "receiverInfo": "공급받는 자 정보", + "taxExemptionType": "거래 과세/면세 구분", + "transactionPeriod": "거래기간", + "receivingEmail": "수령메일주소", + "requestData": "자료신청", + "vatReferenceData": "부가세 참고 자료", + "requestCompleted": "신청이 완료되었습니다.", + "requestFailed": "신청 실패하였습니다", + "fileProvidedBySelectedMethod": "파일은 선택한 수령 방법으로 제공됩니다.", + "applicationDate": "신청일", + "emailAddress": "메일주소", + "referenceDataNote": "참고용 자료이므로 반드시 내부 회계자료 등과\n비교 후 사용해 주세요.", + "result": "결과" + }, "common": { "latest": "최신순", "oldest": "오래된순" diff --git a/src/pages/vat-return/detail-page.tsx b/src/pages/vat-return/detail-page.tsx index 827da25..f522681 100644 --- a/src/pages/vat-return/detail-page.tsx +++ b/src/pages/vat-return/detail-page.tsx @@ -1,4 +1,5 @@ import { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useLocation } from 'react-router'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; @@ -12,7 +13,7 @@ import { VatReturnDetailResponse } from '@/entities/vat-return/model/types'; import { - useSetOnBack, + useSetOnBack, useSetHeaderTitle, useSetHeaderType, useSetFooterMode @@ -26,6 +27,7 @@ import { VatReturnListDetailBottomSheet } from '@/entities/vat-return/ui/list-de import { useVatReturnBreakdownMutation } from '@/entities/vat-return/api/use-vat-return-breakdown-mutation'; export const DetailPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const location = useLocation(); @@ -37,7 +39,7 @@ export const DetailPage = () => { const [detail, setDetail] = useState({}); const [breakdown, setBreakdown] = useState>([]); - useSetHeaderTitle('세금계산서 상세'); + useSetHeaderTitle(t('vatReturn.taxInvoiceDetail')); useSetHeaderType(HeaderType.RightClose); useSetOnBack(() => { navigate(PATHS.vatReturn.list); @@ -100,10 +102,10 @@ export const DetailPage = () => {
- + >{t('vatReturn.viewDetails')}
diff --git a/src/pages/vat-return/list-page.tsx b/src/pages/vat-return/list-page.tsx index 693f27e..99273d6 100644 --- a/src/pages/vat-return/list-page.tsx +++ b/src/pages/vat-return/list-page.tsx @@ -1,11 +1,12 @@ import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { VatReturnTab } from '@/entities/vat-return/ui/vat-return-tab'; import { ListWrap } from '@/entities/vat-return/ui/list-wrap'; import { VatReturnTabKeys } from '@/entities/vat-return/model/types'; import { HeaderType } from '@/entities/common/model/types'; -import { +import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, @@ -13,11 +14,12 @@ import { } from '@/widgets/sub-layout/use-sub-layout'; export const ListPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const [activeTab, setActiveTab] = useState(VatReturnTabKeys.List); - - useSetHeaderTitle('부가세 신고 자료'); + + useSetHeaderTitle(t('vatReturn.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { diff --git a/src/pages/vat-return/reference-page.tsx b/src/pages/vat-return/reference-page.tsx index c0f90ec..b1e289c 100644 --- a/src/pages/vat-return/reference-page.tsx +++ b/src/pages/vat-return/reference-page.tsx @@ -1,11 +1,12 @@ import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { VatReturnTab } from '@/entities/vat-return/ui/vat-return-tab'; import { ReferenceWrap } from '@/entities/vat-return/ui/reference-wrap'; import { VatReturnTabKeys } from '@/entities/vat-return/model/types'; import { HeaderType } from '@/entities/common/model/types'; -import { +import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, @@ -13,11 +14,12 @@ import { } from '@/widgets/sub-layout/use-sub-layout'; export const ReferencePage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const [activeTab, setActiveTab] = useState(VatReturnTabKeys.VatReference); - - useSetHeaderTitle('부가세 신고 자료'); + + useSetHeaderTitle(t('vatReturn.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => {