From 65f4f05c04a94c4b5e43b5e4535049f8520d8edd Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 31 Jan 2023 15:29:04 +0800 Subject: [PATCH 1/5] chore: add translation function --- packages/app/src/components/404/index.tsx | 2 +- .../app/src/components/create-workspace/index.tsx | 7 ++----- packages/app/src/components/login-modal/index.tsx | 6 ++++-- packages/app/src/components/logout-modal/index.tsx | 12 +++++++----- .../app/src/components/workspace-modal/index.tsx | 8 +++----- 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/app/src/components/404/index.tsx b/packages/app/src/components/404/index.tsx index 36f1b90a34..0a06467afa 100644 --- a/packages/app/src/components/404/index.tsx +++ b/packages/app/src/components/404/index.tsx @@ -15,7 +15,7 @@ export const NotfoundPage = () => { router.push('/workspace'); }} > - Back Home + {t('Back Home')}

diff --git a/packages/app/src/components/create-workspace/index.tsx b/packages/app/src/components/create-workspace/index.tsx index 9a26b56863..11aa3de52b 100644 --- a/packages/app/src/components/create-workspace/index.tsx +++ b/packages/app/src/components/create-workspace/index.tsx @@ -53,13 +53,10 @@ export const CreateWorkspaceModal = ({ open, onClose }: ModalProps) => { {t('New Workspace')} -

- Workspace is your virtual space to capture, create and plan as - just one person or together as a team. -

+

{t('Workspace description')}

{ setWorkspaceName(value); }} diff --git a/packages/app/src/components/login-modal/index.tsx b/packages/app/src/components/login-modal/index.tsx index f6dedd7cd8..8c15c24417 100644 --- a/packages/app/src/components/login-modal/index.tsx +++ b/packages/app/src/components/login-modal/index.tsx @@ -2,6 +2,7 @@ import { styled } from '@/styles'; import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { GoogleLoginButton } from './LoginOptionButton'; import { useAppState } from '@/providers/app-state-provider'; +import { useTranslation } from '@affine/i18n'; interface LoginModalProps { open: boolean; onClose: () => void; @@ -9,6 +10,7 @@ interface LoginModalProps { export const LoginModal = ({ open, onClose }: LoginModalProps) => { const { login } = useAppState(); + const { t } = useTranslation(); return ( @@ -20,8 +22,8 @@ export const LoginModal = ({ open, onClose }: LoginModalProps) => { /> - {'Sign in'} - Set up an AFFINE account to sync data + {t('Sign in')} + {t('Set up an AFFiNE account to sync data')} { await login(); diff --git a/packages/app/src/components/logout-modal/index.tsx b/packages/app/src/components/logout-modal/index.tsx index 0aaee3968e..b317f1183c 100644 --- a/packages/app/src/components/logout-modal/index.tsx +++ b/packages/app/src/components/logout-modal/index.tsx @@ -3,6 +3,7 @@ import { Modal, ModalWrapper, ModalCloseButton } from '@/ui/modal'; import { Button } from '@/ui/button'; import { Check, UnCheck } from './icon'; import { useState } from 'react'; +import { useTranslation } from '@affine/i18n'; interface LoginModalProps { open: boolean; onClose: (wait: boolean) => void; @@ -10,6 +11,7 @@ interface LoginModalProps { export const LogoutModal = ({ open, onClose }: LoginModalProps) => { const [localCache, setLocalCache] = useState(false); + const { t } = useTranslation(); return ( @@ -21,8 +23,8 @@ export const LogoutModal = ({ open, onClose }: LoginModalProps) => { /> - {'Sign out?'} - Set up an AFFINE account to sync data + {t('Sign out')}? + {t('Set up an AFFiNE account to sync data')} {localCache ? ( { )} - Retain local cached data + {t('Retain local cached data')}
diff --git a/packages/app/src/components/workspace-modal/index.tsx b/packages/app/src/components/workspace-modal/index.tsx index 93b1bb7279..4ebce59edf 100644 --- a/packages/app/src/components/workspace-modal/index.tsx +++ b/packages/app/src/components/workspace-modal/index.tsx @@ -59,9 +59,7 @@ export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => { {t('My Workspaces')} @@ -108,8 +106,8 @@ export const WorkspaceModal = ({ open, onClose }: WorkspaceModalProps) => { - New workspace -

Crete or import

+ {t('New Workspace')} +

{t('Create Or Import')}

From e501026d28f7c00ec120239d90a7faffaecee78d Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 31 Jan 2023 15:29:35 +0800 Subject: [PATCH 2/5] feat: update i18n keys --- packages/i18n/src/resources/en.json | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/i18n/src/resources/en.json b/packages/i18n/src/resources/en.json index 9b543416dd..e01cdc7b49 100644 --- a/packages/i18n/src/resources/en.json +++ b/packages/i18n/src/resources/en.json @@ -69,7 +69,7 @@ "Remove from favourites": "Remove from favourites", "Removed from Favourites": "Removed from Favourites", "New Workspace": "New Workspace", - "Workspace description": "Workspace is your virtual space to capture, create and plan as just one person or together as a team.", + "Workspace description": "A workspace is your virtual space to capture, create and plan as just one person or together as a team.", "Create": "Create", "Select": "Select", "Text": "Text (coming soon)", @@ -108,10 +108,10 @@ "emptyTrash": "Click Add to Trash and the page will appear here.", "still designed": "(This page is still being designed.)", "My Workspaces": "My Workspaces", - "Create Or Import": "Create Or Import", + "Create Or Import": "Create or Import", "Tips": "Tips: ", "login success": "Login success", - "Sign out": "Sign out of AFFiNE Cloud", + "Sign out": "Sign out", "Delete Workspace": "Delete Workspace", "Delete Workspace Description2": "Deleting (<1>{{workspace}}) will delete both local and cloud data, this operation cannot be undone, please proceed with caution.", "Delete Workspace placeholder": "Please type “Delete” to confirm", @@ -143,11 +143,15 @@ "Workspace Settings": "Workspace Settings", "Export Workspace": "Export Workspace <1>{{workspace}} is coming soon", "Leave Workspace Description": "After you leave, you will no longer be able to access the contents of this workspace.", - "Sign in": "Sign in to AFFiNE Cloud", + "Sign in": "Sign in AFFiNE Cloud", "Sync Description": "{{workspaceName}} is a Local Workspace. All data is stored on the current device. You can enable AFFiNE Cloud for this workspace to keep data in sync with the cloud.", "Sync Description2": "<1>{{workspaceName}} is a Cloud Workspace. All data will be synchronised and saved to AFFiNE Cloud.", "Delete Workspace Description": "Deleting (<1>{{workspace}}) cannot be undone, please proceed with caution. All contents will be lost.", "core": "core", "all": "all", - "A workspace is your virtual space to capture, create and plan as just one person or together as a team.": "A workspace is your virtual space to capture, create and plan as just one person or together as a team." + "Back Home": "Back Home", + "Set a Workspace name": "Set a Workspace name", + "Retain local cached data": "Retain local cached data", + "Wait for Sync": "Wait for Sync", + "Force Sign Out": "Force Sign Out" } From a9bbaed22cbb165a748678a0ac378b088a2dbc8b Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 31 Jan 2023 18:34:18 +0800 Subject: [PATCH 3/5] chore: add translation function --- .../src/components/workspace-modal/Footer.tsx | 4 +- .../workspace-modal/WorkspaceCard.tsx | 14 ++-- .../workspace-setting/PublishPage.tsx | 15 ++-- .../components/workspace-setting/SyncPage.tsx | 51 +++++++------ .../workspace-setting/general/General.tsx | 8 +-- .../workspace-setting/member/MembersPage.tsx | 20 +++--- .../src/components/workspace-setting/style.ts | 30 ++++---- .../app/src/hooks/use-workspace-helper.ts | 12 ++-- .../pages/workspace/[workspaceId]/setting.tsx | 72 ++++++++++--------- 9 files changed, 123 insertions(+), 103 deletions(-) diff --git a/packages/app/src/components/workspace-modal/Footer.tsx b/packages/app/src/components/workspace-modal/Footer.tsx index ea38de2a9c..c27b004e8b 100644 --- a/packages/app/src/components/workspace-modal/Footer.tsx +++ b/packages/app/src/components/workspace-modal/Footer.tsx @@ -4,6 +4,7 @@ import { WorkspaceAvatar } from '@/components/workspace-avatar'; import { IconButton } from '@/ui/button'; import { useAppState } from '@/providers/app-state-provider'; import { StyledFooter, StyleUserInfo, StyleSignIn } from './styles'; +import { useTranslation } from '@affine/i18n'; export const Footer = ({ onLogin, @@ -13,6 +14,7 @@ export const Footer = ({ onLogout: () => void; }) => { const { user } = useAppState(); + const { t } = useTranslation(); return ( @@ -48,7 +50,7 @@ export const Footer = ({ - Sign in to sync with AFFINE Cloud + {t('Sign in')} )} diff --git a/packages/app/src/components/workspace-modal/WorkspaceCard.tsx b/packages/app/src/components/workspace-modal/WorkspaceCard.tsx index 1a6032d65f..9bc523e2fb 100644 --- a/packages/app/src/components/workspace-modal/WorkspaceCard.tsx +++ b/packages/app/src/components/workspace-modal/WorkspaceCard.tsx @@ -9,6 +9,7 @@ import { WorkspaceUnit } from '@affine/datacenter'; import { useAppState } from '@/providers/app-state-provider'; import { StyleWorkspaceInfo, StyleWorkspaceTitle, StyledCard } from './styles'; import { Wrapper } from '@/ui/layout'; +import { useTranslation } from '@affine/i18n'; export const WorkspaceCard = ({ workspaceData, @@ -18,7 +19,7 @@ export const WorkspaceCard = ({ onClick: (data: WorkspaceUnit) => void; }) => { const { currentWorkspace, isOwner } = useAppState(); - + const { t } = useTranslation(); return ( { @@ -38,29 +39,30 @@ export const WorkspaceCard = ({ workspaceData.provider === 'local' ? (

- Local Workspace + {t('Local Workspace')}

) : (

- Cloud Workspace + {t('Cloud Workspace')}

) ) : (

- Joined Workspace + {t('Joined Workspace')}

)} {workspaceData.provider === 'local' && (

- All data can be accessed offline + {t('Available Offline')}

)} {workspaceData.published && (

- Published to Web + + {t('Published to Web')}

)} diff --git a/packages/app/src/components/workspace-setting/PublishPage.tsx b/packages/app/src/components/workspace-setting/PublishPage.tsx index a30b72bdf7..677b8a4909 100644 --- a/packages/app/src/components/workspace-setting/PublishPage.tsx +++ b/packages/app/src/components/workspace-setting/PublishPage.tsx @@ -1,5 +1,5 @@ import { - StyledCopyButtonContainer, + StyledButtonContainer, StyledPublishContent, StyledPublishCopyContainer, StyledPublishExplanation, @@ -24,13 +24,13 @@ export const PublishPage = ({ workspace }: { workspace: WorkspaceUnit }) => { try { await publishWorkspace(workspace.id.toString(), flag); } catch (e) { - toast('Failed to publish workspace'); + toast(t('Failed to publish workspace')); } }; const copyUrl = () => { navigator.clipboard.writeText(shareUrl); - toast('Copied url to clipboard'); + toast(t('Copied link to clipboard')); }; return ( @@ -43,8 +43,7 @@ export const PublishPage = ({ workspace }: { workspace: WorkspaceUnit }) => { {workspace.published ? ( <> - The current workspace has been published to the web, everyone - can view the contents of this workspace through the link. + {t('Published Description')} @@ -52,11 +51,11 @@ export const PublishPage = ({ workspace }: { workspace: WorkspaceUnit }) => { {t('Share with link')} - + - + ) : ( @@ -103,7 +102,7 @@ export const PublishPage = ({ workspace }: { workspace: WorkspaceUnit }) => { <> - Publishing to web requires AFFiNE Cloud service. + {t('Publishing')}
diff --git a/packages/app/src/components/workspace-setting/SyncPage.tsx b/packages/app/src/components/workspace-setting/SyncPage.tsx index 6969461a38..0632b304c0 100644 --- a/packages/app/src/components/workspace-setting/SyncPage.tsx +++ b/packages/app/src/components/workspace-setting/SyncPage.tsx @@ -1,9 +1,9 @@ import { - StyleAsync, + StyledButtonContainer, StyledPublishContent, StyledPublishExplanation, StyledWorkspaceName, - StyledWorkspaceType, + StyledEmail, } from './style'; import { DownloadIcon } from '@blocksuite/icons'; import { Button } from '@/ui/button'; @@ -26,27 +26,38 @@ export const SyncPage = ({ workspace }: { workspace: WorkspaceUnit }) => { workspaceUnit={workspace} style={{ marginRight: '12px' }} /> - {workspace.name}; - is a Local Workspace. + {workspace.name}  + {t('is a Local Workspace')} - - All data is stored on the current device. You can enable AFFiNE - Cloud for this workspace to keep data in sync with the cloud. - - +
{t('Local Workspace Description')}
+ -
+ ) : ( <> - - {{ workspaceName: workspace.name ?? 'Affine' }} - is Cloud Workspace. All data will be synchronised and saved to - the AFFiNE - + + {workspace.name}  + {t('is a Cloud Workspace')} - +
+ + All data will be synchronised and saved to the AFFiNE account + + {{ + email: '{' + workspace.owner?.email + '}.', + }} + + +
+ + @@ -56,7 +67,7 @@ export const SyncPage = ({ workspace }: { workspace: WorkspaceUnit }) => { }} icon={} > - {t('Download data to device', { CoreOrAll: 'core' })} + {t('Download data', { CoreOrAll: t('core') })} { @@ -64,7 +75,7 @@ export const SyncPage = ({ workspace }: { workspace: WorkspaceUnit }) => { }} icon={} > - {t('Download data to device', { CoreOrAll: 'all' })} + {t('Download data', { CoreOrAll: t('all') })} } @@ -72,10 +83,10 @@ export const SyncPage = ({ workspace }: { workspace: WorkspaceUnit }) => { disablePortal={true} > -
+ )} diff --git a/packages/app/src/components/workspace-setting/general/General.tsx b/packages/app/src/components/workspace-setting/general/General.tsx index 0207cb6a95..5b5bc26843 100644 --- a/packages/app/src/components/workspace-setting/general/General.tsx +++ b/packages/app/src/components/workspace-setting/general/General.tsx @@ -50,7 +50,7 @@ export const GeneralPage = ({ workspace }: { workspace: WorkspaceUnit }) => { return workspace ? (
- Workspace Avatar + {t('Workspace Avatar')} { currentWorkspace?.provider === 'local' ? ( - Local Workspace + {t('Local Workspace')} ) : ( - All data can be accessed offline + {t('Available Offline')} ) ) : ( - Joined Workspace + {t('Joined Workspace')} )} diff --git a/packages/app/src/components/workspace-setting/member/MembersPage.tsx b/packages/app/src/components/workspace-setting/member/MembersPage.tsx index b1b64ffa0e..73405599b9 100644 --- a/packages/app/src/components/workspace-setting/member/MembersPage.tsx +++ b/packages/app/src/components/workspace-setting/member/MembersPage.tsx @@ -89,9 +89,9 @@ export const MembersPage = ({ workspace }: { workspace: WorkspaceUnit }) => { {member.accepted ? member.type !== 99 - ? 'Member' - : 'Workspace Owner' - : 'Pending'} + ? t('Member') + : t('Owner') + : t('Pending')} { { const confirmRemove = await confirm({ - title: 'Delete Member?', - content: `will delete member`, - confirmText: 'Delete', + title: t('Delete Member?'), + content: t('will delete member'), + confirmText: t('Delete'), confirmType: 'danger', }); @@ -110,11 +110,15 @@ export const MembersPage = ({ workspace }: { workspace: WorkspaceUnit }) => { return; } await removeMember(member.id); - toast(`${user.name} has been removed`); + toast( + t('Member has been removed', { + name: user.name, + }) + ); }} icon={} > - Delete + {t('Delete')} } diff --git a/packages/app/src/components/workspace-setting/style.ts b/packages/app/src/components/workspace-setting/style.ts index dcde665f31..eafcd415d2 100644 --- a/packages/app/src/components/workspace-setting/style.ts +++ b/packages/app/src/components/workspace-setting/style.ts @@ -90,7 +90,7 @@ export const StyledSettingH2 = styled('h2')<{ marginBottom?: number; }>(({ marginTop, marginBottom, theme }) => { return { - fontWeight: '500', + // fontWeight: '500', fontSize: theme.font.base, lineHeight: theme.font.lineHeightBase, marginTop: marginTop ? `${marginTop}px` : '0px', @@ -101,24 +101,18 @@ export const StyledSettingH2 = styled('h2')<{ export const StyledPublishExplanation = styled('div')(() => { return { paddingRight: '48px', - fontWeight: '500', - fontSize: '18px', - lineHeight: '26px', + // fontWeight: '500', marginBottom: '22px', }; }); export const StyledWorkspaceName = styled('span')(() => { return { fontWeight: '400', - fontSize: '18px', - lineHeight: '26px', }; }); export const StyledWorkspaceType = styled('span')(() => { return { - fontWeight: '500', - fontSize: '18px', - lineHeight: '26px', + // fontWeight: '500', }; }); @@ -136,21 +130,23 @@ export const StyledStopPublishContainer = styled('div')(() => { }; }); -export const StyledCopyButtonContainer = styled('div')(() => { +export const StyledButtonContainer = styled('div')(() => { return { marginTop: '64px', }; }); +export const StyledEmail = styled('span')(() => { + return { + color: '#E8178A', + }; +}); -export const StyledPublishContent = styled('div')(() => { +export const StyledPublishContent = styled('div')(({ theme }) => { return { display: 'flex', + fontWeight: '500', flexDirection: 'column', - }; -}); - -export const StyleAsync = styled('div')(() => { - return { - marginTop: '64px', + fontSize: theme.font.base, + lineHeight: theme.font.lineHeightBase, }; }); diff --git a/packages/app/src/hooks/use-workspace-helper.ts b/packages/app/src/hooks/use-workspace-helper.ts index 2a1977f968..44124ae615 100644 --- a/packages/app/src/hooks/use-workspace-helper.ts +++ b/packages/app/src/hooks/use-workspace-helper.ts @@ -3,9 +3,11 @@ import { useConfirm } from '@/providers/ConfirmProvider'; import { toast } from '@/ui/toast'; import { WorkspaceUnit } from '@affine/datacenter'; import router from 'next/router'; +import { useTranslation } from '@affine/i18n'; export const useWorkspaceHelper = () => { const { confirm } = useConfirm(); + const { t } = useTranslation(); const { dataCenter, currentWorkspace, user, login } = useAppState(); const createWorkspace = async (name: string) => { const workspaceInfo = await dataCenter.createWorkspace({ @@ -38,10 +40,10 @@ export const useWorkspaceHelper = () => { const enableWorkspace = async () => { confirm({ - title: 'Enable AFFiNE Cloud?', - content: `If enabled, the data in this workspace will be backed up and synchronized via AFFiNE Cloud.`, - confirmText: user ? 'Enable' : 'Sign in and Enable', - cancelText: 'Skip', + title: `${t('Enable AFFiNE Cloud')}?`, + content: t('Enable AFFiNE Cloud Description'), + confirmText: user ? t('Enable') : t('Sign in and Enable'), + cancelText: t('Skip'), confirmType: 'primary', buttonDirection: 'column', }).then(async confirm => { @@ -53,7 +55,7 @@ export const useWorkspaceHelper = () => { currentWorkspace ); workspace && router.push(`/workspace/${workspace.id}/setting`); - toast('Enabled success'); + toast(t('Enabled success')); } }); }; diff --git a/packages/app/src/pages/workspace/[workspaceId]/setting.tsx b/packages/app/src/pages/workspace/[workspaceId]/setting.tsx index 11de4aa598..bd80a4ecfe 100644 --- a/packages/app/src/pages/workspace/[workspaceId]/setting.tsx +++ b/packages/app/src/pages/workspace/[workspaceId]/setting.tsx @@ -20,41 +20,37 @@ import { WorkspaceUnit } from '@affine/datacenter'; import { useTranslation } from '@affine/i18n'; import { PageListHeader } from '@/components/header'; -type TabNames = 'General' | 'Sync' | 'Collaboration' | 'Publish' | 'Export'; - -const tabMap: { - name: TabNames; - panelRender: (workspace: WorkspaceUnit) => ReactNode; -}[] = [ - { - name: 'General', - panelRender: workspace => , - }, - { - name: 'Sync', - panelRender: workspace => , - }, - { - name: 'Collaboration', - panelRender: workspace => , - }, - { - name: 'Publish', - panelRender: workspace => , - }, - - { - name: 'Export', - panelRender: workspace => , - }, -]; - -const WorkspaceSetting = () => { +const useTabMap = () => { const { t } = useTranslation(); - const { currentWorkspace, isOwner } = useAppState(); + const { isOwner } = useAppState(); + const tabMap: { + name: string; + panelRender: (workspace: WorkspaceUnit) => ReactNode; + }[] = [ + { + name: t('General'), + panelRender: workspace => , + }, + { + name: t('Sync'), + panelRender: workspace => , + }, + { + name: t('Collaboration'), + panelRender: workspace => , + }, + { + name: t('Publish'), + panelRender: workspace => , + }, - const [activeTab, setActiveTab] = useState(tabMap[0].name); - const handleTabChange = (tab: TabNames) => { + { + name: t('Export'), + panelRender: workspace => , + }, + ]; + const [activeTab, setActiveTab] = useState(tabMap[0].name); + const handleTabChange = (tab: string) => { setActiveTab(tab); }; @@ -62,7 +58,7 @@ const WorkspaceSetting = () => { tab => tab.name === activeTab )?.panelRender; let tableArr: { - name: TabNames; + name: string; panelRender: (workspace: WorkspaceUnit) => ReactNode; }[] = tabMap; if (!isOwner) { @@ -73,6 +69,14 @@ const WorkspaceSetting = () => { }, ]; } + return { activeTabPanelRender, tableArr, handleTabChange, activeTab }; +}; + +const WorkspaceSetting = () => { + const { t } = useTranslation(); + const { currentWorkspace } = useAppState(); + const { activeTabPanelRender, tableArr, handleTabChange, activeTab } = + useTabMap(); return ( <> From 08ce7d5322216f879e494b34b9016e8550e0f1f7 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 31 Jan 2023 18:34:50 +0800 Subject: [PATCH 4/5] feat: update i18n keys --- packages/i18n/src/resources/en.json | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/i18n/src/resources/en.json b/packages/i18n/src/resources/en.json index e01cdc7b49..d7c00b1d30 100644 --- a/packages/i18n/src/resources/en.json +++ b/packages/i18n/src/resources/en.json @@ -135,7 +135,7 @@ "Publishing Description": "After publishing to the web, everyone can view the content of this workspace through the link.", "Stop publishing": "Stop publishing", "Publish to web": "Publish to web", - "Download data to device": "Download {{CoreOrAll}} data to device", + "Download data": "Download {{CoreOrAll}} data", "General": "General", "Sync": "Sync", "Collaboration": "Collaboration", @@ -153,5 +153,26 @@ "Set a Workspace name": "Set a Workspace name", "Retain local cached data": "Retain local cached data", "Wait for Sync": "Wait for Sync", - "Force Sign Out": "Force Sign Out" + "Force Sign Out": "Force Sign Out", + "Local Workspace": "Local Workspace", + "Cloud Workspace": "Cloud Workspace", + "Joined Workspace": "Joined Workspace", + "Available Offline": "Available Offline", + "Published to Web": "Published to Web", + "Workspace Avatar": "Workspace Avatar", + "Owner": "Owner", + "Member": "Member", + "Delete Member?": "Delete Member?", + "will delete member": "will delete member", + "Member has been removed": "{{name}} has been removed", + "Failed to publish workspace": "Failed to publish workspace", + "Copied link to clipboard": "Copied link to clipboard", + "Published Description": " The current workspace has been published to the web, everyone can view the contents of this workspace through the link.", + "is a Local Workspace": "is a Local Workspace.", + "is a Cloud Workspace": "is a Cloud Workspace.", + "Local Workspace Description": "All data is stored on the current device. You can enable AFFiNE Cloud for this workspace to keep data in sync with the cloud.", + "Cloud Workspace Description": "All data will be synchronized and saved to the AFFiNE account <1>{{email}}", + "Download data Description1": "It takes up more space on your device.", + "Download data Description2": "It takes up little space on your device.", + "Enabled success": "Enabled success" } From 20ffbe348a4fabd1cd26523f1998dd6218d52053 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Wed, 1 Feb 2023 10:37:30 +0800 Subject: [PATCH 5/5] fix: closeButton not work --- packages/app/src/ui/modal/ModalCloseButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/src/ui/modal/ModalCloseButton.tsx b/packages/app/src/ui/modal/ModalCloseButton.tsx index b42d687ca7..f5e4eaf079 100644 --- a/packages/app/src/ui/modal/ModalCloseButton.tsx +++ b/packages/app/src/ui/modal/ModalCloseButton.tsx @@ -28,7 +28,7 @@ export const ModalCloseButton = ({ ) : ( - + );