mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-30 23:14:22 +00:00
📝 add Chinese API guides and locale detection
This commit is contained in:
@@ -144,6 +144,18 @@ function buildChineseExtendSidebar(): DefaultTheme.SidebarItem[] {
|
||||
]
|
||||
}
|
||||
|
||||
function buildChineseApiSidebar(): DefaultTheme.SidebarItem[] {
|
||||
return [
|
||||
{ text: '概览', link: '/zh/api/' },
|
||||
{ text: '基础记录', link: '/zh/api/basics' },
|
||||
{ text: '配置与队列', link: '/zh/api/configuration' },
|
||||
{ text: '文件输出', link: '/zh/api/file-output' },
|
||||
{ text: '文本格式', link: '/zh/api/formatting' },
|
||||
{ text: '异步生命周期', link: '/zh/api/async' },
|
||||
{ text: 'Sink 组合', link: '/zh/api/composition' },
|
||||
]
|
||||
}
|
||||
|
||||
const englishThemeConfig: DefaultTheme.Config = {
|
||||
siteTitle: 'BitLogger',
|
||||
nav: [
|
||||
@@ -180,7 +192,7 @@ const chineseThemeConfig: DefaultTheme.Config = {
|
||||
{ text: '首页', link: '/zh/' },
|
||||
{ text: '示例', link: '/zh/examples/' },
|
||||
{ text: '扩展', link: '/zh/extend/' },
|
||||
{ text: 'API(英文)', link: '/api/' },
|
||||
{ text: 'API', link: '/zh/api/' },
|
||||
{ text: '更新记录(英文)', link: '/changes/' },
|
||||
{ text: 'Mooncake', link: 'https://mooncakes.io/docs/Nanaloveyuki/BitLogger' },
|
||||
],
|
||||
@@ -195,6 +207,7 @@ const chineseThemeConfig: DefaultTheme.Config = {
|
||||
sidebar: {
|
||||
'/zh/examples/': buildChineseExamplesSidebar(),
|
||||
'/zh/extend/': buildChineseExtendSidebar(),
|
||||
'/zh/api/': buildChineseApiSidebar(),
|
||||
},
|
||||
footer: {
|
||||
message: '由仓库中的 VitePress 文档构建。',
|
||||
|
||||
@@ -6,11 +6,46 @@ import HomeDocHub from './components/HomeDocHub.vue'
|
||||
|
||||
import './custom.css'
|
||||
|
||||
const localePreferenceKey = 'bitlogger-docs-locale'
|
||||
|
||||
function routePath(path: string): string {
|
||||
return path.split(/[?#]/, 1)[0]
|
||||
}
|
||||
|
||||
function isLocaleRoot(path: string): boolean {
|
||||
const normalized = routePath(path)
|
||||
return normalized === '/' || normalized === '/zh/'
|
||||
}
|
||||
|
||||
function browserPrefersChinese(): boolean {
|
||||
return navigator.languages.some(language => language.toLowerCase().startsWith('zh'))
|
||||
}
|
||||
|
||||
const theme: Theme = {
|
||||
extends: DefaultTheme,
|
||||
enhanceApp({ app }) {
|
||||
enhanceApp({ app, router }) {
|
||||
app.component('ApiOverview', ApiOverview)
|
||||
app.component('HomeDocHub', HomeDocHub)
|
||||
|
||||
if (typeof window === 'undefined') return
|
||||
|
||||
router.onAfterRouteChange = to => {
|
||||
if (!isLocaleRoot(to)) return
|
||||
window.localStorage.setItem(localePreferenceKey, routePath(to) === '/zh/' ? 'zh' : 'en')
|
||||
}
|
||||
|
||||
if (router.route.path !== '/') return
|
||||
|
||||
const savedLocale = window.localStorage.getItem(localePreferenceKey)
|
||||
const locale = savedLocale === 'zh' || savedLocale === 'en'
|
||||
? savedLocale
|
||||
: browserPrefersChinese()
|
||||
? 'zh'
|
||||
: 'en'
|
||||
|
||||
if (locale === 'zh') {
|
||||
void router.go('/zh/')
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user