diff --git a/docusaurus.config.js b/docusaurus.config.js index 89bfbad..c6316a4 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -15,6 +15,8 @@ const config = { botId: process.env.BOT_ID, patToken: process.env.TOKEN }, + // Add client module for language detection + clientModules: [require.resolve('./src/clientModules/lang-redirect.js')], markdown: { hooks: { onBrokenMarkdownLinks: 'warn', @@ -76,7 +78,18 @@ const config = { ], i18n: { defaultLocale: 'en', - locales: ['en', 'zh-CN'], + locales: ['en', 'zh-cn'], + localeConfigs: { + en: { + label: 'English', + htmlLang: 'en', + }, + 'zh-cn': { + label: '中文', + htmlLang: 'zh-CN', + path: 'zh-CN', + }, + }, }, themeConfig: ({ @@ -136,7 +149,7 @@ const config = { }, { label: 'News', - to: 'news', + to: '/news', }, { label: 'Customer Stories', diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/detail-pg18-contributors.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/detail-pg18-contributors.mdx index a44ddfa..aab8468 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/detail-pg18-contributors.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/detail-pg18-contributors.mdx @@ -74,7 +74,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 社区动态 + 新闻动态 > 社区动态
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepin-cert.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepin-cert.mdx index f839180..c9d6ffd 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepin-cert.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepin-cert.mdx @@ -73,7 +73,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepseek-assistant.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepseek-assistant.mdx index 2dda784..dc015c5 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepseek-assistant.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-deepseek-assistant.mdx @@ -76,7 +76,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-expert-advisory-committee.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-expert-advisory-committee.mdx index f9612b6..8f9bd81 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-expert-advisory-committee.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-expert-advisory-committee.mdx @@ -82,7 +82,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-kylin-cert.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-kylin-cert.mdx index fb14f44..89fd827 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-kylin-cert.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-kylin-cert.mdx @@ -72,7 +72,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-loongarch-cert.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-loongarch-cert.mdx index 8f103d3..94656a7 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-loongarch-cert.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-loongarch-cert.mdx @@ -74,7 +74,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-navicat.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-navicat.mdx index be2fe5e..d8395fe 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-navicat.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-navicat.mdx @@ -74,7 +74,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-2025.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-2025.mdx index 9fad123..e5be2ba 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-2025.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-2025.mdx @@ -76,7 +76,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 开源之夏 2025 结项 + 新闻动态 > 开源之夏 2025 结项
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-students.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-students.mdx index 68925f9..d073768 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-students.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-ospp-students.mdx @@ -76,7 +76,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-pku-course.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-pku-course.mdx index f8b2105..5342e8d 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-pku-course.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-pku-course.mdx @@ -75,7 +75,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-2-released.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-2-released.mdx index 0925820..14a362a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-2-released.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-2-released.mdx @@ -75,7 +75,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-4-released.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-4-released.mdx index 5b8a58a..9c4a67d 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-4-released.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-4-released.mdx @@ -75,7 +75,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-5-released.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-5-released.mdx index ef25320..fcae005 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-5-released.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-5-released.mdx @@ -75,7 +75,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > 正文内容 + 新闻动态 > 正文内容
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-6-released.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-6-released.mdx index db639a9..e85f31b 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-6-released.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v4-6-released.mdx @@ -75,7 +75,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > IvorySQL 4.6 发布 + 新闻动态 > IvorySQL 4.6 发布
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-0-released.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-0-released.mdx index b1b1bb5..11a0814 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-0-released.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-0-released.mdx @@ -75,7 +75,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > IvorySQL 5.0 发布 + 新闻动态 > IvorySQL 5.0 发布
diff --git a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-1-released.mdx b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-1-released.mdx index ca58a4e..5d7060d 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-1-released.mdx +++ b/i18n/zh-CN/docusaurus-plugin-content-pages/news/ivorysql-v5-1-released.mdx @@ -74,7 +74,7 @@ import useBaseUrl from '@docusaurus/useBaseUrl';
- 新闻动态 > IvorySQL 5.1 发布 + 新闻动态 > IvorySQL 5.1 发布
diff --git a/src/clientModules/lang-redirect.js b/src/clientModules/lang-redirect.js new file mode 100644 index 0000000..8be62aa --- /dev/null +++ b/src/clientModules/lang-redirect.js @@ -0,0 +1,41 @@ +/** + * Docusaurus Client Module for Language Detection + * This module runs on the client side and handles browser language detection + */ +export function onRouteDidUpdate({ location, previousLocation }) { + // Only run on root path + if (location.pathname !== '/' && location.pathname !== '/index.html') { + return; + } + + // Check if user has an existing locale preference (manual language selection) + const savedLocale = localStorage.getItem('docusaurus.locale'); + if (savedLocale === 'en') { + // User explicitly chose English, respect it and don't redirect + return; + } + + if (savedLocale === 'zh-CN') { + // User chose Chinese, no need to redirect + return; + } + + // Check if this is the first visit to the root path in this session + if (sessionStorage.getItem('clientLangDetectionDone')) { + return; + } + + // Detect browser language + const browserLang = navigator.language || navigator.userLanguage || ''; + + // Redirect Chinese users to Chinese version + if (browserLang.toLowerCase().startsWith('zh')) { + // Mark as done before redirecting to prevent loops + sessionStorage.setItem('clientLangDetectionDone', '1'); + // Redirect Chinese users to Chinese version + window.location.replace('/zh-CN/'); + } else { + // Mark as done for non-Chinese users too + sessionStorage.setItem('clientLangDetectionDone', '1'); + } +} diff --git a/static/_redirects b/static/_redirects index c16dd16..6fc32d8 100644 --- a/static/_redirects +++ b/static/_redirects @@ -1,4 +1,6 @@ # Redirect users from China to chinese version at /zh-CN. -/ /zh-cn 302! Country=cn -# Also users with Chinese language should be redirected to /zh-cn -# / /zh-cn 302! Language=zh +# Disabled - relying on client-side browser language detection instead +# The ! flag causes forced redirects that prevent manual language switching +# / /zh-CN 302 Country=cn +# Also users with Chinese language should be redirected to /zh-CN +# / /zh-CN 302 Language=zh