From 7079faf2b9507a883a32da50ee538f538e2d57a8 Mon Sep 17 00:00:00 2001 From: ChasLui Date: Wed, 14 Sep 2022 19:14:45 +0800 Subject: [PATCH] chore: update i18n (#212) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 增加部分 i18n * feat: 增加部分 i18n * feat: 增加部分 i18n --- web/src/components/CreateShortcutDialog.tsx | 14 ++++++++------ web/src/components/MemoFilter.tsx | 4 +++- web/src/components/SearchBar.tsx | 6 ++++-- web/src/components/ShortcutList.tsx | 3 ++- web/src/components/TagList.tsx | 2 +- web/src/locales/en.json | 13 ++++++++++++- web/src/locales/zh.json | 13 ++++++++++++- 7 files changed, 42 insertions(+), 13 deletions(-) diff --git a/web/src/components/CreateShortcutDialog.tsx b/web/src/components/CreateShortcutDialog.tsx index 16fd8914a..29fb0b876 100644 --- a/web/src/components/CreateShortcutDialog.tsx +++ b/web/src/components/CreateShortcutDialog.tsx @@ -6,6 +6,7 @@ import Icon from "./Icon"; import { generateDialog } from "./Dialog"; import toastHelper from "./Toast"; import Selector from "./common/Selector"; +import useI18n from "../hooks/useI18n"; import "../less/create-shortcut-dialog.less"; interface Props extends DialogProps { @@ -18,6 +19,7 @@ const CreateShortcutDialog: React.FC = (props: Props) => { const [title, setTitle] = useState(""); const [filters, setFilters] = useState([]); const requestState = useLoading(false); + const { t } = useI18n(); const shownMemoLength = memoService.getState().memos.filter((memo) => { return checkShouldShowMemoWithFilters(memo, filters); @@ -99,7 +101,7 @@ const CreateShortcutDialog: React.FC = (props: Props) => {

🚀 - {shortcutId ? "Edit Shortcut" : "Create Shortcut"} + {shortcutId ? t("common.edit-shortcut") : t("common.create-shortcut")}

- Title + {t("common.title")}
- Filters + {t("common.filters")}
{filters.map((f, index) => { return ( @@ -125,7 +127,7 @@ const CreateShortcutDialog: React.FC = (props: Props) => { ); })}
- New Filter + {t("common.new-filter")}
@@ -134,10 +136,10 @@ const CreateShortcutDialog: React.FC = (props: Props) => {
- {shownMemoLength} eligible memo + {shownMemoLength} {t("common.eligible-memo")}
diff --git a/web/src/components/MemoFilter.tsx b/web/src/components/MemoFilter.tsx index f0cd3c9be..73cd65707 100644 --- a/web/src/components/MemoFilter.tsx +++ b/web/src/components/MemoFilter.tsx @@ -2,6 +2,7 @@ import { useAppSelector } from "../store"; import { locationService, shortcutService } from "../services"; import * as utils from "../helpers/utils"; import { getTextWithMemoType } from "../helpers/filter"; +import useI18n from "../hooks/useI18n"; import "../less/memo-filter.less"; const MemoFilter = () => { @@ -10,10 +11,11 @@ const MemoFilter = () => { const { tag: tagQuery, duration, type: memoType, text: textQuery, shortcutId } = query; const shortcut = shortcutId ? shortcutService.getShortcutById(shortcutId) : null; const showFilter = Boolean(tagQuery || (duration && duration.from < duration.to) || memoType || textQuery || shortcut); + const { t } = useI18n(); return (
- Filter: + {t("common.filter")}:
{ diff --git a/web/src/components/SearchBar.tsx b/web/src/components/SearchBar.tsx index d14e000e3..27bf234e4 100644 --- a/web/src/components/SearchBar.tsx +++ b/web/src/components/SearchBar.tsx @@ -2,10 +2,12 @@ import { locationService } from "../services"; import { useAppSelector } from "../store"; import { memoSpecialTypes } from "../helpers/filter"; import Icon from "./Icon"; +import useI18n from "../hooks/useI18n"; import "../less/search-bar.less"; const SearchBar = () => { const memoType = useAppSelector((state) => state.location.query?.type); + const { t } = useI18n(); const handleMemoTypeItemClick = (type: MemoSpecType | undefined) => { const { type: prevType } = locationService.getState().query ?? {}; @@ -28,9 +30,9 @@ const SearchBar = () => {
-

QUICKLY FILTER

+

{t("common.quickly-filter")}

- Type: + {t("common.types")}:
{memoSpecialTypes.map((t, idx) => { return ( diff --git a/web/src/components/ShortcutList.tsx b/web/src/components/ShortcutList.tsx index 58dee81cc..1324e0a80 100644 --- a/web/src/components/ShortcutList.tsx +++ b/web/src/components/ShortcutList.tsx @@ -14,6 +14,7 @@ const ShortcutList = () => { const query = useAppSelector((state) => state.location.query); const shortcuts = useAppSelector((state) => state.shortcut.shortcuts); const loadingState = useLoading(); + const { t } = useI18n(); const pinnedShortcuts = shortcuts .filter((s) => s.rowStatus === "ARCHIVED") @@ -37,7 +38,7 @@ const ShortcutList = () => { return (

- Shortcuts + {t("common.shortcuts")} diff --git a/web/src/components/TagList.tsx b/web/src/components/TagList.tsx index 87037ec1a..74cc265b2 100644 --- a/web/src/components/TagList.tsx +++ b/web/src/components/TagList.tsx @@ -69,7 +69,7 @@ const TagList = () => { return (

-

Tags

+

{t("common.tags")}

{tags.map((t, idx) => ( diff --git a/web/src/locales/en.json b/web/src/locales/en.json index 8e8fd5f45..30b941002 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -25,7 +25,18 @@ "explore": "Explore", "sign-in": "Sign in", "sign-out": "Sign out", - "back-to-home": "Back to Home" + "back-to-home": "Back to Home", + "shortcuts": "Shortcuts", + "create-shortcut" : "Create Shortcut", + "edit-shortcut": "Edit Shortcut", + "title": "Title", + "filter": "Filter", + "filters": "Filters", + "new-filter": "New Filter", + "eligible-memo": "eligible memo", + "tags": "Tags", + "quickly-filter": "QUICKLY FILTER", + "types": "TYPE" }, "slogan": "An open source, self-hosted knowledge base that works with a SQLite db file.", "auth": { diff --git a/web/src/locales/zh.json b/web/src/locales/zh.json index 77950eb12..d1273fde5 100644 --- a/web/src/locales/zh.json +++ b/web/src/locales/zh.json @@ -25,7 +25,18 @@ "explore": "探索", "sign-in": "登录", "sign-out": "退出登录", - "back-to-home": "回到主页" + "back-to-home": "回到主页", + "shortcuts": "快捷方式", + "create-shortcut" : "创建快捷方式", + "edit-shortcut": "编辑快捷方式", + "title": "标题", + "filter": "过滤", + "filters": "全部过滤", + "new-filter": "新建过滤", + "eligible-memo": "符合条件的memo", + "tags": "全部标签", + "quickly-filter": "快速过滤", + "types": "类型" }, "slogan": "一个开源的、支持私有化部署的碎片化知识卡片管理工具。", "auth": {