feat: optimize i18n implementation for better localization (#2062)

* feat: optimize i18n implementation for better localization

* delete i18n-ally-custom-framework.yml

* update common key
This commit is contained in:
jingyang
2024-07-16 17:56:27 +08:00
committed by GitHub
parent 1e4ffc2481
commit fc96bb99cc
206 changed files with 1360 additions and 1277 deletions

View File

@@ -43,7 +43,7 @@ const BillTable = () => {
const billTypeList = useMemo(
() =>
[
{ label: t('common.All'), value: '' },
{ label: t('common:common.All'), value: '' },
...Object.entries(billTypeMap).map(([key, value]) => ({
label: t(value.label),
value: key
@@ -120,9 +120,9 @@ const BillTable = () => {
w={'130px'}
></MySelect>
</Th>
<Th>{t('user.Time')}</Th>
<Th>{t('support.wallet.Amount')}</Th>
<Th>{t('support.wallet.bill.Status')}</Th>
<Th>{t('common:user.Time')}</Th>
<Th>{t('common:support.wallet.Amount')}</Th>
<Th>{t('common:support.wallet.bill.Status')}</Th>
<Th></Th>
</Tr>
</Thead>
@@ -139,11 +139,11 @@ const BillTable = () => {
<Td>
{item.status === 'NOTPAY' && (
<Button mr={4} onClick={() => handleRefreshPayOrder(item._id)} size={'sm'}>
{t('common.Update')}
{t('common:common.Update')}
</Button>
)}
<Button variant={'whiteBase'} size={'sm'} onClick={() => setBillDetail(item)}>
{t('common.Detail')}
{t('common:common.Detail')}
</Button>
</Td>
</Tr>
@@ -164,7 +164,7 @@ const BillTable = () => {
>
<MyIcon name="empty" w={'48px'} h={'48px'} color={'transparent'} />
<Box mt={2} color={'myGray.500'}>
{t('support.wallet.noBill')}
{t('common:support.wallet.noBill')}
</Box>
</Flex>
)}
@@ -187,40 +187,40 @@ function BillDetailModal({ bill, onClose }: { bill: BillSchemaType; onClose: ()
isOpen={true}
onClose={onClose}
iconSrc="/imgs/modal/bill.svg"
title={t('support.wallet.usage.Usage Detail')}
title={t('common:support.wallet.usage.Usage Detail')}
maxW={['90vw', '700px']}
>
<ModalBody>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>{t('support.wallet.bill.Number')}:</FormLabel>
<FormLabel flex={'0 0 120px'}>{t('common:support.wallet.bill.Number')}:</FormLabel>
<Box>{bill.orderId}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>{t('support.wallet.usage.Time')}:</FormLabel>
<FormLabel flex={'0 0 120px'}>{t('common:support.wallet.usage.Time')}:</FormLabel>
<Box>{dayjs(bill.createTime).format('YYYY/MM/DD HH:mm:ss')}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>{t('support.wallet.bill.Status')}:</FormLabel>
<FormLabel flex={'0 0 120px'}>{t('common:support.wallet.bill.Status')}:</FormLabel>
<Box>{t(billStatusMap[bill.status]?.label)}</Box>
</Flex>
{!!bill.metadata?.payWay && (
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>{t('support.wallet.bill.payWay.Way')}:</FormLabel>
<FormLabel flex={'0 0 120px'}>{t('common:support.wallet.bill.payWay.Way')}:</FormLabel>
<Box>{t(billPayWayMap[bill.metadata.payWay]?.label)}</Box>
</Flex>
)}
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>{t('support.wallet.Amount')}:</FormLabel>
<FormLabel flex={'0 0 120px'}>{t('common:support.wallet.Amount')}:</FormLabel>
<Box>{formatStorePrice2Read(bill.price)}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>{t('support.wallet.bill.Type')}:</FormLabel>
<FormLabel flex={'0 0 120px'}>{t('common:support.wallet.bill.Type')}:</FormLabel>
<Box>{t(billTypeMap[bill.type]?.label)}</Box>
</Flex>
{!!bill.metadata?.subMode && (
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>
{t('support.wallet.subscription.mode.Period')}:
{t('common:support.wallet.subscription.mode.Period')}:
</FormLabel>
<Box>{t(subModeMap[bill.metadata.subMode]?.label)}</Box>
</Flex>
@@ -228,7 +228,7 @@ function BillDetailModal({ bill, onClose }: { bill: BillSchemaType; onClose: ()
{!!bill.metadata?.standSubLevel && (
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>
{t('support.wallet.subscription.Stand plan level')}:
{t('common:support.wallet.subscription.Stand plan level')}:
</FormLabel>
<Box>{t(standardSubLevelMap[bill.metadata.standSubLevel]?.label)}</Box>
</Flex>
@@ -236,7 +236,7 @@ function BillDetailModal({ bill, onClose }: { bill: BillSchemaType; onClose: ()
{bill.metadata?.month !== undefined && (
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>
{t('support.wallet.subscription.Month amount')}:
{t('common:support.wallet.subscription.Month amount')}:
</FormLabel>
<Box>{bill.metadata?.month}</Box>
</Flex>
@@ -244,7 +244,7 @@ function BillDetailModal({ bill, onClose }: { bill: BillSchemaType; onClose: ()
{bill.metadata?.datasetSize !== undefined && (
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>
{t('support.wallet.subscription.Extra dataset size')}:
{t('common:support.wallet.subscription.Extra dataset size')}:
</FormLabel>
<Box>{bill.metadata?.datasetSize}</Box>
</Flex>
@@ -252,7 +252,7 @@ function BillDetailModal({ bill, onClose }: { bill: BillSchemaType; onClose: ()
{bill.metadata?.extraPoints !== undefined && (
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 120px'}>
{t('support.wallet.subscription.Extra ai points')}:
{t('common:support.wallet.subscription.Extra ai points')}:
</FormLabel>
<Box>{bill.metadata.extraPoints}</Box>
</Flex>

View File

@@ -29,7 +29,7 @@ const Individuation = () => {
});
reset(data);
toast({
title: t('dataset.data.Update Success Tip'),
title: t('common:dataset.data.Update Success Tip'),
status: 'success'
});
},
@@ -40,12 +40,12 @@ const Individuation = () => {
<Box py={[3, '28px']} px={['5vw', '64px']}>
<Flex alignItems={'center'} fontSize={'lg'} h={'30px'}>
<MyIcon mr={2} name={'support/user/individuation'} w={'20px'} />
{t('support.account.Individuation')}
{t('common:support.account.Individuation')}
</Flex>
<Card mt={6} px={[3, 10]} py={[3, 7]} fontSize={'sm'}>
<Flex alignItems={'center'} w={['85%', '350px']}>
<Box flex={'0 0 80px'}>{t('user.Language')}:&nbsp;</Box>
<Box flex={'0 0 80px'}>{t('common:user.Language')}:&nbsp;</Box>
<Box flex={'1 0 0'}>
<MySelect
value={i18n.language}
@@ -68,7 +68,7 @@ const Individuation = () => {
</Box>
</Flex>
<Flex mt={6} alignItems={'center'} w={['85%', '350px']}>
<Box flex={'0 0 80px'}>{t('user.Timezone')}:&nbsp;</Box>
<Box flex={'0 0 80px'}>{t('common:user.Timezone')}:&nbsp;</Box>
<TimezoneSelect
value={userInfo?.timezone}
onChange={(e) => {

View File

@@ -127,7 +127,7 @@ const MyInfo = () => {
});
reset(data);
toast({
title: t('dataset.data.Update Success Tip'),
title: t('common:dataset.data.Update Success Tip'),
status: 'success'
});
},
@@ -152,7 +152,7 @@ const MyInfo = () => {
});
} catch (err: any) {
toast({
title: typeof err === 'string' ? err : t('common.error.Select avatar failed'),
title: typeof err === 'string' ? err : t('common:common.error.Select avatar failed'),
status: 'warning'
});
}
@@ -172,16 +172,16 @@ const MyInfo = () => {
{isPc && (
<Flex alignItems={'center'} fontSize={'md'} h={'30px'}>
<MyIcon mr={2} name={'support/user/userLight'} w={'1.25rem'} />
{t('support.user.User self info')}
{t('common:support.user.User self info')}
</Flex>
)}
<Box mt={[0, 6]} fontSize={'sm'}>
{isPc ? (
<Flex alignItems={'center'} cursor={'pointer'}>
<Box {...labelStyles}>{t('support.user.Avatar')}:&nbsp;</Box>
<Box {...labelStyles}>{t('common:support.user.Avatar')}:&nbsp;</Box>
<MyTooltip label={t('common.avatar.Select Avatar')}>
<MyTooltip label={t('common:common.avatar.Select Avatar')}>
<Box
w={['44px', '56px']}
h={['44px', '56px']}
@@ -204,7 +204,7 @@ const MyInfo = () => {
cursor={'pointer'}
onClick={onOpenSelectFile}
>
<MyTooltip label={t('common.avatar.Select Avatar')}>
<MyTooltip label={t('common:common.avatar.Select Avatar')}>
<Box
w={['44px', '54px']}
h={['44px', '54px']}
@@ -221,17 +221,17 @@ const MyInfo = () => {
<Flex alignItems={'center'} fontSize={'sm'} color={'myGray.600'}>
<MyIcon mr={1} name={'edit'} w={'14px'} />
{t('user.Replace')}
{t('common:user.Replace')}
</Flex>
</Flex>
)}
{feConfigs.isPlus && (
<Flex mt={[0, 4]} alignItems={'center'}>
<Box {...labelStyles}>{t('user.Member Name')}:&nbsp;</Box>
<Box {...labelStyles}>{t('common:user.Member Name')}:&nbsp;</Box>
<Input
flex={'1 0 0'}
defaultValue={userInfo?.team?.memberName || 'Member'}
title={t('user.Edit name')}
title={t('common:user.Edit name')}
borderColor={'transparent'}
transform={'translateX(-11px)'}
maxLength={20}
@@ -246,20 +246,20 @@ const MyInfo = () => {
</Flex>
)}
<Flex alignItems={'center'} mt={6}>
<Box {...labelStyles}>{t('user.Account')}:&nbsp;</Box>
<Box {...labelStyles}>{t('common:user.Account')}:&nbsp;</Box>
<Box flex={1}>{userInfo?.username}</Box>
</Flex>
{feConfigs.isPlus && (
<Flex mt={6} alignItems={'center'}>
<Box {...labelStyles}>{t('user.Password')}:&nbsp;</Box>
<Box {...labelStyles}>{t('common:user.Password')}:&nbsp;</Box>
<Box flex={1}>*****</Box>
<Button size={'sm'} variant={'whitePrimary'} onClick={onOpenUpdatePsw}>
{t('user.Change')}
{t('common:user.Change')}
</Button>
</Flex>
)}
<Flex mt={6} alignItems={'center'}>
<Box {...labelStyles}>{t('user.Team')}:&nbsp;</Box>
<Box {...labelStyles}>{t('common:user.Team')}:&nbsp;</Box>
<Box flex={1}>
<TeamMenu />
</Box>
@@ -267,13 +267,13 @@ const MyInfo = () => {
{feConfigs.isPlus && (
<Box mt={6} whiteSpace={'nowrap'}>
<Flex alignItems={'center'}>
<Box {...labelStyles}>{t('user.team.Balance')}:&nbsp;</Box>
<Box {...labelStyles}>{t('common:user.team.Balance')}:&nbsp;</Box>
<Box flex={1}>
<strong>{formatStorePrice2Read(userInfo?.team?.balance).toFixed(3)}</strong>
</Box>
{feConfigs?.show_pay && userInfo?.team?.permission.hasWritePer && (
<Button variant={'whitePrimary'} size={'sm'} ml={5} onClick={onOpenPayModal}>
{t('user.Pay')}
{t('common:user.Pay')}
</Button>
)}
</Flex>
@@ -332,7 +332,7 @@ const PlanUsage = () => {
return {
colorScheme: 'green',
value: 0,
maxSize: t('common.Unlimited'),
maxSize: t('common:common.Unlimited'),
usedSize: 0
};
}
@@ -347,7 +347,7 @@ const PlanUsage = () => {
return {
colorScheme,
value: rate * 100,
maxSize: teamPlanStatus.datasetMaxSize || t('common.Unlimited'),
maxSize: teamPlanStatus.datasetMaxSize || t('common:common.Unlimited'),
usedSize: teamPlanStatus.usedDatasetSize
};
}, [teamPlanStatus, t]);
@@ -356,7 +356,7 @@ const PlanUsage = () => {
return {
colorScheme: 'green',
value: 0,
maxSize: t('common.Unlimited'),
maxSize: t('common:common.Unlimited'),
usedSize: 0
};
}
@@ -372,7 +372,7 @@ const PlanUsage = () => {
return {
colorScheme,
value: rate * 100,
max: teamPlanStatus.totalPoints ? teamPlanStatus.totalPoints : t('common.Unlimited'),
max: teamPlanStatus.totalPoints ? teamPlanStatus.totalPoints : t('common:common.Unlimited'),
used: teamPlanStatus.usedPoints ? Math.round(teamPlanStatus.usedPoints) : 0
};
}, [teamPlanStatus, t]);
@@ -382,13 +382,13 @@ const PlanUsage = () => {
<Flex fontSize={'lg'} h={'30px'}>
<Flex alignItems={'center'}>
<MyIcon mr={2} name={'support/account/plans'} w={'20px'} />
{t('support.wallet.subscription.Team plan and usage')}
{t('common:support.wallet.subscription.Team plan and usage')}
</Flex>
<Button ml={4} size={'sm'} onClick={() => router.push(AI_POINT_USAGE_CARD_ROUTE)}>
{t('support.user.Price')}
{t('common:support.user.Price')}
</Button>
<Button ml={4} variant={'whitePrimary'} size={'sm'} onClick={onOpenStandardModal}>
{t('support.wallet.Standard Plan Detail')}
{t('common:support.wallet.Standard Plan Detail')}
</Button>
</Flex>
<Box
@@ -401,7 +401,7 @@ const PlanUsage = () => {
<Flex px={[5, 7]} py={[3, 6]}>
<Box flex={'1 0 0'}>
<Box color={'myGray.600'} fontSize="sm">
{t('support.wallet.subscription.Current plan')}
{t('common:support.wallet.subscription.Current plan')}
</Box>
<Box fontWeight={'bold'} fontSize="lg">
{t(planName)}
@@ -410,7 +410,7 @@ const PlanUsage = () => {
{isFreeTeam ? (
<>
<Flex mt="2" color={'#485264'} fontSize="sm">
<Box>{t('support.wallet.Plan reset time')}:</Box>
<Box>{t('common:support.wallet.Plan reset time')}:</Box>
<Box ml={2}>{formatTime2YMD(standardPlan?.expiredTime)}</Box>
</Flex>
<Box mt="2" color={'#485264'} fontSize="sm">
@@ -419,13 +419,13 @@ const PlanUsage = () => {
</>
) : (
<Flex mt="2" color={'#485264'} fontSize="xs">
<Box>{t('support.wallet.Plan expired time')}:</Box>
<Box>{t('common:support.wallet.Plan expired time')}:</Box>
<Box ml={2}>{formatTime2YMD(standardPlan?.expiredTime)}</Box>
</Flex>
)}
</Box>
<Button onClick={() => router.push('/price')} w={'8rem'} size="sm">
{t('support.wallet.subscription.Upgrade plan')}
{t('common:support.wallet.subscription.Upgrade plan')}
</Button>
</Flex>
<Box py={3} borderTopWidth={'1px'} borderTopColor={'borderColor.base'}>
@@ -471,7 +471,7 @@ const PlanUsage = () => {
<Flex alignItems={'center'}>
<Flex alignItems={'center'}>
<Box fontWeight={'bold'} color={'myGray.900'}>
{t('support.user.team.Dataset usage')}
{t('common:support.user.team.Dataset usage')}
</Box>
<Box color={'myGray.600'} ml={2}>
{datasetUsageMap.usedSize}/{datasetUsageMap.maxSize}
@@ -495,11 +495,11 @@ const PlanUsage = () => {
<Flex alignItems={'center'}>
<Flex alignItems={'center'}>
<Box fontWeight={'bold'} color={'myGray.900'}>
{t('support.wallet.subscription.AI points usage')}
{t('common:support.wallet.subscription.AI points usage')}
</Box>
<QuestionTip
ml={1}
label={t('support.wallet.subscription.AI points usage tip')}
label={t('common:support.wallet.subscription.AI points usage tip')}
></QuestionTip>
<Box color={'myGray.600'} ml={2}>
{aiPointsUsageMap.used}/{aiPointsUsageMap.max}
@@ -573,7 +573,7 @@ const Other = () => {
>
<MyIcon name={'common/courseLight'} w={'18px'} color={'myGray.600'} />
<Box ml={2} flex={1}>
{t('system.Help Document')}
{t('common:system.Help Document')}
</Box>
</Link>
)}
@@ -595,7 +595,7 @@ const Other = () => {
>
<MyIcon name={'core/app/aiLight'} w={'18px'} />
<Box ml={2} flex={1}>
{t('common.system.Help Chatbot')}
{t('common:common.system.Help Chatbot')}
</Box>
</Link>
)}
@@ -662,7 +662,7 @@ const Other = () => {
h={'48px'}
fontSize={'sm'}
>
{t('system.Concat us')}
{t('common:system.Concat us')}
</Button>
)}
</Grid>

View File

@@ -59,7 +59,7 @@ const InformTable = () => {
}
}}
>
{t('support.inform.Read')}
{t('common:support.inform.Read')}
</Button>
)}
</Flex>

View File

@@ -25,7 +25,7 @@ const OpenAIAccountModal = ({
onSuccess(res) {
onClose();
},
errorToast: t('user.Set OpenAI Account Failed')
errorToast: t('common:user.Set OpenAI Account Failed')
});
return (
@@ -33,7 +33,7 @@ const OpenAIAccountModal = ({
isOpen
onClose={onClose}
iconSrc="common/openai"
title={t('user.OpenAI Account Setting')}
title={t('common:user.OpenAI Account Setting')}
>
<ModalBody>
<Box fontSize={'sm'} color={'myGray.500'}>

View File

@@ -58,7 +58,12 @@ const PayModal = ({
}, [subPlans?.standard]);
return (
<MyModal isOpen={true} onClose={onClose} title={t('user.Pay')} iconSrc="/imgs/modal/pay.svg">
<MyModal
isOpen={true}
onClose={onClose}
title={t('common:user.Pay')}
iconSrc="/imgs/modal/pay.svg"
>
<ModalBody px={0} display={'flex'} flexDirection={'column'}>
<Box px={6} fontSize={'sm'} mb={2} py={2} maxW={'400px'}>
@@ -93,7 +98,7 @@ const PayModal = ({
<ModalFooter>
<Button variant={'whiteBase'} onClick={onClose}>
{t('common.Close')}
{t('common:common.Close')}
</Button>
<Button
ml={3}

View File

@@ -69,24 +69,24 @@ const Promotion = () => {
<Flex flexDirection={'column'} py={[0, 5]} px={5} h={'100%'} position={'relative'}>
<Grid gridTemplateColumns={['1fr 1fr', 'repeat(2,1fr)', 'repeat(4,1fr)']} gridGap={5}>
<Box {...statisticsStyles}>
<Box>{t('user.Amount of inviter')}</Box>
<Box>{t('common:user.Amount of inviter')}</Box>
<Box {...titleStyles}>{invitedAmount}</Box>
</Box>
<Box {...statisticsStyles}>
<Box>{t('user.Amount of earnings')}</Box>
<Box>{t('common:user.Amount of earnings')}</Box>
<Box {...titleStyles}>{earningsAmount}</Box>
</Box>
<Box {...statisticsStyles}>
<Flex alignItems={'center'} justifyContent={'center'}>
<Box>{t('user.Promotion Rate')}</Box>
<QuestionTip ml={1} label={t('user.Promotion rate tip')}></QuestionTip>
<Box>{t('common:user.Promotion Rate')}</Box>
<QuestionTip ml={1} label={t('common:user.Promotion rate tip')}></QuestionTip>
</Flex>
<Box {...titleStyles}>{userInfo?.promotionRate || 15}%</Box>
</Box>
<Box {...statisticsStyles}>
<Flex alignItems={'center'} justifyContent={'center'}>
<Box>{t('user.Invite Url')}</Box>
<QuestionTip ml={1} label={t('user.Invite url tip')}></QuestionTip>
<Box>{t('common:user.Invite Url')}</Box>
<QuestionTip ml={1} label={t('common:user.Invite url tip')}></QuestionTip>
</Flex>
<Button
mt={4}
@@ -96,7 +96,7 @@ const Promotion = () => {
copyData(`${location.origin}/?hiId=${userInfo?._id}`);
}}
>
{t('user.Copy invite url')}
{t('common:user.Copy invite url')}
</Button>
</Box>
</Grid>

View File

@@ -25,15 +25,15 @@ const UpdatePswModal = ({ onClose }: { onClose: () => void }) => {
const { mutate: onSubmit, isLoading } = useRequest({
mutationFn: (data: FormType) => {
if (data.newPsw !== data.confirmPsw) {
return Promise.reject(t('common.Password inconsistency'));
return Promise.reject(t('common:common.Password inconsistency'));
}
return updatePasswordByOld(data);
},
onSuccess() {
onClose();
},
successToast: t('user.Update password successful'),
errorToast: t('user.Update password failed')
successToast: t('common:user.Update password successful'),
errorToast: t('common:user.Update password failed')
});
return (
@@ -41,7 +41,7 @@ const UpdatePswModal = ({ onClose }: { onClose: () => void }) => {
isOpen
onClose={onClose}
iconSrc="/imgs/modal/password.svg"
title={t('user.Update Password')}
title={t('common:user.Update Password')}
>
<ModalBody>
<Flex alignItems={'center'}>

View File

@@ -63,44 +63,44 @@ const UsageDetail = ({ usage, onClose }: { usage: UsageItemType; onClose: () =>
isOpen={true}
onClose={onClose}
iconSrc="/imgs/modal/bill.svg"
title={t('support.wallet.usage.Usage Detail')}
title={t('common:support.wallet.usage.Usage Detail')}
maxW={['90vw', '700px']}
>
<ModalBody>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 80px'}>{t('support.wallet.bill.Number')}:</FormLabel>
<FormLabel flex={'0 0 80px'}>{t('common:support.wallet.bill.Number')}:</FormLabel>
<Box>{usage.id}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 80px'}>{t('support.wallet.usage.Time')}:</FormLabel>
<FormLabel flex={'0 0 80px'}>{t('common:support.wallet.usage.Time')}:</FormLabel>
<Box>{dayjs(usage.time).format('YYYY/MM/DD HH:mm:ss')}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 80px'}>{t('support.wallet.usage.App name')}:</FormLabel>
<FormLabel flex={'0 0 80px'}>{t('common:support.wallet.usage.App name')}:</FormLabel>
<Box>{t(usage.appName) || '-'}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 80px'}>{t('support.wallet.usage.Source')}:</FormLabel>
<FormLabel flex={'0 0 80px'}>{t('common:support.wallet.usage.Source')}:</FormLabel>
<Box>{t(UsageSourceMap[usage.source]?.label)}</Box>
</Flex>
<Flex alignItems={'center'} pb={4}>
<FormLabel flex={'0 0 80px'}>{t('support.wallet.usage.Total points')}:</FormLabel>
<FormLabel flex={'0 0 80px'}>{t('common:support.wallet.usage.Total points')}:</FormLabel>
<Box fontWeight={'bold'}>{formatNumber(usage.totalPoints)}</Box>
</Flex>
<Box pb={4}>
<FormLabel flex={'0 0 80px'} mb={1}>
{t('support.wallet.usage.Bill Module')}
{t('common:support.wallet.usage.Bill Module')}
</FormLabel>
<TableContainer fontSize={'sm'}>
<Table>
<Thead>
<Tr>
<Th>{t('support.wallet.usage.Module name')}</Th>
{hasModel && <Th>{t('support.wallet.usage.Ai model')}</Th>}
{hasToken && <Th>{t('support.wallet.usage.Token Length')}</Th>}
{hasCharsLen && <Th>{t('support.wallet.usage.Text Length')}</Th>}
{hasDuration && <Th>{t('support.wallet.usage.Duration')}</Th>}
<Th>{t('support.wallet.usage.Total points')}</Th>
<Th>{t('common:support.wallet.usage.Module name')}</Th>
{hasModel && <Th>{t('common:support.wallet.usage.Ai model')}</Th>}
{hasToken && <Th>{t('common:support.wallet.usage.Token Length')}</Th>}
{hasCharsLen && <Th>{t('common:support.wallet.usage.Text Length')}</Th>}
{hasDuration && <Th>{t('common:support.wallet.usage.Duration')}</Th>}
<Th>{t('common:support.wallet.usage.Total points')}</Th>
</Tr>
</Thead>
<Tbody>

View File

@@ -49,7 +49,7 @@ const UsageTable = () => {
const sourceList = useMemo(
() =>
[
{ label: t('common.All'), value: '' },
{ label: t('common:common.All'), value: '' },
...Object.entries(UsageSourceMap).map(([key, value]) => ({
label: t(value.label),
value: key
@@ -113,7 +113,7 @@ const UsageTable = () => {
{tmbList.length > 1 && userInfo?.team?.permission.hasWritePer && (
<Flex alignItems={'center'}>
<Box mr={2} flexShrink={0}>
{t('support.user.team.member')}
{t('common:support.user.team.member')}
</Box>
<MySelect
size={'sm'}
@@ -146,8 +146,8 @@ const UsageTable = () => {
<Table>
<Thead>
<Tr>
{/* <Th>{t('user.team.Member Name')}</Th> */}
<Th>{t('user.Time')}</Th>
{/* <Th>{t('common:user.team.Member Name')}</Th> */}
<Th>{t('common:user.Time')}</Th>
<Th>
<MySelect<UsageSourceEnum | ''>
list={sourceList}
@@ -159,8 +159,8 @@ const UsageTable = () => {
w={'130px'}
></MySelect>
</Th>
<Th>{t('user.Application Name')}</Th>
<Th>{t('support.wallet.usage.Total points')}</Th>
<Th>{t('common:user.Application Name')}</Th>
<Th>{t('common:support.wallet.usage.Total points')}</Th>
<Th></Th>
</Tr>
</Thead>

View File

@@ -32,7 +32,7 @@ const StandDetailModal = ({ onClose }: { onClose: () => void }) => {
isOpen
maxW={['90vw', '1200px']}
iconSrc="modal/teamPlans"
title={t('support.wallet.Standard Plan Detail')}
title={t('common:support.wallet.Standard Plan Detail')}
>
<ModalCloseButton onClick={onClose} />
<ModalBody>
@@ -40,11 +40,11 @@ const StandDetailModal = ({ onClose }: { onClose: () => void }) => {
<Table>
<Thead>
<Tr>
<Th>{t('support.standard.type')}</Th>
<Th>{t('support.standard.storage')}</Th>
<Th>{t('support.standard.AI Bonus Points')}</Th>
<Th>{t('support.standard.Start Time')}</Th>
<Th>{t('support.standard.Expired Time')}</Th>
<Th>{t('common:support.standard.type')}</Th>
<Th>{t('common:support.standard.storage')}</Th>
<Th>{t('common:support.standard.AI Bonus Points')}</Th>
<Th>{t('common:support.standard.Start Time')}</Th>
<Th>{t('common:support.standard.Expired Time')}</Th>
</Tr>
</Thead>
<Tbody fontSize={'sm'}>

View File

@@ -41,14 +41,14 @@ const Account = ({ currentTab }: { currentTab: TabEnum }) => {
const tabList = [
{
icon: 'support/user/userLight',
label: t('user.Personal Information'),
label: t('common:user.Personal Information'),
value: TabEnum.info
},
...(feConfigs?.isPlus
? [
{
icon: 'support/usage/usageRecordLight',
label: t('user.Usage Record'),
label: t('common:user.Usage Record'),
value: TabEnum.usage
}
]
@@ -57,7 +57,7 @@ const Account = ({ currentTab }: { currentTab: TabEnum }) => {
? [
{
icon: 'support/bill/payRecordLight',
label: t('support.wallet.Bills'),
label: t('common:support.wallet.Bills'),
value: TabEnum.bill
}
]
@@ -67,7 +67,7 @@ const Account = ({ currentTab }: { currentTab: TabEnum }) => {
? [
{
icon: 'support/account/promotionLight',
label: t('user.Promotion Record'),
label: t('common:user.Promotion Record'),
value: TabEnum.promotion
}
]
@@ -76,21 +76,21 @@ const Account = ({ currentTab }: { currentTab: TabEnum }) => {
? [
{
icon: 'support/outlink/apikeyLight',
label: t('user.apikey.key'),
label: t('common:user.apikey.key'),
value: TabEnum.apikey
}
]
: []),
{
icon: 'support/user/individuation',
label: t('support.account.Individuation'),
label: t('common:support.account.Individuation'),
value: TabEnum.individuation
},
...(feConfigs.isPlus
? [
{
icon: 'support/user/informLight',
label: t('user.Notice'),
label: t('common:user.Notice'),
value: TabEnum.inform
}
]
@@ -98,7 +98,7 @@ const Account = ({ currentTab }: { currentTab: TabEnum }) => {
{
icon: 'support/account/loginoutLight',
label: t('user.Sign Out'),
label: t('common:user.Sign Out'),
value: TabEnum.loginout
}
];