This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fury-site.git


The following commit(s) were added to refs/heads/main by this push:
     new b2aa2fd  [New Feature]Added internationalization configuration to 
Fury. (#141)
b2aa2fd is described below

commit b2aa2fd1344e27cff317dc8e8e9607617bb1cd43
Author: LofiSu <[email protected]>
AuthorDate: Sat Aug 3 20:36:38 2024 +0800

    [New Feature]Added internationalization configuration to Fury. (#141)
    
    "Added internationalized routing configuration and internationalization
    framework setup to Fury, and included a Simplified Chinese version."
    
    
![image](https://github.com/user-attachments/assets/65e612ea-a34c-4e13-95ae-a33a17643289)
    
    
![image](https://github.com/user-attachments/assets/869562f3-4ff4-4e50-8cef-bc47010c1315)
---
 docusaurus.config.ts                               |  20 +-
 i18n/en/code.json                                  | 277 ++++++++++++++++++
 .../en/docusaurus-plugin-content-blog/options.json |  14 +
 .../en/docusaurus-plugin-content-docs/current.json |   6 +
 i18n/en/docusaurus-theme-classic/footer.json       |  54 ++++
 i18n/en/docusaurus-theme-classic/navbar.json       |  70 +++++
 i18n/zh-CN/code.json                               | 317 +++++++++++++++++++++
 .../docusaurus-plugin-content-blog/options.json    |  14 +
 .../docusaurus-plugin-content-docs/current.json    |   6 +
 i18n/zh-CN/docusaurus-theme-classic/footer.json    |  54 ++++
 i18n/zh-CN/docusaurus-theme-classic/navbar.json    |  70 +++++
 src/components/HomepageFeatures/index.tsx          |  73 +++--
 src/pages/index.tsx                                |  56 ++--
 tsconfig.json                                      |   1 +
 14 files changed, 991 insertions(+), 41 deletions(-)

diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 97fa57d..75f736d 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -6,7 +6,7 @@ const config: Config = {
   title: 'Apache Fury (incubating)',
   tagline: 'A blazing-fast cross-language serialization framework powered by 
just-in-time compilation and zero-copy',
   favicon: 'img/favicon.ico',
-
+  
   // Set the production url of your site here
   url: 'https://fury.apache.org/',
   // Set the /<baseUrl>/ pathname under which your site is served
@@ -18,12 +18,16 @@ const config: Config = {
 
   // Even if you don't use internationalization, you can use this field to set
   // useful metadata like html lang. For example, if your site is Chinese, you
-  // may want to replace "en" with "zh-Hans".
-  i18n: {
+  // may want to replace "en" with "zh-CN".
+   i18n: {
     defaultLocale: 'en',
-    locales: ['en'],
+    locales: ['en', 'zh-CN'],
+    localeConfigs: {
+      'zh-CN': {
+        htmlLang: 'zh-CN',
+      },
+    },
   },
-
   presets: [
     [
       'classic',
@@ -141,6 +145,10 @@ const config: Config = {
           className: 'header-github-link',
           'aria-label': 'GitHub repository',
         },
+        {
+          type: 'localeDropdown',
+          position: 'right',
+        },
       ],
     },
     footer: {
@@ -217,3 +225,5 @@ const config: Config = {
 };
 
 export default config;
+
+
diff --git a/i18n/en/code.json b/i18n/en/code.json
new file mode 100644
index 0000000..8775393
--- /dev/null
+++ b/i18n/en/code.json
@@ -0,0 +1,277 @@
+{
+  "theme.BackToTopButton.buttonAriaLabel": {
+    "message": "Scroll back to top",
+    "description": "The ARIA label for the back to top button"
+  },
+  "theme.blog.paginator.navAriaLabel": {
+    "message": "Blog list page navigation",
+    "description": "The ARIA label for the blog pagination"
+  },
+  "theme.blog.paginator.newerEntries": {
+    "message": "Newer Entries",
+    "description": "The label used to navigate to the newer blog posts page 
(previous page)"
+  },
+  "theme.blog.paginator.olderEntries": {
+    "message": "Older Entries",
+    "description": "The label used to navigate to the older blog posts page 
(next page)"
+  },
+  "theme.blog.post.paginator.navAriaLabel": {
+    "message": "Blog post page navigation",
+    "description": "The ARIA label for the blog posts pagination"
+  },
+  "theme.blog.post.paginator.newerPost": {
+    "message": "Newer Post",
+    "description": "The blog post button label to navigate to the 
newer/previous post"
+  },
+  "theme.blog.post.paginator.olderPost": {
+    "message": "Older Post",
+    "description": "The blog post button label to navigate to the older/next 
post"
+  },
+  "theme.blog.post.plurals": {
+    "message": "One post|{count} posts",
+    "description": "Pluralized label for \"{count} posts\". Use as much plural 
forms (separated by \"|\") as your language support (see 
https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+  },
+  "theme.blog.tagTitle": {
+    "message": "{nPosts} tagged with \"{tagName}\"",
+    "description": "The title of the page for a blog tag"
+  },
+  "theme.tags.tagsPageLink": {
+    "message": "View All Tags",
+    "description": "The label of the link targeting the tag list page"
+  },
+  "theme.colorToggle.ariaLabel": {
+    "message": "Switch between dark and light mode (currently {mode})",
+    "description": "The ARIA label for the navbar color mode toggle"
+  },
+  "theme.colorToggle.ariaLabel.mode.dark": {
+    "message": "dark mode",
+    "description": "The name for the dark color mode"
+  },
+  "theme.colorToggle.ariaLabel.mode.light": {
+    "message": "light mode",
+    "description": "The name for the light color mode"
+  },
+  "theme.docs.breadcrumbs.navAriaLabel": {
+    "message": "Breadcrumbs",
+    "description": "The ARIA label for the breadcrumbs"
+  },
+  "theme.docs.DocCard.categoryDescription": {
+    "message": "{count} items",
+    "description": "The default description for a category card in the 
generated index about how many items this category includes"
+  },
+  "theme.docs.paginator.navAriaLabel": {
+    "message": "Docs pages",
+    "description": "The ARIA label for the docs pagination"
+  },
+  "theme.docs.paginator.previous": {
+    "message": "Previous",
+    "description": "The label used to navigate to the previous doc"
+  },
+  "theme.docs.paginator.next": {
+    "message": "Next",
+    "description": "The label used to navigate to the next doc"
+  },
+  "theme.docs.tagDocListPageTitle.nDocsTagged": {
+    "message": "One doc tagged|{count} docs tagged",
+    "description": "Pluralized label for \"{count} docs tagged\". Use as much 
plural forms (separated by \"|\") as your language support (see 
https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+  },
+  "theme.docs.tagDocListPageTitle": {
+    "message": "{nDocsTagged} with \"{tagName}\"",
+    "description": "The title of the page for a docs tag"
+  },
+  "theme.docs.versionBadge.label": {
+    "message": "Version: {versionLabel}"
+  },
+  "theme.docs.versions.unreleasedVersionLabel": {
+    "message": "This is unreleased documentation for {siteTitle} 
{versionLabel} version.",
+    "description": "The label used to tell the user that he's browsing an 
unreleased doc version"
+  },
+  "theme.docs.versions.unmaintainedVersionLabel": {
+    "message": "This is documentation for {siteTitle} {versionLabel}, which is 
no longer actively maintained.",
+    "description": "The label used to tell the user that he's browsing an 
unmaintained doc version"
+  },
+  "theme.docs.versions.latestVersionSuggestionLabel": {
+    "message": "For up-to-date documentation, see the {latestVersionLink} 
({versionLabel}).",
+    "description": "The label used to tell the user to check the latest 
version"
+  },
+  "theme.docs.versions.latestVersionLinkLabel": {
+    "message": "latest version",
+    "description": "The label used for the latest version suggestion link 
label"
+  },
+  "theme.common.editThisPage": {
+    "message": "Edit this page",
+    "description": "The link label to edit the current page"
+  },
+  "theme.common.headingLinkTitle": {
+    "message": "Direct link to {heading}",
+    "description": "Title for link to heading"
+  },
+  "theme.lastUpdated.atDate": {
+    "message": " on {date}",
+    "description": "The words used to describe on which date a page has been 
last updated"
+  },
+  "theme.lastUpdated.byUser": {
+    "message": " by {user}",
+    "description": "The words used to describe by who the page has been last 
updated"
+  },
+  "theme.lastUpdated.lastUpdatedAtBy": {
+    "message": "Last updated{atDate}{byUser}",
+    "description": "The sentence used to display when a page has been last 
updated, and by who"
+  },
+  "theme.navbar.mobileVersionsDropdown.label": {
+    "message": "Versions",
+    "description": "The label for the navbar versions dropdown on mobile view"
+  },
+  "theme.NotFound.title": {
+    "message": "Page Not Found",
+    "description": "The title of the 404 page"
+  },
+  "theme.tags.tagsListLabel": {
+    "message": "Tags:",
+    "description": "The label alongside a tag list"
+  },
+  "theme.admonition.caution": {
+    "message": "caution",
+    "description": "The default label used for the Caution admonition 
(:::caution)"
+  },
+  "theme.admonition.danger": {
+    "message": "danger",
+    "description": "The default label used for the Danger admonition 
(:::danger)"
+  },
+  "theme.admonition.info": {
+    "message": "info",
+    "description": "The default label used for the Info admonition (:::info)"
+  },
+  "theme.admonition.note": {
+    "message": "note",
+    "description": "The default label used for the Note admonition (:::note)"
+  },
+  "theme.admonition.tip": {
+    "message": "tip",
+    "description": "The default label used for the Tip admonition (:::tip)"
+  },
+  "theme.admonition.warning": {
+    "message": "warning",
+    "description": "The default label used for the Warning admonition 
(:::warning)"
+  },
+  "theme.AnnouncementBar.closeButtonAriaLabel": {
+    "message": "Close",
+    "description": "The ARIA label for close button of announcement bar"
+  },
+  "theme.blog.sidebar.navAriaLabel": {
+    "message": "Blog recent posts navigation",
+    "description": "The ARIA label for recent posts in the blog sidebar"
+  },
+  "theme.CodeBlock.copied": {
+    "message": "Copied",
+    "description": "The copied button label on code blocks"
+  },
+  "theme.CodeBlock.copyButtonAriaLabel": {
+    "message": "Copy code to clipboard",
+    "description": "The ARIA label for copy code blocks button"
+  },
+  "theme.CodeBlock.copy": {
+    "message": "Copy",
+    "description": "The copy button label on code blocks"
+  },
+  "theme.CodeBlock.wordWrapToggle": {
+    "message": "Toggle word wrap",
+    "description": "The title attribute for toggle word wrapping button of 
code block lines"
+  },
+  "theme.DocSidebarItem.expandCategoryAriaLabel": {
+    "message": "Expand sidebar category '{label}'",
+    "description": "The ARIA label to expand the sidebar category"
+  },
+  "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+    "message": "Collapse sidebar category '{label}'",
+    "description": "The ARIA label to collapse the sidebar category"
+  },
+  "theme.navbar.mobileLanguageDropdown.label": {
+    "message": "Languages",
+    "description": "The label for the mobile language switcher dropdown"
+  },
+  "theme.NotFound.p1": {
+    "message": "We could not find what you were looking for.",
+    "description": "The first paragraph of the 404 page"
+  },
+  "theme.NotFound.p2": {
+    "message": "Please contact the owner of the site that linked you to the 
original URL and let them know their link is broken.",
+    "description": "The 2nd paragraph of the 404 page"
+  },
+  "theme.NavBar.navAriaLabel": {
+    "message": "Main",
+    "description": "The ARIA label for the main navigation"
+  },
+  "theme.TOCCollapsible.toggleButtonLabel": {
+    "message": "On this page",
+    "description": "The label used by the button on the collapsible TOC 
component"
+  },
+  "theme.blog.post.readingTime.plurals": {
+    "message": "One min read|{readingTime} min read",
+    "description": "Pluralized label for \"{readingTime} min read\". Use as 
much plural forms (separated by \"|\") as your language support (see 
https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+  },
+  "theme.blog.post.readMore": {
+    "message": "Read More",
+    "description": "The label used in blog post item excerpts to link to full 
blog posts"
+  },
+  "theme.blog.post.readMoreLabel": {
+    "message": "Read more about {title}",
+    "description": "The ARIA label for the link to full blog posts from 
excerpts"
+  },
+  "theme.docs.breadcrumbs.home": {
+    "message": "Home page",
+    "description": "The ARIA label for the home page in the breadcrumbs"
+  },
+  "theme.docs.sidebar.collapseButtonTitle": {
+    "message": "Collapse sidebar",
+    "description": "The title attribute for collapse button of doc sidebar"
+  },
+  "theme.docs.sidebar.collapseButtonAriaLabel": {
+    "message": "Collapse sidebar",
+    "description": "The title attribute for collapse button of doc sidebar"
+  },
+  "theme.docs.sidebar.navAriaLabel": {
+    "message": "Docs sidebar",
+    "description": "The ARIA label for the sidebar navigation"
+  },
+  "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+    "message": "Close navigation bar",
+    "description": "The ARIA label for close button of mobile sidebar"
+  },
+  "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+    "message": "← Back to main menu",
+    "description": "The label of the back button to return to main menu, 
inside the mobile navbar sidebar secondary menu (notably used to display the 
docs sidebar)"
+  },
+  "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+    "message": "Toggle navigation bar",
+    "description": "The ARIA label for hamburger menu button of mobile 
navigation"
+  },
+  "theme.docs.sidebar.expandButtonTitle": {
+    "message": "Expand sidebar",
+    "description": "The ARIA label and title attribute for expand button of 
doc sidebar"
+  },
+  "theme.docs.sidebar.expandButtonAriaLabel": {
+    "message": "Expand sidebar",
+    "description": "The ARIA label and title attribute for expand button of 
doc sidebar"
+  },
+  "theme.ErrorPageContent.tryAgain": {
+    "message": "Try again",
+    "description": "The label of the button to try again rendering when the 
React error boundary captures an error"
+  },
+  "theme.common.skipToMainContent": {
+    "message": "Skip to main content",
+    "description": "The skip to content label used for accessibility, allowing 
to rapidly navigate to main content with keyboard tab/enter navigation"
+  },
+  "theme.tags.tagsPageTitle": {
+    "message": "Tags",
+    "description": "The title of the tag list page"
+  },
+  "theme.unlistedContent.title": {
+    "message": "Unlisted page",
+    "description": "The unlisted content banner title"
+  },
+  "theme.unlistedContent.message": {
+    "message": "This page is unlisted. Search engines will not index it, and 
only users having a direct link can access it.",
+    "description": "The unlisted content banner message"
+  }
+}
diff --git a/i18n/en/docusaurus-plugin-content-blog/options.json 
b/i18n/en/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 0000000..e19dda4
--- /dev/null
+++ b/i18n/en/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+  "title": {
+    "message": "Blog",
+    "description": "The title for the blog used in SEO"
+  },
+  "description": {
+    "message": "Blog",
+    "description": "The description for the blog used in SEO"
+  },
+  "sidebar.title": {
+    "message": "All our posts",
+    "description": "The label for the left sidebar"
+  }
+}
diff --git a/i18n/en/docusaurus-plugin-content-docs/current.json 
b/i18n/en/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..dd30528
--- /dev/null
+++ b/i18n/en/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,6 @@
+{
+  "version.label": {
+    "message": "Next",
+    "description": "The label for version current"
+  }
+}
diff --git a/i18n/en/docusaurus-theme-classic/footer.json 
b/i18n/en/docusaurus-theme-classic/footer.json
new file mode 100644
index 0000000..14bccdc
--- /dev/null
+++ b/i18n/en/docusaurus-theme-classic/footer.json
@@ -0,0 +1,54 @@
+{
+  "link.title.Community": {
+    "message": "Community",
+    "description": "The title of the footer links column with title=Community 
in the footer"
+  },
+  "link.title.Docs": {
+    "message": "Docs",
+    "description": "The title of the footer links column with title=Docs in 
the footer"
+  },
+  "link.title.Repositories": {
+    "message": "Repositories",
+    "description": "The title of the footer links column with 
title=Repositories in the footer"
+  },
+  "link.item.label.Mailing list": {
+    "message": "Mailing list",
+    "description": "The label of footer link with label=Mailing list linking 
to https://lists.apache.org/[email protected]";
+  },
+  "link.item.label.Slack": {
+    "message": "Slack",
+    "description": "The label of footer link with label=Slack linking to 
https://join.slack.com/t/fury-project/shared_invite/zt-1u8soj4qc-ieYEu7ciHOqA2mo47llS8A";
+  },
+  "link.item.label.Twitter": {
+    "message": "Twitter",
+    "description": "The label of footer link with label=Twitter linking to 
https://twitter.com/ApacheFury";
+  },
+  "link.item.label.Install": {
+    "message": "Install",
+    "description": "The label of footer link with label=Install linking to 
/docs/start/install"
+  },
+  "link.item.label.Usage": {
+    "message": "Usage",
+    "description": "The label of footer link with label=Usage linking to 
/docs/start/usage"
+  },
+  "link.item.label.Benchmark": {
+    "message": "Benchmark",
+    "description": "The label of footer link with label=Benchmark linking to 
/docs/introduction/benchmark"
+  },
+  "link.item.label.Fury": {
+    "message": "Fury",
+    "description": "The label of footer link with label=Fury linking to 
https://github.com/apache/fury";
+  },
+  "link.item.label.Website": {
+    "message": "Website",
+    "description": "The label of footer link with label=Website linking to 
https://github.com/apache/fury-site";
+  },
+  "copyright": {
+    "message": "<div>\n      <p> Apache Fury is an effort undergoing 
incubation at The Apache Software Foundation (ASF), sponsored by the Apache 
Incubator. Incubation is required of all newly accepted projects until a 
further review indicates that the infrastructure, communications, and decision 
making process have stabilized in a manner consistent with other successful ASF 
projects. While incubation status is not necessarily a reflection of the 
completeness or stability of the code, it  [...]
+    "description": "The footer copyright"
+  },
+  "logo.alt": {
+    "message": "Apache Incubator logo",
+    "description": "The alt text of footer logo"
+  }
+}
diff --git a/i18n/en/docusaurus-theme-classic/navbar.json 
b/i18n/en/docusaurus-theme-classic/navbar.json
new file mode 100644
index 0000000..d038b1c
--- /dev/null
+++ b/i18n/en/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,70 @@
+{
+  "logo.alt": {
+    "message": "Fury Logo",
+    "description": "The alt text of navbar logo"
+  },
+  "item.label.Start": {
+    "message": "Start",
+    "description": "Navbar item with label Start"
+  },
+  "item.label.Introduction": {
+    "message": "Introduction",
+    "description": "Navbar item with label Introduction"
+  },
+  "item.label.Guide": {
+    "message": "Guide",
+    "description": "Navbar item with label Guide"
+  },
+  "item.label.Specification": {
+    "message": "Specification",
+    "description": "Navbar item with label Specification"
+  },
+  "item.label.Community": {
+    "message": "Community",
+    "description": "Navbar item with label Community"
+  },
+  "item.label.Download": {
+    "message": "Download",
+    "description": "Navbar item with label Download"
+  },
+  "item.label.Blog": {
+    "message": "Blog",
+    "description": "Navbar item with label Blog"
+  },
+  "item.label.ASF": {
+    "message": "ASF",
+    "description": "Navbar item with label ASF"
+  },
+  "item.label.Foundation": {
+    "message": "Foundation",
+    "description": "Navbar item with label Foundation"
+  },
+  "item.label.License": {
+    "message": "License",
+    "description": "Navbar item with label License"
+  },
+  "item.label.Events": {
+    "message": "Events",
+    "description": "Navbar item with label Events"
+  },
+  "item.label.Privacy": {
+    "message": "Privacy",
+    "description": "Navbar item with label Privacy"
+  },
+  "item.label.Security": {
+    "message": "Security",
+    "description": "Navbar item with label Security"
+  },
+  "item.label.Sponsorship": {
+    "message": "Sponsorship",
+    "description": "Navbar item with label Sponsorship"
+  },
+  "item.label.Thanks": {
+    "message": "Thanks",
+    "description": "Navbar item with label Thanks"
+  },
+  "item.label.Code of Conduct": {
+    "message": "Code of Conduct",
+    "description": "Navbar item with label Code of Conduct"
+  }
+}
diff --git a/i18n/zh-CN/code.json b/i18n/zh-CN/code.json
new file mode 100644
index 0000000..a4cc7ed
--- /dev/null
+++ b/i18n/zh-CN/code.json
@@ -0,0 +1,317 @@
+{
+  "theme.BackToTopButton.buttonAriaLabel": {
+    "message": "回到顶部",
+    "description": "The ARIA label for the back to top button"
+  },
+  "theme.blog.paginator.navAriaLabel": {
+    "message": "博文列表分页导航",
+    "description": "The ARIA label for the blog pagination"
+  },
+  "theme.blog.paginator.newerEntries": {
+    "message": "下一篇博文",
+    "description": "The label used to navigate to the newer blog posts page 
(previous page)"
+  },
+  "theme.blog.paginator.olderEntries": {
+    "message": "上一篇博文",
+    "description": "The label used to navigate to the older blog posts page 
(next page)"
+  },
+  "theme.blog.post.paginator.navAriaLabel": {
+    "message": "博文分页导航",
+    "description": "The ARIA label for the blog posts pagination"
+  },
+  "theme.blog.post.paginator.newerPost": {
+    "message": "下一篇",
+    "description": "The blog post button label to navigate to the 
newer/previous post"
+  },
+  "theme.blog.post.paginator.olderPost": {
+    "message": "上一篇",
+    "description": "The blog post button label to navigate to the older/next 
post"
+  },
+  "theme.blog.post.plurals": {
+    "message": "{count} 篇博文",
+    "description": "Pluralized label for \"{count} posts\". Use as much plural 
forms (separated by \"|\") as your language support (see 
https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+  },
+  "theme.blog.tagTitle": {
+    "message": "{nPosts} 含有标签「{tagName}」",
+    "description": "The title of the page for a blog tag"
+  },
+  "theme.tags.tagsPageLink": {
+    "message": "查看所有标签",
+    "description": "The label of the link targeting the tag list page"
+  },
+  "theme.colorToggle.ariaLabel": {
+    "message": "切换浅色/暗黑模式(当前为{mode})",
+    "description": "The ARIA label for the navbar color mode toggle"
+  },
+  "theme.colorToggle.ariaLabel.mode.dark": {
+    "message": "暗黑模式",
+    "description": "The name for the dark color mode"
+  },
+  "theme.colorToggle.ariaLabel.mode.light": {
+    "message": "浅色模式",
+    "description": "The name for the light color mode"
+  },
+  "theme.docs.breadcrumbs.navAriaLabel": {
+    "message": "页面路径",
+    "description": "The ARIA label for the breadcrumbs"
+  },
+  "theme.docs.DocCard.categoryDescription": {
+    "message": "{count} 个项目",
+    "description": "The default description for a category card in the 
generated index about how many items this category includes"
+  },
+  "theme.docs.paginator.navAriaLabel": {
+    "message": "文件选项卡",
+    "description": "The ARIA label for the docs pagination"
+  },
+  "theme.docs.paginator.previous": {
+    "message": "上一页",
+    "description": "The label used to navigate to the previous doc"
+  },
+  "theme.docs.paginator.next": {
+    "message": "下一页",
+    "description": "The label used to navigate to the next doc"
+  },
+  "theme.docs.tagDocListPageTitle.nDocsTagged": {
+    "message": "{count} 篇文档带有标签",
+    "description": "Pluralized label for \"{count} docs tagged\". Use as much 
plural forms (separated by \"|\") as your language support (see 
https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+  },
+  "theme.docs.tagDocListPageTitle": {
+    "message": "{nDocsTagged}「{tagName}」",
+    "description": "The title of the page for a docs tag"
+  },
+  "theme.docs.versionBadge.label": {
+    "message": "版本:{versionLabel}"
+  },
+  "theme.docs.versions.unreleasedVersionLabel": {
+    "message": "此为 {siteTitle} {versionLabel} 版尚未发行的文档。",
+    "description": "The label used to tell the user that he's browsing an 
unreleased doc version"
+  },
+  "theme.docs.versions.unmaintainedVersionLabel": {
+    "message": "此为 {siteTitle} {versionLabel} 版的文档,现已不再积极维护。",
+    "description": "The label used to tell the user that he's browsing an 
unmaintained doc version"
+  },
+  "theme.docs.versions.latestVersionSuggestionLabel": {
+    "message": "最新的文档请参阅 {latestVersionLink} ({versionLabel})。",
+    "description": "The label used to tell the user to check the latest 
version"
+  },
+  "theme.docs.versions.latestVersionLinkLabel": {
+    "message": "最新版本",
+    "description": "The label used for the latest version suggestion link 
label"
+  },
+  "theme.common.editThisPage": {
+    "message": "编辑此页",
+    "description": "The link label to edit the current page"
+  },
+  "theme.common.headingLinkTitle": {
+    "message": "{heading}的直接链接",
+    "description": "Title for link to heading"
+  },
+  "theme.lastUpdated.atDate": {
+    "message": "于 {date} ",
+    "description": "The words used to describe on which date a page has been 
last updated"
+  },
+  "theme.lastUpdated.byUser": {
+    "message": "由 {user} ",
+    "description": "The words used to describe by who the page has been last 
updated"
+  },
+  "theme.lastUpdated.lastUpdatedAtBy": {
+    "message": "最后{byUser}{atDate}更新",
+    "description": "The sentence used to display when a page has been last 
updated, and by who"
+  },
+  "theme.navbar.mobileVersionsDropdown.label": {
+    "message": "选择版本",
+    "description": "The label for the navbar versions dropdown on mobile view"
+  },
+  "theme.NotFound.title": {
+    "message": "找不到页面",
+    "description": "The title of the 404 page"
+  },
+  "theme.tags.tagsListLabel": {
+    "message": "标签:",
+    "description": "The label alongside a tag list"
+  },
+  "theme.admonition.caution": {
+    "message": "警告",
+    "description": "The default label used for the Caution admonition 
(:::caution)"
+  },
+  "theme.admonition.danger": {
+    "message": "危险",
+    "description": "The default label used for the Danger admonition 
(:::danger)"
+  },
+  "theme.admonition.info": {
+    "message": "信息",
+    "description": "The default label used for the Info admonition (:::info)"
+  },
+  "theme.admonition.note": {
+    "message": "备注",
+    "description": "The default label used for the Note admonition (:::note)"
+  },
+  "theme.admonition.tip": {
+    "message": "提示",
+    "description": "The default label used for the Tip admonition (:::tip)"
+  },
+  "theme.admonition.warning": {
+    "message": "注意",
+    "description": "The default label used for the Warning admonition 
(:::warning)"
+  },
+  "theme.AnnouncementBar.closeButtonAriaLabel": {
+    "message": "关闭",
+    "description": "The ARIA label for close button of announcement bar"
+  },
+  "theme.blog.sidebar.navAriaLabel": {
+    "message": "最近博文导航",
+    "description": "The ARIA label for recent posts in the blog sidebar"
+  },
+  "theme.CodeBlock.copied": {
+    "message": "复制成功",
+    "description": "The copied button label on code blocks"
+  },
+  "theme.CodeBlock.copyButtonAriaLabel": {
+    "message": "复制代码到剪贴板",
+    "description": "The ARIA label for copy code blocks button"
+  },
+  "theme.CodeBlock.copy": {
+    "message": "复制",
+    "description": "The copy button label on code blocks"
+  },
+  "theme.CodeBlock.wordWrapToggle": {
+    "message": "切换自动换行",
+    "description": "The title attribute for toggle word wrapping button of 
code block lines"
+  },
+  "theme.DocSidebarItem.expandCategoryAriaLabel": {
+    "message": "展开侧边栏分类 '{label}'",
+    "description": "The ARIA label to expand the sidebar category"
+  },
+  "theme.DocSidebarItem.collapseCategoryAriaLabel": {
+    "message": "折叠侧边栏分类 '{label}'",
+    "description": "The ARIA label to collapse the sidebar category"
+  },
+  "theme.NavBar.navAriaLabel": {
+    "message": "主导航",
+    "description": "The ARIA label for the main navigation"
+  },
+  "theme.navbar.mobileLanguageDropdown.label": {
+    "message": "选择语言",
+    "description": "The label for the mobile language switcher dropdown"
+  },
+  "theme.NotFound.p1": {
+    "message": "我们找不到您要找的页面。",
+    "description": "The first paragraph of the 404 page"
+  },
+  "theme.NotFound.p2": {
+    "message": "请联系原始链接来源网站的所有者,并告知他们链接已损坏。",
+    "description": "The 2nd paragraph of the 404 page"
+  },
+  "theme.TOCCollapsible.toggleButtonLabel": {
+    "message": "本页总览",
+    "description": "The label used by the button on the collapsible TOC 
component"
+  },
+  "theme.blog.post.readMore": {
+    "message": "阅读更多",
+    "description": "The label used in blog post item excerpts to link to full 
blog posts"
+  },
+  "theme.blog.post.readMoreLabel": {
+    "message": "阅读 {title} 的全文",
+    "description": "The ARIA label for the link to full blog posts from 
excerpts"
+  },
+  "theme.blog.post.readingTime.plurals": {
+    "message": "阅读需 {readingTime} 分钟",
+    "description": "Pluralized label for \"{readingTime} min read\". Use as 
much plural forms (separated by \"|\") as your language support (see 
https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+  },
+  "theme.docs.breadcrumbs.home": {
+    "message": "主页面",
+    "description": "The ARIA label for the home page in the breadcrumbs"
+  },
+  "theme.docs.sidebar.collapseButtonTitle": {
+    "message": "收起侧边栏",
+    "description": "The title attribute for collapse button of doc sidebar"
+  },
+  "theme.docs.sidebar.collapseButtonAriaLabel": {
+    "message": "收起侧边栏",
+    "description": "The title attribute for collapse button of doc sidebar"
+  },
+  "theme.docs.sidebar.navAriaLabel": {
+    "message": "文档侧边栏",
+    "description": "The ARIA label for the sidebar navigation"
+  },
+  "theme.docs.sidebar.closeSidebarButtonAriaLabel": {
+    "message": "关闭导航栏",
+    "description": "The ARIA label for close button of mobile sidebar"
+  },
+  "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+    "message": "← 回到主菜单",
+    "description": "The label of the back button to return to main menu, 
inside the mobile navbar sidebar secondary menu (notably used to display the 
docs sidebar)"
+  },
+  "theme.docs.sidebar.toggleSidebarButtonAriaLabel": {
+    "message": "切换导航栏",
+    "description": "The ARIA label for hamburger menu button of mobile 
navigation"
+  },
+  "theme.docs.sidebar.expandButtonTitle": {
+    "message": "展开侧边栏",
+    "description": "The ARIA label and title attribute for expand button of 
doc sidebar"
+  },
+  "theme.docs.sidebar.expandButtonAriaLabel": {
+    "message": "展开侧边栏",
+    "description": "The ARIA label and title attribute for expand button of 
doc sidebar"
+  },
+  "theme.ErrorPageContent.tryAgain": {
+    "message": "重试",
+    "description": "The label of the button to try again rendering when the 
React error boundary captures an error"
+  },
+  "theme.common.skipToMainContent": {
+    "message": "跳到主要内容",
+    "description": "The skip to content label used for accessibility, allowing 
to rapidly navigate to main content with keyboard tab/enter navigation"
+  },
+  "theme.tags.tagsPageTitle": {
+    "message": "标签",
+    "description": "The title of the tag list page"
+  },
+  "theme.unlistedContent.title": {
+    "message": "未列出页",
+    "description": "The unlisted content banner title"
+  },
+  "theme.unlistedContent.message": {
+    "message": "此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。",
+    "description": "The unlisted content banner message"
+  },
+  "homepage.hero.title": {
+    "message": "Apache Fury(孵化中)",
+    "description": "The title displayed in the homepage hero section"
+  },
+  "homepage.hero.subtitle": {
+    "message": "一个通过即时编译和零拷贝技术提供极速跨语言序列化的框架",
+    "description": "The subtitle displayed in the homepage hero section"
+  },
+  "homepage.githubButton": {
+    "message": "GitHub",
+    "description": "The GitHub button label on the homepage"
+  },
+  "homepage.getStartedButton": {
+    "message": "Get Started",
+    "description": "The Get Started button label on the homepage"
+  },
+  "feature.highPerformance.title": {
+    "message": "高性能",
+    "description": "The title for the high performance feature"
+  },
+  "feature.highPerformance.description": {
+    "message": "与其他序列化框架相比,速度提高了20~170倍。",
+    "description": "Description for the high performance feature"
+  },
+  "feature.easyToUse.title": {
+    "message": "易于使用",
+    "description": "The title for the easy to use feature"
+  },
+  "feature.easyToUse.description": {
+    "message": "无需DSL,您可以凭直觉有效地使用Fury。",
+    "description": "Description for the easy to use feature"
+  },
+  "feature.multiLanguages.title": {
+    "message": "多语言",
+    "description": "The title for the multi-languages feature"
+  },
+  "feature.multiLanguages.description": {
+    "message": "支持Java、Python、C++、Golang、Javascript、Rust等流行的编程语言,未来将增加更多。",
+    "description": "Description for the multi-languages feature"
+  }
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/options.json 
b/i18n/zh-CN/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 0000000..737d7dd
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+  "title": {
+    "message": "博客",
+    "description": "The title for the blog used in SEO"
+  },
+  "description": {
+    "message": "博客",
+    "description": "The description for the blog used in SEO"
+  },
+  "sidebar.title": {
+    "message": "所有文章",
+    "description": "The label for the left sidebar"
+  }
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json 
b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..fcdc27d
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,6 @@
+{
+  "version.label": {
+    "message": "下一步",
+    "description": "The label for version current"
+  }
+}
diff --git a/i18n/zh-CN/docusaurus-theme-classic/footer.json 
b/i18n/zh-CN/docusaurus-theme-classic/footer.json
new file mode 100644
index 0000000..2013029
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-theme-classic/footer.json
@@ -0,0 +1,54 @@
+{
+  "link.title.Community": {
+    "message": "社区",
+    "description": "The title of the footer links column with title=Community 
in the footer"
+  },
+  "link.title.Docs": {
+    "message": "文档",
+    "description": "The title of the footer links column with title=Docs in 
the footer"
+  },
+  "link.title.Repositories": {
+    "message": "代码库",
+    "description": "The title of the footer links column with 
title=Repositories in the footer"
+  },
+  "link.item.label.Mailing list": {
+    "message": "邮件列表",
+    "description": "The label of footer link with label=Mailing list linking 
to https://lists.apache.org/[email protected]";
+  },
+  "link.item.label.Slack": {
+    "message": "Slack",
+    "description": "The label of footer link with label=Slack linking to 
https://join.slack.com/t/fury-project/shared_invite/zt-1u8soj4qc-ieYEu7ciHOqA2mo47llS8A";
+  },
+  "link.item.label.Twitter": {
+    "message": "Twitter",
+    "description": "The label of footer link with label=Twitter linking to 
https://twitter.com/ApacheFury";
+  },
+  "link.item.label.Install": {
+    "message": "安装",
+    "description": "The label of footer link with label=Install linking to 
/docs/start/install"
+  },
+  "link.item.label.Usage": {
+    "message": "使用",
+    "description": "The label of footer link with label=Usage linking to 
/docs/start/usage"
+  },
+  "link.item.label.Benchmark": {
+    "message": "基准测试",
+    "description": "The label of footer link with label=Benchmark linking to 
/docs/introduction/benchmark"
+  },
+  "link.item.label.Fury": {
+    "message": "Fury",
+    "description": "The label of footer link with label=Fury linking to 
https://github.com/apache/fury";
+  },
+  "link.item.label.Website": {
+    "message": "网站",
+    "description": "The label of footer link with label=Website linking to 
https://github.com/apache/fury-site";
+  },
+  "copyright": {
+    "message": "<div>\n      <p> Apache Fury 是 Apache 软件基金会(ASF)孵化过程中的一个项目,由 
Apache Incubator 赞助。孵化是所有新接受项目所需的,直到进一步审查表明基础设施、通信和决策过程已经稳定到与其他成功的 ASF 
项目一致的程度。虽然孵化状态不一定反映代码的完整性或稳定性,但它确实表明该项目尚未完全获得 ASF 的认可。 </p>\n      <p>\n        
版权所有 © 2024 The Apache Software Foundation,许可证:Apache License, Version 2.0。 
<br/>\n        Apache、Apache 项目的名称以及羽毛标志是 Apache 软件基金会在美国和/或其他国家的注册商标或商标。\n     
 </p>\n      </div>",
+    "description": "The footer copyright"
+  },
+  "logo.alt": {
+    "message": "Apache Incubator 标志",
+    "description": "The alt text of footer logo"
+  }
+}
diff --git a/i18n/zh-CN/docusaurus-theme-classic/navbar.json 
b/i18n/zh-CN/docusaurus-theme-classic/navbar.json
new file mode 100644
index 0000000..bd48e98
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,70 @@
+{
+  "logo.alt": {
+    "message": "Fury Logo",
+    "description": "The alt text of navbar logo"
+  },
+  "item.label.Start": {
+    "message": "开始",
+    "description": "Navbar item with label Start"
+  },
+  "item.label.Introduction": {
+    "message": "介绍",
+    "description": "Navbar item with label Introduction"
+  },
+  "item.label.Guide": {
+    "message": "指南",
+    "description": "Navbar item with label Guide"
+  },
+  "item.label.Specification": {
+    "message": "规范",
+    "description": "Navbar item with label Specification"
+  },
+  "item.label.Community": {
+    "message": "社区",
+    "description": "Navbar item with label Community"
+  },
+  "item.label.Download": {
+    "message": "下载",
+    "description": "Navbar item with label Download"
+  },
+  "item.label.Blog": {
+    "message": "博客",
+    "description": "Navbar item with label Blog"
+  },
+  "item.label.ASF": {
+    "message": "ASF",
+    "description": "Navbar item with label ASF"
+  },
+  "item.label.Foundation": {
+    "message": "基金会",
+    "description": "Navbar item with label Foundation"
+  },
+  "item.label.License": {
+    "message": "许可证",
+    "description": "Navbar item with label License"
+  },
+  "item.label.Events": {
+    "message": "事件",
+    "description": "Navbar item with label Events"
+  },
+  "item.label.Privacy": {
+    "message": "隐私",
+    "description": "Navbar item with label Privacy"
+  },
+  "item.label.Security": {
+    "message": "安全",
+    "description": "Navbar item with label Security"
+  },
+  "item.label.Sponsorship": {
+    "message": "赞助",
+    "description": "Navbar item with label Sponsorship"
+  },
+  "item.label.Thanks": {
+    "message": "感谢",
+    "description": "Navbar item with label Thanks"
+  },
+  "item.label.Code of Conduct": {
+    "message": "行为准则",
+    "description": "Navbar item with label Code of Conduct"
+  }
+}
diff --git a/src/components/HomepageFeatures/index.tsx 
b/src/components/HomepageFeatures/index.tsx
index ce818d4..699321a 100644
--- a/src/components/HomepageFeatures/index.tsx
+++ b/src/components/HomepageFeatures/index.tsx
@@ -1,46 +1,79 @@
-import clsx from 'clsx';
-import Heading from '@theme/Heading';
-import styles from './styles.module.css';
+import clsx from "clsx";
+import Heading from "@theme/Heading";
+import styles from "./styles.module.css";
+import Translate, { translate } from "@docusaurus/Translate";
+import React from "react";
 
 type FeatureItem = {
-  title: string;
-  Svg: React.ComponentType<React.ComponentProps<'svg'>>;
+  title: string | JSX.Element;
+  Svg: React.ComponentType<React.ComponentProps<"svg">>;
   description: JSX.Element;
 };
 
 const FeatureList: FeatureItem[] = [
   {
-    title: 'High performance',
-    Svg: require('@site/static/img/performance.svg').default,
+    title: (
+      <Translate
+        id="feature.highPerformance.title"
+        description="The title for the high performance feature"
+      >
+        High performance
+      </Translate>
+    ),
+    Svg: require("@site/static/img/performance.svg").default,
     description: (
-      <>
+      <Translate
+        id="feature.highPerformance.description"
+        description="Description for the high performance feature"
+      >
         Compared to other serialization frameworks, there is a 20~170x speed 
up.
-      </>
+      </Translate>
     ),
   },
   {
-    title: 'Easy to use',
-    Svg: require('@site/static/img/happy.svg').default,
+    title: (
+      <Translate
+        id="feature.easyToUse.title"
+        description="The title for the easy to use feature"
+      >
+        Easy to use
+      </Translate>
+    ),
+    Svg: require("@site/static/img/happy.svg").default,
     description: (
-      <>
+      <Translate
+        id="feature.easyToUse.description"
+        description="Description for the easy to use feature"
+      >
         No need for DSL, you can use Fury effectively with your intuition.
-      </>
+      </Translate>
     ),
   },
   {
-    title: 'Multi-languages',
-    Svg: require('@site/static/img/multi.svg').default,
+    title: (
+      <Translate
+        id="feature.multiLanguages.title"
+        description="The title for the multi-languages feature"
+      >
+        Multi-languages
+      </Translate>
+    ),
+    Svg: require("@site/static/img/multi.svg").default,
     description: (
-      <>
-        Supports popular programming languages such as Java, Python, C++, 
Golang, Javascript, Rust, and more will be added in the future.
-      </>
+      <Translate
+        id="feature.multiLanguages.description"
+        description="Description for the multi-languages feature"
+      >
+        Supports popular programming languages such as Java, Python, C++,
+        Golang, Javascript, Rust, and more will be added in the future.
+      </Translate>
     ),
   },
 ];
 
-function Feature({title, Svg, description}: FeatureItem) {
+function Feature({ title, Svg, description }: FeatureItem) {
   return (
-    <div className={clsx('col col--4')}>
+    <div className={clsx("col col--4")}>
       <div className="text--center">
         <Svg className={styles.featureSvg} role="img" />
       </div>
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index b77de06..6703890 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -1,29 +1,48 @@
-import clsx from 'clsx';
-import Link from '@docusaurus/Link';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import Layout from '@theme/Layout';
-import HomepageFeatures from '@site/src/components/HomepageFeatures';
-import Heading from '@theme/Heading';
-
-import styles from './index.module.css';
+import clsx from "clsx";
+import Link from "@docusaurus/Link";
+import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
+import Layout from "@theme/Layout";
+import HomepageFeatures from "@site/src/components/HomepageFeatures";
+import Heading from "@theme/Heading";
+import styles from "./index.module.css";
+import Translate, { translate } from "@docusaurus/Translate";
+import React from "react";
 
 function HomepageHeader() {
   const { siteConfig } = useDocusaurusContext();
   return (
-    <header className={clsx('hero hero--primary', styles.heroBanner)}>
+    <header className={clsx("hero hero--primary", styles.heroBanner)}>
       <div className="container">
         <Heading as="h1" className="hero__title">
-          {siteConfig.title}
+          <Translate id="homepage.hero.title">{siteConfig.title}</Translate>
         </Heading>
-        <p className="hero__subtitle">{siteConfig.tagline}</p>
+        <p className="hero__subtitle">
+          <Translate id="homepage.hero.subtitle">
+            {siteConfig.tagline}
+          </Translate>
+        </p>
         <div className={styles.buttons}>
           <Link
             className="button button--secondary button--lg"
-            to="https://github.com/apache/fury";>
-            GitHub
+            to="https://github.com/apache/fury";
+          >
+            <Translate
+              id="homepage.githubButton"
+              description="The GitHub button label on the homepage"
+            >
+              GitHub
+            </Translate>
           </Link>
-          <Link className="button button--secondary button--lg" 
to="/docs/start/install">
-            Get Started
+          <Link
+            className="button button--secondary button--lg"
+            to="/docs/start/install"
+          >
+            <Translate
+              id="homepage.getStartedButton"
+              description="The Get Started button label on the homepage"
+            >
+              Get Started
+            </Translate>
           </Link>
         </div>
       </div>
@@ -37,7 +56,12 @@ export default function Home(): JSX.Element {
     <>
       <Layout
         title={`${siteConfig.title}`}
-        description="@{siteConfig.tagline}">
+        description={translate({
+          id: "homepage.metaDescription",
+          message: siteConfig.tagline,
+          description: "The meta description of the homepage",
+        })}
+      >
         <HomepageHeader />
         <main>
           <HomepageFeatures />
diff --git a/tsconfig.json b/tsconfig.json
index 314eab8..7dc3bde 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,6 +2,7 @@
   // This file is not used in compilation. It is here just for a nice editor 
experience.
   "extends": "@docusaurus/tsconfig",
   "compilerOptions": {
+    "jsx": "react",
     "baseUrl": "."
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to