From bd9796bd256046c66b762913b91be7afd29c6937 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Mon, 29 Aug 2022 15:52:07 +0800 Subject: [PATCH 01/10] update i18n for venus --- apps/venus/src/app/App.tsx | 4 ++-- apps/venus/src/app/i18n/resources/en.json | 2 ++ apps/venus/src/app/i18n/resources/zh.json | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/venus/src/app/App.tsx b/apps/venus/src/app/App.tsx index 8f791b7ec3..af2ac5cc6f 100644 --- a/apps/venus/src/app/App.tsx +++ b/apps/venus/src/app/App.tsx @@ -259,7 +259,7 @@ export function App() { }} size="lg" > - Blog + {t('Blog')} + +// const { t, i18n } = useTranslation(); +// const changeLanguage = (event: any) => { +// i18n.changeLanguage(event); +// }; diff --git a/libs/components/layout/src/i18n/resources/en.json b/libs/components/layout/src/i18n/resources/en.json new file mode 100644 index 0000000000..d12f3bc040 --- /dev/null +++ b/libs/components/layout/src/i18n/resources/en.json @@ -0,0 +1,30 @@ +{ + "translation": { + "Paper": "Paper", + "Edgeless": "Edgeless", + "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" + }, + "stetting": { + "Layout": { + "title": "Layout" + }, + "Comment": { + "title": "Comment" + }, + "Settings": { + "title": "Settings", + "Duplicate Page": "Duplicate Page", + "Copy Page Link": "Copy Page Link", + "Language": "Language", + "Clear Workspace": "Clear Workspace", + "Last edited by": "Last edited by ", + "Logout": "Logout" + } + } + } +} diff --git a/libs/components/layout/src/i18n/resources/zh.json b/libs/components/layout/src/i18n/resources/zh.json new file mode 100644 index 0000000000..90847e4610 --- /dev/null +++ b/libs/components/layout/src/i18n/resources/zh.json @@ -0,0 +1,30 @@ +{ + "translation": { + "Paper": "页面", + "Edgeless": "无边缘", + "Sync to Disk": "同步到磁盘", + "Share": "分享", + "warningTips": { + "isNotfsApiSupported": "欢迎来到AFFiNE 的演示界面。您可以使用最新版本的基于Chrome的浏览器(如Chrome/Edge)将数据同步到磁盘来进行保存", + "isNotLocalWorkspace": "欢迎来到AFFiNE 的演示界面,您可以同步到磁盘来进行保存操作。", + "DoNotStore": "AFFINE 正在积极开发中,当前版本不稳定。请不要存储信息或数据。" + }, + "stetting": { + "Layout": { + "title": "布局" + }, + "Comment": { + "title": "评论" + }, + "Settings": { + "title": "设置", + "Duplicate Page": "复制页面", + "Copy Page Link": "拷贝页面链接", + "Language": "当前语言", + "Clear Workspace": "清空工作区域", + "Last edited by": "最后编辑者为 ", + "Logout": "登出" + } + } + } +} diff --git a/libs/components/layout/src/index.ts b/libs/components/layout/src/index.ts index 69a6d3ff72..1aee5a687f 100644 --- a/libs/components/layout/src/index.ts +++ b/libs/components/layout/src/index.ts @@ -1,3 +1,4 @@ export * from './header'; +export * from './i18n'; export * from './settings-sidebar'; export * from './workspace-sidebar'; diff --git a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx index dc5320c19d..9019063f30 100644 --- a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx +++ b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx @@ -5,6 +5,7 @@ import { } from '@toeverything/components/icons'; import { styled } from '@toeverything/components/ui'; import { cloneElement, useCallback, useMemo, type ReactElement } from 'react'; +import { useTranslation } from 'react-i18next'; import { Comments } from '../Comments'; import { useActiveComment } from '../Comments/use-comments'; import { LayoutSettings } from '../Layout'; @@ -67,7 +68,7 @@ export const ContainerTabs = () => { _defaultTabsKeys as unknown as string[], 'settings' ); - + const { t } = useTranslation(); return ( <> @@ -75,7 +76,7 @@ export const ContainerTabs = () => { const { type, text, icon } = tab; return ( { diff --git a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx index 57e4a2fbf0..a0d93aae23 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx @@ -1,8 +1,21 @@ -import { Divider, ListItem, styled, Switch } from '@toeverything/components/ui'; +import { + Divider, + ListItem, + Option, + Select, + styled, + Switch, +} from '@toeverything/components/ui'; +import { useTranslation } from 'react-i18next'; +import { options } from '../../i18n'; import { useSettings } from './use-settings'; export const SettingsList = () => { const settings = useSettings(); + const { t, i18n } = useTranslation(); + const changeLanguage = (event: any) => { + i18n.changeLanguage(event); + }; return ( @@ -32,7 +45,24 @@ export const SettingsList = () => { return ( item.onClick()}> - {item.name} + {t(`stetting.Settings.${item.name}`)} + {item.name === 'Language' ? ( +
+ +
+ ) : null}
); })} diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx index 1bcf8a83be..2d37a73717 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx @@ -1,6 +1,7 @@ import { styled, Typography } from '@toeverything/components/ui'; import { useUserAndSpaces } from '@toeverything/datasource/state'; import format from 'date-fns/format'; +import { useTranslation } from 'react-i18next'; import { usePageLastUpdated, useWorkspaceAndPageId } from '../util'; export const LastModified = () => { @@ -9,11 +10,12 @@ export const LastModified = () => { const { workspaceId, pageId } = useWorkspaceAndPageId(); const lastModified = usePageLastUpdated({ workspaceId, pageId }); const formatLastModified = format(lastModified, 'MM/dd/yyyy hh:mm'); + const { t } = useTranslation(); return (
- Last edited by + {t('stetting.Settings.Last edited by')} {username}
diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx index a168f25b6d..1960a74626 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx @@ -2,6 +2,7 @@ import { MoveToIcon } from '@toeverything/components/icons'; import { ListItem, styled, Typography } from '@toeverything/components/ui'; import { LOGOUT_COOKIES, LOGOUT_LOCAL_STORAGE } from '@toeverything/utils'; import { getAuth, signOut } from 'firebase/auth'; +import { useTranslation } from 'react-i18next'; const logout = () => { LOGOUT_LOCAL_STORAGE.forEach(name => localStorage.removeItem(name)); @@ -16,10 +17,13 @@ const logout = () => { }; export const Logout = () => { + const { t } = useTranslation(); return ( - Logout + + {t('stetting.Settings.Logout')} + ); }; diff --git a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts index 0dd9413c89..fdd1a1fb53 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts @@ -97,6 +97,13 @@ export const useSettings = (): SettingItem[] => { message.success('Page link copied successfully'); }, }, + { + type: 'button', + name: 'Language', + onClick: () => { + console.log('Language is change'); + }, + }, { type: 'separator', }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d023ebe9e..5ed408b554 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -196,10 +196,14 @@ importers: specifiers: '@mui/icons-material': ^5.8.4 firebase: ^9.9.3 + i18next: ^21.9.1 mini-css-extract-plugin: ^2.6.1 + react-i18next: ^11.18.4 webpack: ^5.74.0 dependencies: '@mui/icons-material': 5.8.4 + i18next: 21.9.1 + react-i18next: 11.18.4_i18next@21.9.1 devDependencies: firebase: 9.9.3 mini-css-extract-plugin: 2.6.1_webpack@5.74.0 @@ -501,7 +505,9 @@ importers: '@types/turndown': ^5.0.1 clsx: ^1.2.1 date-fns: ^2.29.2 + i18next: ^21.9.1 jotai: ^1.8.1 + react-i18next: ^11.18.4 tinycolor2: ^1.4.2 turndown: 7.1.1 dependencies: @@ -513,7 +519,9 @@ importers: '@mui/icons-material': 5.8.4 clsx: 1.2.1 date-fns: 2.29.2 + i18next: 21.9.1 jotai: 1.8.1 + react-i18next: 11.18.4_i18next@21.9.1 tinycolor2: 1.4.2 turndown: 7.1.1 devDependencies: @@ -7383,10 +7391,8 @@ packages: indent-string: 4.0.0 dev: true - /ajv-formats/2.1.1_ajv@8.11.0: + /ajv-formats/2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -16953,7 +16959,7 @@ packages: dependencies: '@types/json-schema': 7.0.11 ajv: 8.11.0 - ajv-formats: 2.1.1_ajv@8.11.0 + ajv-formats: 2.1.1 ajv-keywords: 5.1.0_ajv@8.11.0 dev: true From 0baf02e80f0a88c616f03d423d9d57a5481b96a0 Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Tue, 30 Aug 2022 00:28:57 +0800 Subject: [PATCH 03/10] Update libs/components/layout/src/i18n/resources/en.json Co-authored-by: Whitewater --- libs/components/layout/src/i18n/resources/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/components/layout/src/i18n/resources/en.json b/libs/components/layout/src/i18n/resources/en.json index d12f3bc040..8706296bba 100644 --- a/libs/components/layout/src/i18n/resources/en.json +++ b/libs/components/layout/src/i18n/resources/en.json @@ -9,7 +9,7 @@ "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" }, - "stetting": { + "setting": { "Layout": { "title": "Layout" }, From 0bda0feb8322aaf9e863cf541acb295a1861844d Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Tue, 30 Aug 2022 00:29:28 +0800 Subject: [PATCH 04/10] Update libs/components/layout/src/i18n/index.ts Co-authored-by: Whitewater --- libs/components/layout/src/i18n/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/components/layout/src/i18n/index.ts b/libs/components/layout/src/i18n/index.ts index 6e7cf7521b..dae0c24f3c 100644 --- a/libs/components/layout/src/i18n/index.ts +++ b/libs/components/layout/src/i18n/index.ts @@ -20,7 +20,7 @@ i18next.use(initReactI18next).init({ export const options = [ { value: 'en', text: 'English' }, { value: 'zh', text: '简体中文' }, -]; +] as const; export { i18next }; From e6569410844e970a77919546ab448325a861df74 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 30 Aug 2022 10:32:52 +0800 Subject: [PATCH 05/10] update i18n --- .../header/EditorBoardSwitcher/Switcher.tsx | 4 +- libs/components/layout/src/i18n/index.ts | 6 ++- .../layout/src/i18n/resources/en.json | 46 +++++++++---------- .../layout/src/i18n/resources/zh.json | 46 +++++++++---------- .../ContainerTabs/ContainerTabs.tsx | 10 ++-- .../Settings/SettingsList.tsx | 6 +-- .../settings-sidebar/Settings/use-settings.ts | 14 +++--- 7 files changed, 64 insertions(+), 68 deletions(-) diff --git a/libs/components/layout/src/header/EditorBoardSwitcher/Switcher.tsx b/libs/components/layout/src/header/EditorBoardSwitcher/Switcher.tsx index d1b5cc2acc..636dfdc905 100644 --- a/libs/components/layout/src/header/EditorBoardSwitcher/Switcher.tsx +++ b/libs/components/layout/src/header/EditorBoardSwitcher/Switcher.tsx @@ -38,7 +38,7 @@ export const Switcher = () => { active={pageViewMode === DocMode.doc} onClick={() => switchToPageView(DocMode.doc)} > - {t('Paper')} + Paper { active={pageViewMode === DocMode.board} onClick={() => switchToPageView(DocMode.board)} > - {t('Edgeless')} + Edgeless ); diff --git a/libs/components/layout/src/i18n/index.ts b/libs/components/layout/src/i18n/index.ts index dae0c24f3c..efb3848125 100644 --- a/libs/components/layout/src/i18n/index.ts +++ b/libs/components/layout/src/i18n/index.ts @@ -4,8 +4,10 @@ import en_US from './resources/en.json'; import zh_CN from './resources/zh.json'; const resources = { - en: en_US, - zh: zh_CN, + translation: { + en: en_US, + zh: zh_CN, + }, } as const; i18next.use(initReactI18next).init({ diff --git a/libs/components/layout/src/i18n/resources/en.json b/libs/components/layout/src/i18n/resources/en.json index 8706296bba..ef13d02e86 100644 --- a/libs/components/layout/src/i18n/resources/en.json +++ b/libs/components/layout/src/i18n/resources/en.json @@ -1,30 +1,26 @@ { - "translation": { - "Paper": "Paper", - "Edgeless": "Edgeless", - "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" + "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" + }, + "Setting": { + "Layout": { + "Title": "Layout" }, - "setting": { - "Layout": { - "title": "Layout" - }, - "Comment": { - "title": "Comment" - }, - "Settings": { - "title": "Settings", - "Duplicate Page": "Duplicate Page", - "Copy Page Link": "Copy Page Link", - "Language": "Language", - "Clear Workspace": "Clear Workspace", - "Last edited by": "Last edited by ", - "Logout": "Logout" - } + "Comment": { + "Title": "Comment" + }, + "Settings": { + "Title": "Settings", + "Duplicate Page": "Duplicate Page", + "Copy Page Link": "Copy Page Link", + "Language": "Language", + "Clear Workspace": "Clear Workspace", + "Last edited by": "Last edited by ", + "Logout": "Logout" } } } diff --git a/libs/components/layout/src/i18n/resources/zh.json b/libs/components/layout/src/i18n/resources/zh.json index 90847e4610..51a0cfcd00 100644 --- a/libs/components/layout/src/i18n/resources/zh.json +++ b/libs/components/layout/src/i18n/resources/zh.json @@ -1,30 +1,26 @@ { - "translation": { - "Paper": "页面", - "Edgeless": "无边缘", - "Sync to Disk": "同步到磁盘", - "Share": "分享", - "warningTips": { - "isNotfsApiSupported": "欢迎来到AFFiNE 的演示界面。您可以使用最新版本的基于Chrome的浏览器(如Chrome/Edge)将数据同步到磁盘来进行保存", - "isNotLocalWorkspace": "欢迎来到AFFiNE 的演示界面,您可以同步到磁盘来进行保存操作。", - "DoNotStore": "AFFINE 正在积极开发中,当前版本不稳定。请不要存储信息或数据。" + "Sync to Disk": "同步到磁盘", + "Share": "分享", + "WarningTips": { + "IsNotfsApiSupported": "欢迎来到AFFiNE 的演示界面。您可以使用最新版本的基于Chrome的浏览器(如Chrome/Edge)将数据同步到磁盘来进行保存", + "IsNotLocalWorkspace": "欢迎来到AFFiNE 的演示界面,您可以同步到磁盘来进行保存操作。", + "DoNotStore": "AFFINE 正在积极开发中,当前版本不稳定。请不要存储信息或数据。" + }, + "Setting": { + "Layout": { + "Title": "布局" }, - "stetting": { - "Layout": { - "title": "布局" - }, - "Comment": { - "title": "评论" - }, - "Settings": { - "title": "设置", - "Duplicate Page": "复制页面", - "Copy Page Link": "拷贝页面链接", - "Language": "当前语言", - "Clear Workspace": "清空工作区域", - "Last edited by": "最后编辑者为 ", - "Logout": "登出" - } + "Comment": { + "Title": "评论" + }, + "Settings": { + "Title": "设置", + "Duplicate Page": "复制页面", + "Copy Page Link": "拷贝页面链接", + "Language": "当前语言", + "Clear Workspace": "清空工作区域", + "Last edited by": "最后编辑者为 ", + "Logout": "退出登录" } } } diff --git a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx index 9019063f30..9e29edaa2d 100644 --- a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx +++ b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx @@ -17,12 +17,13 @@ const _defaultTabsKeys = ['layout', 'comment', 'settings'] as const; export const ContainerTabs = () => { const { activeCommentId, resolveComment } = useActiveComment(); + const { t } = useTranslation(); const getSettingsTabsData = useCallback((): SettingsTabItemType[] => { return [ { type: 'layout', - text: 'Layout', + text: t('Setting.Layout'), icon: ( @@ -32,7 +33,7 @@ export const ContainerTabs = () => { }, { type: 'comment', - text: 'Comment', + text: t('Setting.Comment'), icon: ( @@ -49,7 +50,7 @@ export const ContainerTabs = () => { }, { type: 'settings', - text: 'Settings', + text: t('Setting.Settings'), icon: ( @@ -68,7 +69,6 @@ export const ContainerTabs = () => { _defaultTabsKeys as unknown as string[], 'settings' ); - const { t } = useTranslation(); return ( <> @@ -76,7 +76,7 @@ export const ContainerTabs = () => { const { type, text, icon } = tab; return ( { diff --git a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx index a0d93aae23..47384cf99f 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx @@ -12,8 +12,8 @@ import { useSettings } from './use-settings'; export const SettingsList = () => { const settings = useSettings(); - const { t, i18n } = useTranslation(); - const changeLanguage = (event: any) => { + const { i18n } = useTranslation(); + const changeLanguage = event => { i18n.changeLanguage(event); }; @@ -45,7 +45,7 @@ export const SettingsList = () => { return ( item.onClick()}> - {t(`stetting.Settings.${item.name}`)} + {item.name} {item.name === 'Language' ? (
+ ) : item.name === '当前语言' ? ( +
+ +
) : null}
); diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx index 2d37a73717..853912780b 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx @@ -15,7 +15,7 @@ export const LastModified = () => {
- {t('stetting.Settings.Last edited by')} + {t('Last edited by')} {username}
diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx index 1960a74626..3dfc7dffb9 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/Logout.tsx @@ -21,9 +21,7 @@ export const Logout = () => { return ( - - {t('stetting.Settings.Logout')} - + {t('Logout')} ); }; diff --git a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts index eb7d2d1454..8b08312e94 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts @@ -82,7 +82,7 @@ export const useSettings = (): SettingItem[] => { // }, { type: 'button', - name: t('Setting.Settings.Duplicate Page'), + name: t('Duplicate Page'), onClick: async () => { const newPageInfo = await duplicatePage({ workspaceId, @@ -93,7 +93,7 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: t('Setting.Settings.Copy Page Link'), + name: t('Copy Page Link'), onClick: () => { copyToClipboard(window.location.href); message.success('Page link copied successfully'); @@ -101,7 +101,7 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: t('Setting.Settings.Language'), + name: t('Language'), onClick: () => { //Do noting }, @@ -150,7 +150,7 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: t('Setting.Settings.Clear Workspace'), + name: t('Clear Workspace'), onClick: () => clearWorkspace(workspaceId), flag: 'booleanClearWorkspace', }, From 6b373642e786f0dd861e43d2ea8c7caef6c36fbc Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 30 Aug 2022 11:16:59 +0800 Subject: [PATCH 07/10] update --- libs/components/layout/src/i18n/index.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/libs/components/layout/src/i18n/index.ts b/libs/components/layout/src/i18n/index.ts index 174786cb26..866edee933 100644 --- a/libs/components/layout/src/i18n/index.ts +++ b/libs/components/layout/src/i18n/index.ts @@ -24,18 +24,3 @@ export const options = [ ] as const; export { i18next }; - -// import { useTranslation } from 'react-i18next'; -// import { options } from './i18n'; -// - -// const { t, i18n } = useTranslation(); -// const changeLanguage = (event: any) => { -// i18n.changeLanguage(event); -// }; From 838113941e2ec8785296baa0c480d62c3b5b5965 Mon Sep 17 00:00:00 2001 From: JimmFly Date: Tue, 30 Aug 2022 12:42:04 +0800 Subject: [PATCH 08/10] update i18n --- libs/components/layout/src/i18n/index.ts | 14 +++++++++++ .../layout/src/i18n/resources/en.json | 9 +++++-- .../layout/src/i18n/resources/zh.json | 9 +++++-- .../ContainerTabs/ContainerTabs.tsx | 10 ++++---- .../Settings/SettingsList.tsx | 22 +++-------------- .../Settings/footer/LastModified.tsx | 3 +-- .../settings-sidebar/Settings/use-settings.ts | 24 ++++++++++++++----- 7 files changed, 55 insertions(+), 36 deletions(-) diff --git a/libs/components/layout/src/i18n/index.ts b/libs/components/layout/src/i18n/index.ts index 866edee933..20f4e2a3ce 100644 --- a/libs/components/layout/src/i18n/index.ts +++ b/libs/components/layout/src/i18n/index.ts @@ -3,6 +3,20 @@ import { initReactI18next } from 'react-i18next'; import en_US from './resources/en.json'; import zh_CN from './resources/zh.json'; +// See https://react.i18next.com/latest/typescript +declare module 'react-i18next' { + // and extend them! + interface CustomTypeOptions { + // custom namespace type if you changed it + defaultNS: 'ns1'; + // custom resources type + resources: { + en: typeof en_US.translation; + zh: typeof zh_CN.translation; + }; + } +} + const resources = { en: en_US, zh: zh_CN, diff --git a/libs/components/layout/src/i18n/resources/en.json b/libs/components/layout/src/i18n/resources/en.json index 0a3efcdc9a..4c6a714e9b 100644 --- a/libs/components/layout/src/i18n/resources/en.json +++ b/libs/components/layout/src/i18n/resources/en.json @@ -10,12 +10,17 @@ "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", - "Last edited by": "Last edited by ", + "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" } } diff --git a/libs/components/layout/src/i18n/resources/zh.json b/libs/components/layout/src/i18n/resources/zh.json index d8fcedc53f..da86cef6b2 100644 --- a/libs/components/layout/src/i18n/resources/zh.json +++ b/libs/components/layout/src/i18n/resources/zh.json @@ -7,7 +7,7 @@ "IsNotLocalWorkspace": "欢迎来到AFFiNE 的演示界面,您可以同步到磁盘来进行保存操作。", "DoNotStore": "AFFINE 正在积极开发中,当前版本不稳定。请不要存储信息或数据。" }, - + "ComingSoon": "布局设置即将到来", "Layout": "布局", "Comment": "评论", "Settings": "设置", @@ -15,7 +15,12 @@ "Copy Page Link": "复制页面链接", "Language": "当前语言", "Clear Workspace": "清空工作区域", - "Last edited by": "最后编辑者为 ", + "Export As Markdown": "导出 markdown", + "Export As HTML": "导出 HTML", + "Export As PDF (Unsupported)": "导出 PDF (暂不支持)", + "Import Workspace": "导入 Workspace", + "Export Workspace": "导出 Workspace", + "Last edited by": "最后编辑者为 {{name}}", "Logout": "退出登录" } } diff --git a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx index a479e7f372..4503482d05 100644 --- a/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx +++ b/libs/components/layout/src/settings-sidebar/ContainerTabs/ContainerTabs.tsx @@ -23,7 +23,7 @@ export const ContainerTabs = () => { return [ { type: 'layout', - text: 'Layout', + text: t('Layout'), icon: ( @@ -33,7 +33,7 @@ export const ContainerTabs = () => { }, { type: 'comment', - text: 'Comment', + text: t('Comment'), icon: ( @@ -50,7 +50,7 @@ export const ContainerTabs = () => { }, { type: 'settings', - text: 'Settings', + text: t('Settings'), icon: ( @@ -59,7 +59,7 @@ export const ContainerTabs = () => { panel: , }, ]; - }, [activeCommentId, resolveComment]); + }, [activeCommentId, resolveComment, t]); const settingsTabsData = useMemo(() => { return getSettingsTabsData(); @@ -76,7 +76,7 @@ export const ContainerTabs = () => { const { type, text, icon } = tab; return ( { diff --git a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx index 90ecf60cc6..d1b633b754 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx @@ -28,7 +28,7 @@ export const SettingsList = () => { if (type === 'switch') { return ( { item.onChange(!item.value); }} @@ -44,9 +44,9 @@ export const SettingsList = () => { } return ( - item.onClick()}> + item.onClick()}> {item.name} - {item.name === 'Language' ? ( + {item.key === 'Language' ? (
- ) : item.name === '当前语言' ? ( -
- -
) : null}
); diff --git a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx index 853912780b..0c0b5c2efd 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/footer/LastModified.tsx @@ -15,8 +15,7 @@ export const LastModified = () => {
- {t('Last edited by')} - {username} + {t('Last edited by', { name: username })}
diff --git a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts index 8b08312e94..dfd8918c49 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts +++ b/libs/components/layout/src/settings-sidebar/Settings/use-settings.ts @@ -17,6 +17,7 @@ import { interface BaseSettingItem { flag?: keyof SettingFlags; + key: string; } interface SwitchItem extends BaseSettingItem { @@ -83,6 +84,7 @@ export const useSettings = (): SettingItem[] => { { type: 'button', name: t('Duplicate Page'), + key: 'Duplicate Page', onClick: async () => { const newPageInfo = await duplicatePage({ workspaceId, @@ -94,6 +96,7 @@ export const useSettings = (): SettingItem[] => { { type: 'button', name: t('Copy Page Link'), + key: 'Copy Page Link', onClick: () => { copyToClipboard(window.location.href); message.success('Page link copied successfully'); @@ -102,16 +105,19 @@ export const useSettings = (): SettingItem[] => { { type: 'button', name: t('Language'), + key: 'Language', onClick: () => { - //Do noting + // Do noting }, }, { type: 'separator', + key: 'separator1', }, { type: 'button', - name: 'Export As Markdown', + name: t('Export As Markdown'), + key: 'Export As Markdown', onClick: async () => { const title = await getPageTitle({ workspaceId, pageId }); exportMarkdown({ workspaceId, rootBlockId: pageId, title }); @@ -120,7 +126,8 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: 'Export As HTML', + name: t('Export As HTML'), + key: 'Export As HTML', onClick: async () => { const title = await getPageTitle({ workspaceId, pageId }); exportHtml({ workspaceId, rootBlockId: pageId, title }); @@ -129,28 +136,33 @@ export const useSettings = (): SettingItem[] => { }, { type: 'button', - name: 'Export As PDF (Unsupported)', + name: t('Export As PDF (Unsupported)'), + key: 'Export As PDF (Unsupported)', onClick: () => console.log('Export As PDF'), flag: 'booleanExportPdf', }, { type: 'separator', + key: 'separator2', }, { type: 'button', - name: 'Import Workspace', + name: t('Import Workspace'), + key: 'Import Workspace', onClick: () => importWorkspace(workspaceId), flag: 'booleanImportWorkspace', }, { type: 'button', - name: 'Export Workspace', + name: t('Export Workspace'), + key: 'Export Workspace', onClick: () => exportWorkspace(), flag: 'booleanExportWorkspace', }, { type: 'button', name: t('Clear Workspace'), + key: 'Clear Workspace', onClick: () => clearWorkspace(workspaceId), flag: 'booleanClearWorkspace', }, From 5e767e187f220e16a316e8d535ead6ac2eecc899 Mon Sep 17 00:00:00 2001 From: JimmFly <102217452+JimmFly@users.noreply.github.com> Date: Tue, 30 Aug 2022 14:58:04 +0800 Subject: [PATCH 09/10] Update libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx Co-authored-by: Whitewater --- .../layout/src/settings-sidebar/Settings/SettingsList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx index d1b633b754..18e7d20d3f 100644 --- a/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx +++ b/libs/components/layout/src/settings-sidebar/Settings/SettingsList.tsx @@ -49,7 +49,7 @@ export const SettingsList = () => { {item.key === 'Language' ? (
{options.map(option => (