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

@@ -30,12 +30,16 @@ const SystemMsgModal = ({}: {}) => {
}, [data, onClose, setSysMsgReadId]);
return (
<MyModal isOpen={isOpen} iconSrc={LOGO_ICON} title={t('support.user.inform.System message')}>
<MyModal
isOpen={isOpen}
iconSrc={LOGO_ICON}
title={t('common:support.user.inform.System message')}
>
<ModalBody overflow={'auto'}>
<Markdown source={data?.content} />
</ModalBody>
<ModalFooter>
<Button onClick={onclickRead}>{t('support.inform.Read')}</Button>
<Button onClick={onclickRead}>{t('common:support.inform.Read')}</Button>
</ModalFooter>
</MyModal>
);

View File

@@ -35,7 +35,7 @@ function TeamCard() {
const { feConfigs } = useSystemStore();
const { ConfirmModal: ConfirmLeaveTeamModal, openConfirm: openLeaveConfirm } = useConfirm({
content: t('user.team.member.Confirm Leave')
content: t('common:user.team.member.Confirm Leave')
});
const { mutate: onLeaveTeam, isLoading: isLoadingLeaveTeam } = useRequest({
mutationFn: async (teamId?: string) => {
@@ -49,7 +49,7 @@ function TeamCard() {
onSuccess() {
refetchTeams();
},
errorToast: t('user.team.Leave Team Failed')
errorToast: t('common:user.team.Leave Team Failed')
});
const {
@@ -65,7 +65,7 @@ function TeamCard() {
icon: 'support/team/memberLight',
label: (
<Flex alignItems={'center'}>
<Box ml={1}>{t('user.team.Member')}</Box>
<Box ml={1}>{t('common:user.team.Member')}</Box>
<Box ml={2} bg={'myGray.100'} borderRadius={'20px'} px={3} fontSize={'xs'}>
{members.length}
</Box>
@@ -75,7 +75,7 @@ function TeamCard() {
},
{
icon: 'support/team/key',
label: t('common.Role'),
label: t('common:common.Role'),
value: TabListEnum.permission
}
],
@@ -155,7 +155,7 @@ function TeamCard() {
}
}}
>
{t('user.team.Invite Member')}
{t('common:user.team.Invite Member')}
</Button>
)}
{userInfo?.team.permission.hasManagePer && feConfigs?.show_team_chat && (
@@ -169,7 +169,7 @@ function TeamCard() {
onOpenTeamTagsAsync();
}}
>
{t('user.team.Team Tags Async')}
{t('common:user.team.Team Tags Async')}
</Button>
)}
{!userInfo?.team.permission.isOwner && (
@@ -184,7 +184,7 @@ function TeamCard() {
openLeaveConfirm(() => onLeaveTeam(userInfo?.team?.teamId))();
}}
>
{t('user.team.Leave Team')}
{t('common:user.team.Leave Team')}
</Button>
)}
</Flex>

View File

