From 249ea11fbbe9df58c0d9b0160ae555ff8c13f089 Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Fri, 16 Jun 2023 16:41:45 +0800 Subject: [PATCH] feat: add i18n support --- .../plugin-notes-data/src/shared/index.ts | 1 + .../theme/src/client/components/AutoLink.vue | 6 +- .../src/client/components/Nav/NavBar.vue | 2 + .../src/client/components/Nav/NavBarExtra.vue | 14 ++ .../components/Nav/NavBarTranslations.vue | 48 +++++ .../src/client/components/Nav/NavScreen.vue | 2 + .../components/Nav/NavScreenTranslations.vue | 77 ++++++++ .../theme/src/client/components/Nav/index.vue | 2 +- .../theme/src/client/components/PostList.vue | 5 +- .../theme/src/client/composables/langs.ts | 56 ++++++ packages/theme/src/client/layouts/Layout.vue | 4 +- packages/theme/src/client/styles/content.scss | 4 + packages/theme/src/client/utils/shared.ts | 4 + packages/theme/src/node/autoFrontmatter.ts | 169 +++++++++++------- packages/theme/src/node/defaultOptions.ts | 18 +- packages/theme/src/node/defineConfig.ts | 2 + packages/theme/src/node/plugins.ts | 15 +- packages/theme/src/node/setupPages.ts | 42 +++-- packages/theme/src/node/theme.ts | 25 ++- packages/theme/src/shared/options/locale.ts | 6 +- 20 files changed, 400 insertions(+), 102 deletions(-) create mode 100644 packages/theme/src/client/components/Nav/NavBarTranslations.vue create mode 100644 packages/theme/src/client/components/Nav/NavScreenTranslations.vue create mode 100644 packages/theme/src/client/composables/langs.ts diff --git a/packages/plugin-notes-data/src/shared/index.ts b/packages/plugin-notes-data/src/shared/index.ts index ea4a16fc..1a52db4d 100644 --- a/packages/plugin-notes-data/src/shared/index.ts +++ b/packages/plugin-notes-data/src/shared/index.ts @@ -21,6 +21,7 @@ export type NotesSidebarItem = { dir?: string collapsed?: boolean items?: NotesSidebar + icon?: string } export type NotesData = Record diff --git a/packages/theme/src/client/components/AutoLink.vue b/packages/theme/src/client/components/AutoLink.vue index a6938289..319d6742 100644 --- a/packages/theme/src/client/components/AutoLink.vue +++ b/packages/theme/src/client/components/AutoLink.vue @@ -8,6 +8,8 @@ const props = defineProps<{ tag?: string href?: string noIcon?: boolean + target?: string + rel?: string }>() const router = useRouter() @@ -33,8 +35,8 @@ const linkTo = (e: Event) => { class="auto-link" :class="{ link: href }" :href="href ? normalizeLink(href) : undefined" - :target="isExternal ? '_blank' : undefined" - :rel="isExternal ? 'noreferrer' : undefined" + :target="target || (isExternal ? '_blank' : undefined)" + :rel="rel || (isExternal ? 'noreferrer' : undefined)" @click="linkTo($event)" > diff --git a/packages/theme/src/client/components/Nav/NavBar.vue b/packages/theme/src/client/components/Nav/NavBar.vue index bd517d53..268d4e60 100644 --- a/packages/theme/src/client/components/Nav/NavBar.vue +++ b/packages/theme/src/client/components/Nav/NavBar.vue @@ -9,6 +9,7 @@ import NavBarMenu from './NavBarMenu.vue' import NavBarSearch from './NavBarSearch.vue' import NavBarSocialLinks from './NavBarSocialLinks.vue' import NavBarTitle from './NavBarTitle.vue' +import NavBarTranslations from './NavBarTranslations.vue' defineProps<{ isScreenOpen: boolean @@ -38,6 +39,7 @@ const classes = computed(() => ({
+