From 1bc2dcd6610eec24d60517c2ccadb0d2b86223ae Mon Sep 17 00:00:00 2001 From: JimmFly Date: Wed, 4 Jan 2023 16:57:21 +0800 Subject: [PATCH 1/3] feat: init i18n --- packages/app/src/libs/i18n/resources/en.json | 87 ++++++++++++++------ packages/app/src/pages/_app.tsx | 1 + 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/packages/app/src/libs/i18n/resources/en.json b/packages/app/src/libs/i18n/resources/en.json index c2716448f7..45822ea009 100644 --- a/packages/app/src/libs/i18n/resources/en.json +++ b/packages/app/src/libs/i18n/resources/en.json @@ -1,28 +1,65 @@ { - "Sync to Disk": "Sync to Disk", - "Share": "Share", - "WarningTips": { - "IsNotfsApiSupported": "Welcome to the AFFiNE demo. To begin saving changes you can SYNC DATA TO DISK with the latest version of Chromium based browser like Chrome/Edge", - "IsNotLocalWorkspace": "Welcome to the AFFiNE demo. To begin saving changes you can SYNC TO DISK.", - "DoNotStore": "AFFiNE is under active development and the current version is UNSTABLE. Please DO NOT store information or data" - }, - "Layout": "Layout", - "Comment": "Comment", - "Settings": "Settings", - "ComingSoon": "Layout Settings Coming Soon...", - "Duplicate Page": "Duplicate Page", - "Copy Page Link": "Copy Page Link", - "Language": "Language", - "Clear Workspace": "Clear Workspace", - "Export As Markdown": "Export As Markdown", - "Export As HTML": "Export As HTML", - "Export As PDF (Unsupported)": "Export As PDF (Unsupported)", - "Import Workspace": "Import Workspace", - "Export Workspace": "Export Workspace", - "Last edited by": "Last edited by {{name}}", - "Logout": "Logout", + "Quick search": "Quick search", + "All pages": "All pages", + "Favourites": "Favourites", + "No item": "No item", + "Import": "Import", + "Trash": "Trash", + "New Page": "New Page", + "New Keyword Page": "New '{{query}}' page", + "Find 0 result": "Find 0 result", + "Find results": "Find {{number}} results", + "Collapse sidebar": "Collapse sidebar", + "Expand sidebar": "Expand sidebar", + "Removed to Favourites": "Removed to Favourites", + "Remove to favourites": "Remove to favourites", + "Added to Favourites": "Added to Favourites", + "Add to favourites": "Add to favourites", + "Paper": "Paper", + "Edgeless": "Edgeless", + "Switch to": "Switch to", + "Convert to ": "Convert to ", + "Page": "Page", + "Export": "Export", + "Export to HTML": "Export to HTML", + "Export to Markdown": "Export to Markdown", "Delete": "Delete", - "Turn into": "Turn into", - "Add A Below Block": "Add A Below Block", - "Divide Here As A New Group": "Divide Here As A New Group" + "Title": "Title", + "Untitled": "Untitled", + "Created": "Created", + "Updated": "Updated", + "Open in new tab": "Open in new tab", + "Favourite": "Favourite", + "Favourited": "Favourited", + "Delete page?": "Delete page?", + "Delete permanently?": "Delete permanently?", + "will be moved to Trash": "{{title}} will be moved to Trash", + "Once deleted, you can't undo this action.": "Once deleted,you can't undo this action.", + "Moved to Trash": "Moved to Trash", + "Permanently deleted": "Permanently deleted", + "restored": "{{title}} restored", + "Cancel": "Cancel", + "Keyboard Shortcuts": "Keyboard Shortcuts", + "Contact Us": "Contact Us", + "Official Website": "Official Website", + "Get in touch!": "Get in touch!", + "AFFiNE Community": "AFFiNE Community", + "How is AFFiNE Alpha different?": "How is AFFiNE Alpha different?", + "Shortcuts": "Shortcuts", + "Undo": "Undo", + "Redo": "Redo", + "Bold": "Bold", + "Italic": "Italic", + "Underline": "Underline", + "Strikethrough": "Strikethrough", + "Inline code": "Inline code", + "Code block": "Code block", + "Link": "Link", + "Body text": "Body text", + "Heading": "Heading {{number}}", + "Increase indent": "Increase indent", + "Reduce indent": "Reduce indent", + "Markdown Syntax": "Markdown Syntax", + "Divider": "Divider", + "404 - Page Not Found": "404 - Page Not Found" } diff --git a/packages/app/src/pages/_app.tsx b/packages/app/src/pages/_app.tsx index bb56e9acef..c7cbd78d4b 100644 --- a/packages/app/src/pages/_app.tsx +++ b/packages/app/src/pages/_app.tsx @@ -18,6 +18,7 @@ import { useEffect } from 'react'; import { useAppState } from '@/providers/app-state-provider'; import { PageLoading } from '@/components/loading'; import Head from 'next/head'; +import '@/libs/i18n'; const ThemeProvider = dynamic(() => import('@/providers/themeProvider'), { ssr: false, From 0b61f4a2a04a83d3dd3616aaf87d649330ae51ba Mon Sep 17 00:00:00 2001 From: JimmFly Date: Wed, 4 Jan 2023 17:10:47 +0800 Subject: [PATCH 2/3] feat: add translation --- packages/app/src/components/404/index.tsx | 5 +-- .../src/components/contact-modal/index.tsx | 35 +++++++++--------- .../components/editor-mode-switch/index.tsx | 8 ++--- .../header-right-items/editor-option-menu.tsx | 30 +++++++++------- .../components/header/quick-search-button.tsx | 6 ++-- .../app/src/components/help-island/index.tsx | 7 ++-- packages/app/src/components/import/index.tsx | 4 ++- .../components/page-list/operation-cell.tsx | 36 ++++++++++--------- .../src/components/quick-search/footer.tsx | 7 ++-- .../src/components/quick-search/results.tsx | 10 ++++-- .../src/components/shortcuts-modal/index.tsx | 16 +++++---- .../components/workspace-slider-bar/index.tsx | 22 ++++++------ .../src/pages/workspace/[workspaceId]/all.tsx | 6 ++-- .../workspace/[workspaceId]/favorite.tsx | 7 ++-- .../pages/workspace/[workspaceId]/trash.tsx | 5 +-- packages/app/src/ui/confirm/Confirm.tsx | 4 ++- 16 files changed, 118 insertions(+), 90 deletions(-) diff --git a/packages/app/src/components/404/index.tsx b/packages/app/src/components/404/index.tsx index e2f828ad9f..7df644bbfe 100644 --- a/packages/app/src/components/404/index.tsx +++ b/packages/app/src/components/404/index.tsx @@ -1,9 +1,10 @@ import { NotFoundTitle, PageContainer } from './styles'; - +import { useTranslation } from 'react-i18next'; export const NotfoundPage = () => { + const { t } = useTranslation(); return ( - 404 - Page Not Found + {t('404 - Page Not Found')} ); }; diff --git a/packages/app/src/components/contact-modal/index.tsx b/packages/app/src/components/contact-modal/index.tsx index a182f3e047..50c1e1b530 100644 --- a/packages/app/src/components/contact-modal/index.tsx +++ b/packages/app/src/components/contact-modal/index.tsx @@ -23,7 +23,7 @@ import { StyledModalFooter, } from './style'; import bg from '@/components/contact-modal/bg.png'; - +import { useTranslation } from 'react-i18next'; const linkList = [ { icon: , @@ -51,20 +51,6 @@ const linkList = [ link: 'https://discord.gg/Arn7TqJBvG', }, ]; -const rightLinkList = [ - { - icon: , - title: 'Official Website ', - subTitle: 'AFFiNE.pro', - link: 'https://affine.pro', - }, - { - icon: , - title: 'AFFiNE Community', - subTitle: 'community.affine.pro', - link: 'https://community.affine.pro', - }, -]; type TransitionsModalProps = { open: boolean; @@ -72,6 +58,21 @@ type TransitionsModalProps = { }; export const ContactModal = ({ open, onClose }: TransitionsModalProps) => { + const { t } = useTranslation(); + const rightLinkList = [ + { + icon: , + title: t('Official Website'), + subTitle: 'AFFiNE.pro', + link: 'https://affine.pro', + }, + { + icon: , + title: t('AFFiNE Community'), + subTitle: 'community.affine.pro', + link: 'https://community.affine.pro', + }, + ]; return ( { })} - Get in touch! + {t('Get in touch!')} {linkList.map(({ icon, title, link }) => { return ( @@ -128,7 +129,7 @@ export const ContactModal = ({ open, onClose }: TransitionsModalProps) => { target="_blank" rel="noreferrer" > - How is AFFiNE Alpha different? + {t('How is AFFiNE Alpha different?')}

Copyright © 2022 Toeverything

diff --git a/packages/app/src/components/editor-mode-switch/index.tsx b/packages/app/src/components/editor-mode-switch/index.tsx index 8a219e4757..86a54d8606 100644 --- a/packages/app/src/components/editor-mode-switch/index.tsx +++ b/packages/app/src/components/editor-mode-switch/index.tsx @@ -15,7 +15,7 @@ import { useTheme } from '@/providers/themeProvider'; import { EdgelessIcon, PaperIcon } from './icons'; import useCurrentPageMeta from '@/hooks/use-current-page-meta'; import { usePageHelper } from '@/hooks/use-page-helper'; - +import { useTranslation } from 'react-i18next'; const PaperItem = ({ active }: { active?: boolean }) => { const { theme: { @@ -96,7 +96,7 @@ export const EditorModeSwitch = ({ setRadioItemStatus(modifyRadioItemStatus()); // eslint-disable-next-line react-hooks/exhaustive-deps }, [isHover, mode]); - + const { t } = useTranslation(); return ( } active={mode === 'page'} status={radioItemStatus.left} @@ -126,7 +126,7 @@ export const EditorModeSwitch = ({