@@ -29,7 +29,7 @@ function TeamList() {
borderBottom={'1.5px solid rgba(0, 0, 0, 0.05)'}
>
<Box flex={['0 0 auto', 1]} fontSize={['sm', 'md']}>
{t('common.Team')}
{t('common:common.Team')}
</Box>
{/* if there is no team */}
{myTeams.length < 1 && (
@@ -90,7 +90,7 @@ function TeamList() {
variant={'whitePrimary'}
onClick={() => onSwitchTeam(team.teamId)}
>
{t('user.team.Check Team')}
{t('common:user.team.Check Team')}
</Button>
)}
</Flex>

View File

@@ -59,7 +59,7 @@ function EditModal({
setValue('avatar', src);
} catch (err: any) {
toast({
title: getErrText(err, t('common.Select File Failed')),
title: getErrText(err, t('common:common.Select File Failed')),
status: 'warning'
});
}
@@ -75,8 +75,8 @@ function EditModal({
onSuccess();
onClose();
},
successToast: t('common.Create Success'),
errorToast: t('common.Create Failed')
successToast: t('common:common.Create Success'),
errorToast: t('common:common.Create Failed')
});
const { mutate: onclickUpdate, isLoading: updating } = useRequest({
mutationFn: async (data: EditTeamFormDataType) => {
@@ -90,8 +90,8 @@ function EditModal({
onSuccess();
onClose();
},
successToast: t('common.Update Success'),
errorToast: t('common.Update Failed')
successToast: t('common:common.Update Success'),
errorToast: t('common:common.Update Failed')
});
return (
@@ -99,14 +99,14 @@ function EditModal({
isOpen
onClose={onClose}
iconSrc="/imgs/modal/team.svg"
title={defaultData.id ? t('user.team.Update Team') : t('user.team.Create Team')}
title={defaultData.id ? t('common:user.team.Update Team') : t('common:user.team.Create Team')}
>
<ModalBody>
<Box color={'myGray.800'} fontWeight={'bold'}>
{t('user.team.Set Name')}
{t('common:user.team.Set Name')}
</Box>
<Flex mt={3} alignItems={'center'}>
<MyTooltip label={t('common.Set Avatar')}>
<MyTooltip label={t('common:common.Set Avatar')}>
<Avatar
flexShrink={0}
src={avatar}
@@ -123,9 +123,9 @@ function EditModal({
autoFocus
bg={'myWhite.600'}
maxLength={20}
placeholder={t('user.team.Team Name')}
placeholder={t('common:user.team.Team Name')}
{...register('name', {
required: t('common.Please Input Name')
required: t('common:common.Please Input Name')
})}
/>
</Flex>
@@ -136,10 +136,10 @@ function EditModal({
<>
<Box flex={1} />
<Button variant={'whiteBase'} mr={3} onClick={onClose}>
{t('common.Close')}
{t('common:common.Close')}
</Button>
<Button isLoading={updating} onClick={handleSubmit((data) => onclickUpdate(data))}>
{t('common.Confirm Update')}
{t('common:common.Confirm Update')}
</Button>
</>
) : (
@@ -148,7 +148,7 @@ function EditModal({
isLoading={creating}
onClick={handleSubmit((data) => onclickCreate(data))}
>
{t('common.Confirm Create')}
{t('common:common.Confirm Create')}
</Button>
)}
</ModalFooter>

View File

@@ -28,7 +28,7 @@ const InviteModal = ({
const { t } = useTranslation();
const { userT } = useI18n();
const { ConfirmModal, openConfirm } = useConfirm({
title: t('user.team.Invite Member Result Tip'),
title: t('common:user.team.Invite Member Result Tip'),
showCancel: false
});
const { userInfo } = useUserStore();
@@ -82,7 +82,7 @@ const InviteModal = ({
</Box>
)();
},
errorToast: t('user.team.Invite Member Failed Tip')
errorToast: t('common:user.team.Invite Member Failed Tip')
});
return (
@@ -91,9 +91,9 @@ const InviteModal = ({
iconSrc="/imgs/modal/team.svg"
title={
<Box>
<Box>{t('user.team.Invite Member')}</Box>
<Box>{t('common:user.team.Invite Member')}</Box>
<Box color={'myGray.500'} fontSize={'xs'} fontWeight={'normal'}>
{t('user.team.Invite Member Tips')}
{t('common:user.team.Invite Member Tips')}
</Box>
</Box>
}
@@ -102,7 +102,7 @@ const InviteModal = ({
>
<ModalCloseButton onClick={onClose} />
<ModalBody>
<Box mb={2}>{t('user.Account')}</Box>
<Box mb={2}>{t('common:user.Account')}</Box>
<TagTextarea defaultValues={inviteUsernames} onUpdate={setInviteUsernames} />
<Box mt={4}>
<MySelect list={inviteTypes} value={selectedInviteType} onchange={setSelectInviteType} />
@@ -116,7 +116,7 @@ const InviteModal = ({
isLoading={isLoading}
onClick={onInvite}
>
{t('user.team.Confirm Invite')}
{t('common:user.team.Confirm Invite')}
</Button>
</ModalFooter>
<ConfirmModal />

View File

@@ -44,10 +44,10 @@ function MemberTable() {
<Table overflow={'unset'}>
<Thead bg={'myWhite.400'}>
<Tr>
<Th borderRadius={'none !important'}>{t('common.Username')}</Th>
<Th>{t('common.Permission')}</Th>
<Th>{t('common.Status')}</Th>
<Th borderRadius={'none !important'}>{t('common.Action')}</Th>
<Th borderRadius={'none !important'}>{t('common:common.Username')}</Th>
<Th>{t('common:common.Permission')}</Th>
<Th>{t('common:common.Status')}</Th>
<Th borderRadius={'none !important'}>{t('common:common.Action')}</Th>
</Tr>
</Thead>
<Tbody>

View File

@@ -154,7 +154,7 @@ function AddManagerModal({ onClose, onSuccess }: { onClose: () => void; onSucces
</ModalBody>
<ModalFooter alignItems="flex-end">
<Button h={'30px'} isLoading={isLoading} onClick={submit}>
{t('common.Confirm')}
{t('common:common.Confirm')}
</Button>
</ModalFooter>
</MyModal>

View File

@@ -49,7 +49,7 @@ function PermissionManage() {
>
<Flex>
<Box fontSize={['sm', 'md']} fontWeight={'bold'} alignItems={'center'}>
{t('user.team.role.Admin')}
{t('common:user.team.role.Admin')}
</Box>
<Box
fontSize={['xs']}

View File

@@ -102,7 +102,7 @@ export const TeamModalContextProvider = ({ children }: { children: ReactNode })
await putSwitchTeam(teamId);
return initUserInfo();
},
errorToast: t('user.team.Switch Team Failed')
errorToast: t('common:user.team.Switch Team Failed')
});
const isLoading = isLoadingTeams || isSwitchingTeam || loadingMembers || isUpdatingPer;

View File

@@ -38,12 +38,12 @@ const TeamMenu = () => {
} else {
toast({
status: 'warning',
title: t('common.system.Commercial version function')
title: t('common:common.system.Commercial version function')
});
}
}}
>
<MyTooltip label={t('user.team.Select Team')}>
<MyTooltip label={t('common:user.team.Select Team')}>
<Flex w={'100%'} alignItems={'center'}>
{userInfo?.team ? (
<>
@@ -53,7 +53,7 @@ const TeamMenu = () => {
) : (
<>
<Box w={'8px'} h={'8px'} mr={3} borderRadius={'50%'} bg={'#67c13b'} />
{t('user.team.Personal Team')}
{t('common:user.team.Personal Team')}
</>
)}
</Flex>

View File

@@ -63,14 +63,14 @@ const TeamTagsAsync = ({ onClose }: { onClose: () => void }) => {
initUserInfo();
onClose();
},
errorToast: t('common.Create Failed')
errorToast: t('common:common.Create Failed')
});
const { mutate: onclickTagAsync, isLoading: isSyncing } = useRequest({
mutationFn: (data: FormType) => loadTeamTagsByDomain(data.teamDomain),
onSuccess(res) {
replaceTeamTags(res);
},
successToast: t('support.user.team.Team Tags Async Success')
successToast: t('common:support.user.team.Team Tags Async Success')
});
useQuery(['getTeamsTags'], getTeamsTags, {
@@ -103,7 +103,7 @@ const TeamTagsAsync = ({ onClose }: { onClose: () => void }) => {
<ModalBody style={{ padding: '10rpx' }}>
<Flex mt={3} alignItems={'center'}>
<Box mb={2} fontWeight="semibold">
{t('同步链接')}
{t('common:同步链接')}
</Box>
<Input
flex={1}
@@ -118,7 +118,7 @@ const TeamTagsAsync = ({ onClose }: { onClose: () => void }) => {
</Flex>
<Flex mt={3} alignItems={'center'}>
<Box mb={2} fontWeight="semibold">
{t('分享链接')}
{t('common:分享链接')}
</Box>
{/* code */}
<Box ml={4} borderRadius={'md'} overflow={'hidden'}>
@@ -143,7 +143,7 @@ const TeamTagsAsync = ({ onClose }: { onClose: () => void }) => {
</Flex>
<Flex mt={3} alignItems={'center'}>
<Box mb={2} fontWeight="semibold">
{t('标签列表')}
{t('common:标签列表')}
</Box>
<HStack
ml={4}
@@ -187,10 +187,10 @@ const TeamTagsAsync = ({ onClose }: { onClose: () => void }) => {
</ModalBody>
<ModalFooter mb={2}>
<Button variant={'whiteBase'} mr={3} onClick={onClose}>
{t('common.Close')}
{t('common:common.Close')}
</Button>
<Button isLoading={isUpdating} onClick={handleSubmit((data) => onclickUpdate(data))}>
{t('user.team.Tags Async')}
{t('common:user.team.Tags Async')}
</Button>
</ModalFooter>
</MyModal>

View File

@@ -35,7 +35,7 @@ const UpdateInviteModal = () => {
onSuccess() {
toast({
status: 'success',
title: t('user.team.invite.Accepted')
title: t('common:user.team.invite.Accepted')
});
refetch();
}
@@ -45,7 +45,7 @@ const UpdateInviteModal = () => {
onSuccess() {
toast({
status: 'success',
title: t('user.team.invite.Reject')
title: t('common:user.team.invite.Reject')
});
refetch();
}
@@ -57,7 +57,7 @@ const UpdateInviteModal = () => {
iconSrc="/imgs/modal/team.svg"
title={
<Box>
<Box>{t('user.team.Processing invitations')}</Box>
<Box>{t('common:user.team.Processing invitations')}</Box>
<Box fontWeight={'normal'} fontSize={'sm'} color={'myGray.500'}>
{t('user.team.Processing invitations Tips', { amount: inviteList?.length })}
</Box>
@@ -94,11 +94,11 @@ const UpdateInviteModal = () => {
status: TeamMemberStatusEnum.active
}),
undefined,
t('user.team.invite.Accept Confirm')
t('common:user.team.invite.Accept Confirm')
)();
}}
>
{t('user.team.invite.accept')}
{t('common:user.team.invite.accept')}
</Button>
<Button
size="sm"
@@ -114,17 +114,17 @@ const UpdateInviteModal = () => {
status: TeamMemberStatusEnum.reject
}),
undefined,
t('user.team.invite.Reject Confirm')
t('common:user.team.invite.Reject Confirm')
)();
}}
>
{t('user.team.invite.reject')}
{t('common:user.team.invite.reject')}
</Button>
</Flex>
))}
</ModalBody>
<ModalFooter justifyContent={'center'}>
<Box>{t('user.team.invite.Deal Width Footer Tip')}</Box>
<Box>{t('common:user.team.invite.Deal Width Footer Tip')}</Box>
</ModalFooter>
<ConfirmModal />