国际化(英语)Implementation Plan
For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
Goal: 为全球代理帮助文档站点添加英语(en)国际化支持,包括文档、博客、首页及所有 UI 文本。
Architecture: 使用 Docusaurus 原生 i18n 文件副本方案。中文为默认 locale(/),英文通过 /en/ 前缀访问。导航栏提供语言切换下拉菜单。首页通过 <Translate> 组件 + 英文页面副本实现翻译。
Tech Stack: Docusaurus 2.4.1, @docusaurus/Translate 组件, i18n JSON 翻译文件
Task 1:修改 docusaurus.config.js — 启用 i18n 并添加语言切换器
Files:
- Modify:
docusaurus.config.js:33-37(i18n 块) - Modify:
docusaurus.config.js:82-107(navbar.items)
Step 1: 修改 i18n 配置
将 docusaurus.config.js 第 33-37 行:
i18n: {
defaultLocale: 'zh-Hans',
locales: ['zh-Hans'],
},
改为:
i18n: {
defaultLocale: 'zh-Hans',
locales: ['zh-Hans', 'en'],
localeConfigs: {
'zh-Hans': { label: '中文' },
en: { label: 'English' },
},
},
Step 2: 在 navbar.items 数组末尾添加语言切换器
在 navbar.items 数组的最后一个元素(套餐介绍 dropdown)之后,添加:
{
type: 'localeDropdown',
position: 'right',
},
Step 3: 验证
Run: npm run start
Expected: 站点正常启动,导航栏右侧出现语言切换下拉菜单。
Step 4: Commit
git add docusaurus.config.js
git commit -m "feat(i18n): enable en locale and add locale dropdown"
Task 2:生成翻译模板文件
Step 1: 运行 write-translations 命令
Run: npm run write-translations -- --locale en
Expected: 在 i18n/en/ 下自动生成以下文件:
i18n/en/code.jsoni18n/en/docusaurus-theme-classic/navbar.jsoni18n/en/docusaurus-theme-classic/footer.jsoni18n/en/docusaurus-plugin-content-docs/current.json
Step 2: 查看生成的文件
Run: Get-ChildItem -Recurse i18n/en/ -Name
确认文件结构完整。
Step 3: Commit
git add i18n/
git commit -m "feat(i18n): generate en translation templates"
Task 3:翻译 navbar JSON
Files:
- Modify:
i18n/en/docusaurus-theme-classic/navbar.json
Step 1: 先读取自动生成的 navbar.json,查看实际的 key 格式
Run: Get-Content i18n/en/docusaurus-theme-classic/navbar.json
Step 2: 根据实际 key,将所有 message 字段翻译为英文
翻译对照表:
| 中文原文 | 英文翻译 |
|---|---|
| 全球代理 | Global Proxies |
| 帮助文档 | Documentation |
| 开发者接入 | Developer API |
| 官网主页 | Homepage |
| 套餐介绍 | Plans |
| 动态住宅 | Dynamic Residential |
| 静态住宅 | Static Residential |
| 静态机房 | Static Data Center |
Step 3: Commit
git add i18n/en/docusaurus-theme-classic/navbar.json
git commit -m "feat(i18n): translate navbar to English"
Task 4:翻译 footer JSON
Files:
- Modify:
i18n/en/docusaurus-theme-classic/footer.json
Step 1: 先读取自动生成的 footer.json,查看实际的 key 格式
Run: Get-Content i18n/en/docusaurus-theme-classic/footer.json
Step 2: 根据实际 key,将所有 message 字段翻译为英文
翻译对照表:
| 中文原文 | 英文翻译 |
|---|---|
| 文档 | Docs |
| 帮助文档 | Help Center |
| 官网主页 | Homepage |
| 产品 | Products |
| 全球动态住宅 | Dynamic Residential Proxy |
| 全球静态住宅 | Static Residential Proxy |
| 全球静态机房 | Static Data Center Proxy |
| 热门地区 | Popular Regions |
| 美国 | United States |
| 英国 | United Kingdom |
| 德国 | Germany |
| 泰国 | Thailand |
| 韩国 | South Korea |
| 新加坡 | Singapore |
| 代理商 | Partners |
| 成为代理商 | Become a Partner |
| 推广计划 | Affiliate Program |
copyright 字段翻译为: Copyright © {year} quanqiudaili.com(保持不变或按需修改)
Step 3: Commit
git add i18n/en/docusaurus-theme-classic/footer.json
git commit -m "feat(i18n): translate footer to English"
Task 5:翻译侧边栏 category 标签
Files:
- Modify:
i18n/en/docusaurus-plugin-content-docs/current.json
Step 1: 先读取自动生成的 current.json,查看实际的 key 格式
Run: Get-Content i18n/en/docusaurus-plugin-content-docs/current.json
Step 2: 根据实际 key,将 message 字段翻译为英文
翻译对照表(侧边栏 category):
| 中文原文 | 英文翻译 |
|---|---|
| 🌎产品介绍 | 🌎 Products |
| ⚙️代理设置 | ⚙️ Proxy Settings |
| 📱安卓手机 | 📱 Android |
| 📱iphone手机 | 📱 iPhone |
| 💻Windows电脑 | 💻 Windows |
| 👍指纹浏览器 | 👍 Fingerprint Browser |
| ❓常见问题 | ❓ FAQ |
侧边栏 generated-index description 翻译:
| 中文原文 | 英文翻译 |
|---|---|
| 如何使用quanqiudaili的代理IP? | How to use Global Proxies? |
| Android系统手机使用代理IP教程... | Android proxy setup tutorial |
| IOS系统iphone手机使用代理IP教程 | iPhone proxy setup tutorial |
| windows系统使用代理IP教程 | Windows proxy setup tutorial |
| 指纹浏览器使用代理IP教程 | Fingerprint browser proxy setup tutorial |
Step 3: Commit
git add i18n/en/docusaurus-plugin-content-docs/current.json
git commit -m "feat(i18n): translate sidebar labels to English"
Task 6:改造首页 — 用 <Translate> 包裹中文静态文本
Files:
- Modify:
src/pages/index.js
Step 1: 添加 import
在 src/pages/index.js 顶部已有 import 区域,添加:
import Translate, {translate} from '@docusaurus/Translate';
Step 2: 替换 Layout 组件的 title 和 description 属性
将第 73-75 行:
<Layout
title="帮助文档"
description="帮助文档,全球代理帮助文档,socks5代理ip,动态ip代理,http代理ip,动态ip,静态ip,住宅ip,独享ip,爬虫代理ip,美国ip,固定ip,http隧道代理,socks代理ip,在线代理ip,免费代理ip,代理服务器ip地址,国外动态ip,海外代理ip,国内ip代理,国外http代理,海外ip"
>
改为:
<Layout
title={translate({id: 'homepage.layoutTitle', message: '帮助文档'})}
description={translate({id: 'homepage.description', message: '帮助文档,全球代理帮助文档,socks5代理ip,动态ip代理,http代理ip,动态ip,静态ip,住宅ip,独享ip,爬虫代理ip,美国ip,固定ip,http隧道代理,socks代理ip,在线代理ip,免费代理ip,代理服务器ip地址,国外动态ip,海外代理ip,国内ip代理,国外http代理,海外ip'})}
>
Step 3: 替换 header-title
将第 77 行:
<div className='header-title'>全球代理文档中心</div>
改为:
<div className='header-title'><Translate id="homepage.title">全球代理文档中心</Translate></div>
Step 4: 替换 HotQA 组件中的"热门问答:"
将第 17 行:
<span style={{ fontSize: '14px', marginLeft: '26px' }}>热门问答:</span>
改为:
<span style={{ fontSize: '14px', marginLeft: '26px' }}><Translate id="homepage.hotQA">热门问答:</Translate></span>
Step 5: 替换 QAList 组件中的"常见问题:"
将第 48 行:
<span className='warpper-title'>常见问题:</span>
改为:
<span className='warpper-title'><Translate id="homepage.faqTitle">常见问题:</Translate></span>
Step 6: 替换"查看更多"
将第 60 行:
<div className='more-link'><Link to={item.moreLink}>查看更多 <RightCircleOutlined /></Link></div>
改为:
<div className='more-link'><Link to={item.moreLink}><Translate id="homepage.viewMore">查看更多</Translate> <RightCircleOutlined /></Link></div>
Step 7: 验证中文版首页正常
Run: npm run start
Expected: 首页显示与改造前一致。
Step 8: Commit
git add src/pages/index.js
git commit -m "feat(i18n): wrap homepage static text with Translate component"
Task 7:创建英文版首页数据文件
Files:
- Create:
home-questions-en.js(项目根目录)
Step 1: 创建 home-questions-en.js
内容如下(完整文件):
// English version of homepage questions
export const hotQuestions = [
[
{ label: 'What is Dynamic Residential Proxy?', href: '/docs/List/drf' },
{ label: 'How to purchase?', href: '/docs/Buy-lssues/' },
],
[
{ label: 'What is Static Residential Proxy?', href: '/docs/List/srt' },
{ label: 'What is Static Data Center Proxy?', href: '/docs/List/sct' },
],
[
{ label: 'How to get proxy?', href: '/docs/Get-Proxy/' },
{ label: 'How to set up proxy?', href: '/docs/proxy-Settings' },
],
[
{ label: 'Why do I need an acceleration tunnel?', href: '/docs/Faq/#为什么需要加速通道' },
{ label: 'What devices does Global Proxies support?', href: '/docs/Faq/#quanqiudaili支持哪些设备' },
],
]
export const qaQuestions = [
{
title: 'Products',
moreLink: '/docs/intro',
items: [
{ label: 'What is Dynamic Residential Proxy?', href: '/docs/List/drf' },
{ label: 'What is Static Residential Proxy?', href: '/docs/List/srt' },
{ label: 'What is Static Data Center Proxy?', href: '/docs/List/sct' },
]
},
{
title: 'Proxy Settings',
moreLink: '/docs/proxy-Settings',
items: [
{ label: 'How to set up proxy on Android?', href: '/docs/proxy-Settings/Android' },
{ label: 'How to set up proxy on iPhone?', href: '/docs/proxy-Settings/iphone' },
{ label: 'How to set up proxy on Windows?', href: '/docs/proxy-Settings/Windows' },
{ label: 'How to set up proxy in Fingerprint Browser?', href: '/docs/proxy-Settings/fingerprint-browser' },
]
},
{
title: 'How to Purchase',
moreLink: '/docs/Buy-lssues/',
items: [
{ label: 'Purchase Dynamic Residential Data Package', href: '/docs/Buy-lssues/#%EF%B8%8F购买全球动态住宅流量包' },
{ label: 'Purchase Static Residential Proxy IP', href: '/docs/Buy-lssues/#购买全球静态住宅代理ip' },
{ label: 'Purchase Static Data Center Proxy IP', href: '/docs/Buy-lssues/#购买全球静态机房代理ip' },
]
},
{
title: 'How to Get Proxy',
moreLink: '/docs/Get-Proxy/',
items: [
{ label: 'How to get proxy after purchasing Dynamic Residential?', href: '/docs/Get-Proxy/#全球动态住宅购买后如何获取代理ip' },
{ label: 'How to get proxy after purchasing Static Residential?', href: '/docs/Get-Proxy/#全球静态住宅购买后如何获取代理ip' },
{ label: 'How to get proxy after purchasing Static Data Center?', href: '/docs/Get-Proxy/#全球静态机房购买后如何获取代理ip' },
]
},
{
title: 'Process',
moreLink: '/docs/Process',
items: [
{ label: 'Usage Process', href: '/docs/Process' },
]
},
{
title: 'FAQ',
moreLink: '/docs/Faq/',
items: [
{ label: 'Dynamic Residential Proxy FAQ', href: '/docs/Faq/Dynamic-Residence-Faq' },
{ label: 'Static Residential Proxy FAQ', href: '/docs/Faq/Static-Residence-Faq' },
{ label: 'Static Data Center Proxy FAQ', href: '/docs/Faq/Data-Center-Faq' },
{ label: 'Relationship between acceleration tunnel and proxy IP', href: '/docs/Faq/#加速通道和代理ip之间的关系' },
{ label: 'Why we don\'t provide VPN', href: '/docs/Faq/#为什么不提供vpn' },
]
}
]
Step 2: Commit
git add home-questions-en.js
git commit -m "feat(i18n): add English homepage question data"
Task 8:创建英文版首页组件
Files:
- Create:
i18n/en/docusaurus-plugin-content-pages/index.js
Step 1: 创建英文版首页
复制 src/pages/index.js 的内容,但修改 import 路径。完整文件内容:
import React from 'react';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
import Translate, {translate} from '@docusaurus/Translate';
import { RightCircleOutlined } from '@ant-design/icons';
import { hotQuestions, qaQuestions } from '../../../../home-questions-en';
import SearchBar from '@theme/SearchBar';
import { Carousel, Radio } from 'antd';
function HotQA() {
return (
<div className='hot-qa-list'>
<span style={{ fontSize: '14px', marginLeft: '26px' }}><Translate id="homepage.hotQA">热门问答:</Translate></span>
<div style={{ width: '80%' }}>
<Carousel dotPosition={'left'} autoplay={true} dots={false} autoplaySpeed={3000} >
{
hotQuestions.map((item, index) => (
<div key={index} className='hot-qa-item'>
<Link to={item[0].href}>{item[0].label}</Link>
<Link to={item[1].href}>{item[1].label}</Link>
</div>
))
}
</Carousel>
</div>
</div>
)
}
function QAList() {
const qaItemTitle = {
fontSize: '16px',
fontWeight: 'bold',
paddingLeft: '15px',
marginTop: '20px',
}
return (
<div className='qa-list-warpper'>
<span className='warpper-title'><Translate id="homepage.faqTitle">常见问题:</Translate></span>
<div className='qa-item-warpper'>
{
qaQuestions.map((item, index) => (
<div className='qa-item-container' key={index}>
<div style={{...qaItemTitle, borderLeft: '5px solid #213ECB'}}>{item.title}</div>
<div style={{ padding: '20px 0 0 20px' }}>
{
item.items.map((item, index) => (
<div key={index} style={{ marginBottom: '10px',fontSize:'14px' }} className='qa-item'><Link to={item.href}>{item.label}</Link></div>
))
}
</div>
<div className='more-link'><Link to={item.moreLink}><Translate id="homepage.viewMore">查看更多</Translate> <RightCircleOutlined /></Link></div>
</div>
))
}
</div>
</div>
)
}
export default function Home() {
const { siteConfig } = useDocusaurusContext();
return (
<Layout
title={translate({id: 'homepage.layoutTitle', message: '帮助文档'})}
description={translate({id: 'homepage.description', message: 'Help center, Global Proxies documentation, socks5 proxy ip, dynamic ip proxy, http proxy ip'})}
>
<div className='section1'>
<div className='header-title'><Translate id="homepage.title">全球代理文档中心</Translate></div>
<div className='homePageSearchBar'>
<SearchBar />
<HotQA />
</div>
</div>
<div className='section2' style={{ display: 'flex', justifyContent: 'center' }}>
<QAList />
</div>
</Layout>
);
}
注意:此文件的 CSS 样式由 Docusaurus 主题全局加载,不需要在此文件中单独 import
custom-index.css。如果样式缺失,需额外在此文件中 import CSS:import "../../../../src/pages/custom-index.css"。
Step 2: Commit
git add i18n/en/docusaurus-plugin-content-pages/index.js
git commit -m "feat(i18n): add English homepage component"
Task 9:填写 code.json 翻译
Files:
- Modify:
i18n/en/code.json
Step 1: 重新生成 code.json 以包含 Translate 组件的 id
Run: npm run write-translations -- --locale en
Step 2: 读取并编辑 code.json
Run: Get-Content i18n/en/code.json
将所有 message 字段翻译为英文,参考对照表:
| id | 英文翻译 |
|---|---|
| homepage.layoutTitle | Help Center |
| homepage.description | Help center, Global Proxies documentation, socks5 proxy ip, dynamic ip proxy, http proxy ip, dynamic ip, static ip, residential ip, dedicated ip |
| homepage.title | Global Proxies Documentation Center |
| homepage.hotQA | Hot Questions: |
| homepage.faqTitle | FAQ: |
| homepage.viewMore | View More |
| theme.SearchBar.label (如果存在) | Search |
Step 3: Commit
git add i18n/en/code.json
git commit -m "feat(i18n): translate code.json to English"
Task 10:复制核心文档到英文目录
Files:
- Create:
i18n/en/docusaurus-plugin-content-docs/current/下的所有.md文件
Step 1: 创建目录并复制文件(不复制 image 文件夹)
在项目根目录运行以下命令:
# 根目录文档
$dest = "i18n/en/docusaurus-plugin-content-docs/current"
New-Item -ItemType Directory -Force -Path $dest
Copy-Item docs/intro.md "$dest/"
Copy-Item docs/Process.md "$dest/"
Copy-Item docs/Smart-check.md "$dest/"
Copy-Item docs/Contact-Us.md "$dest/"
# List
New-Item -ItemType Directory -Force -Path "$dest/List"
Copy-Item docs/List/*.md "$dest/List/"
# Buy-lssues
New-Item -ItemType Directory -Force -Path "$dest/Buy-lssues"
Copy-Item docs/Buy-lssues/Buy-lssues.md "$dest/Buy-lssues/"
# Get-Proxy
New-Item -ItemType Directory -Force -Path "$dest/Get-Proxy"
Copy-Item docs/Get-Proxy/*.md "$dest/Get-Proxy/"
# Faq
New-Item -ItemType Directory -Force -Path "$dest/Faq"
Copy-Item docs/Faq/*.md "$dest/Faq/"
Copy-Item docs/Faq/_category_.json "$dest/Faq/"
# proxy-Settings / Android-Setting
New-Item -ItemType Directory -Force -Path "$dest/proxy-Settings/Android-Setting"
Copy-Item docs/proxy-Settings/Android-Setting/Android-V2ray.md "$dest/proxy-Settings/Android-Setting/"
Copy-Item docs/proxy-Settings/Android-Setting/Android-Kitsunebi.md "$dest/proxy-Settings/Android-Setting/"
Copy-Item docs/proxy-Settings/Android-Setting/Android-Shadowrocket.md "$dest/proxy-Settings/Android-Setting/"
# proxy-Settings / ios-Setting
New-Item -ItemType Directory -Force -Path "$dest/proxy-Settings/ios-Setting"
Copy-Item docs/proxy-Settings/ios-Setting/iphone-settings.md "$dest/proxy-Settings/ios-Setting/"
Copy-Item docs/proxy-Settings/ios-Setting/iphone-Kitsunebi.md "$dest/proxy-Settings/ios-Setting/"
Copy-Item docs/proxy-Settings/ios-Setting/iphone-Shadowrocket.md "$dest/proxy-Settings/ios-Setting/"
# proxy-Settings / Windows-Setting
New-Item -ItemType Directory -Force -Path "$dest/proxy-Settings/Windows-Setting"
Copy-Item docs/proxy-Settings/Windows-Setting/windows-sstap.md "$dest/proxy-Settings/Windows-Setting/"
Copy-Item docs/proxy-Settings/Windows-Setting/windows-V2ray.md "$dest/proxy-Settings/Windows-Setting/"
Copy-Item docs/proxy-Settings/Windows-Setting/windows-edge.md "$dest/proxy-Settings/Windows-Setting/"
Copy-Item docs/proxy-Settings/Windows-Setting/windows-Google-Chrome.md "$dest/proxy-Settings/Windows-Setting/"
Copy-Item docs/proxy-Settings/Windows-Setting/windows-360Browser.md "$dest/proxy-Settings/Windows-Setting/"
# proxy-Settings / Fingerprint-Browser-Setting
New-Item -ItemType Directory -Force -Path "$dest/proxy-Settings/Fingerprint-Browser-Setting"
Copy-Item docs/proxy-Settings/Fingerprint-Browser-Setting/mbbrowser.md "$dest/proxy-Settings/Fingerprint-Browser-Setting/"
Copy-Item docs/proxy-Settings/Fingerprint-Browser-Setting/Adspower.md "$dest/proxy-Settings/Fingerprint-Browser-Setting/"
Copy-Item docs/proxy-Settings/Fingerprint-Browser-Setting/Hubstudio.md "$dest/proxy-Settings/Fingerprint-Browser-Setting/"
Copy-Item docs/proxy-Settings/Fingerprint-Browser-Setting/bitbrowser.md "$dest/proxy-Settings/Fingerprint-Browser-Setting/"
Copy-Item docs/proxy-Settings/Fingerprint-Browser-Setting/VMLogin.md "$dest/proxy-Settings/Fingerprint-Browser-Setting/"
Step 2: 确认文件复制完成
Run: Get-ChildItem -Recurse i18n/en/docusaurus-plugin-content-docs/current/ -Name | Where-Object { $_ -like "*.md" }
Expected: 应看到约 25-30 个 .md 文件。
Step 3: Commit
git add i18n/en/docusaurus-plugin-content-docs/current/
git commit -m "feat(i18n): copy docs to en locale (untranslated)"
Task 11:翻译核心文档(第一批 - 高优先级)
Files:
- Modify:
i18n/en/docusaurus-plugin-content-docs/current/下的文档
翻译顺序(按优先级):
intro.md— 快速上手页面Process.md— 使用流程List/drf.md— 动态住宅产品介绍List/srt.md— 静态住宅产品介绍List/sct.md— 静态机房产品介绍Buy-lssues/Buy-lssues.md— 购买指南Get-Proxy/Get-Proxy.md— 获取代理Get-Proxy/Dynamic-flow-api-ip.md— 动态流量 APISmart-check.md— 智能检测Contact-Us.md— 联系我们
每个文件的翻译步骤:
- 读取文件内容
- 保留 frontmatter 结构(
sidebar_position等不变),将title翻译为英文 - 将正文 Markdown 内容全部翻译为英文
- 图片引用路径保持不变(Docusaurus 自动回退到中文版图片)
- 内部链接路径保持不变(不需要加
/en/前缀)
Step 最后: Commit
git add i18n/en/docusaurus-plugin-content-docs/current/
git commit -m "feat(i18n): translate core docs to English (batch 1)"
Task 12:翻译 FAQ 文档
Files:
- Modify:
i18n/en/docusaurus-plugin-content-docs/current/Faq/Faq.md - Modify:
i18n/en/docusaurus-plugin-content-docs/current/Faq/Dynamic-Residence-Faq.md - Modify:
i18n/en/docusaurus-plugin-content-docs/current/Faq/Static-Residence-Faq.md - Modify:
i18n/en/docusaurus-plugin-content-docs/current/Faq/Data-Center-Faq.md
Step 1: 逐个翻译每个 FAQ 文件
- 保留 frontmatter,翻译 title
- 翻译所有问答内容
- 图片路径保持不变
Step 2: Commit
git add i18n/en/docusaurus-plugin-content-docs/current/Faq/
git commit -m "feat(i18n): translate FAQ docs to English"
Task 13:翻译代理设置教程
Files:
- Modify:
i18n/en/docusaurus-plugin-content-docs/current/proxy-Settings/下所有.md文件
翻译顺序:
Android-Setting/Android-V2ray.mdAndroid-Setting/Android-Kitsunebi.mdAndroid-Setting/Android-Shadowrocket.mdios-Setting/iphone-settings.mdios-Setting/iphone-Kitsunebi.mdios-Setting/iphone-Shadowrocket.mdWindows-Setting/windows-sstap.mdWindows-Setting/windows-V2ray.mdWindows-Setting/windows-edge.mdWindows-Setting/windows-Google-Chrome.mdWindows-Setting/windows-360Browser.mdFingerprint-Browser-Setting/mbbrowser.mdFingerprint-Browser-Setting/Adspower.mdFingerprint-Browser-Setting/Hubstudio.mdFingerprint-Browser-Setting/bitbrowser.mdFingerprint-Browser-Setting/VMLogin.md
翻译要点:
- 步骤说明翻译为英文
- 软件名称保持原文(V2ray、Shadowrocket、Kitsunebi 等)
- 截图中的中文界面无法翻译,但步骤描述需用英文清晰说明
- 图片引用路径保持不变
Step 最后: Commit
git add i18n/en/docusaurus-plugin-content-docs/current/proxy-Settings/
git commit -m "feat(i18n): translate proxy settings docs to English"
Task 14:复制并翻译博客
Files:
- Create:
i18n/en/docusaurus-plugin-content-blog/下的文件
Step 1: 复制博客文件
$blogDest = "i18n/en/docusaurus-plugin-content-blog"
New-Item -ItemType Directory -Force -Path "$blogDest/2021-08-26-welcome"
Copy-Item blog/2019-05-28-first-blog-post.md "$blogDest/"
Copy-Item blog/2019-05-29-long-blog-post.md "$blogDest/"
Copy-Item blog/2021-08-01-mdx-blog-post.mdx "$blogDest/"
Copy-Item blog/2023-09-01-Updates.md "$blogDest/"
Copy-Item blog/authors.yml "$blogDest/"
Copy-Item blog/2021-08-26-welcome/index.md "$blogDest/2021-08-26-welcome/"
Step 2: 逐个翻译博客内容为英文
Step 3: Commit
git add i18n/en/docusaurus-plugin-content-blog/
git commit -m "feat(i18n): translate blog posts to English"
Task 15:端到端验证
Step 1: 验证英文版
Run: npm run start -- --locale en
检查清单:
- 导航栏显示英文标签(Documentation / Developer API / Homepage / Plans)
- 语言切换下拉显示 "中文 / English"
- 首页标题显示 "Global Proxies Documentation Center"
- 首页热门问答和常见问题显示英文
- 侧边栏 category 标签显示英文
- 文档内容显示英文
- 博客内容显示英文
- Footer 显示英文
- 图片正常加载
- 内部链接跳转正确(在
/en/前缀下)
Step 2: 验证中文版未受影响
Run: npm run start
检查清单:
- 所有页面内容仍为中文
- 导航栏语言切换器出现,点击 "English" 可切换到英文版
Step 3: 构建验证
Run: npm run build
Expected: 构建成功,无报错。build/ 目录下包含中文版(根目录)和英文版(/en/ 子目录)。
Step 4: Final Commit
git add .
git commit -m "feat(i18n): complete English internationalization"
执行顺序总结
| 阶段 | Task | 说明 | 文件数 |
|---|---|---|---|
| 基础配置 | Task 1-2 | 改 config + 生成模板 | 1 + 自动生成 |
| UI 翻译 | Task 3-5 | navbar / footer / sidebar JSON | 3 |
| 首页改造 | Task 6-9 | <Translate> + 英文首页 + code.json | 4 |
| 文档复制 | Task 10 | 复制所有 md 文件到 en 目录 | ~25 |
| 核心文档翻译 | Task 11 | 首页/产品/购买/获取代理等 | 10 |
| FAQ 翻译 | Task 12 | 常见问题 | 4 |
| 教程翻译 | Task 13 | 代理设置教程 | 16 |
| 博客翻译 | Task 14 | 博客文章 | 5 |
| 验证 | Task 15 | 端到端检查 | 0 |