refactor: restructure docs for i18n support

- Move existing documentation to docs/zh-cn/
- Initialize structure for multiple languages (ar-sa, de-de, en-us, etc.)
- Add update_readmes.cjs utility script
- Update deployment documentation
This commit is contained in:
sanbuphy
2026-01-13 20:09:45 +08:00
parent bfa503162c
commit 0e0de6382f
691 changed files with 4956 additions and 576 deletions
+598 -302
View File
@@ -4,313 +4,609 @@ import { defineConfig } from 'vitepress'
const isVercel = process.env.VERCEL === '1'
const base = isVercel ? '/' : '/easy-vibe/'
// 通用配置
const commonHead = [
['link', { rel: 'icon', href: `${base}logo.png`.replace('//', '/') }],
['link', { rel: 'stylesheet', href: `${base}style.css`.replace('//', '/') }]
]
const commonThemeConfig = {
logo: `${base}logo.png`.replace('//', '/'),
search: {
provider: 'local'
},
socialLinks: [
{ icon: 'github', link: 'https://github.com/datawhalechina/easy-vibe' }
],
outline: {
level: [1, 6]
}
}
export default defineConfig({
base: base,
title: 'Easy-Vibe Tutorial',
description: 'Easy-Vibe 中文实战课',
head: [
['link', { rel: 'icon', href: `${base}logo.png`.replace('//', '/') }],
['link', { rel: 'stylesheet', href: `${base}style.css`.replace('//', '/') }]
],
themeConfig: {
logo: `${base}logo.png`.replace('//', '/'),
search: {
provider: 'local'
// 多语言配置 - 使用 cn/en-us/ja 结构
locales: {
// 中文
'zh-cn': {
label: '简体中文',
lang: 'zh-CN',
link: '/zh-cn/',
title: 'Easy-Vibe 教程',
description: '从零到一学习 Vibe Coding',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: '页面导航'
},
nav: [
{ text: '首页', link: '/zh-cn/' },
{ text: '新手入门', link: '/zh-cn/stage-0/0.1-learning-map/' },
{ text: '产品经理', link: '/zh-cn/stage-1/1.1-introduction-to-ai-ide/' },
{
text: '初中级开发',
link: '/zh-cn/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '高级开发',
link: '/zh-cn/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: '附录', link: '/zh-cn/appendix/ai-capability-dictionary' }
],
sidebar: {
'/zh-cn/stage-0/': [
{ text: '1. 学习地图', link: '/zh-cn/stage-0/0.1-learning-map/' },
{
text: '2. AI 时代,会说话就会编程',
link: '/zh-cn/stage-0/0.2-ai-capabilities-through-games/'
}
],
'/zh-cn/stage-1/': [
{
text: '1. 认识 AI IDE 工具',
link: '/zh-cn/stage-1/1.1-introduction-to-ai-ide/'
},
{
text: '2. 动手做出原型',
link: '/zh-cn/stage-1/1.2-building-prototype/'
},
{
text: '3. 给原型加上 AI 能力',
link: '/zh-cn/stage-1/1.3-integrating-ai-capabilities/'
},
{
text: '4. 完整项目实战',
link: '/zh-cn/stage-1/1.4-complete-project-practice/'
},
{
text: '5. 大作业:完成一个 Web 应用原型',
link: '/zh-cn/stage-1/1.5-final-project/'
},
{
text: '附录 A:产品思维补充',
link: '/zh-cn/stage-1/appendix-a-product-thinking/'
},
{
text: '附录 B:常见报错及解决方案',
link: '/zh-cn/stage-1/appendix-b-common-errors/'
},
{
text: '附录示例:贪吃蛇游戏教程',
link: '/zh-cn/stage-1/appendix-articles/example0-1/vibe-coding-tools-snake-game-tutorial'
},
{
text: '附录示例:用 AI 搭建完整网站',
link: '/zh-cn/stage-1/appendix-articles/example0-2/vibe-coding-tools-build-website-with-ai-coding-and-design-agents'
}
],
'/zh-cn/stage-2/': [
{
text: '前端开发',
collapsed: false,
items: [
{
text: '前端零:使用 Lovart 生产素材',
link: '/zh-cn/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '前端一:Figma 与 MasterGo 入门',
link: '/zh-cn/stage-2/frontend/2.1-figma-mastergo/'
},
{
text: '前端二:构建第一个现代应用程序 - UI 设计',
link: '/zh-cn/stage-2/frontend/2.2-ui-design/'
},
{
text: '前端三:参考 UI 设计规范与多产品 UI 设计',
link: '/zh-cn/stage-2/frontend/2.3-multi-product-ui/'
},
{
text: '前端四:一起做霍格沃茨画像',
link: '/zh-cn/stage-2/frontend/2.4-hogwarts-portraits/chapter4-lets-build-hogwarts-portraits'
}
]
},
{
text: '后端与全栈',
collapsed: false,
items: [
{
text: '后端一:什么是 API',
link: '/zh-cn/stage-2/backend/2.1-what-is-api/extra2/extra2-what-is-api'
},
{
text: '后端二:从数据库到 Supabase',
link: '/zh-cn/stage-2/backend/2.2-database-supabase/chapter5/chapter5-from-database-to-supabase'
},
{
text: '后端三:大模型辅助编写接口代码与接口文档',
link: '/zh-cn/stage-2/backend/2.3-ai-interface-code/'
},
{
text: '后端四:Git 工作流',
link: '/zh-cn/stage-2/backend/2.4-git-workflow/extra1/extra1-what-is-git-and-what-is-github'
},
{
text: '后端五:Zeabur 部署',
link: '/zh-cn/stage-2/backend/2.5-zeabur-deployment/extra6/extra6-zeabur-what-is-it-and-how-to-deploy-web-applications'
},
{
text: '后端六:现代 CLI 开发工具',
link: '/zh-cn/stage-2/backend/2.6-modern-cli/extra7/extra7-cli-ai-coding-tools-and-the-principles-of-test-driven-development'
},
{
text: '后端七:如何集成 Stripe 等收费系统',
link: '/zh-cn/stage-2/backend/2.7-stripe-payment/'
}
]
},
{
text: '大作业',
collapsed: false,
items: [
{
text: '大作业 1:构建第一个现代应用程序 - 全栈应用',
link: '/zh-cn/stage-2/assignments/2.1-fullstack-app/'
},
{
text: '大作业 2:现代前端组件库 + Trae 实战',
link: '/zh-cn/stage-2/assignments/2.2-modern-frontend-trae/'
}
]
},
{
text: 'AI 能力附录',
collapsed: false,
items: [
{
text: 'AI 一:Dify 入门与知识库集成',
link: '/zh-cn/stage-2/ai-capabilities/2.1-dify-knowledge-base/chapter3/chapter3-getting-started-with-dify-and-its-knowledge-base-integration'
},
{
text: 'AI 二:学会查询 AI 词典与集成多模态 API',
link: '/zh-cn/stage-2/ai-capabilities/2.2-multimodal-api/extra3/extra3-ai-capability-starter-handbook'
}
]
}
],
'/zh-cn/stage-3/': [
{
text: '核心技能',
collapsed: false,
items: [
{
text: '高级一:MCP 与 ClaudeCode Skills',
link: '/zh-cn/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{
text: '高级二:如何让 Coding Tools 长时间工作',
link: '/zh-cn/stage-3/core-skills/3.2-long-running-tasks/'
}
]
},
{
text: '多平台开发',
collapsed: false,
items: [
{
text: '高级三:如何构建微信小程序',
link: '/zh-cn/stage-3/cross-platform/3.3-wechat-miniprogram/'
},
{
text: '高级四:如何构建微信小程序(包含后端)',
link: '/zh-cn/stage-3/cross-platform/3.4-wechat-miniprogram-backend/'
},
{
text: '高级五:如何构建安卓程序',
link: '/zh-cn/stage-3/cross-platform/3.5-android-app/'
},
{
text: '高级六:如何构建 iOS 程序',
link: '/zh-cn/stage-3/cross-platform/3.6-ios-app/'
}
]
},
{
text: '个人品牌',
collapsed: false,
items: [
{
text: '高级七:如何构建属于自己的个人网页与学术博客',
link: '/zh-cn/stage-3/personal-brand/3.7-personal-website-blog/'
}
]
},
{
text: 'AI 能力附录',
collapsed: false,
items: [
{
text: '高级 AI 一:什么是 RAG 以及它如何工作',
link: '/zh-cn/stage-3/ai-advanced/3.a1-rag-introduction/extra5-what-is-rag-and-how-does-it-work-and-future'
},
{
text: '高级 AI 二:中高级 RAG 与工作流编排 - 以 LangGraph 为例',
link: '/zh-cn/stage-3/ai-advanced/3.a2-langgraph-advanced-rag/'
}
]
}
],
'/zh-cn/guide/': [
{
text: '课程指南',
items: [{ text: '课程介绍', link: '/zh-cn/guide/introduction' }]
}
],
'/zh-cn/extra/': [
{
text: 'Extra 扩展知识(旧版,已迁移到 Stage 2/3',
items: [
{
text: 'Extra 1: Git & GitHub',
link: '/zh-cn/extra/extra1/extra1-what-is-git-and-what-is-github'
},
{
text: 'Extra 2: What is API',
link: '/zh-cn/extra/extra2/extra2-what-is-api'
},
{
text: 'Extra 5: What is RAG',
link: '/zh-cn/extra/extra5/extra5-what-is-rag-and-how-does-it-work-and-future'
},
{
text: 'Extra 6: Zeabur Deployment',
link: '/zh-cn/extra/extra6/extra6-zeabur-what-is-it-and-how-to-deploy-web-applications'
},
{
text: 'Extra 7: CLI AI Tools & TDD',
link: '/zh-cn/extra/extra7/extra7-cli-ai-coding-tools-and-the-principles-of-test-driven-development'
}
]
}
],
'/zh-cn/examples/': [
{
text: 'Examples 实战案例(旧版,已迁移到 Stage 0/3',
items: [
{
text: 'Ex 0.1: Snake Game',
link: '/zh-cn/examples/example0/example0-1/vibe-coding-tools-snake-game-tutorial'
},
{
text: 'Ex 0.2: Build Website with AI',
link: '/zh-cn/examples/example0/example0-2/vibe-coding-tools-build-website-with-ai-coding-and-design-agents'
}
]
}
],
'/zh-cn/project/': [
{
text: 'Project 文档(旧版,已迁移到 Stage 2',
items: [
{
text: '前端四:霍格沃茨画像',
link: '/zh-cn/project/chapter4/chapter4-lets-build-hogwarts-portraits'
},
{
text: '后端二:Supabase 数据库',
link: '/zh-cn/project/chapter5/chapter5-from-database-to-supabase'
},
{
text: 'AI 一:Dify & Knowledge Base',
link: '/zh-cn/project/chapter3/chapter3-getting-started-with-dify-and-its-knowledge-base-integration'
}
]
}
],
'/zh-cn/appendix/': [
{
text: '附录',
items: [
{ text: 'AI 能力词典', link: '/zh-cn/appendix/ai-capability-dictionary' }
]
}
]
}
}
},
outline: {
level: [1, 6],
label: '页面导航'
// 英文
'en-us': {
label: 'English (US)',
lang: 'en-US',
link: '/en-us/',
title: 'Easy-Vibe Tutorial',
description: 'Learn Vibe Coding from Zero to Advanced',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'On this page'
},
nav: [
{ text: 'Home', link: '/en-us/' },
{ text: 'Getting Started', link: '/en-us/stage-0/0.1-learning-map/' },
{ text: 'AI Product Manager', link: '/en-us/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'Full-Stack Development',
link: '/en-us/stage-2/frontend/2.0-lovart-assets/'
},
{
text: 'Advanced Development',
link: '/en-us/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: 'Appendix', link: '/en-us/appendix/ai-capability-dictionary' }
],
// TODO: Add English sidebar when content is ready
sidebar: {}
}
},
nav: [
{ text: '首页', link: '/' },
{ text: '新手入门', link: '/stage-0/0.1-learning-map/' },
{ text: '产品经理', link: '/stage-1/1.1-introduction-to-ai-ide/' },
{
text: '初中级开发',
link: '/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '高级开发',
link: '/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: '附录', link: '/appendix/ai-capability-dictionary' }
],
sidebar: {
'/stage-0/': [
{ text: '1. 学习地图', link: '/stage-0/0.1-learning-map/' },
{
text: '2. AI 时代,会说话就会编程',
link: '/stage-0/0.2-ai-capabilities-through-games/'
}
],
'/stage-1/': [
{
text: '1. 认识 AI IDE 工具',
link: '/stage-1/1.1-introduction-to-ai-ide/'
// 日文
'ja-jp': {
label: '日本語',
lang: 'ja-JP',
link: '/ja-jp/',
title: 'Easy-Vibe チュートリアル',
description: 'ゼロから学ぶ Vibe Coding',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'このページの目次'
},
{
text: '2. 动手做出原型',
link: '/stage-1/1.2-building-prototype/'
},
{
text: '3. 给原型加上 AI 能力',
link: '/stage-1/1.3-integrating-ai-capabilities/'
},
{
text: '4. 完整项目实战',
link: '/stage-1/1.4-complete-project-practice/'
},
{
text: '5. 大作业:完成一个 Web 应用原型',
link: '/stage-1/1.5-final-project/'
},
{
text: '附录 A:产品思维补充',
link: '/stage-1/appendix-a-product-thinking/'
},
{
text: '附录 B:常见报错及解决方案',
link: '/stage-1/appendix-b-common-errors/'
},
{
text: '附录示例:贪吃蛇游戏教程',
link: '/stage-1/appendix-articles/example0-1/vibe-coding-tools-snake-game-tutorial'
},
{
text: '附录示例:用 AI 搭建完整网站',
link: '/stage-1/appendix-articles/example0-2/vibe-coding-tools-build-website-with-ai-coding-and-design-agents'
}
],
'/stage-2/': [
{
text: '前端开发',
collapsed: false,
items: [
{
text: '前端零:使用 Lovart 生产素材',
link: '/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '前端一:Figma 与 MasterGo 入门',
link: '/stage-2/frontend/2.1-figma-mastergo/'
},
{
text: '前端二:构建第一个现代应用程序 - UI 设计',
link: '/stage-2/frontend/2.2-ui-design/'
},
{
text: '前端三:参考 UI 设计规范与多产品 UI 设计',
link: '/stage-2/frontend/2.3-multi-product-ui/'
},
{
text: '前端四:一起做霍格沃茨画像',
link: '/stage-2/frontend/2.4-hogwarts-portraits/chapter4-lets-build-hogwarts-portraits'
}
]
},
{
text: '后端与全栈',
collapsed: false,
items: [
{
text: '后端一:什么是 API',
link: '/stage-2/backend/2.1-what-is-api/extra2/extra2-what-is-api'
},
{
text: '后端二:从数据库到 Supabase',
link: '/stage-2/backend/2.2-database-supabase/chapter5/chapter5-from-database-to-supabase'
},
{
text: '后端三:大模型辅助编写接口代码与接口文档',
link: '/stage-2/backend/2.3-ai-interface-code/'
},
{
text: '后端四:Git 工作流',
link: '/stage-2/backend/2.4-git-workflow/extra1/extra1-what-is-git-and-what-is-github'
},
{
text: '后端五:Zeabur 部署',
link: '/stage-2/backend/2.5-zeabur-deployment/extra6/extra6-zeabur-what-is-it-and-how-to-deploy-web-applications'
},
{
text: '后端六:现代 CLI 开发工具',
link: '/stage-2/backend/2.6-modern-cli/extra7/extra7-cli-ai-coding-tools-and-the-principles-of-test-driven-development'
},
{
text: '后端七:如何集成 Stripe 等收费系统',
link: '/stage-2/backend/2.7-stripe-payment/'
}
]
},
{
text: '大作业',
collapsed: false,
items: [
{
text: '大作业 1:构建第一个现代应用程序 - 全栈应用',
link: '/stage-2/assignments/2.1-fullstack-app/'
},
{
text: '大作业 2:现代前端组件库 + Trae 实战',
link: '/stage-2/assignments/2.2-modern-frontend-trae/'
}
]
},
{
text: 'AI 能力附录',
collapsed: false,
items: [
{
text: 'AI 一:Dify 入门与知识库集成',
link: '/stage-2/ai-capabilities/2.1-dify-knowledge-base/chapter3/chapter3-getting-started-with-dify-and-its-knowledge-base-integration'
},
{
text: 'AI 二:学会查询 AI 词典与集成多模态 API',
link: '/stage-2/ai-capabilities/2.2-multimodal-api/extra3/extra3-ai-capability-starter-handbook'
}
]
}
],
'/stage-3/': [
{
text: '核心技能',
collapsed: false,
items: [
{
text: '高级一:MCP 与 ClaudeCode Skills',
link: '/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{
text: '高级二:如何让 Coding Tools 长时间工作',
link: '/stage-3/core-skills/3.2-long-running-tasks/'
}
]
},
{
text: '多平台开发',
collapsed: false,
items: [
{
text: '高级三:如何构建微信小程序',
link: '/stage-3/cross-platform/3.3-wechat-miniprogram/'
},
{
text: '高级四:如何构建微信小程序(包含后端)',
link: '/stage-3/cross-platform/3.4-wechat-miniprogram-backend/'
},
{
text: '高级五:如何构建安卓程序',
link: '/stage-3/cross-platform/3.5-android-app/'
},
{
text: '高级六:如何构建 iOS 程序',
link: '/stage-3/cross-platform/3.6-ios-app/'
}
]
},
{
text: '个人品牌',
collapsed: false,
items: [
{
text: '高级七:如何构建属于自己的个人网页与学术博客',
link: '/stage-3/personal-brand/3.7-personal-website-blog/'
}
]
},
{
text: 'AI 能力附录',
collapsed: false,
items: [
{
text: '高级 AI 一:什么是 RAG 以及它如何工作',
link: '/stage-3/ai-advanced/3.a1-rag-introduction/extra5-what-is-rag-and-how-does-it-work-and-future'
},
{
text: '高级 AI 二:中高级 RAG 与工作流编排 - 以 LangGraph 为例',
link: '/stage-3/ai-advanced/3.a2-langgraph-advanced-rag/'
}
]
}
],
'/guide/': [
{
text: '课程指南',
items: [{ text: '课程介绍', link: '/guide/introduction' }]
}
],
'/extra/': [
{
text: 'Extra 扩展知识(旧版,已迁移到 Stage 2/3',
items: [
{
text: 'Extra 1: Git & GitHub',
link: '/extra/extra1/extra1-what-is-git-and-what-is-github'
},
{
text: 'Extra 2: What is API',
link: '/extra/extra2/extra2-what-is-api'
},
{
text: 'Extra 5: What is RAG',
link: '/extra/extra5/extra5-what-is-rag-and-how-does-it-work-and-future'
},
{
text: 'Extra 6: Zeabur Deployment',
link: '/extra/extra6/extra6-zeabur-what-is-it-and-how-to-deploy-web-applications'
},
{
text: 'Extra 7: CLI AI Tools & TDD',
link: '/extra/extra7/extra7-cli-ai-coding-tools-and-the-principles-of-test-driven-development'
}
]
}
],
'/examples/': [
{
text: 'Examples 实战案例(旧版,已迁移到 Stage 0/3',
items: [
{
text: 'Ex 0.1: Snake Game',
link: '/examples/example0/example0-1/vibe-coding-tools-snake-game-tutorial'
},
{
text: 'Ex 0.2: Build Website with AI',
link: '/examples/example0/example0-2/vibe-coding-tools-build-website-with-ai-coding-and-design-agents'
}
]
}
],
'/project/': [
{
text: 'Project 文档(旧版,已迁移到 Stage 2',
items: [
{
text: '前端四:霍格沃茨画像',
link: '/project/chapter4/chapter4-lets-build-hogwarts-portraits'
},
{
text: '后端二:Supabase 数据库',
link: '/project/chapter5/chapter5-from-database-to-supabase'
},
{
text: 'AI 一:Dify & Knowledge Base',
link: '/project/chapter3/chapter3-getting-started-with-dify-and-its-knowledge-base-integration'
}
]
}
],
'/appendix/': [
{
text: '附录',
items: [
{ text: 'AI 能力词典', link: '/appendix/ai-capability-dictionary' }
]
}
]
nav: [
{ text: 'ホーム', link: '/ja-jp/' },
{ text: '入門', link: '/ja-jp/stage-0/0.1-learning-map/' },
{ text: 'AI プロダクトマネージャー', link: '/ja-jp/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'フルスタック開発',
link: '/ja-jp/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '上級開発',
link: '/ja-jp/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: '付録', link: '/ja-jp/appendix/ai-capability-dictionary' }
],
// TODO: Add Japanese sidebar when content is ready
sidebar: {}
}
},
socialLinks: [
{ icon: 'github', link: 'https://github.com/datawhalechina/easy-vibe' }
]
'zh-tw': {
label: '繁體中文',
lang: 'zh-TW',
link: '/zh-tw/',
title: 'Easy-Vibe 教程',
description: '從零到一學習 Vibe Coding',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: '頁面導航'
},
nav: [
{ text: '首頁', link: '/zh-tw/' },
{ text: '新手入門', link: '/zh-tw/stage-0/0.1-learning-map/' },
{ text: '產品經理', link: '/zh-tw/stage-1/1.1-introduction-to-ai-ide/' },
{
text: '初中級開發',
link: '/zh-tw/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '高級開發',
link: '/zh-tw/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: '附錄', link: '/zh-tw/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
},
'ko-kr': {
label: '한국어',
lang: 'ko-KR',
link: '/ko-kr/',
title: 'Easy-Vibe 튜토리얼',
description: 'Vibe Coding을 처음부터 체계적으로 학습합니다',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: '페이지 탐색'
},
nav: [
{ text: '홈', link: '/ko-kr/' },
{ text: '입문', link: '/ko-kr/stage-0/0.1-learning-map/' },
{ text: 'AI PM', link: '/ko-kr/stage-1/1.1-introduction-to-ai-ide/' },
{
text: '풀스택 개발',
link: '/ko-kr/stage-2/frontend/2.0-lovart-assets/'
},
{
text: '고급 개발',
link: '/ko-kr/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: '부록', link: '/ko-kr/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
},
'es-es': {
label: 'Español',
lang: 'es-ES',
link: '/es-es/',
title: 'Tutorial de Easy-Vibe',
description: 'Aprende Vibe Coding desde cero hasta avanzado',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'Navegación de página'
},
nav: [
{ text: 'Inicio', link: '/es-es/' },
{ text: 'Principiante', link: '/es-es/stage-0/0.1-learning-map/' },
{ text: 'PM de IA', link: '/es-es/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'Desarrollo Full Stack',
link: '/es-es/stage-2/frontend/2.0-lovart-assets/'
},
{
text: 'Desarrollo Avanzado',
link: '/es-es/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: 'Apéndice', link: '/es-es/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
},
'fr-fr': {
label: 'Français',
lang: 'fr-FR',
link: '/fr-fr/',
title: 'Tutoriel Easy-Vibe',
description: 'Apprenez Vibe Coding de zéro à avancé',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'Navigation de page'
},
nav: [
{ text: 'Accueil', link: '/fr-fr/' },
{ text: 'Débutant', link: '/fr-fr/stage-0/0.1-learning-map/' },
{ text: 'PM IA', link: '/fr-fr/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'Développement Full Stack',
link: '/fr-fr/stage-2/frontend/2.0-lovart-assets/'
},
{
text: 'Développement Avancé',
link: '/fr-fr/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: 'Annexe', link: '/fr-fr/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
},
'de-de': {
label: 'Deutsch',
lang: 'de-DE',
link: '/de-de/',
title: 'Easy-Vibe Tutorial',
description: 'Lernen Sie Vibe Coding von Null bis Fortgeschritten',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'Seitennavigation'
},
nav: [
{ text: 'Start', link: '/de-de/' },
{ text: 'Einsteiger', link: '/de-de/stage-0/0.1-learning-map/' },
{ text: 'KI-PM', link: '/de-de/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'Full Stack Entwicklung',
link: '/de-de/stage-2/frontend/2.0-lovart-assets/'
},
{
text: 'Fortgeschrittene Entwicklung',
link: '/de-de/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: 'Anhang', link: '/de-de/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
},
'ar-sa': {
label: 'العربية',
lang: 'ar-SA',
link: '/ar-sa/',
title: 'دروس Easy-Vibe',
description: 'تعلم Vibe Coding من الصفر إلى المتقدم',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'تنقل الصفحة'
},
nav: [
{ text: 'الرئيسية', link: '/ar-sa/' },
{ text: 'المبتدئين', link: '/ar-sa/stage-0/0.1-learning-map/' },
{ text: 'مدير منتج AI', link: '/ar-sa/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'تطوير Full Stack',
link: '/ar-sa/stage-2/frontend/2.0-lovart-assets/'
},
{
text: 'تطوير متقدم',
link: '/ar-sa/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: 'ملحق', link: '/ar-sa/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
},
'vi-vn': {
label: 'Tiếng Việt',
lang: 'vi-VN',
link: '/vi-vn/',
title: 'Hướng dẫn Easy-Vibe',
description: 'Học Vibe Coding từ cơ bản đến nâng cao',
head: commonHead,
themeConfig: {
...commonThemeConfig,
outline: {
level: [1, 6],
label: 'Điều hướng trang'
},
nav: [
{ text: 'Trang chủ', link: '/vi-vn/' },
{ text: 'Người mới', link: '/vi-vn/stage-0/0.1-learning-map/' },
{ text: 'PM AI', link: '/vi-vn/stage-1/1.1-introduction-to-ai-ide/' },
{
text: 'Phát triển Full Stack',
link: '/vi-vn/stage-2/frontend/2.0-lovart-assets/'
},
{
text: 'Phát triển Nâng cao',
link: '/vi-vn/stage-3/core-skills/3.1-mcp-claudecode-skills/'
},
{ text: 'Phụ lục', link: '/vi-vn/appendix/ai-capability-dictionary' }
],
sidebar: {}
}
}
}
})
+26
View File
@@ -206,3 +206,29 @@
white-space: nowrap;
}
}
/* 移除链接下划线,改善阅读体验 */
.vp-doc a {
text-decoration: none !important;
border-bottom: 1px solid transparent;
transition: border-bottom-color 0.2s ease-in-out;
}
.vp-doc a:hover {
border-bottom-color: var(--vp-c-brand-1, #646cff);
}
/* 链接保持无下划线,只在悬停时显示 */
.VPDoc a,
.VPLink a {
text-decoration: none !important;
}
/* 侧边栏链接无下划线 */
.VPSidebarItem .VPLink {
text-decoration: none !important;
}
.VPSidebarItem .VPLink:hover {
text-decoration: none !important;
}