Files
OrbbecSDK_ROS2/docs/LANGUAGE_SWITCH_GUIDE.md
T

228 lines
5.6 KiB
Markdown
Raw Normal View History

2025-10-19 16:20:38 +08:00
# 双语文档语言切换指南
## GitHub Pages 部署结构
当推送到 GitHub 后,文档将自动构建并部署到以下结构:
```
https://orbbec.github.io/OrbbecSDK_ROS2/
├── index.html # 英文版首页(默认)
├── _static/ # 英文版静态资源
├── 1_overview/ # 英文版内容
├── 2_installation/
├── ...
└── zh/ # 中文版
├── index.html # 中文版首页
├── _static/ # 中文版静态资源
├── 1_overview/ # 中文版内容
└── ...
```
## 访问地址
- **英文版(默认)**: `https://orbbec.github.io/OrbbecSDK_ROS2/`
- **中文版**: `https://orbbec.github.io/OrbbecSDK_ROS2/zh/`
## 如何添加语言切换链接
### 方法 1:在自定义 CSS 中添加语言切换按钮(推荐)
编辑 `docs/en/source/_static/custom.css` 和 `docs/zh/source/_static/custom.css`:
```css
/* 在页面右上角添加语言切换链接 */
.wy-nav-top::after {
content: "中文";
position: absolute;
right: 60px;
top: 0;
height: 45px;
line-height: 45px;
padding: 0 15px;
font-size: 14px;
color: #fff;
cursor: pointer;
}
/* 为链接添加点击事件 */
.wy-nav-top {
position: relative;
}
```
### 方法 2:在自定义 JavaScript 中添加(更灵活)
创建或编辑 `docs/en/source/_static/language-switch.js`:
```javascript
document.addEventListener('DOMContentLoaded', function() {
// 创建语言切换链接
var langSwitch = document.createElement('a');
langSwitch.href = '/OrbbecSDK_ROS2/zh/';
langSwitch.textContent = '中文';
langSwitch.style.cssText = 'position: fixed; top: 10px; right: 60px; z-index: 1000; color: #fff; background: #2980b9; padding: 5px 15px; border-radius: 3px; text-decoration: none;';
document.body.appendChild(langSwitch);
});
```
然后在 `docs/en/conf.py` 中添加:
```python
html_js_files = [
'language-switch.js',
]
```
对应的中文版 `docs/zh/source/_static/language-switch.js`:
```javascript
document.addEventListener('DOMContentLoaded', function() {
var langSwitch = document.createElement('a');
langSwitch.href = '/OrbbecSDK_ROS2/';
langSwitch.textContent = 'English';
langSwitch.style.cssText = 'position: fixed; top: 10px; right: 60px; z-index: 1000; color: #fff; background: #2980b9; padding: 5px 15px; border-radius: 3px; text-decoration: none;';
document.body.appendChild(langSwitch);
});
```
### 方法 3:修改 Sphinx 主题模板(最专业)
1. 创建自定义模板覆盖 `docs/en/source/_templates/layout.html`:
```html
{% extends "!layout.html" %}
{% block extrahead %}
{{ super() }}
<style>
.language-switch {
position: fixed;
top: 10px;
right: 60px;
z-index: 1000;
}
.language-switch a {
color: #fff;
background: #2980b9;
padding: 5px 15px;
border-radius: 3px;
text-decoration: none;
font-size: 14px;
}
.language-switch a:hover {
background: #3498db;
}
</style>
{% endblock %}
{% block menu %}
{{ super() }}
<div class="language-switch">
<a href="/OrbbecSDK_ROS2/zh/">中文</a>
</div>
{% endblock %}
```
2. 对应的中文版 `docs/zh/source/_templates/layout.html`:
```html
{% extends "!layout.html" %}
{% block extrahead %}
{{ super() }}
<style>
.language-switch {
position: fixed;
top: 10px;
right: 60px;
z-index: 1000;
}
.language-switch a {
color: #fff;
background: #2980b9;
padding: 5px 15px;
border-radius: 3px;
text-decoration: none;
font-size: 14px;
}
.language-switch a:hover {
background: #3498db;
}
</style>
{% endblock %}
{% block menu %}
{{ super() }}
<div class="language-switch">
<a href="/OrbbecSDK_ROS2/">English</a>
</div>
{% endblock %}
```
## 在 conf.py 中配置主题选项(可选)
你也可以在 `conf.py` 中配置 RTD 主题的自定义选项:
```python
html_theme_options = {
# ...existing options...
'display_version': True,
'prev_next_buttons_location': 'bottom',
'style_external_links': False,
# 可以添加自定义 HTML
# 'canonical_url': '',
}
```
## 本地测试
在推送到 GitHub 之前,建议先本地测试:
```bash
# 构建英文版
cd docs/en
make html
# 在浏览器中打开:docs/en/_build/html/index.html
# 构建中文版
cd docs/zh
make html
# 在浏览器中打开:docs/zh/_build/html/index.html
```
## GitHub Actions 工作流程
当你推送代码到 `Document` 分支时,GitHub Actions 会自动:
1. ✅ 安装 Python 和依赖
2. ✅ 构建英文版文档到 `docs/en/_build/html/`
3. ✅ 构建中文版文档到 `docs/zh/_build/html/`
4. ✅ 将英文版作为根目录
5. ✅ 将中文版复制到 `/zh/` 子目录
6. ✅ 部署到 `gh-pages` 分支
## 推荐的实现方式
我推荐使用 **方法 2(JavaScript)** 或 **方法 3(模板)**,因为:
- ✅ 更灵活,易于维护
- ✅ 可以动态调整样式
- ✅ 不依赖于特定主题的 CSS 类名
- ✅ 可以添加更多交互功能(如自动检测浏览器语言)
## 注意事项
1. **链接路径**:注意区分相对路径和绝对路径
- 英文版链接到中文版:`/OrbbecSDK_ROS2/zh/`
- 中文版链接到英文版:`/OrbbecSDK_ROS2/`
2. **测试链接**:在部署后测试所有语言切换链接是否正常工作
3. **SEO 优化**:可以在 HTML head 中添加 `hreflang` 标签:
```html
<link rel="alternate" hreflang="en" href="/OrbbecSDK_ROS2/" />
<link rel="alternate" hreflang="zh-CN" href="/OrbbecSDK_ROS2/zh/" />
```